Я пытаюсь настроить внешнюю аутентификацию LDAP из своего ящика LDAP через Zimbra. Оба сервера работают на CentOS.
В вики Zimbra есть документация, но она до сих пор меня озадачивает.
http://wiki.zimbra.com/wiki/LDAP_Authentication#Configuring_external_LDAP_authentication
Вот из чего состоит мой ldapsearch:
ldapsearch -x -D cn=Manager,dc=domain,dc=com -y pass -H ldap://ldap.domain.com -b dc=domain,dc=com '(&(objectClass=JammMailAlias)(mail=marketing@domain.com))'
Есть идеи, какой будет правильный фильтр? Я тяну за волосы, пытаясь понять это.
Вот результат ldapsearch выше:
$ ldapsearch -x -D cn=Manager,dc=domain,dc=com -y pass -H ldap://ldap.domain.com -b dc=domain,dc=com '(&(objectClass=JammMailAlias)(mail=marketing@domain.com))'
# extended LDIF
#
# LDAPv3
# base <dc=domain,dc=com> with scope subtree
# filter: (&(objectClass=JammMailAlias)(mail=marketing@domain.com))
# requesting: ALL
#
# marketing@domain.com, domain.com, hosting, domain.com
dn: mail=marketing@domain.com,jvd=domain.com,o=hosting,dc=domain,dc=com
objectClass: JammMailAlias
objectClass: top
mail: marketing@domain.com
cn: Marketing Team
accountActive: TRUE
maildrop: bob
maildrop: john
maildrop: amy
lastChange: 1277317208
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
Вот ldapsearch для пользователя:
$ ldapsearch -x -D cn=Manager,dc=domain,dc=com -y pass -H ldap://ldap.domain.com -b dc=domain,dc=com '(&(objectClass=JammMailAccount)(mail=hfranco@domain.com))'
# extended LDIF
#
# LDAPv3
# base <dc=domain,dc=com> with scope subtree
# filter: (&(objectClass=JammMailAccount)(mail=hfranco@domain.com))
# requesting: ALL
#
# hfranco@domain.com, domain.com, hosting, domain.com
dn: mail=hfranco@domain.com,jvd=domain.com,o=hosting,dc=domain,dc=com
objectClass: JammMailAccount
objectClass: top
mail: hfranco@domain.com
cn: Hank Franco
homeDirectory: /home/domains/domain.com/hfranco
delete: FALSE
lastChange: 1218909596
mailbox: domain.com/hfranco/
userPassword:: e01ENX1zWlQzcEk4M2FNOFV3U3gzK0NqaUtRPT0=
accountActive: TRUE
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
Что-то вроде (uid=%u)
должен работать, или, учитывая ваш пример ldapsearch, возможно (&(objectClass=JammMailAlias)(mail=%u@domain.com))
Zimbra заменяет %u
с именем пользователя, который пытается аутентифицироваться, а затем выполняет поиск / привязку в качестве этого пользователя для аутентификации.
Редактировать:
В вашей настройке вы должны иметь возможность использовать (mail=%u@domain.com)
в качестве поискового фильтра.
Вы можете проверить это, запустив что-то вроде ldapsearch -x -D cn=Manager,dc=domain,dc=com -y pass -H ldap://ldap.domain.com -b dc=domain,dc=com '(mail=hfranco@domain.com)'
- он должен вернуть только одну запись выше.