Кусок конфига exim, касающийся авторизации:auth_plain_ldap:
driver = plaintext
public_name = LDAP_PLAIN
server_condition = ${if ldapauth {user="uid=${quote_ldap_dn:$2},ou=Users,dc=example,dc=net" pass=${quote:$3} ldap://host.example.net/ou=Users,dc=example,dc=net}{yes}fail}}
server_set_id = $2
auth_plain_mysql:
driver = plaintext
public_name = PLAIN
server_condition = ${if crypteq{$3}{${lookup mysql{SELECT password FROM mailbox WHERE username = '${quote_mysql:$2}' AND active ='1'}}}{yes}{no}}
server_set_id = $2
auth_login_mysql:
driver = plaintext
public_name = LOGIN
server_condition = ${if crypteq{$3}{${lookup mysql{SELECT username FROM mailbox WHERE username = '${quote_mysql:$1}' AND password = '${quote_mysql:$2}' AND active ='1'}}}{yes}{no}}
server_prompts = Username:: : Password::
server_set_id = $1
Так вот при отправке сообщения, используюя, учетную запись LDAP пользователя в логах exim видно, что
<<SKIPPED>>
database lookup required for SELECT password FROM mailbox WHERE username = 'user' AND active ='1'
16:52:08 12831 MySQL query: SELECT password FROM mailbox WHERE username = 'user' AND active ='1'
16:52:08 12831 MYSQL new connection: host=host.example.net port=0 socket=NULL database=exim user=exim
16:52:08 12831 MYSQL: no data found
<<SKIPPED>>
16:52:08 12831 SMTP>> 504 LOGIN authentication mechanism not supported
Т.е. в LDAP вообще не ищется. Мне казалось, что должно быть так: сначала поиск в LDAP через механизм PLAIN, и затем уже, если не найдено, поиск в MYSQL через механизм PLAIN, затем LOGIN. На деле же LDAP вообще игнорируется, хотя если закоментировать секции с MYSQL, то LDAP пользователь отлично находится и exim нормально авторизует пользователя.