From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Wed, 2 Apr 2003 13:48:11 +1100 From: Dmitry Lebkov To: community@altlinux.ru Subject: Re: [Comm] virtual mail domain Message-Id: <20030402134811.1d15957e.dima@sakhalin.ru> In-Reply-To: <3E8A3766.6080600@amur.ru> References: <3E8A3766.6080600@amur.ru> Organization: Sakhalin branch of DalSvyaz JSC X-Mailer: Sylpheed version 0.8.11 (GTK+ 1.2.10; i586-alt-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=KOI8-R Content-Transfer-Encoding: 8bit Sender: community-admin@altlinux.ru Errors-To: community-admin@altlinux.ru X-BeenThere: community@altlinux.ru X-Mailman-Version: 2.0.9 Precedence: bulk Reply-To: community@altlinux.ru List-Unsubscribe: , List-Id: List-Post: List-Help: List-Subscribe: , List-Archive: Archived-At: List-Archive: List-Post: 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