[sisyphus] Maildrop+userdb
Dmitry Lebkov
=?iso-8859-1?q?dima_=CE=C1_sakhalin=2Eru?=
Пн Ноя 18 10:45:19 MSK 2002
On Mon, 18 Nov 2002 08:12:03 +0300
Прокопьев Евгений <john на rmts.donpac.ru> wrote:
> Здравствуйте!
>
> Начал снова разбираться с userdb.
>
> /etc/postfix/master.cf:
>
> maildrop unix - n n - - pipe
> flags=Ru user=mail argv=/usr/bin/maildrop-userdb -d ${recipient}
>
> Именно mail, а не vmail - у меня есть такой пользователь и я не хочу,
> чтобы он сидел без дела
>
> /etc/postfix/main.cf:
>
> mailbox_command = /usr/bin/maildrop-userdb -d $LOGNAME
> maildrop_destination_recipient_limit = 1
>
> /etc/courier-imap/userdb:
>
> shared home=/var/spool/mail/shared|mail=/var/spool/mail/shared|uid=8|gid=12
>
> /var/spool/mail/shared создавался так:
>
> su - mail
> maildirmake -S /var/spool/mail/shared
>
> В README.ALT из maildrop на предмет -d $LOGNAME@$DOMAIN ничего не нашел.
Опс, похоже я это удалил за ненадобностью, но смотри ниже:
Пакет maildrop-doc, файл README-ALT-maildrop (в самом конце):
maildrop-userdb + Postfix:
--------------------------
[skip]
maildrop-userdb нормально работает в качестве MDA для системных
mailbox'ов (как в формате Mailbox так и в формате Maildir) после
замены в /etc/postfix/main.cf:
mailbox_command = /usr/bin/procmail -a $DOMAIN -d $LOGNAME
на
mailbox_command = /usr/bin/maildrop-userdb -d $LOGNAME
^^^^^^^^^^^^^^^ это работает только (!) для системных mailbox'ов !!!
если заменить -d $LOGNAME на -d $LOGNAME@$DOMAIN (возможно перед
'@' нужно будет поставить '\') и в userdb описать всех пользователей
в формате user на domain, то можно будет использовать maildrop как для
системных учетных записей (в userdb описываешь соответствующие
каталоги и реальные uid/gid), так и для виртуальных (как описано
ниже). Правда, в случае $LOGIN@$DOMAIN имеется одно 'НО' - если
системный пользователь не будет описан в userdb - почта ему не
доставится, т.к. getpwnam('user на domain') вернет ошибку - пользователь
с таким именем в системе врядли найдется. Наверное, я поэтому и не
стал описывать такой вариант в README-ALT-maildrop ... :)
------
Как MDA для виртуальных доменов:(все как описано в README.postfix из
пакета maildrop):
/etc/postfix/master.cf:
maildrop unix - n n - - pipe
flags=Ru user=vmail argv=/usr/bin/maildrop-userdb -d ${recipient}
/etc/postfix/main.cf:
maildrop_destination_recipient_limit = 1
transport:
virtual.domain maildrop:
# adduser -r vmail -d /var/spool/vmail -s /bin/false
# mkdir /var/spool/vmail
# chown vmail.vmail /var/spool/vmail
/etc/courier-imap/userdb:
# см. man userdb
dbuser на dvl1.sakhalin.ru home=/var/spool/vmail/dbuser|mail=/var/spool/vmail/dbuser|gid=116|uid=116
В файле userdb запись для пользователя должна быть в одну строку.
Имя пользователя должно быть с доменом и uid/gid == uid/gid
пользователя vmail.
^^^^^^^^^^^^^^^^^ а это для виртуальных.
А в твоем случае, ты создаешь виртуального пользователя shared
и пытаешся доставить почту, используя конфиг для локальных ящиков.
Т.е. для того, чтобы твоя конфигурация работала, необходимо в
transport добавить направление:
athlon.home maildrop:
и в userdb описать пользователя как shared на athlon.home.
Правда, я не знаю (вернее вроде бы я такое делал - но не помню
результата %) как поведет себя postfix если ему в transport
дописать имя домена, которое он считает локальным (т.е. почта
в этот домен доставляется с использованием mailbox_command).
Имеется широкое поле для экспериментов ... ;)
> Постфикс перезапущен, userdb пересоздана. И тем не менее:
>
> [root на athlon mail]# echo hello | mail shared
> [root на athlon mail]# tail /var/log/mail/all
> Nov 17 12:10:21 athlon postfix/pickup[3620]: 186BF72DA: uid=0 from=<root>
> Nov 17 12:10:21 athlon postfix/cleanup[3934]: 186BF72DA:
> message-id=<20021117091021.186BF72DA на athlon.home>
> Nov 17 12:10:21 athlon postfix/qmgr[3621]: 186BF72DA:
> from=<root на athlon.home>, size=282, nrcpt=1 (queue active)
> Nov 17 12:10:21 athlon postfix/local[3936]: 186BF72DA:
> to=<shared на athlon.home>, relay=local, delay=0, status=bounced (unknown
> user: "shared")
WBR, Dmitry Lebkov
PS. Для начала проверяй с помощью maildrop-userdb доставку почты в ящик:
# cat some_text_file | maildrop-userdb -d user
и только после успешой доставки таким методом пробуй использовать
постфикс - проще будет разбираться, где проблема. И документацию лучше
читать полностью, а не выборочно ... ;)
Подробная информация о списке рассылки Sisyphus