我试图让dovecot 2.0.19通过LDAP(OpenLDAP 2.4.28)validation用户,并使用Wireshark来debugging过程。 它看起来像dovecot的基本configuration是好的,但它并没有把它发送到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的以下configuration:
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中看到:
因为某种原因,鸽舍不能authentication自己。
如果我更改configuration如下:
auth_bind = no #auth_bind_userdn = uid=%u,ou=people,dc=ht
然后我得到以下图片:
它不拾起设置base = ou=people,dc=ht 。 但更重要的是,即使在整棵树"<ROOT>" wholeSubTree整个子树中"<ROOT>" wholeSubTree也找不到所需的条目。
我真的很绝望,不知道如何使它工作。 我真的只需要使它以某种方式工作。
有趣的解决scheme…但非常恼人的另一方面。 错误的是采取示例configuration文件dovecot-ldap.conf.ext ,其中一切都被注释掉。 我认为它被注释掉了。 唯一一个未注释的行是base = 。 经过两天的折磨,我发现了…
这就是为什么dovecot发送base=<ROOT>search请求的原因。 这就是为什么它不返回任何结果。 解决scheme是评论这条线。
实际configuration:
hosts = 10.1.2.1 dn = cn=admin,dc=ht dnpass = a base = ou=people,dc=ht ldap_version = 3 scope = onelevel