首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dovecot + OpenLDAP

Dovecot + OpenLDAP
EN

Server Fault用户
提问于 2014-05-18 00:31:06
回答 1查看 849关注 0票数 1

我试图通过LDAP (OpenLDAP 2.4.28)对用户进行身份验证,并使用Wireshark调试进程。看起来,dovecot的基本配置很好,但它不能将正确的请求发送到LDAP服务器。首先,我的LDAP条目是这样的:

代码语言:javascript
复制
# 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使用以下配置:

代码语言:javascript
复制
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无法证明自己..。

如果我按以下方式更改配置:

代码语言:javascript
复制
auth_bind = no 
#auth_bind_userdn = uid=%u,ou=people,dc=ht

然后我得到了以下图片:

它不接收设置base = ou=people,dc=ht。但是更重要的是,即使查看整个树"<ROOT>" wholeSubTree,也找不到所需的条目。

我真的很绝望,不知道该怎么做。我真的需要让它发挥作用。

EN

回答 1

Server Fault用户

发布于 2014-05-18 19:24:14

有趣的解决方案..。但另一方面却很烦人。错误是以配置文件dovecot-ldap.conf.ext为例,其中所有内容都被注释掉了。我以为它被删掉了。唯一没有注释的行是base =。经过两天的折磨我发现了..。

这就是dovecot用base=<ROOT>发送搜索请求的原因。这就是为什么它不返回任何结果。解决办法是把这条线划掉。

实际配置:

代码语言:javascript
复制
hosts = 10.1.2.1
dn = cn=admin,dc=ht
dnpass = a
base = ou=people,dc=ht
ldap_version = 3
scope = onelevel
票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/596764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档