Вы здесь

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 for

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]

Ругается вроде как на нехватку прав... но не может даже создать в папку с полным доступом...
Куда копать?

Alec написал:

>>> mail_location = maildir: /var/spool/mail/%d/%n

>>> 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" добавил ... но беда тажа
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 когда описываешь транспорт.

Цитата:
Re: проблема с правами на папку Exim+dovecot

tema_c » 2009-04-13 17:16:34
была таже беда..
решил (может и не совсем правильно но....) так:
exim и dovecot работают от пользователей входящих в группу MAIL
/var/mail назначаешь группу MAIL и даешь права 770
в конфиге dovecot пишешь
umask = 0007
и тогда права на директорию /var/mail/xxx создаются такие
770 GID(mail) UID(пользователь - владелец адреса)

что сейчас пишется в логах?

что-то добрый я сегодня ....

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 написал:
deliver(alfa@example.com): Jun 23 13:24:29 Error: mkdir( /var/spool/mail/example.com/alfa/cur) failed: Permission denied (euid=501(vmail) egid=501(vmail))

кто владелец и права
/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 Июн 22 13:55 spool
drwxrwxr-x 2 vmail mail 6 Июн 22 14:20 mail
а вот /var/spool/mail/example.com он должен создавать сам ... что он конечно не делает ... точнее на работе не делает, а дома создает нормально. ... не могу понять из-за чего ...

Alec написал:
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 -- виртуальный пользователь ...

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 -- виртуальный пользователь ...
а какая разница?
после авторизации должно вернуться UID & GID юзера, насколько я помню, а уже от имени юзера создаваться его рабочая папка

он в группе vmail

leryc написал:
>>> exim_user=vmail
>>> exim_group=mail

exim вообще не запускается ...

а так

#exim_user=vmail
exim_group=mail

то, что екзим должен быть в группе майл - это точно 100 %

попробуй 0775 на
/var/spool/mail
поставить

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 будет не нужна ...
я конечно грешусь на свой английский, но если мне не изменяет память, то в wiki по dovecot'у было написано что для создания виртуальных пользователей надо брать отдельные uid|gid и не использовать uid|gid dovecot ... и вроде как mail
но и на uid|gid mail я тоже настраивал ... все равно директории не создавались ... таже ошибка

фишка в том, что довекот, екзим и юзеры должны быть обязательно в одной группе

и, возможно, что-то с правами на запись по дороге до home-mail-dir юзера

ну раз дома создается, а на работе нет - нужно лишь посмотреть в чем разница

что-то добрый я сегодня ....

фишка не фишка ... но факт в том что он не хочет писать в директорию с правами 777 эт факт -_-

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 и доменнового имени ... буду разбиратся в чем проблема была ...

кстати ... вчера так пробывал ... была таже ошибка ... не знаю где могла быть ошибка в конфигах

leryc написал:
>>> alfa -- виртуальный пользователь ...
а какая разница?
после авторизации должно вернуться UID & GID юзера, насколько я помню, а уже от имени юзера создаваться его рабочая папка

Ну хотя бы такая, что в данном случае строится почтовая система с виртуальной базой пользователей.

Соответственно система почтовых пользователей не знает и создание каталогов с UID/GID пользователя (понимая почтового пользователя) выглядит как минимум несколько... э... странным.

:wq
--
Live free or die

действительно, система ничего не знает про виртуальных пользователей и ей (системе) пофиг какой программой и по какому принципу будет выполнятся авторизация.
но команда на создание дир\файла должна знать от кого и с какими правами

екзим, запущенный от своего имени и группы, порождает деливер, который должен
а) в случае неудачной авторизации вернуть управление екзиму для дальнейшей обработки письма
б) в случае успеха - создать необходимый файл - от имени себя или от имени юзера

политика создания файлов и прав на их чтения находятся у администратора баззы

т.е. юзера могут иметь иметь уникальные ID или одинаковые в рамках одного домена и т.д и т.п

эта политика выбирается как компромисс между гемороем и надежностью, имхо

что-то добрый я сегодня ....

leryc написал:
политика создания файлов и прав на их чтения находятся у администратора баззы

т.е. юзера могут иметь иметь уникальные ID или одинаковые в рамках одного домена и т.д и т.п

эта политика выбирается как компромисс между гемороем и надежностью, имхо

ИМХО в 80-90% случаев, виртуальные почтовые системы строятся без понимания их области применимости и обоснования насущной необходимости, там, где более чем достаточно (а часто и более целесообразно(а)) обычной системы на базе реальных пользователей.

Именно с точки зрения компромисса между геммороем и надёжностью с параметром в виде удобства администрирования (и, главное, понимания как оно работает).

:wq
--
Live free or die