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

EXIM, sendmail, postfix, Dovecot и прочие. Решение проблем связанных с работой электронной почты

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
mr. brightside
сержант
Сообщения: 260
Зарегистрирован: 2010-04-17 17:32:39
Откуда: Saint-Petersburg

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

Непрочитанное сообщение mr. brightside » 2011-06-23 12:33:00

Добрый день, уважаемые!

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

Есть 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:

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

Спасибо!
Только FreeBSD, только хардкор

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
mr. brightside
сержант
Сообщения: 260
Зарегистрирован: 2010-04-17 17:32:39
Откуда: Saint-Petersburg

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

Непрочитанное сообщение mr. brightside » 2011-06-24 18:06:30

Также интересно вот что.

С получением почты, как я уже писал, все замечательно. Для 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, то все начинает работать нормально.

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