Я пытаюсь настроить почтовый сервер на Debian Jessie и столкнулся с проблемой, которая мешает мне.
При попытке доступа к OpenLDAP через saslauthd с помощью команды
testsaslauthd -u user1 -p user1pw -f /var/spool/postfix/var/run/saslauthd/mux
Я получаю следующую ошибку в auth.log
Apr 17 10:36:50 debmailserv saslauthd[1661]: user ldap_search_st() failed: Bad search filter
Apr 17 10:36:50 debmailserv saslauthd[1661]: Retrying authentication
Apr 17 10:36:50 debmailserv saslauthd[1661]: user ldap_search_st() failed: Bad search filter
Apr 17 10:36:50 debmailserv saslauthd[1661]: Authentication failed for user1: Retry condition (ldap server connection reset or broken) (-3)
Apr 17 10:36:50 debmailserv saslauthd[1661]: do_auth : auth failure: [user=user1] [service=imap] [realm=] [mech=ldap] [reason=Unknown]
Но если я использую тот же фильтр поиска, что и в saslauthd.conf, используя следующий ldapsearch, он работает нормально.
ldapsearch -D "uid=saslauthd,ou=services,dc=example,dc=com" -w saslauthdpw \
-p 389 -h 127.0.0.1 -b "ou=people,dc=example,dc=com" \
-s sub "(&(uid=user1)(mailEnabled=TRUE))"
Мой saslauthd.conf выглядит так
# Server
ldap_servers: ldap://127.0.0.1/
# Identity
ldap_bind_dn: uid=saslauthd,ou=services,dc=example,dc=com
ldap_bind_pw: saslauthdpw
ldap_auth_method: bind
# Connection
ldap_version: 3
ldap_timeout: 10
ldap_time_limit: 10
ldap_referrals: yes
# Search
ldap_scope: sub
ldap_search_base: ou=people,dc=example,dc=com
ldap_filter: (&(uid=%u)(mailEnabled=TRUE))
# SSL
ldap_ssl: no
ldap_starttls: no
Если я закомментирую ldap_filter, тогда testaslauth будет работать нормально.
Будем признательны за любые указатели!
Сегодня у меня была такая же ошибка. Используя wirehark для изучения разговора между saslauthd и сервером LDAP, я смог определить две вещи, которые могут вам помочь ...
Фильтр по умолчанию выглядит так (uid =% u)
Запрос от saslauthd ограничивает размер результата 1 записью.
В моем случае поиск uid = fred возвращал две записи с сервера LDAP.