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