Уважаемые гуру!!! Помогите!!! Пытаюсь сделать связку SASL + LDAP для авторизации пользователей... Бьюсь неделю. Посмотрел кучу примеров и документации. Уже запутался в конец. Может кто подскажет что делать и главное КАК!!! Все застопорилось на сообщении при загрузке системы:
SASL/GSSAPI authentication started ldap_sasl_interactive_bind_s: Local error (-2) additional info: SASL(-1): generic failure: GSSAPI Error: Miscellaneous failure (see text) (open(/tmp/krb5cc_0): No such file or directory)
У меня вообще-то планируется связка postfix+sasl+ldap+ciurier-imap. Все пользователи виртуальные, т.е. хранятся в ldap. Postfix+ldap работает, т.е. письма принимаются. Мне нужно чтобы клиенты авторизовались через SASL. Нашел пару примеров в инете с подобной схемой. Но там почему то не прописана настройка SASL, только продекларирована. Помогите!
В добавок для информации сейчас у меня стоят следующие пакеты: courier-authlib-base-0.56 courier-authlib-ldap-0.56 courier-authlib-userdb-0.56 courier-imap-4.0.3,1 cyrus-sasl-2.1.21 cyrus-sasl-ldapdb-2.1.21 cyrus-sasl-saslauthd-2.1.21 db4-4.0.14_1,1 db42-4.2.52_4 openldap-sasl-client-2.2.27 openldap-sasl-server-2.2.27
При запуске системы в логах пишется: _sasl_plugin_load failed on sasl_auxprop_plug_init for plugin: ldapdb т.е. проблемы с cyrus-sasl-ldapdb... Но ставил все правильно.
чтобы sasl брал пользователей ldap необходимо:
1. sasl должен быть с поддержкой ldap
2. файл конфигурации saslauthdb.conf
ldap_servers: ldap://ldap.domain.ru
ldap_bind_dn: cn=login,dc=domain,dc=ru
ldap_password: pass_login
ldap_search_base: ou=users,dc=domain,dc=ru
3. запускаем saslauthd -m /var/run/saslauthd -a ldap -O /etc/saslauthdb.conf
4. где то в исходниках есть тест для проверки
testsaslauthd -u user_ldap -p pass_ldap
> 3. запускаем saslauthd -m /var/run/saslauthd -a ldap -O /etc/saslauthdb.conf
Я запускаю saslauthd -a ldap стартуют 5 процессов. ключи -m и -O не указываю так как использую стандартное расположение файлов, а они берутся естественно по дефолту. Уже проверено.
Сасл собирал с поддержкой лдап. но судя по ошибке или она не подхватила этот модуль или она не может его найти...
Смущает еще одно. При сборке выдает следующее: ===> Running ldconfig /sbin/ldconfig -m /usr/local/lib
===> Registering installation for cyrus-sasl-2.1.21
===> Returning to build of cyrus-sasl-saslauthd-2.1.21
===> cyrus-sasl-saslauthd-2.1.21 depends on shared library: db-4.2.2 - found
===> cyrus-sasl-saslauthd-2.1.21 depends on shared library: ldap-2.2.7 - found
===> Configuring for cyrus-sasl-saslauthd-2.1.21
т.е. обнаружен лдап. Но вот строка ниже: checking LDAPDB... disabled говорит что ldapdb не подключили... вроде все опции проверил. везде указываю что надо юзать лдапдб, но... Где курить?
saslauthd не нужен, нужно собрать sasl с поддержкой ldapdb (--enable-ldapdb). Конфиг например для postfix (smtpd.conf):
pwcheck_method: auxprop
auxprop_plugin: ldapdb
ldapdb_uri: ldap://127.0.0.1
ldapdb_id: auxprop
ldapdb_pw: secret
ldapdb_mech: login plain digest-md5 cram-md5
mech_list: login plain digest-md5 cram-md5
настройка slapd:
sasl_mech_list: plain, digest-md5
sasl-secprops minssf=128
sasl-authz-policy both
sasl-regexp
uid=(.*)@(.*),cn=digest-md5,cn=auth
mail=$1,ou=$2,ou=Domains,o=mydomain <- тут уже от схемы зависит
sasl-regexp
uid=(.*),cn=digest-md5,cn=auth ldap:///o=mydomain??sub?uid=$1
запись для auxprop:
dn: uid=auxprop,ou=Admins,o=mydomain
uid: auxprop
objectClass: top
objectClass: account
objectClass: simpleSecurityObject
saslAuthzTo: ldap:///o=mydomain??sub?uid=cyrus
saslAuthzTo: ldap:///ou=Domains,o=mydomain??sub?objectClass=qmailUser
userPassword: secret
description: auth account for postfix and cyrus
так... стоп... т.е. получается такая последовательность действий...: 1. ставим чистый sasl2 2. ставим openldap с поддержкой sasl2 3. сносим sasl2 4. ставим sasl2 c поддержкой ldapdb правильно? во всяком случае я это прочитал только что в доке по cyrus-sasl2.
Кстати, borisych можешь стукнуть в аську? моя 285908205. надоедать не буду просто так оперативней получиться. у меня уже это горит.
> Когда клиенты должны авторизовываться? При отправке почты? Или при ее прочтении?
И при отправке и при получении.
> Postfix работает в чруте, как он увидит сасловский сокет для выполнения авторизации, если по-умолчанию неизвестно куда кладет свой mux?
Встречный вопрос: а как это работает у других? есть в инете примеры настроек. Я ничего не выдумывал сам, я только попытался повторить уже готовую схему. И не заработало.
Для информации: openldap-2.2.27 courier-imap-4.0.3,1 courier-authlib-ldap-0.56 cyrus-sasl-2.1.21 postfix-2.3.20050708,2