Dovecot + OpenLDAP

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: [email protected]

现在,我对 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

相关内容