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