[Comm] virtual mail domain
Dmitry Lebkov
=?iso-8859-1?q?dima_=CE=C1_sakhalin=2Eru?=
Ср Апр 2 06:48:11 MSD 2003
On Wed, 02 Apr 2003 11:05:42 +1000
metrol на amur.ru wrote:
>
> Здравствуйте!
>
> Создал виртуальный почтовый домен в такой связке:
> Postfix + Courier-imap + Maildrop-userdb.
> Делал по maildrop.README-ALT.
> Все прекрасно работает, пока дело не дошло до несуществующих
> пользователей в этом виртуальном домене.
> Письма для них болтаются в очереди postfix'а, mailq показывает:
>
> -Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
> 1876DF0146 675 Wed Apr 2 10:36:43 test на virtual.ru
> (temporary failure. Command output: /usr/bin/maildrop-userdb: Invalid
> user specified. )
> test1 на virtual.ru
>
> Подскажите как сделать, чтобы для таких зверей почта пересылалась на
> существующего пользователя?
На вскидку, три варианта: %)
1. Патчить maildrop на предмет exit code в случае отсутствия пользователя,
для которого доставляется почта. Сейчас maildrop возвращает EX_TEMPFAIL.
В твоем случае - необходимо EX_NOUSER. Патч, корректирующий поведение
maildrop, лежит здесь:
http://www-dt.e-technik.uni-dortmund.de/~ma/postfix/fix-maildrop-NO_USER.diff
Это не совсем 'right way', т.к. принимать решение о доставке сообщения -
дело MTA (sedmail или postfix) а не MDA (procmail или maildrop), т.е.
предполагается, что в момент передачи сообщения локальному агенту от MTA,
пользователь уже присутствует в системе. И с этой точки зрения EX_TEMPFAIL
вполне уместен: если по какой-либо причине не удалось получить инфо о
пользователе (отвалился SQL или LDAP, не сработал вызов getpwent, и т.д.)
-- сообщение зависает в очереди до тех пор, пока ситуация не исправится.
2. Настроить почтовый сервер таким образом, чтоб он _не принимал_ почту
для несуществующих адресов.
Т.к. у тебя пользователи в userdb, то можно попытаться использовать этот самый
/etc/courier-imap/userdb.db как postfix map. Если maildrop-userdb у тебя описан
как транспорт maildrop, то тебе должно помочь что-то типа:
maildrop_recipient_map = hash:/etc/courier-imap/userdb
Подробности - в доках postfix'а, в районе local_recipient_map.
3. Попытаться Написать общесистемный maildroprc, обрабатывающий данную ситуацию.
См. man maildropfilter.
Про этот метод я знаю, что он существует и является довольно универсальным
инструментом. Но сам я никогда не пытался решить подобную задачу с помощью
общесистемного maildroprc. %)
--
WBR, Dmitry Lebkov
Подробная информация о списке рассылки community