Коллеги, помогите столкнуть телегу.
Итак имеем:
1. Федора 12.х64 (ну, это все уже выучили).
2. LDAP - 389-ds (быший Fedora Directory Service).
3. Postfix
4. Dovecot.
Пока имею проблему по связке Postfix'а c LDAP. А именно:
# telnet 192.168.41.2 25
Trying 192.168.41.2...
Connected to 192.168.41.2.
Escape character is '^]'.
220 mail.corp.ru: proud of postfix.
ehlo 3@2
250-iNetServer.corp.ru
250-PIPELINING
250-SIZE 20480000
250-VRFY
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
mail from: kvn@corp.ru
250 2.1.0 Ok
rcpt to: eau@corp.ru
451 4.3.0 <eau@corp.ru>: Temporary lookup failure
quit
221 2.0.0 Bye
Connection closed by foreign host.
То есть проблема, как я понимаю в авторизации получателя почты, не находит postfix такой записи в базе LDAP.
Запись пользователя в базе (по дефолту 389-му) следующая:
# ldapsearch -LLL -x -b 'dc=local,dc=alma,dc=ru' -H ldap://localhost/ '*'
dn: uid=Kovalenko,ou=People, dc=local, dc=ALMA, dc=ru
mail: kvn@alma.ru
uid: Kovalenko
givenName:: 0JrQvtCy0LDQu9C10L3QutC+
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetorgperson
sn:: 0JLQu9Cw0LTQuNC80LjRgCDQndC40LrQvtC70LDQtdCy0LjRhw==
cn:: 0JrQvtCy0LDQu9C10L3QutC+INCS0LvQsNC00LjQvNC40YAg0J3QuNC60L7Qu9Cw0LXQstC40Yc=
То есть - имеем в наличии только атрибут mail. Его вполне достаточно, чтобы связаться по POP3 с Dovecot'ом. Правда, немного пришлось переделать запрос в базу:
# cat ldap.conf
ldap_version = 3
auth_bind = yes
hosts = localhost:389
base = dc=local,dc=corp,dc=ru
dn = cn=бла бла бла
dnpass = 12345678
auth_bind=no
# Определяем соответствие переменных
pass_attrs = mailBox=user,userPassword=password
# Запрос для выборки паролей (скорее всего не работает, надо как в фильтре паролей)
user_filter = (&(objectClass=mailAccount)(mailBox=%u))
# фильтр выборки паролей
pass_filter = (&(objectclass=organizationalPerson)(uid=%u))
Но вот что надо написать в аналогичном скрипте для postfix'а - ума не приложу?
Сейчас там такое:
# cat ldap-users.cf
version = 3
server_host = localhost:389
base = dc=local,dc=corp,dc=ru
dn= cn= bla bla bla
dnpass = 12345678
auth_bind=no
query_filter = (&(objectclass=organisationalPerson)(mail=%s))
#result_attribute = samaccountname
result_attribute = mail
result_format = %s
И оно не работает, отбивает входячую почту, и в лог пишет следующие записи:
Mar 12 22:34:41 iNetServer postfix/smtpd[24220]: warning: dict_nis_init: NIS domain name not set - NIS lookups disabled
Mar 12 22:34:41 iNetServer postfix/smtpd[24220]: connect from ALEX_HOME[192.168.0.102]
Mar 12 22:34:43 iNetServer postfix/smtpd[24220]: warning: dict_ldap_lookup: /etc/postfix/ldap-users.cf: Search base '' not found: 32: No such object
Mar 12 22:34:43 iNetServer postfix/smtpd[24220]: NOQUEUE: reject: RCPT from ALEX_HOME[192.168.0.102]: 451 4.3.0 <eau@corp.ru>: Temporary lookup failure; from=<kvn@corp.ru> to=<eau@corp.ru> proto=ESMTP helo=<OTZI>
Mar 12 22:34:43 iNetServer postfix/cleanup[24224]: 918684E97: message-id=<20100312193443.918684E97@iNetServer.local.corp.ru>
Mar 12 22:34:43 iNetServer postfix/smtpd[24220]: disconnect from ALEX_HOME[192.168.0.102]
Mar 12 22:34:43 iNetServer postfix/qmgr[24057]: 918684E97: from=<double-bounce@iNetServer.local.corp.ru>, size=958, nrcpt=1 (queue active)
Mar 12 22:34:43 iNetServer postfix/pipe[24212]: 918684E97: to=<postmaster@corp.ru>, orig_to=<postmaster>, relay=dovecot, delay=0.11, delays=0.05/0/0/0.06, dsn=4.3.0, status=deferred (temporary failure)
Собственно клиент и отбивается с сообщеием об ошибке: Temporary lookup failure
Вопрос простой - как подружить postfix с ldap, Или надо атрибуты юзеру дополнительно привязывать какие? Или - надо запрос чуток подправить под дефотную схему (мне этот путь ближе и приятнее, чем разбираться в требованиях MUST objectclass'ов юзерских в 389-х схемах)