[exim-conf] 550 Unroutable address и серые адреса

Victor Ustugov victor на corvax.kiev.ua
Ср Ноя 17 21:24:26 EET 2004


Nikolai V. Ivanyushin wrote:

> Мигрировал сервер на exim. Как временная мера два MTA на одном хосте:
> exim на внешнем сетевом интерфейсе (реальные адреса), qmail - на
> внутреннем ("серые" адреса). Соответственно все домены остались пока на
> qmail. Переезд прошёл гладко, но вот появился странный косяк. Иногда
> exim обламывался делать callout на проверку пользователя в qmail и
> выводил ошибку "550 Unroutable address". А иногда делал. Закономерности
> я особо не увидел. Все злоключения свои я опускаю, только хочу сказать
> отдельное спасибо Виктору. А победилось всё просто. В ..site/conf
> НЕОБХОДИМО добавить описание своих "серых" зон в виде:
> define(`DNSLOOKUP_IGNORE_TARGET_HOSTS',         `\
>         : !192.168.0.0/24 \
> ')dnl
> где 192.168.0.0/24 и есть эта зона.
> Витя, я всё верно написал?

в общем, более-менее описал нормально.

я просто изложу причины такого поведения, может кому-то еще пригодится 
(с Пашей мы почти такой же вариант уже проходили).

итак, у тебя эксим заюзан в качестве пограничного MTA. на пограничном 
хосте best MX'ы локальных для кумыла доменов указывают на сервые адреса 
интерфейса(ов) этого же хоста, внешним клиентам в качестве best MX'ов 
возвращаются честные маршрутизируемые адреса. кроме этого в mailertable 
твоего эксима указано пересылать почту этих доменов на интерфейс, на 
котором слушает кумыл.

далее, внешний клиент пытается влить почту для локального для кумыла 
домена. твой эксим делает verify recipient/callout. т. к. роутеры, 
созданные при подключении mailertable, не используются при проверке как 
отправителей, так и получателей, то проверка проводится с использованием 
роутера dnslookup. а я (добрая душа) по дефолту указываю в паровозе 
роутеру dnslookup игнорировать все сервые сети, упоминание о которых 
нашел в RFC. следовательно, эксим не находит роутера, с помощью которого 
можно осуществить verify recipient и возвращает оригинальному 
отправителю "Unroutable address".

если бы ты не проводил verify recipient/callout, то в твоем случае 
ошибка бы эта не возникла (проверку проводить не надо, а собственно 
отправка почты этим получаетлям проводилась бы роутером route_by_smtp, 
который не игнорирует серые сети).

т. к. в твоем случае (разные views с разными значениями MX записей в 
настройках DNS сервера для разных клиентов) необязательно использовать 
mailertable для локальных для кумыла доменов, то в этом случае 
вышеописанная ошибка "Unroutable address" возникла бы и без verify 
recipient/callout.


теперь то, из-за чего все это и описывалось:

если у вас в серых сетях есть MTA кроме эксима, на котором крутится 
паровоз, то нужно перечислить если не эти сети, то по крайней мере хосты 
с MTA в переменной DNSLOOKUP_IGNORE_TARGET_HOSTS в файле site/conf. все 
хосты и сети указываются с "!" перед ними. в описании роутера dnslookup 
эти хосты и сети будут использоваться как исключения из общего списка 
игнорируемых серых сетей.

вышеописанная ситуация касается не только случаев нескольких MTA в одной 
сети, но и случаев использования VPN.

-- 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Best wishes Victor Ustugov   mailto:victor на corvax.kiev.ua
public GnuPG/PGP key:        http://victor.corvax.kiev.ua/corvax.asc
ICQ UIN: 77186900, 32418694  nic-handle: CRV2-RIPE, CRV-UANIC




Подробная информация о списке рассылки exim-conf