Я пытаюсь заставить dovecot 2.0.19 аутентифицировать пользователей через LDAP (OpenLDAP 2.4.28) и использовать Wireshark для отладки процесса. Похоже, что с базовой конфигурацией dovecot все в порядке, но она не справляется с отправкой правильного запроса на сервер LDAP. Во-первых, так выглядят мои LDAP-записи:
# ht
dn: dc=ht
objectClass: top
objectClass: dcObject
objectClass: organization
o: ip
dc: ht
# admin, ht
dn: cn=admin,dc=ht
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword:: e1NTSEF9cFY1b0ZZVUhack1aRTVvaUg1T3c2cytVWHV4aUNvaHI=
# people, ht
dn: ou=people,dc=ht
objectClass: organizationalUnit
objectClass: top
ou: people
# groups, ht
dn: ou=groups,dc=ht
objectClass: organizationalUnit
objectClass: top
ou: groups
# ipusers, groups, ht
dn: cn=ipusers,ou=groups,dc=ht
gidNumber: 500
cn: ipusers
objectClass: posixGroup
objectClass: top
# Max Mustermann, people, ht
dn: cn=Max Mustermann,ou=people,dc=ht
cn: Max Mustermann
givenName: Max
gidNumber: 500
homeDirectory: /home/users/mmustormann
sn: Mustermann
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
uidNumber: 1000
uid: mmustermann
userPassword:: e01ENX1ETUYxdWNEeHRxZ3h3NW5pYVhjbVlRPT0=
loginShell: /bin/bash
mail: mustorm@test.com
Сейчас я использую следующую конфигурацию голубятни:
hosts = 10.1.2.1
dn = cn=admin,dc=ht
dnpass = a
auth_bind = yes
auth_bind_userdn = uid=%u,ou=people,dc=ht
ldap_version = 3
scope = subtree
base = ou=people,dc=ht
user_attrs = homeDirectory=home,uidNumber=uid,gidNumber=gid
user_filter = (&(objectClass=posixAccount)(uid=%u))
pass_attrs = uid=user,userPassword=password
pass_filter = (&(objectClass=posixAccount)(uid=%u))
Теперь, что я вижу в Wireshark:
Dovecot по какой-то причине не может пройти аутентификацию ...
Если я изменю конфигурацию следующим образом:
auth_bind = no
#auth_bind_userdn = uid=%u,ou=people,dc=ht
Тогда я получаю следующую картину:
Он не подбирает настройку base = ou=people,dc=ht
. Но что более важно, даже глядя на все дерево "<ROOT>" wholeSubTree
он не может найти нужную запись.
Я в отчаянии и не знаю, как заставить это работать. Мне просто нужно, чтобы это как-то работало.
Забавное решение ... но с другой стороны, очень раздражающее. Ошибка заключалась в том, чтобы взять пример файла конфигурации dovecot-ldap.conf.ext
где все закомментировано. Я ДУМАЛ, что это было закомментировано. Единственная строка без комментариев была base =
. Я узнал это после двух дней пыток ...
Это причина, по которой dovecot отправил поисковый запрос с base=<ROOT>
. И поэтому он не возвращает никаких результатов. И решение было закомментировать эту строку.
Актуальная конфигурация:
hosts = 10.1.2.1
dn = cn=admin,dc=ht
dnpass = a
base = ou=people,dc=ht
ldap_version = 3
scope = onelevel