[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