Необходим свежий взгляд на проблему. Есть сервер АД и почтовик exim, который авторизует через АД пользователей.
имя юзера = mail атрибут в АД
пароль = пароль юзера в АД
используются макросы
Код: Выделить всё
LDAP_AD_BINDDN =${quote_ldap:CN=exim,CN=Users,****}
LDAP_AD_PASS =***
LDAP_AD_BASE =****
LDAP_AD_RCPT =user=LDAP_AD_BINDDN \
pass=LDAP_AD_PASS \
ldap:///LDAP_AD_BASE?mail?sub?\
(&\
(|\
(objectclass=user)(objectclass=person)\
)\
(!(userAccountControl:1.2.840.113556.1.4.803:=2))\
(mail=${quote_ldap:$local_part}@${quote_ldap:$domain})\
)
Код: Выделить всё
plain:
driver = plaintext
public_name = PLAIN
server_condition = ${if ldapauth {user=${quote_ldap:${lookup \
ldapdn {user=LDAP_AD_BINDDN pass=LDAP_AD_PASS ldap:///LDAP_AD_BASE??sub?\
(&(objectclass=user)(!(userAccountControl:1.2.840.113556.1.4.803:=2))(mail=${quote_ldap:$auth2}@${quote_ldap:$domain}))}}} \
pass=${quote_ldap:$auth3} connect=5 ldap:///}{yes}{no}}
server_prompts = :
server_set_id = $2
login:
driver = plaintext
public_name = LOGIN
server_condition = ${if ldapauth {user=${quote_ldap:${lookup \
ldapdn {user=LDAP_AD_BINDDN pass=LDAP_AD_PASS ldap:///LDAP_AD_BASE??sub?\
(&(objectclass=user)(!(userAccountControl:1.2.840.113556.1.4.803:=2))(mail=${quote_ldap:$auth1}@${quote_ldap:$domain}))}}} \
pass=${quote_ldap:$auth2} connect=5 ldap:///}{yes}{no}}
server_prompts = Username:: : Password::
server_set_id = $1
если возвращается пустой DN (нет юзера с таким e-mail) то аутентификация проходит на ура с любым паролем.
Может кто натолкнет на правильное движение мыслей?