Интересная картинка:
Два почтовых сервера, один в локалке (MS Exchange), второй на границе между локалкой и интернетом (Exim4). Почта принимается exim'ом, отправляется на Exchange, назад также. Схема весьма стандартная.
Exim настроен таким образом, что приняв почту снаружи, он отдаёт её amavisd-new, т.е. первый же роутер в конфиге выглядит так:
amavis:
driver = manualroute
condition = "${if eq {$interface_port}{10025} {0}{1}}"
transport = amavis
route_list = "* localhost byname"
self = send
amavis проверяет на вирусы и прочие нужные вещи, и отдаёт обратно exim'у, который согласно роутеру hubbed_hosts отправляет это на Exchange.
Всё отлично, не хватало лишь проверки на существование почтовых ящиков на Exchange, и картинка получалась некрасивая: exim принимал почту для любых ящиков, генерируя отлупы сотнями.
Естественно использовать для устранения проблемы callout, делаю это так:
accept domains = +relay_to_domains
endpass
message = unrouteable address
verify = recipient/callout,defer_ok
...и исполнительный exim при получении письма снаружи, и доходя до этой проверки, проверяет наличие ящика не на Exchange, а, согласно роутингу, у amavisd'а. amavisd, естественно, согласен на любые адреса получателей, и проверка проходит успешно.
Вопрос вполне понятен: как заставить exim для проверки использовать не тот router, который должен использоваться на самом деле?
Или, может быть, есть обходные пути?