Postfix:LDAP 不工作(警告:dict_ldap_lookup:未找到搜索库:32:没有此对象)

Postfix:LDAP 不工作(警告:dict_ldap_lookup:未找到搜索库:32:没有此对象)

我使用 postfix 设置了 LDAP 访问。

ldapsearch -D "cn=postfix,ou=users,ou=system,[domain]" -w postfix -b "ou=users,ou=people,[domain]" -s sub "(&(objectclass=inetOrgPerson)(mail=[mailaddr]))"

提供正确的条目。LDAP 配置文件如下所示

root@server2:/etc/postfix/ldap# cat mailbox_maps.cf 
server_host = localhost
search_base = ou=users,ou=people,[domain]
scope = sub
bind = yes
bind_dn = cn=postfix,ou=users,ou=system,[domain]
bind_pw = postfix
query_filter = (&(objectclass=inetOrgPerson)(mail=%s))
result_attribute = uid
debug_level = 2

bind_dn 和 bind_pw 应该与我上面使用 ldapsearch 时使用的相同。然而,调用 postmap 不起作用:

root@server2:/etc/postfix/ldap# postmap -q [mailaddr] ldap:/etc/postfix/ldap/mailbox_maps.cf
postmap: warning: dict_ldap_lookup: /etc/postfix/ldap/mailbox_maps.cf: Search base 'ou=users,ou=people,[domain]' not found: 32: No such object

如果我更改 LDAP 配置,那么匿名用户就可以完全访问 LDAP

olcAccess: {-1}to * by * read

然后它起作用了:

root@server2:/etc/postfix/ldap# postmap -q [mailaddr] ldap:/etc/postfix/ldap/mailbox_maps.cf 
[user-id]

但是当我将此访问限制为 postfix 用户时:

olcAccess: {-1}to * by dn="cn=postfix,ou=users,ou=system,[domain]" read by * break

它不起作用,但会产生上面打印的错误(尽管 ldapsearch 起作用,但只有 postmap 不起作用)。

为什么与后缀 DN 绑定时不起作用?我认为我为后缀用户正确设置了 LDAP ACL,ldapsearch 命令应该可以证明这一点。这种行为的原因是什么?

答案1

已解决 - 缺少 LDAP 版本。mailbox_maps.cf 需要附加条目

version = 3

因为 LDAP 服务器不允许 LDAPv2。

相关内容