URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 93236
[ Назад ]

Исходное сообщение
"Dovecot отказывается создавать папки виртуальных пользователей"

Отправлено billybons2006 , 05-Апр-12 20:14 
Есть проблема: Dovecot отказывается создавать папки виртуальных пользователей.

Есть настроенный Dovecot + MySQL + Postfix + Postfixadmin.

В базу внесен домен "virtual.local" и ящик "test@virtual.local".

Почта должна будет храниться с /vmail
chown vmail:vmail /vmail

uid - 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 - фиг.

Куда копать?


Содержание

Сообщения в этом обсуждении
"Dovecot отказывается создавать папки виртуальных пользователей"
Отправлено PavelR , 05-Апр-12 22:39 
>[оверквотинг удален]
> 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



"Dovecot отказывается создавать папки виртуальных пользователей"
Отправлено billybons2006 , 05-Апр-12 23:13 
>[оверквотинг удален]
>> 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) не может создавать папки?


"Dovecot отказывается создавать папки виртуальных пользователей"
Отправлено billybons2006 , 06-Апр-12 10:04 
Такс, поехали...

Самый главный вопрос, на который я не могу с точностью ответить - КТО ДОЛЖЕН СОЗДАВАТЬ ПАПКИ ПОЧТЫ: 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 = /vmail

virtual_minimum_uid = 5000
virtual_uid_maps = static: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 отказывается создавать папки виртуальных пользователей"
Отправлено artemrts , 06-Апр-12 10:29 
>[оверквотинг удален]
> 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



"Dovecot отказывается создавать папки виртуальных пользователей"
Отправлено wirm , 06-Апр-12 10:37 
Есть 2 варпианта
1 диры создает смтп(lda) после получения письма ,это умеет делать и лда довекота и стандартный транспорт смтп , например для постфикса
2 у довекота в стандартной сборке есть плагин, который создает майлдир при обращении по имап-удобно для новых пользователей

"Dovecot отказывается создавать папки виртуальных пользователей"
Отправлено Andrey Mitrofanov , 06-Апр-12 10:32 
> Такс, поехали...
> Самый главный вопрос, на который я не могу с точностью ответить -
> КТО ДОЛЖЕН СОЗДАВАТЬ ПАПКИ ПОЧТЫ: 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 (если он так сможет~).


"Dovecot отказывается создавать папки виртуальных пользователей"
Отправлено PavelR , 06-Апр-12 10:38 
> А. вот и 5000. Чего его в системных пользователях не завёл? Числовым
> уидом как-то...он как %) голенький.
> А кто такой "5000"? ...и зачем?

дык это я попросил сделать ls -ln чтобы увидеть, вдруг там наворочено чего-то не то в базе пользователей. Если я не втупил читая тред, то у него юзверь vmail:vmail с уид:гид 5000:5000


"Dovecot отказывается создавать папки виртуальных пользователей"
Отправлено Andrey Mitrofanov , 06-Апр-12 10:43 
> тред, то у него юзверь vmail:vmail с уид:гид 5000:5000

Нет, я думаю, там два почти одновременных ls'а показали - один vmail:vmail, другой 5000:5000. Это всё-таки разные uid-ы. Числовой не заведён в passwd и ко.


"Dovecot отказывается создавать папки виртуальных пользователей"
Отправлено billybons2006 , 06-Апр-12 11:26 
Пользователь 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...


"Dovecot отказывается создавать папки виртуальных пользователей"
Отправлено Andrey Mitrofanov , 06-Апр-12 11:34 
> Пользователь vmail и группа vmail заведены в системе:

Да, ls -n проморгал.


"Dovecot отказывается создавать папки виртуальных пользователей"
Отправлено billybons2006 , 06-Апр-12 15:40 
Вожусь до сих пор... Помогите проанализировать...

Сейчас есть только папка /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. Не понимаю его, что тут может быть, поэтому не нравится...


"Dovecot отказывается создавать папки виртуальных пользователей"
Отправлено Andrey Mitrofanov , 06-Апр-12 16:26 
> 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... п.я.


"Dovecot отказывается создавать папки виртуальных пользователей"
Отправлено Andrey Mitrofanov , 06-Апр-12 16:30 
> 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".


"Dovecot отказывается создавать папки виртуальных пользователей"
Отправлено Andrey Mitrofanov , 06-Апр-12 16:35 
> Так он у тебя так и не создаёт мейл-дир test/ (при существующих
> остальных) и подключении к ящику?
> См.
>     # ls -ld /vmail /vmail/virtual.local /vmail/virtual.local/test
> и какие на них права у "uid=5000 gid=5000".

Бр, оно в #3 уже есть.

+++Кста, в интернетах на _CentOS 6 диры не создаются от _включённого _SELinux


"Dovecot отказывается создавать папки виртуальных пользователей"
Отправлено billybons2006 , 06-Апр-12 17:00 
> +++Кста, в интернетах на _CentOS 6 диры не создаются от _включённого _SELinux

Задрожали у попа руки, выключил он SELinux, сейчас ребутится...

ИИИИИИессс, папки создает... Я потом с SELinux поразбираюсь, может его вклдчить, раз он такой умный... Сейчас надо успокоиться, и разобраться с тем кошмаром в конфигах, который я устроил, пока судорожно проверял какие_угодно_варианты...

Господа, пятница удалась!

cd /vmail/virtual.local/test/
ls -al

total 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

Спасибо за участие и попытки помочь!