LINUX.ORG.RU
ФорумAdmin

Подружить Dovecot и LDAP (Windows Active Directory)


0

0

Выручайте, народ. Целый день бьюсь сегодня и ещё на прошлой неделе немного - безрезультатно.

Имеется: Dovecot 1.2.5 на OpenSUSE 11.1 с одной стороны и Active Directory на Windows 2003 server SP2 с другой стороны. Хочется, чтобы Dovecot пускал пользователей, проверяя их наличие и пароли в домене Active Directory. На данный момент не так важно как именно - через PAM/Kerberos или через LDAP, но ни то, ни то не работает. При авторизации через LDAP ошибка "ldap_bind() failed: Other (e.g., implementation specific) error", а при авторизации через pam -- "pam_authenticate() failed: Permission denied". При этом тестирование kinit-ом вполне проходит, имя пользователя и пароль проверяются, если неправильный пароль -- ругается. Перерыл пол-интернета, видел вопросы с похожими проблемами, но без ответов по сути, к сожалению. LDAP работает как userdb (например, можно указать userdb ldap и passdb sql), но не как passdb. При попытке подключить его как passdb (т.е. если в конфигах ниже раскомментировать секцию passdb ldap и закомментировать остальные passdb) пользователя не пускает и в log/mail пишет следующее:

Oct 5 11:24:42 suse11 dovecot: auth(default): new auth connection: pid=24011

Oct 5 11:24:43 suse11 dovecot: auth(default): client out: FAIL 1 user=user1

Oct 5 11:24:53 suse11 dovecot: auth(default): client in: AUTH 2 PLAIN service=imap lip=10.0.0.180 rip=10.0.0.7 lport=143 rport=3125 resp =AGRlbWlkAMzz6uj05fj8

Oct 5 11:24:53 suse11 dovecot: auth(default): ldap(user1,10.0.0.7): ldap_bind() failed: Other (e.g., implementation specific) error

Oct 5 11:24:55 suse11 dovecot: auth(default): client out: FAIL 2 user=user1 temp

Oct 5 11:25:08 suse11 dovecot: imap-login: Disconnected (auth failed, 2 attempts): user=<user1>, method=PLAIN, rip=10.0.0.7, lip=10.0.0.180

Если же использовать passdb pam (и userdb static к примеру), то имеем это:

Oct 5 15:07:59 suse11 dovecot: auth-worker(default): pam(user1,10.0.0.7): lookup service=dovecot

Oct 5 15:07:59 suse11 dovecot: auth-worker(default): pam(user1,10.0.0.7): #1/1 style=1 msg=Password:

Oct 5 15:07:59 suse11 dovecot: auth-worker(default): pam(user1,10.0.0.7): pam_authenticate() failed: Permission denied

Oct 5 15:08:00 suse11 dovecot: auth(default): new auth connection: pid=27686

Oct 5 15:08:01 suse11 dovecot: auth(default): client out: FAIL 1 user=user1

Oct 5 15:08:06 suse11 dovecot: imap-login: Disconnected (auth failed, 1 attempts): user=<user1>, method=PLAIN, rip=10.0.0.7, lip=10.0.0.180

Имеется:

dovecot.conf:

base_dir = /var/run/dovecot/

protocols = imap imaps managesieve

disable_plaintext_auth = no

ssl = no

login_dir = /var/run/dovecot/login

mail_location = maildir:/home/mail/%u:INDEX=/home/mailindexes/%u

maildir_copy_with_hardlinks = yes

protocol imap {

mail_plugin_dir = /usr/lib/dovecot/modules/imap

}

protocol pop3 {

mail_plugin_dir = /usr/lib/dovecot/modules/pop3

}

protocol lda {

postmaster_address = postmaster@example.com

mail_plugins = sieve

mail_plugin_dir = /usr/local/lib/dovecot/lda

auth_socket_path = /var/run/dovecot/auth-master

}

auth_executable = /usr/local/libexec/dovecot/dovecot-auth

auth_verbose = yes

auth_debug = yes

auth_debug_passwords = yes

auth default {

mechanisms = login plain

# Это PAM, который не работает

# passdb pam {

# args = dovecot

# }

# Это LDAP, который работает

# passdb ldap {

# Path for LDAP configuration file, see doc/dovecot-ldap-example.conf

# args = /usr/local/etc/dovecot-ldap-pass.conf

# }

# Это Statiс, который тоже работает, если работает passdb, конечно

#userdb static {

# args = uid=1005 gid=1010 home=/home/mail/%u

#}

# Это LDAP, который НЕ работает

# userdb ldap {

# Path for LDAP configuration file, see doc/dovecot-ldap-example.conf

# args = /usr/local/etc/dovecot-ldap.conf

# }

user = root

socket listen {

master {

path = /var/run/dovecot/auth-master

mode = 0666

}

client {

path = /var/run/dovecot/auth-client

mode = 0666

}

}

}

dict { }

plugin {

sieve = /home/mail/sieve/main/%u.sieve

sieve_dir = /home/mail/sieve/personal/%u

sieve_global_path = /home/mail/sieve/default.sieve

sieve_global_dir = /home/mail/sieve/global

}

protocol managesieve {

managesieve_implementation_string = dovecot

}

---- end of dovecot.conf

dovecot-ldap.conf:

hosts = windows-server

dn = CN=dovecot,CN=Users,DC=domain,DC=local

dnpass = *****

auth_bind = yes

auth_bind_userdn = CN=%u,CN=Users,DC=domain,DC=local

ldap_version = 3

base = CN=Users,DC=domain,DC=local

user_attrs = =mail=/home/mail/%u,=uid=1005,=gid=1010

user_filter = (&(objectCategory=user)(sAMAccountName=%u))

pass_attrs = sAMAccountName=user

pass_filter = (&(objectCategory=user)(sAMAccountName=%u))

---- end of dovecot-ldap.conf

/etc/pam.d/dovecot:

#%PAM-1.0

auth sufficient pam_krb5.so

account sufficient pam_permit.so

---- end of /etc/pam.d/dovecot

--- krb5.conf

[libdefaults]

default_realm = DOMAIN.LOCAL

clockskew = 300

[realms]

DOMAIN.LOCAL = {

default_domain = domain.local

kdc = 10.0.0.3 <-- IP-адрес, потому что с <name>.local какие-то проблемы здесь

admin_server = windowsserver.domain.local

}

[logging]

kdc = FILE:/var/log/krb5/krb5kdc.log

admin_server = FILE:/var/log/krb5/kadmind.log

default = SYSLOG:NOTICE:DAEMON

[domain_realm]

.domain.local = DOMAIN.LOCAL

[appdefaults]

pam = {

ticket_lifetime = 1d

renew_lifetime = 1d

forwardable = true

proxiable = false

minimum_uid = 1

external = sshd

use_shmem = sshd

clockskew = 300

}

--- end of krb5.conf

И ещё - подскажите, где есть более специализированные конференции/форумы по почтовым системам? Можно English. А если ещё и через NNTP со свободным доступом - вообще замечательно было бы.

shamus24
() автор топика

наверное надо nsswitch.conf крутить и прочую штуку

dimon555 ★★★★★
()
Ответ на: комментарий от sfi

Лиссяру я читал, в общем-то и делаю приблизительно так, как там написано, но не работает. Нюхом чую, что в случае с PAM не хватает какой-то мелочи. Permission Denied - где-то что-то не под тем именем, или прав на чего-нибудь не хватает, но где именно - понять не могу.

С LDAP-ом, вероятно, сложнее, ошибка там какая-то сильно загадочная.

shamus24
() автор топика

а если в фильтрах objectClass=user? что за ObjectCategory?

crick
()

Поставил на реальной железке (вместо виртуалки) CentOS, взял procompiled binary rpm с сайта dovecot, сконфигурил PAM как написано, и всё заработало с пол-пинка.

Почему не работало, выяснять пока не хочется.

Отписался здесь, зная, что тема уже глубоко похоронена, просто чтобы если кто-нибудь поиском наткнется, знал чем всё закончилось.

shamus24
() автор топика
Ответ на: комментарий от shamus24

А вот и фиг там. Оказалось, что для пользователей, которых нет в локальном юниксе, всё так же выпадает pam_authenticate() failed: Permission Denied. В интернете по-прежнему находятся только вопросы, типа, что с этой херней делать, и ни одного ответа. Пол-дня убил, и наткнулся как всегда случайно.

Итак, если возникает такая проблема, нужно в /etc/pam.d/dovecot прописать строчку

auth sufficient pam_krb5.so no_user_check

Во всех мануалах рекомендуется просто auth sufficient pam_krb5.so

Слов больше нет.

shamus24
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.