Я уже нашел проблему(скобка лишняя) и ldap заброс отлично отрабатывает. Но 
только не роутеры:

ad_redirect_router:
<------>driver          =       redirect
<------>domains    =       +relay_to_domains
<------>data            =       ${lookup ldap {MS_RCPT}}

ad_relay_router:
<------>driver             =       "manualroute"
<------>domains       =       MS_DOMAIN
<------>transport       =       remote_smtp
<------>route_list      =       * 192.168.128.61
<------>no_more

Проверяю exim -bt [email protected] и вижу, что ad_redirect_router не 
отрабатывает. Хотя результатом запроса должен быть [email protected].


Я решил накладывать фильтр по mail.


14 сентября 2011, 14:36 от Victor Ustugov <[email protected]>:
> An An wrote:
> > С ldapsearch я разобрался. Даже уже в exim -be протестировал:
> >
> > netgenic# exim -be
> >> ${lookup ldap{[email protected] pass=ldapmail3 
> >> ldap:///dc=domain,dc=local?mail?sub?(&(|(objectClass=user)(objectClass=group))([email protected]))}}
> > [email protected]
> >> ${lookup ldap{[email protected] pass=ldapmail3 
> >> ldap:///dc=domain,dc=local?mail?sub?(&(|(objectClass=user)(objectClass=group))([email protected]))}}
> >
> >>
> >
> > Исходя из запроса, сформировал заново запрос в конфиге:
> >
> > ldap_default_servers = 192.168.128.61::3268
> >
> > MS_DOMAIN       = domain.local
> > MS_USER         = [email protected]
> > MS_PASS         = ldapmail3
> > MS_B_DN         = "dc=domain,dc=local"
> > MS_AD_MAIL_RCPT = \
> >                 user=MS_USER \
> >                 pass=MS_PASS \
> >                 ldap:///MS_B_DN?mail?sub?\
> >                 (&\
> >                 (|\
> >                 
> > (objectClass=user)(objectClass=publicFolder)(objectClass=group)\
> >                 )\
> >                 (mail=${local_part}@MS_DOMAIN})\
> >                 )
> >
> > Осталось с драными acl разобраться:
> >
> > warn    condition       = ${lookup ldap {MS_AD_MAIL_RCPT}{$value}fail}
> >              message         = Win
> >
> > warn    !condition      = ${lookup ldap {MS_AD_MAIL_RCPT}{$value}fail}
> >              message         = Lose
> >
> > Которые я ввел для проверки, и которые все время ругаются:
> >
> > Warning: ACL "warn" statement skipped: condition test deferred: ldap_search 
> > failed: -7, Bad search filter
> 
> во-первых, нужно таки определиться, накладывать фильтрь по атрибуту mail
> или по атрибуту proxyAddresses.
> 
> во-вторых, при наложении фильтра на proxyAddresses нужно указывать
> $domain, а не MS_DOMAIN. то, что они в данном конкретном случае могли
> совпасть (это непонятно из-за замены в примерах реального домена на
> domain.local), это сильно частный случай и конструкции MS_DOMAIN в
> значении фильтра точно делать нЕчего.
> 
> в-третьих, можно в выводе exim -d -bh посмотреть, какой именно LDAP
> запрос получился после подстановки всех этих макросов. и тогда уже
> думать, что не так. кстати, для проверки существования адреса хватает
> фильтра просто по proxyAddresses.
> 
> > 14 сентября 2011, 12:49 от Victor Ustugov <[email protected]>:
> >> An An wrote:
> >>> Все равно не выходит. На запрос:
> >>>
> >>> enic# ldapsearch -LLL -H ldap://192.168.128.61:3268 -s base
> >>>
> >>> есть ответ. Но на запрос:
> >>>
> >>> enic# ldapsearch -D exim -w ldapmail3 -LLL 
> >>> "(&(|(objectClass=user)(objectClass=publicFolder)(objectClass=group))(proxyAddresses=SMTP:[email protected]))"
> >>>        ldap_bind: Invalid credentials (49)
> >>>         additional info: 80090308: LdapErr: DSID-0C0903A9, comment: 
> >>> AcceptSecurityContext error, data 52e, v1db1
> >>
> >> а что возвращает
> >>
> >> ldapsearch -x -h 192.168.128.61 -p 3268 -LLL -D [email protected] -w
> >> ldapmail3 -b "dc=some-domain,dc=local"
> >> "(proxyAddresses=SMTP:[email protected])"
> >>
> >> ?
> >>
> >> причем значении артибута proxyAddresses нужно указывать почтовый домен,
> >> а в ldap логине и basedn должна быть указана доменная зона виндовой
> >> домена из AD. в изначальном условии задачи мелькало то
> >> some-domain.local, то dc=some-domain,dc=local, то DC=pac,DC=local
> >>
> >> в общем и целом нужно подставить корректные данные и выполнить запрос
> >>
> >>> enic# ldapsearch -D exim -w ldapmail3 -LLL -H ldap://192.168.128.61:3268 
> >>> "(&(|(objectClass=user)(objectClass=publicFolder)(objectClass=group))(proxyAddresses=SMTP:[email protected]))"
> >>> ldap_bind: Invalid credentials (49)
> >>>         additional info: 80090308: LdapErr: DSID-0C0903A9, comment: 
> >>> AcceptSecurityContext error, data 52e, v1db1
> >>>
> >>>
> >>>
> >>>
> >>> 14 сентября 2011, 10:40 от Golub Mikhail <[email protected]>:
> >>>> Привет.
> >>>>
> >>>> hide ldap_default_servers =  ldap::3268 (именно двоеточие)
> >>>> LDAP_AUTH= NETTIME=5 user="CN=username,OU=....,DC=...,=UA" pass=password
> >>>> IP_EXCHANGE=1.1.1.1
> >>>>
> >>>>      route_data= ${lookup ldap \
> >>>>             {LDAP_AUTH \
> >>>>               ldap:///DC=...=UA?proxyAddresses?sub?\
> >>>>               
> >>>> (&(proxyAddresses=smtp:$local_part@$domain)(|(objectclass=group)(&(objectclass=user)(msExchUserAccountControl=0)))\
> >>>>               )\
> >>>>             }\
> >>>>             {IP_EXCHANGE}fail}
> >>>>
> >>>> Переписать "по вкусу".
> >>>>
> >>>> А ошибка, похоже, как раз в строке подключения.
> >>>> И USER для подключения я задавал в полной форме в его месту в лдапе, 
> >>>> т.е. - user="CN=username,OU=....,DC=...,=UA"
> >>>>
> >>>> ------------------------
> >>>> С уважением,
> >>>> Голуб Михаил
> >>>>
> >>>> From: [email protected] 
> >>>> [mailto:[email protected]] On Behalf Of An An
> >>>> Sent: Wednesday, September 14, 2011 9:25 AM
> >>>> To: [email protected]
> >>>> Subject: [Exim-users] Invalid credential при lookup ldap
> >>>>
> >>>> Компания приобрела Exchange, поэтому возникла необходимость постепенного 
> >>>> переноса пользователей в AD(Win 2008 R2).
> >>>> Задача: При обнаружении пользователя в AD, перенаправлять письма на 
> >>>> другой IP.
> >>>> Проблем с роутерами быть не должно, поэтому проверяю работу ldap запроса 
> >>>> в acl_check_rcpt. Итак, конфиг:
> >>>>
> >>>> ldap_default_servers = <; 192.168.128.61:3268
> >>>>
> >>>> MS_DOMAIN = some-domain.local
> >>>> MS_USER = exim
> >>>> MS_PASS = ldapmail3
> >>>> MS_BASE_DN = "dc=some-domain,dc=local"
> >>>>
> >>>> LDAP_AD_MAIL_RCPT = \
> >>>>        user=MS_USER \
> >>>>       pass=MS_PASS \
> >>>>       ldap:///MS_BASE_DN?mail?sub?\
> >>>>       (&(|(objectClass=user)(objectClass=group))\
> >>>>       (proxyAddresses=SMTP:${quote_ldap:${local_part}@MS_DOMAIN}))
> >>>>
> >>>> В acl_check_rcpt первым стоит:
> >>>>
> >>>> warn    condition       = ${lookup ldap {LDAP_AD_MAIL_RCPT}}
> >>>>              message         = Win
> >>>>              logwrite        = Win
> >>>>
> >>>> warn    !condition      = ${lookup ldap {LDAP_AD_MAIL_RCPT}}
> >>>>               message         = Lose
> >>>>               logwrite        = Lose
> >>>> 
> >>>> И вот тут совсем начинается непонятное.
> >>>>
> >>>> 2011-09-14 10:17:03 H=(some-domain.ru) [127.0.0.1] Warning: ACL "warn" 
> >>>> statement skipped: condition test deferred: failed to bind the LDAP 
> >>>> connection to server 192.168.128.61:3268 - LDAP error 49: Invalid 
> >>>> credentials
> >>>> 
> >>>> Насколько я нагуглил, данная ошибка говорит о неверном запросе. Поэтому 
> >>>> я попробовал так:
> >>>>
> >>>> MS_USER="CN=exim,CN=Users,DC=some-domain,DC=local"
> >>>>
> >>>> и так:
> >>>>
> >>>> LDAP_AD_MAIL_RCPT = \
> >>>>        user=MS_USER \
> >>>>        pass=MS_PASS \
> >>>>        ldap:///DC=pac,DC=local?mail?sub?(&(objectClass=top)\
> >>>>        (objectClass=user)(objectClass=organizationalPerson)\
> >>>>        (objectClass=person)(mail=${quote_ldap:${local_part}@MS_DOMAIN}))
> >>>>
> >>>> и даже из какого-то гайда:
> >>>>
> >>>> LDAP_AD_MAIL_RCPT = \
> >>>>        user=MS_USER \
> >>>>        pass=MS_PASS \
> >>>>       ldap:///LDAP_AD_BASE_DN?mail?sub?\
> >>>>      
> >>>> (&(|(objectClass=user)(objectClass=publicFolder)(objectClass=group))\
> >>>>      (|(proxyAddresses=${quote_ldap:${local_part}@MS_DOMAIN})\
> >>>>      (proxyAddresses=smtp:${quote_ldap:${local_part}@MS_DOMAIN}))\
> >>>>      (!(userAccountControl:1.2.840.113556.1.4.803:=2))
> >>>>
> >>>> Все равно
> >>>> 2011-09-14 10:17:03 H=(some-domain.ru) [127.0.0.1] Warning: ACL "warn" 
> >>>> statement skipped: condition test deferred: failed to bind the LDAP 
> >>>> connection to server 192.168.128.61:3268 - LDAP error 49: Invalid 
> >>>> credentials
> >>>> _______________________________________________
> >>>> Exim-users mailing list
> >>>> [email protected]
> >>>> http://mailground.net/mailman/listinfo/exim-users
> >>>>
> >>>>
> >>> _______________________________________________
> >>> Exim-users mailing list
> >>> [email protected]
> >>> http://mailground.net/mailman/listinfo/exim-users
> >>>
> >>
> >> --
> >> Best wishes Victor Ustugov   mailto:[email protected]
> >> public GnuPG/PGP key:        http://victor.corvax.kiev.ua/corvax.asc
> >> ICQ UIN: 77186900, 371808614 nic-handle: CRV-UANIC
> >>
> >> _______________________________________________
> >> Exim-users mailing list
> >> [email protected]
> >> http://mailground.net/mailman/listinfo/exim-users
> >>
> >>
> > _______________________________________________
> > Exim-users mailing list
> > [email protected]
> > http://mailground.net/mailman/listinfo/exim-users
> >
> 
> --
> Best wishes Victor Ustugov   mailto:[email protected]
> public GnuPG/PGP key:        http://victor.corvax.kiev.ua/corvax.asc
> ICQ UIN: 77186900, 371808614 nic-handle: CRV-UANIC
> 
> _______________________________________________
> Exim-users mailing list
> [email protected]
> http://mailground.net/mailman/listinfo/exim-users
> 
> 
_______________________________________________
Exim-users mailing list
[email protected]
http://mailground.net/mailman/listinfo/exim-users

Ответить