Настроил доступ 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 для пользователя postfix, как должна доказать команда ldapsearch. В чем может быть причина такого поведения?
Решил - отсутствовала версия LDAP. mailbox_maps.cf требует дополнительной записи
version = 3
потому что сервер LDAP не поддерживает LDAPv2.