[exim-conf] доработки mailertable

Victor Ustugov victor на corvax.kiev.ua
Пн Ноя 10 16:37:40 EET 2014


приветствую

изначально при реализации mailertable из запросов на доставку почты по
SMTP с использованием ручных маршрутов были исключены локальные домены
(что в общем-то логично).

но в какой-то момент это исключение было закомментировано. видимо это
было при реализации плавной миграции локальных пользователей в Exchange,
описанной тут:
http://mta.org.ua/pipermail/exim-conf/2011-September/001205.html

на данный момент исключение локальных доменов из доставки по SMTP
сделано опциональным, необходимость исключения указывается в переменной
confMAILERTABLE_SMTP_SKIP_LOCALDOMAINS, значение по умолчанию YES.

такие же переменные сделаны для контроля исключения доставки почтых
локальных доменов с использованием транспортов lmtp и lmtpunix
(confMAILERTABLE_LMTP_SKIP_LOCALDOMAINS и
confMAILERTABLE_LMTPUNIX_SKIP_LOCALDOMAINS соответственно). для обеих
переменных значением по умолчанию является NO.

необходимость в возврате исключения доставки почты локальных доменов по
SMTP появилась сегодня, когда нужно было на одном подконтрольном хосте
быстро завернуть доставку внешней почты через транзитный хост по причине
банального листинга внешнего адреса маршрутизатора в cbl.abuseat.org.
почтовый сервер расположен в локалке за маршрутизатором, доступ из всех
сегментов локальной сети к TCP порту 25 внешних хостов был зафильтрован
на машрутизаторе, но добавилась гостевая Wi-Fi сеть, которая не попала
под фильтр, и через некоторое время внешний адрес, который используется
и для NAT'а исходящего трафика почтового сервера, и для NAT'а остального
исходящего трафика, был залистен в DNSBL.

чтобы не использовать доставку через smarthost, для которой нужно
пересобирать конфиг, можно было бы указать звездочку в левой части
строки в mailertable, но тогда под нее попали бы и локальные домены.

после реализации confMAILERTABLE_SMTP_SKIP_LOCALDOMAINS ручной маршрут
по умолчанию опять можно указывать в виде звездочки:

* : smtp : relay1

следует иметь ввиду, что эта строка должна быть последней в файле
mailertable, т. к. со звездочкой совпадет любой аргумент поиска.

также следует иметь ввиду, что если есть другие маршруты доставки по
доменам, их нужно переделать в маршруты доставки по адресам, добавив
префикс *@ перед названием домена:

*@domain.tld : smtp : relay1 : relay2
* : smtp : relay3

это связано с тем, что сначала производится лукап по адресу получателя,
а потом по домену получателя. а т. к. со звездочкой совпадет и адрес
получателя, то до лукапа по домену очередь не дойдет.


если из ручных маршрутов нужно исключить отдельные адреса или домены, то
маршруты для этих исключений нужно вписывать выше маршрутов, из которых
производится исключение.

в качестве транспорта в этом случае можно указать smtp и в качестве
списка хостов указать название домена с суффиксом /MX.

другой вариант - указывать исключения со словом skip вместо названия
транспорта.

примеры:

mailbox1 на domain.tld : smtp : domain.tld/MX
mailbox2 на domain.tld : skip
*@domain.tld        : smtp : relay1 : relay2
*                   : relay3

в данном примере письма для mailbox1 на domain.tld и mailbox2 на domain.tld
будут доставлены по MX, письма для остальных адресов домена domain.tld
будут маршрутизироваться через relay1 и relay2, письма остальных доменов
- через relay3.


если нужно указать общее правило с исключениями, это можно сделать одной
строкой:

\N^(?!(mail\.ru|inbox\.ru|list\.ru|bk\.ru)$)\N : smtp : relay1

в соотвествии с этим правилом почта для всех доменов, кроме mail.ru,
inbox.ru, list.ru, bk.ru, будет маршрутизироваться через relay1.

повторюсь еще раз, указав, что данная строка эквивалентна следующему
набору строк:

*@mail.ru  : smtp : mail.ru/MX
*@inbox.ru : smtp : inbox.ru/MX
*@list.ru  : smtp : list.ru/MX
*@bk.ru    : smtp : bk.ru/MX
*          : smtp : relay1

и эквивалента еще одному набору строк:

*@mail.ru  : skip
*@inbox.ru : skip
*@list.ru  : skip
*@bk.ru    : skip
*          : smtp : relay1


-- 
Best wishes Victor Ustugov  mailto:victor на corvax.kiev.ua
public GnuPG/PGP key:       http://victor.corvax.kiev.ua/corvax.asc
ICQ UIN: 371808614          JID: corvax_at_nb на jabber.corvax.kiev.ua
nic-handle: CRV-UANIC



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