Страница 1 из 1

Не работает авторизация через LDAP

Добавлено: 2011-06-23 12:33:00
mr. brightside
Добрый день, уважаемые!

В общем, случилось странное, не могу понять в чем дело:

Есть Sendmail+Dovecot. Dovecot работает как pop3/imap-сервер. Он же является деливером для sendmail.

Зафигачил LDAP-каталог для создания базы виртуальных пользователей. Dovecot настроил - все супер.

Следующий шаг - это заставить Sendmail смотреть в эту же базу и находить конечных пользователей. Тут то я и отхватил грабли.

Куски конфига сендмыла:

Код: Выделить всё

FEATURE(`local_procmail', `/usr/local/libexec/dovecot/deliver',`/usr/local/libexec/dovecot/deliver -d $u')
MODIFY_MAILER_FLAGS(`LOCAL', `-f')
......................................
define(`confLDAP_DEFAULT_SPEC', `-h "localhost" -b "dc=mydomain,dc=ru" -d "cn=dovecot,ou=accounts,dc=mydomain,dc=ru" -MLDAP_AUTH_SIMPLE -P /etc/mail/ldap_pass')dnl
LDAPROUTE_DOMAIN(`mydomain.ru')dnl
FEATURE(`ldap_routing', `null -T<TMPF>', `ldap -1 -T<TMPF> -v mail -k (&(objectclass=posixaccount)(mail=%0))', `passthru')dnl
......................................
MAILER(procmail)
В ldap_pass положил парольчик для cn=dovecot,ou=accounts,dc=mydomain,dc=ru

Пересобираю/перезапускаю sendmail. Пробую найти пользователя:

Код: Выделить всё

[root@test2 /etc/mail]# sendmail -bv -d60.1 test_user@mydomain.ru
map_lookup(dequote, test) => NOT FOUND (0)
map_lookup(host, mydomain.ru) => mydomain.ru. (0)
map_lookup(dequote, test_user) => NOT FOUND (0)
map_lookup(ldapmra, test_user@mydomain.ru) => test_user@mydomain.ru (0)
map_lookup(ldapmh, test_user@mydomain.ru) => NOT FOUND (68)
map_lookup(host, mydomain.ru) => mydomain.ru. (0)
map_lookup(dequote, test_user) => NOT FOUND (0)
map_lookup(virtuser, test_user@mydomain.ru) => NOT FOUND (0)
map_lookup(virtuser, @mydomain.ru) => NOT FOUND (0)
test_user@mydomain.ru... User unknown
User unknown - not good. Путем различных извращений я указал в конфиге сендмэйла следующее:

Код: Выделить всё

define(`confLDAP_DEFAULT_SPEC', `-h "localhost" -b "dc=mydomain,dc=ru" -d "cn=vertigo,dc=mydomain,dc=ru" -MLDAP_AUTH_SIMPLE -P /etc/mail/ldap_pass')dnl
Т.е. изменил через кого подключаться к каталогу. Это учетка рута slapd, которая прописывается в slapd.conf. Когда правил ldap_pass случайно указал неверно пароль и открыл удивительную вещь:

Код: Выделить всё

[root@test2 /etc/mail]# sendmail -bv -d60.1 test_user@mydomain.ru
map_lookup(dequote, test) => NOT FOUND (0)
map_lookup(host, mydomain.ru) => mydomain.ru. (0)
map_lookup(dequote, test_user) => NOT FOUND (0)
ldap_init/ldap_bind failed to localhost in map ldapmra: Invalid credentials
map_lookup(ldapmra, test_user@mydomain.ru) => NOT FOUND (75)
map_lookup(ldapmra, test_user@mydomainb.ru) tempfail: errno=0
map_lookup(ldapmh, test_user@mydomain.ru) => NOT FOUND (68)
map_lookup(virtuser, test_user@mydomain.ru) => NOT FOUND (0)
map_lookup(virtuser, @mydomain.ru) => NOT FOUND (0)
test_user@mydomain.ru... deliverable: mailer local, user test_user
Конечно Invalid credentials - пароль то неверный, но как? КАК?! он нашел таки пользователя - test_user@mydomain.ru... deliverable: mailer local, user test_user?

Если я верну все обратно, на учетку cn=dovecot,ou=accounts,dc=mydomain,dc=ru, и попытаюсь найти системного пользователя, например, testmail, то получу сообщение, что сообщение может быть доставлено:

Код: Выделить всё

[root@test2 /etc/mail]# sendmail -bv -d60.1 testmail
map_lookup(dequote, test) => NOT FOUND (0)
map_lookup(dequote, testmail) => NOT FOUND (0)
testmail... deliverable: mailer local, user testmail
Что меня тоже смущает - я полагал, что переключившись на LDAP, deliver и sendmail вообще должен перестать смотреть в passwd database. Пытался решить это через LOCAL_MAILER_FLAGS, указывая, что надо читать LDAP, но не помогло...

:st:

У кого есть идеи? Может, я где то что то неправильно прописал? Неверно использую фильтр? Или еще что то? Помогите пожалуйста :crazy:

Конфиги выкинуть?

Спасибо!

Re: Не работает авторизация через LDAP

Добавлено: 2011-06-24 18:06:30
mr. brightside
Также интересно вот что.

С получением почты, как я уже писал, все замечательно. Для dovecot LDAP-каталог работает замечательно.

Проблема состоит, как я, опять же, уже писал, состоит в том, чтобы сендмэйл принимал на доставку письма для существующих в LDAP-каталоге адресатов.

Но, отправка - она же, я так понимаю, не должна быть связана ни с приемом писем (smtp), ни с раздачей оных (pop3).

Для авторизации у меня используется cyrus. Забиваю в его базу тестового пользователя, открываю аутлук и указываю, что отправку надо осуществлять с указанными только что данными. Давлю ОК и... письмо не улетает, - не принимает пароль/логин.

А в maillog получаю следующее:

Код: Выделить всё

Jun 24 19:00:58 test2 sm-mta[11477]: p5OF0wt6011477: [192.168.0.132] did not issue MAIL/EXPN/VRFY/ETRN during connection to IPv4
Если же, переключить dovecot на использование passwd database, а не LDAP, то все начинает работать нормально.

Помогите люди добрые, у меня уже каша в голове...