exim + DOVECOT +mysql [SOLVED]
cat /etc/dovecot/dovecot.conf
base_dir = /var/run/dovecot/
protocols = pop3
listen = *
disable_plaintext_auth = no
shutdown_clients = yes
log_path = /var/log/dovecot/dovecot.log
info_log_path = /var/log/dovecot/dovecot.log
log_timestamp = "%b %d %H:%M:%S "
ssl_disable = yes
login_dir = /var/run/dovecot/login
login_chroot = yes
login_user = dovecot
login_process_size = 64
login_process_per_connection = yes
login_processes_count = 5
login_max_processes_count = 64
login_max_connections = 256
login_greeting = nani desu ka! >_<
login_log_format_elements = user=<%u> method=%m rip=%r lip=%l %c
login_log_format = %$: %s
mail_location = maildir: /var/spool/mail/%d/%n
mail_uid = 501
mail_gid = 501
mail_full_filesystem_access = no
mail_debug = yes
mail_log_prefix = "%Us(%u): "
mail_log_max_lines_per_sec = 10
mmap_disable = no
dotlock_use_excl = yes
fsync_disable = no
mail_nfs_storage = no
mail_nfs_index = no
lock_method = flock
mail_drop_priv_before_exec = no
verbose_proctitle = yes
first_valid_uid = 501
last_valid_uid = 501
first_valid_gid = 501
last_valid_gid = 501
max_mail_processes = 512
mail_process_size = 256
mail_max_keyword_length = 50
mail_cache_min_mail_count = 0
mailbox_idle_check_interval = 30
mail_save_crlf = no
maildir_stat_dirs = yes
maildir_copy_with_hardlinks = yes
maildir_copy_preserve_filename = no
protocol pop3 {
login_executable = /usr/libexec/dovecot/pop3-login
mail_executable = /usr/libexec/dovecot/pop3
pop3_no_flag_updates = no
pop3_enable_last = no
pop3_reuse_xuidl = no
pop3_lock_session = no
pop3_uidl_format = %08Xu%08Xv
pop3_logout_format = top=%t/%p, retr=%r/%b, del=%d/%m, size=%s
mail_max_userip_connections = 32
pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
log_path = /var/log/dovecot/dovecot-pop3.log
info_log_path = /var/log/dovecot/dovecot-pop3.log
}
protocol lda {
postmaster_address =
deliver_log_format = msgid=%m: %$
sendmail_path = /usr/lib/sendmail
auth_socket_path = /var/run/dovecot/auth-master
log_path = /var/log/dovecot/dovecot-lda.log
info_log_path = /var/log/dovecot/dovecot-lda.log
}
auth_executable = /usr/libexec/dovecot/dovecot-auth
auth_process_size = 256
auth_cache_size = 0
auth_cache_size = 0
auth_default_realm = example.com
auth_username_chars = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@
auth_username_format = %Lu
auth_verbose = yes
auth_debug = yes
auth_debug_passwords = yes
auth_worker_max_count = 30
auth_worker_max_request_count = 64
auth_failure_delay = 1
auth default {
mechanisms = plain login cram-md5
passdb sql {
args = /etc/dovecot/dovecot-sql.conf
}
userdb sql {
args = /etc/dovecot/dovecot-sql.conf
}
user = vmail
count = 1
socket listen {
master {
path = /var/run/dovecot/auth-master
mode = 0600
user = vmail
}
client {
path = /var/run/dovecot/auth-client
mode = 0600
user = vmail
}
}
}
plugin {
}
cat /etc/dovecot/dovecot-sql.conf
driver = mysql
connect = host=localhost dbname=maildb user=dovecot password=010203
default_pass_scheme = CRAM-MD5
password_query = SELECT username, password FROM mailbox WHERE username = '%u' AND active = '1'
user_query = SELECT maildir AS home, 501 AS uid, 501 AS gid FROM mailbox WHERE username = '%u'
Транспорт Exim'a расписан как:
dovecot_delivery:
driver = pipe
command = /usr/libexec/dovecot/deliver -d $local_part@$domain -f $sender_address -a original_local_part@$original_domain
message_prefix =
message_suffix =
delivery_date_add
envelope_to_add
return_path_add
log_output
user = vmail
id vmail
uid=501(vmail) gid=501(vmail) группы=501(vmail)
ls -l /var/spool/
drwxrwxr-x 2 vmail mail 6 Июн 22 14:20 mail
ls -l /usr/libexec/dovecot/deliver
-rwxr-x--- 1 root vmail 697608 Июн 22 14:54 /usr/libexec/dovecot/deliver
tail /var/log/exim/exim_main.log
2009-06-23 11:49:22 no IP address found for host myworld (during SMTP connection from ([192.168.21.50]) [192.168.21.50] I=[192.168.21.5]:25)
2009-06-23 11:49:22 Delay 0s for [192.168.21.50] with HELO=[192.168.21.50]. Mail from
to
.
2009-06-23 11:49:22 1MJ0ks-0001Sg-8o <=
H=([192.168.21.50]) [192.168.21.50] I=[192.168.21.5]:25 P=esmtp S=667 id=4A408A1D.6070609@example.com from
2009-06-23 11:49:22 1MJ0ks-0001Sg-8o ==
R=dovecot_user T=dovecot_delivery defer (0): Child process of dovecot_delivery transport returned 75 (could mean temporary error) from command: /usr/libexec/dovecot/deliver
tail /var/log/dovecot/dovecot-lda.log
deliver(alfa@example.com): Jun 23 11:49:22 Info: auth input:
deliver(alfa@example.com): Jun 23 11:49:22 Info: auth input: home=example.com/alfa/
deliver(alfa@example.com): Jun 23 11:49:22 Info: auth input: uid=501
deliver(alfa@example.com): Jun 23 11:49:22 Info: auth input: gid=501
deliver(alfa@example.com): Jun 23 11:49:22 Info: Home dir not found: example.com/alfa/
deliver(alfa@example.com): Jun 23 11:49:22 Info: maildir: data= /var/spool/example.com/alfa
deliver(alfa@example.com): Jun 23 11:49:22 Info: maildir++: root= /var/spool/example.com/alfa, index=, control=, inbox= /var/spool/example.com/alfa
deliver(alfa@example.com): Jun 23 11:49:22 Error: mkdir( /var/spool/example.com/alfa/cur) failed: Permission denied
deliver(alfa@example.com): Jun 23 11:49:22 Info: msgid=<4A408A1D.6070609@example.com>: save failed to INBOX: Internal error occurred. Refer to server log for more information. [2009-06-23 11:49:22]
Ругается вроде как на нехватку прав... но не может даже создать в папку с полным доступом...
Куда копать?
- Для комментирования войдите или зарегистрируйтесь
непонятки
непонятки куда потерялся кусок "/mail/"
1)exim, dovecot, user's - все в группе vmail ?
2)юзера хранятся в базе? пути до домашней папки там прописаны? правильно?
3)если сделать подключку по POP3 (до того как юзеру будет послано письмо через екзим) - папки создаются в нужном месте с нужными атрибутами?
что-то добрый я сегодня ....
кусок "/mail" добавил ... но
кусок "/mail" добавил ... но беда тажа
1)пользователя exim не существует
id dovecot
uid=97(dovecot) gid=97(dovecot) группы=97(dovecot),501(vmail)
id mail
uid=8(mail) gid=12(mail) группы=12(mail),501(vmail)
2)Да в базе. Mysql.
mysql> select maildir as home from mailbox;
+--------------------------+
| home |
+--------------------------+
| example.com/beta/ |
| example.com/alfa/ |
+--------------------------+
3)папки вообще не создаются
был момент когда создавались папки... когда в mail_location еще указывал параметр INBOX ...
поиск
поиск по http://forum.lissyara.su ничего не дал?
я помню там не раз поднимался этот вопрос
у меня екзим сам пишет в майл-дир минуя деливер - когда была подобная проблема не помню как уже обошел (это было год назад)
потом отказался от деливера (у меня юзеров не много, нет смысла заморачиваться с базой)
посмотрю настройки на своем серваке - если найду - то отпишу
что-то добрый я сегодня ....
искал. но там решашалась
искал. но там решашалась проблема в правах на директорию, а у меня он никуда писать не хочется ... в тотже /var/tmp ... при этом не только от пользователя vmail ...
не
и не должен писать в /vat/tmp
/var/spool/mail создает exim
и там была заморочка (у меня) от имени кого стартует екзим и как он передает права deliver'u
посмотрю, может старые конфиги найду
что-то добрый я сегодня ....
да я уже от безнадежности
да я уже от безнадежности пытался в другую дерикторию указывать ...
странно, а я думал что права передает через user и group когда описываешь транспорт.
тут нашлось
что сейчас пишется в логах?
что-то добрый я сегодня ....
deliver(alfa@example.com):
deliver(alfa@example.com): Jun 23 13:24:29 Error: mkdir( /mail/example.com/alfa/cur) failed: Permission denied (euid=501(vmail) egid=501(vmail))
Alec
кто
кто владелец и права
/var/spool/
/var/spool/mail/
/var/spool/mail/example.com
?
зы
/var/spool/mail/example.com/alfa/cur
должно быть, имхо
/var/spool/mail/example.com/alfa/new
что-то добрый я сегодня ....
drwxr-xr-x 5 root root 51
drwxr-xr-x 5 root root 51 Июн 22 13:55 spool
drwxrwxr-x 2 vmail mail 6 Июн 22 14:20 mail
а вот /var/spool/mail/example.com он должен создавать сам ... что он конечно не делает ... точнее на работе не делает, а дома создает нормально. ... не могу понять из-за чего ...
тогда
тогда уже легче
посмотреть разницу в конфигах
exim.conf
exim_user=vmail
exim_group=mail
?
"alfa" в группе майл ?
что-то добрый я сегодня ....
alfa -- виртуальный
alfa -- виртуальный пользователь ...
exim_user=vmail
exim_group=mail
exim вообще не запускается ...
...........
запустил ... но проблему не решило...
а насчет alfa ... так вроде как запрос в мускуль показывает что uid и gid 501 == vmail
а так
>>> alfa -- виртуальный пользователь ...
а какая разница?
после авторизации должно вернуться UID & GID юзера, насколько я помню, а уже от имени юзера создаваться его рабочая папка
>>> exim_user=vmail
>>> exim_group=mail
exim вообще не запускается ...
а так
#exim_user=vmail
exim_group=mail
то, что екзим должен быть в группе майл - это точно 100 %
попробуй 0775 на
/var/spool/mail
поставить
что-то добрый я сегодня ....
leryc написал(а):>>> alfa --
он в группе vmail
exim я запустил, он вначале ругался на доступ к логу, потом в spoo/exim ...
правильно ругался
перед запуском логи надо было удалить естественно
>>> drwxr-xr-x 5 root root 51 Июн 22 13:55 spool
>>> drwxrwxr-x 2 vmail mail 6 Июн 22 14:20 mail
судя по этому - юзеры должны быть в группе mail а не vmail, imho
у меня
/var/spool 0755 root root
/var/spool/mail 0775 root mail
/var/spool/mail/user 0700 user user
что-то добрый я сегодня ....
ну тогда и группа vmail будет
ну тогда и группа vmail будет не нужна ...
я конечно грешусь на свой английский, но если мне не изменяет память, то в wiki по dovecot'у было написано что для создания виртуальных пользователей надо брать отдельные uid|gid и не использовать uid|gid dovecot ... и вроде как mail
но и на uid|gid mail я тоже настраивал ... все равно директории не создавались ... таже ошибка
фишка
фишка в том, что довекот, екзим и юзеры должны быть обязательно в одной группе
и, возможно, что-то с правами на запись по дороге до home-mail-dir юзера
ну раз дома создается, а на работе нет - нужно лишь посмотреть в чем разница
что-то добрый я сегодня ....
фишка не фишка ... но факт в
фишка не фишка ... но факт в том что он не хочет писать в директорию с правами 777 эт факт -_-
775
775 на ..../mail/.. проверял?
в 777 точно писать не хочет
что-то добрый я сегодня ....
да, уже заново даже
да, уже заново даже переконфигурировал ... все равно таже ситуация
это вообще может зависеть как
это вообще может зависеть как то от файловой системы или от флагов при сборке dovecot'a?
###
щас пересобрал на скорую руку на другой машинке ... нормально все создается ... вообще ничего не понимаю ... (
хюзю
если конфиги при пересборке одинаковы - то х.з. что творится
от файловой системы (если она не режиме реадонли и не fat\ntfs) и от флагов довекота там ничего не зависит
не думаю что у тебя /var/spool/ на экзотическом разделе, тогда бы и у экзима были бы проблемы с приемом почты
попробуй на этом разделе отказаться от деливера и пусть сам екзим попробует положить письмо в папку
сможет ли?
зы
у тебя gid & uid (501) возвращается после авторизации по запросу из мускула - а точно возвращается?
зызы
закомментируй эти строчки
first_valid_uid = 501
last_valid_uid = 501
first_valid_gid = 501
last_valid_gid = 501
и попрубуй в базе у юзера указать хоме-дир без слэша
example а не example/alfa
ну и покажи какая сейчас ошибка вываливается (что пишет конкретно? тоже самое что и выше?)
что-то добрый я сегодня ....
вообщем проблема решена ...
вообщем проблема решена ... пока только не понимаю как ... тупо копипаст конфигов и правка uid|gid и доменнового имени ... буду разбиратся в чем проблема была ...
кстати ... вчера так пробывал
кстати ... вчера так пробывал ... была таже ошибка ... не знаю где могла быть ошибка в конфигах
.
Ну хотя бы такая, что в данном случае строится почтовая система с виртуальной базой пользователей.
Соответственно система почтовых пользователей не знает и создание каталогов с UID/GID пользователя (понимая почтового пользователя) выглядит как минимум несколько... э... странным.
:wq
--
Live free or die
действительно
действительно, система ничего не знает про виртуальных пользователей и ей (системе) пофиг какой программой и по какому принципу будет выполнятся авторизация.
но команда на создание дир\файла должна знать от кого и с какими правами
екзим, запущенный от своего имени и группы, порождает деливер, который должен
а) в случае неудачной авторизации вернуть управление екзиму для дальнейшей обработки письма
б) в случае успеха - создать необходимый файл - от имени себя или от имени юзера
политика создания файлов и прав на их чтения находятся у администратора баззы
т.е. юзера могут иметь иметь уникальные ID или одинаковые в рамках одного домена и т.д и т.п
эта политика выбирается как компромисс между гемороем и надежностью, имхо
что-то добрый я сегодня ....
.
ИМХО в 80-90% случаев, виртуальные почтовые системы строятся без понимания их области применимости и обоснования насущной необходимости, там, где более чем достаточно (а часто и более целесообразно(а)) обычной системы на базе реальных пользователей.
Именно с точки зрения компромисса между геммороем и надёжностью с параметром в виде удобства администрирования (и, главное, понимания как оно работает).
:wq
--
Live free or die