Назад | Перейти на главную страницу

Постфикс: LDAP не работает (предупреждение: dict_ldap_lookup: база поиска не найдена: 32: такого объекта нет)

Настроил доступ 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.