Здравствуйте!Настраиваем почтовую систему на базе exim и dovcecot + virtual users в LDAP. Возник следующий вопрос:
Есть такой route
virtual_user:
driver = accept
debug_print = "R: Check address using virtual_user"
transport = ldap_delivery
domains = +ldap_domains
condition = CHECK_VIRTUAL_USER
#cannot_route_message = Unknown user
no_moreс проверкой существования юзера, приведу окончание CHECK_VIRTUAL_USER = ....... (proxyAddresses=smtp:${quote_ldap:$local_part}${quote_ldap:@}${quote_ldap:$domain}))}}}{no}{yes}}
Ниже по конфигу есть еще один route в файле hubbed_hosts содержится *.mydomain.com
hubbed_hosts:
debug_print = "R: hubbed_hosts for $domain"
driver = manualroute
# domains = ! +local_domains
domains = "${if exists{CONFDIR/hubbed_hosts}\
{partial-lsearch;CONFDIR/hubbed_hosts}\
fail}"
same_domain_copy_routing = yes
route_data = ${lookup{$domain}partial-lsearch{CONFDIR/hubbed_hosts}}
# transport = remote_smtp
transport = remote_smtp_hhЕсли отправить на несуществующий адрес fdhghdfgj@my.mydomain.com, то exim сигнализирует, а том, что пользовтаель не найден, но перенаправляет письмо на smtp сервер, который указан в hubbed. Убрать *.mydomain.com пока не представляется возможным.
Что можно сделать no_more у меня почему-то не срабатывает.
> Что можно сделать no_more у меня почему-то не срабатывает.И не должен. no_more гарантирует, что письмо не пойдет дальше роутера, если оно поймано кондишнами роутера. Если оно НЕ поймано (в вашем случае - не сработал CHECK_VIRTUAL_USER), то оно валится вниз по роутерам пока либо не случится соответствия всем условиям, либо не упрется в "can't route"
Вообще, проверки юзеров следует делать АЦЛями в фазе RCPT, чтобы не всасывать письмо целиком, а потом думать, что с ним делать. Как только отправитель указывает несуществующего получателя, следует вежливо, но непреклонно сообщить ему об этом. Но если все плохо, и все на роутерах, то вам надлежит сделать второй роутер вида:
no_virtual_user:
driver = accept
debug_print = "R: Check address failed"
transport = null_transport
domains = +ldap_domains
condition = ! CHECK_VIRTUAL_USER
no_more