我使用 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。