Dovecot + OpenLDAP
Я пытаюсь заставить 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
Теперь я использую следующую конфигурацию для dovecot:
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
он не может найти необходимую запись.
Я действительно в отчаянии и не знаю, как заставить это работать. Мне действительно нужно, чтобы это как-то работало.
1 ответ
Забавное решение... но очень раздражающее с другой стороны. Ошибка состояла в том, чтобы взять пример файла конфигурации 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