[Sysadmins] realms и cyrus-imapd + saslauthd

Timur Batyrshin batyrshin на ieml.ru
Пн Апр 20 16:13:57 UTC 2009


Настраиваю сервер IMAP (cyrus-imapd), который должен будет обслуживать
несколько доменов. База пользователей хранится в LDAP, стало быть,
sasl_pwcheck_method использую saslauthd.


Вопрос: умеет ли cyrus-imapd использовать realms при аутентификации при
помощи saslauthd ?
Если умеет, то что у меня не так? (подробный разбор полетов см. в конце письма)

Или может быть, можно как-то обойтись без использования saslauthd?
База пользователей тем не менее должна быть в LDAP.
Если да, то как это настраивается?



Обещанный разбор полетов:

[root на imap sasl2]# rpm -qa | egrep '(cyrus|sasl)'
cyrus-imapd-2.2.13-alt1.1
cyrus-sasl2-2.1.22-alt1.1.0
libsasl2-2.1.22-alt1.1.0


Saslauthd настроен нормально:

[root на imap ~]# testsaslauthd -u testuser -p secret -r domain.ru
0: OK "Success."


Cyrus-imapd настроен на использование saslauthd с использованием метода
PLAIN (т.к. DIGEST-MD5 и CRAM-MD5 работают только вместе с auxprop):

[root на imap ~]# grep sasl /etc/imapd.conf  | egrep -v '^#'
sasl_pwcheck_method: saslauthd
sasl_mech_list: PLAIN


При проверке сервера IMAPD при помощи imtest такое впечатление, что он
игнорирует realm, не передает его к saslauthd, в результате чего
аутентификация не проходит:

$ imtest -a testuser -w secret -r domain.ru web

В логах:
Apr 20 19:47:55 imap imap[20079]: accepted connection
Apr 20 19:47:55 imap saslauthd[23775]: Domain/Realm not available.
Apr 20 19:47:55 imap saslauthd[23775]: Entry not found ((&(mail=testuser@)(myorgUserEnabled=TRUE))).
Apr 20 19:47:55 imap saslauthd[23775]: Authentication failed for testuser: User not found (-6)
Apr 20 19:47:55 imap saslauthd[23775]: do_auth         : auth failure: [user=testuser] [service=imap] [realm=] [mech=ldap] [reason=Unknown]
Apr 20 19:47:55 imap imap[20079]: badlogin: [194.85.246.67] plaintext testuser SASL(-13): authentication failure: checkpass failed

Обратите внимание на строчку do_auth, а точнее на ее часть [realm=]
Если бы realm передавался к saslauthd, условие поиска было бы такое:
((&(mail=testuser на domain.ru)(myorgUserEnabled=TRUE)))
и аутентификация прошла бы успешно.

Точно такие же записи в логах вижу и при virtdomains в /etc/imapd.conf
выставленном в off, userid и on, так же как и в следующих вариантах
команды:

$ imtest -a testuser на domain.ru -w secret -r domain.ru web
$ imtest -a testuser -w secret web
$ imtest -a testuser на domain.ru -w secret -r domain.ru web

В чем проблема?

Если какие-то конфиги помогут -- скажите, вышлю.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : signature.asc
Тип     : application/pgp-signature
Размер  : 197 байтов
Описание: отсутствует
Url     : <http://lists.altlinux.org/pipermail/sysadmins/attachments/20090420/d0ed231f/attachment.bin>


Подробная информация о списке рассылки Sysadmins