Есть проблема: Dovecot отказывается создавать папки виртуальных пользователей.Есть настроенный Dovecot + MySQL + Postfix + Postfixadmin.
В базу внесен домен "virtual.local" и ящик "test@virtual.local".
Почта должна будет храниться с /vmail
chown vmail:vmail /vmailuid - 5000
gid - 5000При попытке авторизации Dovecot выводит такой лог (я кусок дам, остальное пока, думаю, не важно):
*************************************
imap-login: Info: Login: user=<test@virtual.local>, method=PLAIN, rip=192.168.2.113, lip=192.168.2.105, mpid=3284
imap: Debug: Loading modules from directory: /usr/lib/dovecot
imap: Debug: Module loaded: /usr/lib/dovecot/lib20_autocreate_plugin.so
imap: Debug: Added userdb setting: mail=maildir:/vmail/virtual.local/test
imap(test@virtual.local): Debug: Effective uid=5000, gid=5000, home=/vmail/virtual.local/test
imap(test@virtual.local): Debug: Home dir not found: /vmail/virtual.local/test
imap(test@virtual.local): Debug: maildir++: root=/vmail/virtual.local/test, index=, control=, inbox=/vmail/virtual.local/test
imap(test@virtual.local): Debug: Namespace : Permission lookup failed from /vmail/virtual.local/test
imap(test@virtual.local): Debug: Namespace : Using permissions from /vmail/virtual.local/test: mode=0700 gid=-1
imap(test@virtual.local): Error: user test@virtual.local: Initialization failed: Initializing mail storage from mail_location setting failed: mkdir(/vmail/virtua
l.local/test) failed: Permission denied (euid=5000(vmail) egid=5000(vmail) missing +w perm: /vmail, euid is not dir owner)
Apr 05 20:59:55 imap(test@virtual.local): Error: Invalid user settings. Refer to server log for more information.
*************************************Самое главное: Permission denied (euid=5000(vmail) egid=5000(vmail) missing +w perm: /vmail, euid is not dir owner)
Я даже права 777 давал на папку /vmail - фиг.
Куда копать?
>[оверквотинг удален]
> mail storage from mail_location setting failed: mkdir(/vmail/virtua
> l.local/test) failed: Permission denied (euid=5000(vmail) egid=5000(vmail) missing
> +w perm: /vmail, euid is not dir owner)
> Apr 05 20:59:55 imap(test@virtual.local): Error: Invalid user settings. Refer to server
> log for more information.
> *************************************
> Самое главное: Permission denied (euid=5000(vmail) egid=5000(vmail) missing +w perm:
> /vmail, euid is not dir owner)
> Я даже права 777 давал на папку /vmail - фиг.
> Куда копать?ls -ln /vmail
ls -ln /vmail/virtual.local/test
>[оверквотинг удален]
>> mail storage from mail_location setting failed: mkdir(/vmail/virtua
>> l.local/test) failed: Permission denied (euid=5000(vmail) egid=5000(vmail) missing
>> +w perm: /vmail, euid is not dir owner)
>> Apr 05 20:59:55 imap(test@virtual.local): Error: Invalid user settings. Refer to server
>> log for more information.
>> *************************************
>> Самое главное: Permission denied (euid=5000(vmail) egid=5000(vmail) missing +w perm:
>> /vmail, euid is not dir owner)
>> Я даже права 777 давал на папку /vmail - фиг.
>> Куда копать?Большое спасибо за попытку помочь! К сожалению, тестовую машину не выцепить из дома, поэтому до завтра чисто теоретически:
> ls -ln /vmail
Завтра на работе попробую, что за "ls -ln" такая, с "ls -la" выходило, что права даны для vmail парвильно.
> ls -ln /vmail/virtual.local/test
Эти папки вообще не создавались... Если только не ручками...
Я все ломаю голову, что за зверь такой:
*****
Using permissions from /vmail/virtual.local/test: mode=0700 gid=-1
*****Вот "gid=-1" по-идее означает, что по дороге "потерялся" group_id. Вообще, это в логе /var/log/dovecot.log, но насколько я знаю, эти папки должен Postfix создавать. Я прав? Если так, то в Postfix не попадают vmail:vmail (5000:5000)...Я правильно думаю, что это в Postfix "не попадают" верные значения gid и uid от vmail? А если нет, то тогда почему Dovecot, имея в логах euid и egid 5000 (т.е. он "знает" верные uid и gid) не может создавать папки?
Такс, поехали...Самый главный вопрос, на который я не могу с точностью ответить - КТО ДОЛЖЕН СОЗДАВАТЬ ПАПКИ ПОЧТЫ: Postfix или DOVECOT???
А это в догонку:
> ls -ln /vmail
> ls -ln /vmail/virtual.local/test# ls -ln /vmail
total 4
drwxr-xr-x. 3 5000 5000 4096 Apr 5 21:01 virtual.local# ls -la /vmail
total 12
drwxrwx---. 3 vmail vmail 4096 Apr 5 21:01 .
dr-xr-xr-x. 26 root root 4096 Apr 5 20:58 ..
drwxr-xr-x. 3 vmail vmail 4096 Apr 5 21:01 virtual.localИз /etc/postfix/main.cf:
### Virtual Domains:
virtual_mailbox_base = /vmailvirtual_minimum_uid = 5000
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000Из /etc/dovecot/dovecot.conf:
mail_uid = 5000
mail_gid = 5000first_valid_uid = 5000
last_valid_uid = 5000***
И отмечу - мне в первую очередь хочется понять, что происходит, а не тупо решить проблему. Хотя тупо решить как раз не получиться :)
>[оверквотинг удален]
> virtual_gid_maps = static:5000
> Из /etc/dovecot/dovecot.conf:
> mail_uid = 5000
> mail_gid = 5000
> first_valid_uid = 5000
> last_valid_uid = 5000
> ***
> И отмечу - мне в первую очередь хочется понять, что происходит, а
> не тупо решить проблему. Хотя тупо решить как раз не получиться
> :)В свое время и у меня была похожая проблема. Решилась все с помощью Dovecot LDA. Он сам будет создавать папки.
Почитайте тут http://wiki2.dovecot.org/LDA
Есть 2 варпианта
1 диры создает смтп(lda) после получения письма ,это умеет делать и лда довекота и стандартный транспорт смтп , например для постфикса
2 у довекота в стандартной сборке есть плагин, который создает майлдир при обращении по имап-удобно для новых пользователей
> Такс, поехали...
> Самый главный вопрос, на который я не могу с точностью ответить -
> КТО ДОЛЖЕН СОЗДАВАТЬ ПАПКИ ПОЧТЫ: Postfix или DOVECOT???Тот, кто _доставляет почту.
У меня доставляет давкотовский deliver пускается из exim.
Кста, дав создаёт папку также и при заходе "в неё" по pop3, например.Единственно что, пакпу для домена я руками создал и права дал (домен один + лениво было глубже копать). А с ящиками -- всё "само едет".
> А это в догонку:
> # ls -ln /vmail
> total 4
> drwxr-xr-x. 3 5000 5000 4096 Apr 5 21:01 virtual.localА кто такой "5000"? ...и зачем?
> drwxr-xr-x. 3 vmail vmail 4096 Apr 5 21:01 virtual.localВот здесь... 755.(1)->
> Из /etc/postfix/main.cf:
> virtual_minimum_uid = 5000
> virtual_uid_maps = static:5000
> virtual_gid_maps = static:5000
> mail_uid = 5000
> mail_gid = 5000А. вот и 5000. Чего его в системных пользователях не завёл? Числовым уидом как-то...он как %) голенький.
> И отмечу - мне в первую очередь хочется понять, что происходит, а
> не тупо решить проблему. Хотя тупо решить как раз не получиться
> :)Думаю, ты сделал доставку в maildir самим MTA, он в этот момент работает под uid 5000. Нужно этому uid-у дать группу vmail и поставиь права на ->(1) 770 (группе +запись, всем незачем вообще ничего)
Либо настроить deliver и пусктать его под uid vmail с-под MTA (если он так сможет~).
> А. вот и 5000. Чего его в системных пользователях не завёл? Числовым
> уидом как-то...он как %) голенький.
> А кто такой "5000"? ...и зачем?дык это я попросил сделать ls -ln чтобы увидеть, вдруг там наворочено чего-то не то в базе пользователей. Если я не втупил читая тред, то у него юзверь vmail:vmail с уид:гид 5000:5000
> тред, то у него юзверь vmail:vmail с уид:гид 5000:5000Нет, я думаю, там два почти одновременных ls'а показали - один vmail:vmail, другой 5000:5000. Это всё-таки разные uid-ы. Числовой не заведён в passwd и ко.
Пользователь vmail и группа vmail заведены в системе:
#less /etc/passwd | grep vmail
vmail:x:5000:5000::/home/vmail:/sbin/nologin#less /etc/group | grep vmail
vmail:x:5000:По поводу LDA:
В /etc/postfix/master.cf (в самом конце):
dovecot unix - n n - - pipe
flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -d $(recipient)PS: два пробела перед flags есть.
Т.е. в моем случае Dovecot обрабатывает почту и именно он должен создавать папки почты.
Плагин, который создает папки, у меня прописан (/etc/dovecot/dovecot.conf):
# Plugins
plugin {
auth_socket_path = /var/run/dovecot/auth-master# Plugin: autocreate. Создаем и подписываемся на папки IMAP.
autocreate = INBOX
autocreate2 = Sent
autocreate3 = Trash
autocreate4 = Drafts
autocreate5 = Junk
autosubscribe = INBOX
autosubscribe2 = Sent
autosubscribe3 = Trash
autosubscribe4 = Drafts
autosubscribe5 = Junk
}protocol imap {
imap_client_workarounds = tb-extra-mailbox-sep
mail_plugins = autocreate
}Даже больше того, если я ручками создаю папку (/vmail/virtual.local/test) с правами вплоть до 0777, то в логах я вижу, что Doevcot пытается создавать там INBOX и прочее, но не может.
***
Щас еще поломаю голову над LDA, я почему-то думаю, в этом фишка дела. Спасибо за идеи!PPS: Error: mkdir(/vmail/virtual.local/test/cur) failed: Permission denied (euid=5000(vmail) egid=5000(vmail) missing +w perm: /vmail/virtual.local/test, euid is not dir owner)
Ну не бред разве? euid = 5000 как раз owner...
> Пользователь vmail и группа vmail заведены в системе:Да, ls -n проморгал.
Вожусь до сих пор... Помогите проанализировать...Сейчас есть только папка /vmail/virtual.local с владельцем vmail:vmail
Здесь все ОК, пользователь test@virtual.local прошел авторизацию, запрос к базе данных вернул правильные значения:
******************************
Apr 06 16:18:46 auth: Debug: client out: OK 1 user=test@virtual.local
Apr 06 16:18:46 auth: Debug: master in: REQUEST 2851078145 9327 1 ef3a19724f9b1aa5d6ed608f1c879090
Apr 06 16:18:46 auth: Debug: sql(test@virtual.local,192.168.2.113): SELECT '/vmail/virtual.local/test' as home, 'maildir:/vmail/virtual.local/test' as mail, '5000' AS uid, '5000' AS gid FROM mailbox WHERE username = 'test@virtual.local' AND active = '1'
Apr 06 16:18:46 auth: Debug: master out: USER 2851078145 test@virtual.local home=/vmail/virtual.local/test mail=maildir:/vmail/virtual.local/test uid=5000 gid=5000
Apr 06 16:18:46 imap-login: Info: Login: user=<test@virtual.local>, method=PLAIN, rip=192.168.2.113, lip=192.168.2.105, mpid=9332
Apr 06 16:18:46 imap: Debug: Loading modules from directory: /usr/lib/dovecot
Apr 06 16:18:46 imap: Debug: Module loaded: /usr/lib/dovecot/lib20_autocreate_plugin.so
Apr 06 16:18:46 imap: Debug: Added userdb setting: mail=maildir:/vmail/virtual.local/test
******************************Начиная со следующей строки траблы:
******************************
Apr 06 16:18:46 imap(test@virtual.local): Debug: Effective uid=5000, gid=5000, home=/vmail/virtual.local/test
Apr 06 16:18:46 imap(test@virtual.local): Debug: Home dir not found: /vmail/virtual.local/test
Apr 06 16:18:46 imap(test@virtual.local): Debug: maildir++: root=/vmail/virtual.local/test, index=, control=, inbox=/vmail/virtual.local/test
Apr 06 16:18:46 imap(test@virtual.local): Debug: Namespace : Permission lookup failed from /vmail/virtual.local/test
Apr 06 16:18:46 imap(test@virtual.local): Debug: Namespace : Using permissions from /vmail/virtual.local/test: mode=0700 gid=-1
******************************Я правильно понимаю, что вызывается модуль imap, который не может, по какой-то причине, создать папку?
Вот тот же лог, обрезанный, пошагово:
1. Debug: Effective uid=5000, gid=5000, home=/vmail/virtual.local/test
gid и uid верные, полагаем, что папка почты должна быть "/vmail/virtual.local/test".2. Debug: Home dir not found: /vmail/virtual.local/test
Оп-па, папочки-то нет...3. Debug: maildir++: root=/vmail/virtual.local/test, index=, control=, inbox=/vmail/virtual.local/test
Нет комментариев, боюсь что-то сказать...4. Debug: Namespace : Permission lookup failed from /vmail/virtual.local/test
Почему-то нет прав доступа, хотя на этот момент я поставил права 777!5. Debug: Namespace : Using permissions from /vmail/virtual.local/test: mode=0700 gid=-1
Пытается юзером что-то сделать. Вопросы: откуда берет режим доступа 0700?
*********
Мне почему-то не нравится шаг 3. Не понимаю его, что тут может быть, поэтому не нравится...
> Apr 06 16:18:46 auth: Debug: sql(test@virtual.local,192.168.2.113): SELECT '/vmail/virtual.local/test'
> as home, 'maildir:/vmail/virtual.local/test' as mail, '5000' AS uid, '5000' AS gid
> FROM mailbox WHERE username = 'test@virtual.local' AND active = '1'Кста, я (правда на v1.2) uid+gid+home+mail ставлю http://wiki2.dovecot.org/UserDatabase/Static static-ом, не SQL-ем:
auth default {
passdb sql {
args = /etc/dovecot/dovecotsql.conf
}
userdb static {
args = uid=vmail gid=vmail home=/var/mail/%d/%n mail=maildir:/var/mail/%d/%n
}
...А dovecotsql.conf в user_query не использую. // Откуда _срисовал :/ не помню уже.
> Начиная со следующей строки траблы:
> mode=0700 gid=-1
> ******************************А траблы где?
> Я правильно понимаю, что вызывается модуль imap, который не может, по какой-то
> причине, создать папку?В приведённом куске "не может", вроде, не было -- только отладочная распечатка~~
> Вот тот же лог, обрезанный, пошагово:
> 1. Debug: Effective uid=5000, gid=5000, home=/vmail/virtual.local/test
> gid и uid верные, полагаем, что папка почты должна быть "/vmail/virtual.local/test".
> 2. Debug: Home dir not found: /vmail/virtual.local/test
> Оп-па, папочки-то нет...
> 3. Debug: maildir++: root=/vmail/virtual.local/test, index=, control=, inbox=/vmail/virtual.local/test
> Нет комментариев, боюсь что-то сказать...
> 4. Debug: Namespace : Permission lookup failed from /vmail/virtual.local/test
> Почему-то нет прав доступа, хотя на этот момент я поставил права 777!
> 5. Debug: Namespace : Using permissions from /vmail/virtual.local/test: mode=0700 gid=-1Эти два объясняет автор в --vv. Там не "нет прав", а "в ацл-ях нет, используетм, что есть".
google:// dovecot Namespace : Permission lookup failed
http://www.dovecot.org/list/dovecot/2009-October/043515.html> Пытается юзером что-то сделать. Вопросы: откуда берет режим доступа 0700?
Какое-то умолчание. С верхней директории?...
> *********
> Мне почему-то не нравится шаг 3, хотя бы потому, что я его
> не понимаю, что значит maildir++ ? Создание двух директорий подряд?Эта строка, на вскидку, просто отладочная распечатка каких-то значений.
maildir++ - название формата http://wiki2.dovecot.org/MailboxFormat/Maildir#Directory_Str... п.я.
> Apr 06 16:18:46 auth: Debug: master out: USER 2851078145
> test@virtual.local home=/vmail/virtual.local/test
> mail=maildir:/vmail/virtual.local/test uid=5000
> gid=5000
> Я правильно понимаю, что вызывается модуль imap, который не может, по какой-то
> причине, создать папку?Так он у тебя так и не создаёт мейл-дир test/ (при существующих остальных) и подключении к ящику?
См.
# ls -ld /vmail /vmail/virtual.local /vmail/virtual.local/test
и какие на них права у "uid=5000 gid=5000".
> Так он у тебя так и не создаёт мейл-дир test/ (при существующих
> остальных) и подключении к ящику?
> См.
> # ls -ld /vmail /vmail/virtual.local /vmail/virtual.local/test
> и какие на них права у "uid=5000 gid=5000".Бр, оно в #3 уже есть.
+++Кста, в интернетах на _CentOS 6 диры не создаются от _включённого _SELinux
> +++Кста, в интернетах на _CentOS 6 диры не создаются от _включённого _SELinuxЗадрожали у попа руки, выключил он SELinux, сейчас ребутится...
ИИИИИИессс, папки создает... Я потом с SELinux поразбираюсь, может его вклдчить, раз он такой умный... Сейчас надо успокоиться, и разобраться с тем кошмаром в конфигах, который я устроил, пока судорожно проверял какие_угодно_варианты...
Господа, пятница удалась!
cd /vmail/virtual.local/test/
ls -altotal 44
drwx------ 9 vmail vmail 4096 Apr 6 18:41 .
drwx------ 3 vmail vmail 4096 Apr 6 18:02 ..
drwx------ 2 vmail vmail 4096 Apr 6 18:41 cur
-rw------- 1 vmail vmail 120 Apr 6 18:41 dovecot.mailbox.log
drwx------ 5 vmail vmail 4096 Apr 6 18:41 .Drafts
drwx------ 5 vmail vmail 4096 Apr 6 18:41 .Junk
drwx------ 2 vmail vmail 4096 Apr 6 18:41 new
drwx------ 5 vmail vmail 4096 Apr 6 18:41 .Sent
-rw------- 1 vmail vmail 29 Apr 6 18:41 subscriptions
drwx------ 2 vmail vmail 4096 Apr 6 18:41 tmp
drwx------ 5 vmail vmail 4096 Apr 6 18:41 .TrashСпасибо за участие и попытки помочь!