Страница 1 из 1

Exim - Порядок роутеров и несколько e-mail-адресов

Добавлено: 2010-01-27 15:34:08
hangover
Всем привет.

Столкнулся тут на днях с такой проблемой - есть Exim, завязанный на Active Directory, в его конфиге есть несколько роутеров для почтовых рассылок по группам пользователей - например, mailgroup1@domain.ru, mailgroup2@domain.ru и т.п. Пользователь хочет отправить письмо, и при составлении указывает в поле "Кому" их по очереди: mailgroup1@domain.ru,mailgroup2@domain.ru, отправляет, а потом прибегает и жалуется, что одной из почтовых групп ничего не прилетело.

Начал разбираться - вижу следующее:

Код: Выделить всё

# exim -bt mailgroup1@domain.ru
user1@domain.ru
    <-- mailgroup1@domain.ru
  router = ldap_user, transport = ldap_delivery
user2@domain.ru
    <-- mailgroup1@domain.ru
  router = ldap_user, transport = ldap_delivery
user3@domain.ru
    <-- mailgroup1@domain.ru
  router = ldap_user, transport = ldap_delivery
user4@domain.ru
    <-- mailgroup1@domain.ru
  router = ldap_user, transport = ldap_delivery
Нормально.

Код: Выделить всё

# exim -bt mailgroup2@domain.ru
user5@domain.ru
    <-- user5@domain.ru
    <-- mailgroup2@domain.ru
  router = ldap_filial_user, transport = remote_smtp
  host 192.168.1.16 [192.168.1.16] 
user6@domain.ru
    <-- user6@domain.ru
    <-- mailgroup2@domain.ru
  router = ldap_filial_user, transport = remote_smtp
  host 192.168.1.16 [192.168.1.16] 
Тоже нормально.

Теперь смотрим их вместе:

Код: Выделить всё

# exim -bt mailgroup2@domain.ru,mailgroup1@domain.ru
user5@domain.ru
    <-- user6@domain.ru
    <-- mailgroup2@domain.ru
  router = ldap_filial_user, transport = remote_smtp
  host 192.168.1.16 [192.168.1.16] 
user6@domain.ru
    <-- user6@domain.ru
    <-- mailgroup2@domain.ru
  router = ldap_filial_user, transport = remote_smtp
  host 192.168.1.16 [192.168.1.16]
user1@domain.ru
    <-- mailgroup1@domain.ru
  router = ldap_user, transport = ldap_delivery
user2@domain.ru
    <-- mailgroup1@domain.ru
  router = ldap_user, transport = ldap_delivery
user3@domain.ru
    <-- mailgroup1@domain.ru
  router = ldap_user, transport = ldap_delivery
user4@domain.ru
    <-- mailgroup1@domain.ru
  router = ldap_user, transport = ldap_delivery
Так отрабатывает правильно. А вот если поменять порядок e-mail адресов:

Код: Выделить всё

# exim -bt mailgroup1@domain.ru,mailgroup2@domain.ru
user1@domain.ru
    <-- mailgroup1@domain.ru
  router = ldap_user, transport = ldap_delivery
user2@domain.ru
    <-- mailgroup1@domain.ru
  router = ldap_user, transport = ldap_delivery
user3@domain.ru
    <-- mailgroup1@domain.ru
  router = ldap_user, transport = ldap_delivery
user4@domain.ru
    <-- mailgroup1@domain.ru
  router = ldap_user, transport = ldap_delivery
user1@domain.ru   [duplicate, would not be delivered]
    <-- mailgroup2@domain.ru
  router = ldap_user, transport = ldap_delivery
user2@domain.ru   [duplicate, would not be delivered]
    <-- mailgroup2@domain.ru
  router = ldap_user, transport = ldap_delivery
user3@domain.ru   [duplicate, would not be delivered]
    <-- mailgroup2@domain.ru
  router = ldap_user, transport = ldap_delivery
user4@domain.ru   [duplicate, would not be delivered]
    <-- mailgroup2@domain.ru
  router = ldap_user, transport = ldap_delivery
Т.е., как видим, первый список рассылки отрабатывается нормально, а вот второй указанный - нет, Exim начинает его дублировать, как будто не видит.

В конфиге роутеры сделаны следующим образом:

Код: Выделить всё

dnslookup:
    driver		= dnslookup
    domains		= !+local_domains
    transport		= remote_smtp
    ignore_target_hosts	= 0.0.0.0 : 127.0.0.0/8
    no_more

redirect_to_filial:
    driver		= redirect
    domains		= +local_domains
    data		= ${lookup ldap{LDAP_AD_MAIL_FILIAL_RCPT}{$local_part@$domain}}
    redirect_router	= ldap_filial_user

lists_alias_ad:
    driver              = redirect
    domains             = +local_domains
    data                = ${perl{rcpt_generator}{$local_part@$domain}}
    redirect_router     = ldap_user
    forbid_pipe
    forbid_file

lists_alias_ad_filial:
    driver              = redirect
    domains             = +local_domains
    data                = ${perl{filial_rcpt_generator}{$local_part@$domain}}
#    redirect_router     = ldap_filial_user
    forbid_pipe
    forbid_file

lists_alias:
    driver		= redirect
    domains		= +local_domains
    local_parts		= !all
    file		= /usr/local/etc/exim/list/.exim-$local_part
    redirect_router	= ldap_user
    forbid_pipe
    forbid_file

ldap_check:
    driver		= redirect
    domains		= +local_domains
    allow_fail
    allow_defer
    data		= ${lookup ldap{LDAP_AD_MAIL_RCPT}{$local_part@$domain}{:fail: There is no such user}}
    redirect_router	= ldap_user

ldap_user:
    driver		= accept
    transport		= ldap_delivery

ldap_filial_user:
    driver		= manualroute
    route_list		= * 192.168.1.16
    transport		= remote_smtp

    cannot_route_message = There is no such user
В роутерах lists_alias_ad и lists_alias_ad_filial используется функция из перлового скрипта, взятого отсюда (спасибо lissyara и CrazyPilot), чтоб получить список мыл доменных юзеров из группы, в которую они входят, но это не так уж важно. Важно то, что mailgroup1@domain.ru обрабатывается роутером lists_alias_ad (местный AD), а mailgroup2@domain.ru - роутером lists_alias_ad_filial (группа юзеров в филиальном AD).

Вобщем, загвоздка в том, что в первом случае почтовые адреса указаны в порядке, обратном следованию роутеров, и всё нормально уходит.
А во втором случае - почтовые адреса указаны наоборот, и отрабатывает только первый список рассылки.
В чём прикол?

Re: Exim - Порядок роутеров и несколько e-mail-адресов

Добавлено: 2010-01-28 10:48:11
CrazyPilot
Как я понимаю, местные списки рассылки от филиальных вы отличаете по LDAP_AD_MAIL_FILIAL_RCPT? Почему в "филиальном" роутере закомментирован redirect_router? В чем отличие перловых процедур, в контроллерах домена?

Re: Exim - Порядок роутеров и несколько e-mail-адресов

Добавлено: 2010-01-28 11:19:31
hangover
Да, для поиска юзера в филиале используется запрос LDAP_AD_MAIL_FILIAL_RCPT, у нас - LDAP_AD_MAIL_RCPT - отличия только в контроллерах доменов и в basedn.
Перловые функции тоже отличаются этим - возвращают список народа они правильно.
А redirect_router я закомментил в процессе игрищ с роутерами - по сути, на сабж топика, да и на работу почты оно не влияет, разницы особой нету.

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

Re: Exim - Порядок роутеров и несколько e-mail-адресов

Добавлено: 2010-01-28 11:35:43
CrazyPilot
муть какая-то. Не втыкаю, как от перестановки слагаемых меняется сумма. Для каждого получателя exim прогоняет полный список роутеров, пока не найдёт accept, насколько я помню.

redirect_to_filial у вас срабатывает на адрес списка рассылки для филиалов? Но если он сработает - то идет редирект на manualroute, зачем?
Как я понимаю, вам нужен роутер, который будет отличать адреса локальных и филиальных списков рассылки. Дальше этот роутер должен редиректить на соответствующий роутер, который будет генерить списки пользователей.

И у вас condition'ов в роутерах вообще нет. Я бы сделал кондишн в каждом роутере списков расслыки, который бы проверял, стоит ему роутить адрес списка рассылки. (То есть в роутерах списков рассылки отличать адреса локальных и филиальных списков рассылки, и в них редирект на локальную доставку, или на manualroute)

Re: Exim - Порядок роутеров и несколько e-mail-адресов

Добавлено: 2010-01-28 14:49:33
hangover
CrazyPilot писал(а):redirect_to_filial у вас срабатывает на адрес списка рассылки для филиалов? Но если он сработает - то идет редирект на manualroute, зачем?
Нет, redirect_to_filial используется для того, чтоб сразу заворачивать почту, предназначенную для филиальных юзеров, на тамошний MTA.
CrazyPilot писал(а):Как я понимаю, вам нужен роутер, который будет отличать адреса локальных и филиальных списков рассылки. Дальше этот роутер должен редиректить на соответствующий роутер, который будет генерить списки пользователей.

И у вас condition'ов в роутерах вообще нет. Я бы сделал кондишн в каждом роутере списков расслыки, который бы проверял, стоит ему роутить адрес списка рассылки. (То есть в роутерах списков рассылки отличать адреса локальных и филиальных списков рассылки, и в них редирект на локальную доставку, или на manualroute)
Да, идея хорошая, надо будет повтыкать в роутеры condition-ы с LDAP-запросами, чтоб различать народ - почтовый домен-то у нас один.

Дебаг, кстати, показал какую-то непонятную хрень.
<...skip...>

16:52:16 43613 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
16:52:16 43613 Considering: mailgroup2@domain.ru
16:52:16 43613 unique = mailgroup2@domain.ru
16:52:16 43613 dbfn_read: key=R:domain.ru
16:52:16 43613 dbfn_read: key=R:mailgroup2@domain.ru
16:52:16 43613 dbfn_read: key=R:mailgroup2@domain.ru:<user3@domain.ru>
16:52:16 43613 no domain retry record
16:52:16 43613 no address retry record
16:52:16 43613 mailgroup2@domain.ru: queued for routing
16:52:16 43613 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
16:52:16 43613 Considering: mailgroup1@domain.ru
16:52:16 43613 unique = mailgroup1@domain.ru
16:52:16 43613 dbfn_read: key=R:domain.ru
16:52:16 43613 dbfn_read: key=R:mailgroup1@domain.ru
16:52:16 43613 dbfn_read: key=R:mailgroup1@domain.ru:<user3@domain.ru>
16:52:16 43613 no domain retry record
16:52:16 43613 no address retry record
16:52:16 43613 mailgroup1@domain.ru: queued for routing
16:52:16 43613 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
16:52:16 43613 routing mailgroup1@domain.ru
16:52:16 43613 --------> dnslookup router <--------

<...skip...>

16:52:16 43613 dnslookup router skipped: domains mismatch
16:52:16 43613 --------> redirect_to_filial router <--------

<...skip...>

16:52:16 43613 redirect_to_filial router declined for mailgroup1@domain.ru
16:52:16 43613 --------> lists_alias_ad router <--------
16:52:16 43613 local_part=mailgroup1 domain=domain.ru
16:52:16 43613 checking domains
16:52:16 43613 cached yes match for +local_domains
16:52:16 43613 cached lookup data = NULL
16:52:16 43613 domain.ru in "+local_domains"? yes (matched "+local_domains" - cached)
16:52:16 43613 calling lists_alias_ad router
16:52:16 43613 rda_interpret (string): ${perl{rcpt_generator}{$local_part@$domain}}
16:52:16 43613 expanding: rcpt_generator
16:52:16 43613 result: rcpt_generator
16:52:16 43613 expanding: $local_part@$domain
16:52:16 43613 result: mailgroup1@domain.ru
16:52:16 43613 Starting Perl interpreter
16:52:17 43613 expanding: ${perl{rcpt_generator}{$local_part@$domain}}
16:52:17 43613 result: user4@domain.ru,user3@domain.ru,user2@domain.ru,user1@domain.ru
16:52:17 43613 expanded: user4@domain.ru,user3@domain.ru,user2@domain.ru,user1@domain.ru

16:52:17 43613 file is not a filter file
16:52:17 43613 parse_forward_list: user4@domain.ru,user3@domain.ru,user2@domain.ru,user1@domain.ru
16:52:17 43613 extract item: user4@domain.ru
16:52:17 43613 extract item: user3@domain.ru
16:52:17 43613 extract item: user2@domain.ru
16:52:17 43613 extract item: user1@domain.ru
16:52:17 43613 lists_alias_ad router generated user1@domain.ru
16:52:17 43613 errors_to=NULL transport=NULL
16:52:17 43613 uid=unset gid=unset home=NULL
16:52:17 43613 lists_alias_ad router generated user2@domain.ru
16:52:17 43613 errors_to=NULL transport=NULL
16:52:17 43613 uid=unset gid=unset home=NULL
16:52:17 43613 lists_alias_ad router generated user3@domain.ru
16:52:17 43613 errors_to=NULL transport=NULL
16:52:17 43613 uid=unset gid=unset home=NULL
16:52:17 43613 lists_alias_ad router generated user4@domain.ru
16:52:17 43613 errors_to=NULL transport=NULL
16:52:17 43613 uid=unset gid=unset home=NULL
16:52:17 43613 routed by lists_alias_ad router
16:52:17 43613 envelope to: mailgroup1@domain.ru
16:52:17 43613 transport: <none>
16:52:17 43613 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
16:52:17 43613 routing mailgroup2@domain.ru
16:52:17 43613 --------> dnslookup router <--------

<...skip...>

16:52:17 43613 dnslookup router skipped: domains mismatch
16:52:17 43613 --------> redirect_to_filial router <--------

<...skip...>

16:52:17 43613 redirect_to_filial router declined for mailgroup2@domain.ru
16:52:17 43613 --------> lists_alias_ad router <--------
16:52:17 43613 local_part=mailgroup2 domain=domain.ru
16:52:17 43613 checking domains
16:52:17 43613 cached yes match for +local_domains
16:52:17 43613 cached lookup data = NULL
16:52:17 43613 domain.ru in "+local_domains"? yes (matched "+local_domains" - cached)
16:52:17 43613 calling lists_alias_ad router
16:52:17 43613 rda_interpret (string): ${perl{rcpt_generator}{$local_part@$domain}}
16:52:17 43613 expanding: rcpt_generator
16:52:17 43613 result: rcpt_generator
16:52:17 43613 expanding: $local_part@$domain
16:52:17 43613 result: mailgroup2@domain.ru
16:52:17 43613 expanding: ${perl{rcpt_generator}{$local_part@$domain}}
16:52:17 43613 result: user4@domain.ru,user3@domain.ru,user2@domain.ru,user1@domain.ru
16:52:17 43613 expanded: user4@domain.ru,user3@domain.ru,user2@domain.ru,user1@domain.ru

16:52:17 43613 file is not a filter file
16:52:17 43613 parse_forward_list: user4@domain.ru,user3@domain.ru,user2@domain.ru,user1@domain.ru
16:52:17 43613 extract item: user4@domain.ru
16:52:17 43613 extract item: user3@domain.ru
16:52:17 43613 extract item: user2@domain.ru
16:52:17 43613 extract item: user1@domain.ru
16:52:17 43613 lists_alias_ad router generated user1@domain.ru
16:52:17 43613 errors_to=NULL transport=NULL
16:52:17 43613 uid=unset gid=unset home=NULL
16:52:17 43613 lists_alias_ad router generated user2@domain.ru
16:52:17 43613 errors_to=NULL transport=NULL
16:52:17 43613 uid=unset gid=unset home=NULL
16:52:17 43613 lists_alias_ad router generated user3@domain.ru
16:52:17 43613 errors_to=NULL transport=NULL
16:52:17 43613 uid=unset gid=unset home=NULL
16:52:17 43613 lists_alias_ad router generated user4@domain.ru
16:52:17 43613 errors_to=NULL transport=NULL
16:52:17 43613 uid=unset gid=unset home=NULL
16:52:17 43613 routed by lists_alias_ad router
16:52:17 43613 envelope to: mailgroup2@domain.ru
16:52:17 43613 transport: <none>
16:52:17 43613 locking /var/spool/exim/db/retry.lockfile
16:52:17 43613 locked /var/spool/exim/db/retry.lockfile
16:52:17 43613 EXIM_DBOPEN(/var/spool/exim/db/retry)
16:52:17 43613 returned from EXIM_DBOPEN
16:52:17 43613 opened hints database /var/spool/exim/db/retry: flags=O_RDONLY
16:52:17 43613 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

<...skip...>
И дальше идёт распихивание почты по юзерам.

Но, блин, как так? mailgroup2@domain.ru - это филиальная группа рассылки! Как так получается, что она обрабатывается роутером lists_alias_ad?
Ведь, если указать получателем только mailgroup2@domain.ru - она спокойно обаботается своим роутером lists_alias_ad_filial, и преспокойно себе улетит в manualroute.
Вот так оно должно работать:
16:13:05 43418 --------> lists_alias_ad_filial router <--------
16:13:05 43418 local_part=mailgroup2 domain=domain.ru
16:13:05 43418 checking domains
16:13:05 43418 cached yes match for +local_domains
16:13:05 43418 cached lookup data = NULL
16:13:05 43418 domain.ru in "+local_domains"? yes (matched "+local_domains" - cached)
16:13:05 43418 calling lists_alias_ad_filial router
16:13:05 43418 rda_interpret (string): ${perl{filial_rcpt_generator}{$local_part@$domain}}
16:13:05 43418 expanding: filial_rcpt_generator
16:13:05 43418 result: filial_rcpt_generator
16:13:05 43418 expanding: $local_part@$domain
16:13:05 43418 result: mailgroup2@domain.ru
16:13:05 43418 expanding: ${perl{filial_rcpt_generator}{$local_part@$domain}}
16:13:05 43418 result: user6@domain.ru,user5@domain.ru
16:13:05 43418 expanded: user6@domain.ru,user5@domain.ru

16:13:05 43418 file is not a filter file
16:13:05 43418 parse_forward_list: user6@domain.ru,user5@domain.ru
16:13:05 43418 extract item: user6@domain.ru
16:13:05 43418 extract item: user5@domain.ru
16:13:05 43418 lists_alias_ad_filial router generated user5@domain.ru
16:13:05 43418 errors_to=NULL transport=NULL
16:13:05 43418 uid=unset gid=unset home=NULL
16:13:05 43418 lists_alias_ad_filial router generated user6@domain.ru
16:13:05 43418 errors_to=NULL transport=NULL
16:13:05 43418 uid=unset gid=unset home=NULL
16:13:05 43418 routed by lists_alias_ad_filial router
16:13:05 43418 envelope to: mailgroup2@domain.ru
16:13:05 43418 transport: <none>
16:13:05 43418 locking /var/spool/exim/db/retry.lockfile
16:13:05 43418 locked /var/spool/exim/db/retry.lockfile
16:13:05 43418 EXIM_DBOPEN(/var/spool/exim/db/retry)
16:13:05 43418 returned from EXIM_DBOPEN
16:13:05 43418 opened hints database /var/spool/exim/db/retry: flags=O_RDONLY
Вобщем, спасибо за совет, попробую прилепить кондишн, и посмотреть, что получится.
Просто не очень мне понятно, почему mailgroup2 (филиальный список) пихается в тот же роутер, что и mailgroup1 (местный список).

Re: Exim - Порядок роутеров и несколько e-mail-адресов

Добавлено: 2010-01-28 15:02:17
CrazyPilot
Эм, как у вас exim отличит, что mailgroup2@domain.ru филиальная группа рассылки? Я в конфиге роутеров нигде условий не видел. Он берет первый подходящий роутер lists_alias_ad, тот decline не выдаёт, всё пучком. Именно из-за этого я вам предлагаю поставить кондишны в роутеры списков рассылки, чтобы выполнять нужный роутер по заданному адресу...

Из последнего дебага непонятно как у вас шел процессс. Показали бы полный лог, а то сразу роутер филиалов. Непонятно как exim добрался до него.

Re: Exim - Порядок роутеров и несколько e-mail-адресов

Добавлено: 2010-01-29 7:56:32
hangover
CrazyPilot писал(а):Эм, как у вас exim отличит, что mailgroup2@domain.ru филиальная группа рассылки? Я в конфиге роутеров нигде условий не видел. Он берет первый подходящий роутер lists_alias_ad, тот decline не выдаёт, всё пучком. Именно из-за этого я вам предлагаю поставить кондишны в роутеры списков рассылки, чтобы выполнять нужный роутер по заданному адресу...

Из последнего дебага непонятно как у вас шел процессс. Показали бы полный лог, а то сразу роутер филиалов. Непонятно как exim добрался до него.
Да там портянка на 80k символов, глаз выпадет всё читать :) Я так, только самое вкусненькое и запостил.

Вобщем, вы правы, спасибо за наводку с кондишеном.
Теперь, когда я сделал вот так, работает нормально (тесты продолжаются - щас буду смотреть, как работает адская смесь из 3+ списков рассылки, указанных в получателях в разном порядке :) ):

Код: Выделить всё

dnslookup:
    driver              = dnslookup
    domains             = !+local_domains
    transport           = remote_smtp
    ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
    no_more

redirect_to_filial:
    driver              = redirect
    domains             = +local_domains
    data                = ${lookup ldap{LDAP_AD_MAIL_FILIAL_RCPT}{$local_part@$domain}}
    redirect_router     = ldap_filial_user

lists_alias_ad_filial:
    driver              = redirect
    condition           = ${lookup ldap{LDAP_AD_MAILGROUP_FILIAL}{yes}{no}}
    domains             = +local_domains
    data                = ${perl{filial_rcpt_generator}{$local_part@$domain}}
    redirect_router     = ldap_filial_user
    forbid_pipe
    forbid_file

lists_alias_ad:
    driver              = redirect
    domains             = +local_domains
    data                = ${perl{rcpt_generator}{$local_part@$domain}}
    redirect_router     = ldap_user
    forbid_pipe
    forbid_file

ldap_check:
    driver              = redirect
    domains             = +local_domains
    allow_fail
    allow_defer
    data                = ${lookup ldap{LDAP_AD_MAIL_RCPT}{$local_part@$domain}{:fail: There is no such user}}
    redirect_router     = ldap_user

ldap_user:
    driver              = accept
    transport           = local_delivery

ldap_filial_user:
    driver              = manualroute
    route_list          = * 192.168.1.16
    transport           = remote_smtp

cannot_route_message    = There is no such user
Соответственно, пришлось сляпать ещё один макрос LDAP-запроса LDAP_AD_MAILGROUP_FILIAL, для того, чтоб определять - есть группа с таким мылом в филиальном домене, или нет:

Код: Выделить всё

LDAP_AUTH_DATA          = user=cn=ldapuser,cn=Users,dc=domain,dc=local pass="MegaPass"
LDAP_BASE_DN            = dc=domain,dc=local

LDAP_AD_MAILGROUP_FILIAL = \
LDAP_AUTH_DATA \
ldap:///dc=filial,LDAP_BASE_DN?mail?sub?\
(&\
(objectClass=top)(objectClass=group)(|(groupType=2)(groupType=4)(groupType=8))\
(mail=${quote_ldap:$local_part}${quote_ldap:@}${quote_ldap:$domain}))
Правда, мне по-прежнему непонятно, каким образом при старом конфиге (без condition'а) экзим правильно определял филиальный роутер для группы рассылки, если она была одна получателем указана...

Re: Exim - Порядок роутеров и несколько e-mail-адресов

Добавлено: 2010-01-29 9:11:42
CrazyPilot
hangover писал(а):Правда, мне по-прежнему непонятно, каким образом при старом конфиге (без condition'а) экзим правильно определял филиальный роутер для группы рассылки, если она была одна получателем указана...
Это и надо посмотреть в дебаге

И я бы еще сделал кондишн и во втором роутере списков рассылки, чтобы впустую его не гонять, когда приходит получатель обычный, а не адрес локального списка рассылки.
hangover писал(а):

Код: Выделить всё

LDAP_AD_MAILGROUP_FILIAL = \
LDAP_AUTH_DATA \
ldap:///dc=filial,LDAP_BASE_DN?mail?sub?\
(&\
(objectClass=top)(objectClass=group)(|(groupType=2)(groupType=4)(groupType=8))\
(mail=${quote_ldap:$local_part}${quote_ldap:@}${quote_ldap:$domain}))
Жестоко вы его :-)
Мож так проще? (если это win2k3 AD)

Код: Выделить всё

LDAP_AD_MAILGROUP_FILIAL = \
LDAP_AUTH_DATA \
ldap:///dc=filial,LDAP_BASE_DN?mail?sub?(&(objectClass=group)(mail=${quote_ldap:$local_part@$domain}))

Re: Exim - Порядок роутеров и несколько e-mail-адресов

Добавлено: 2010-01-29 10:42:14
hangover
CrazyPilot писал(а):И я бы еще сделал кондишн и во втором роутере списков рассылки, чтобы впустую его не гонять, когда приходит получатель обычный, а не адрес локального списка рассылки.
Ага, я уже так и сделал.
CrazyPilot писал(а):Мож так проще? (если это win2k3 AD)

Код: Выделить всё

LDAP_AD_MAILGROUP_FILIAL = \
LDAP_AUTH_DATA \
ldap:///dc=filial,LDAP_BASE_DN?mail?sub?(&(objectClass=group)(mail=${quote_ldap:$local_part@$domain}))
О, точно, оптимизация налицо! :)

Большое спасибо за помощь! Буду в Питере - с меня пиво! :drinks: