URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 96772
[ Назад ]

Исходное сообщение
"Exim ldap virtual user и hubbed"

Отправлено mcshel , 23-Дек-16 11:23 
Здравствуйте!

Настраиваем почтовую систему на базе 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 у меня почему-то не срабатывает.


Содержание

Сообщения в этом обсуждении
"Exim ldap virtual user и hubbed"
Отправлено DeadLoco , 28-Дек-16 06:06 
> Что можно сделать 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