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

Dovecot & ntlm & auth_username_format

Добавлено: 2011-07-12 14:52:43
rax
Добрый день!
Сталкивался ли кто-нибудь со следующей проблемой, а может и не проблемой:
Имеем FreeBSD 8.2-RELEASE, dovecot-1.2.16, настроена авторизация pam-winbind.
Схема работает, но в авторизации участвует только логин, без указания домена, т.е.:

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

imap-login: Info: Login: user=<test>, method=NTLM, rip=192.168.10.11, lip=192.168.10.1
и естественно раскладывает не туда, куда нужно:

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

master out: USER   1       test    uid=26  gid=26  home=/mtest//test
вместо

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

master out: USER   1       test    uid=26  gid=26  home=/mtest/mymaildomain/test
Указание в dovicot.conf параметра auth_username_format = %u (%Lu) ни на что не влияет.

Видел на форуме предложение:

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

auth_default_realm = mymaildomain.com
Вообщем-то, наверно вариант, но если два, три домена, не катит совсем.
Столкнулся с этим, только при NTLM авторизации. Прошу совета.

Re: Dovecot & ntlm & auth_username_format

Добавлено: 2011-07-12 19:59:33
opt1k
вчера думал о похожей задаче и пришёл к выводу что многодоменная конфигурация в dovecot возможна только с использованием sql. Но особо глубоко не копал - могу ошибаться, на выходных планирую детальнее подойти к вопросу.
Вообще у меня задумка использовать несколько userdb через pam_kerberos и через xsql, но опять же как показало гугление это не возможно для разных доменов.
Кстати, рекомендую подумать над тем что заюзать pam_kerberos вместо pam_winbind, у меня есть тестовая система где именно так настроено.

Re: Dovecot & ntlm & auth_username_format

Добавлено: 2011-07-13 9:49:41
rax
opt1k писал(а):вчера думал о похожей задаче и пришёл к выводу что многодоменная конфигурация в dovecot возможна только с использованием sql. Но особо глубоко не копал - могу ошибаться, на выходных планирую детальнее подойти к вопросу.
Многодоменность можно организовать и с помощью LDAP, во всяком случае, dovecot возвращает юзер+домен при imap-login. Это испробовано.
opt1k писал(а):Вообще у меня задумка использовать несколько userdb через pam_kerberos и через xsql, но опять же как показало гугление это не возможно для разных доменов.
Кстати, рекомендую подумать над тем что заюзать pam_kerberos вместо pam_winbind, у меня есть тестовая система где именно так настроено.
А есть принципиальная разница? Хотелось бы посмотреть на конфиги. Я пробовал, но не получилось.

Re: Dovecot & ntlm & auth_username_format

Добавлено: 2011-07-13 12:26:54
opt1k
верно можно.
Я смотрел с другой точки зрения. Допустим есть 2 организации и каждой свой Ldap сервер. В таком случае довекот не сможет обслуживать обоих. Вот если обе организации завязаны на одной ldap базе, то да - возможно. Хотя опять же - могу ошибаться.
Разница в том что не надо использовать винбинд, который потенциально может добавить глюков.
Конфиги покажу, если не забуду. Постараюсь сегодня, если что стучите в личку.

Re: Dovecot & ntlm & auth_username_format

Добавлено: 2011-07-13 13:01:58
rax
Я смотрел с другой точки зрения. Допустим есть 2 организации и каждой свой Ldap сервер. В таком случае довекот не сможет обслуживать обоих.
Сможет, хоть три. Ничто не мешает использовать http://wiki.dovecot.org/Authentication/ ... eDatabases

Re: Dovecot & ntlm & auth_username_format

Добавлено: 2011-07-13 14:30:13
opt1k
да, такой вариант возможен. Но вы считаете такую схему нормальной?
Есть 10 доменов, и 10 записей в конфиге довекота. Пользоатель из последний записи пытается авторизоваться. В итоге его логин и пароль будут проверятся в других 9 доменах прежде чем очередь дойдёт до нужного. Лично для меня выглядит "не красиво". Думаю в таком случае лучше несолько демонов пускать...

Re: Dovecot & ntlm & auth_username_format

Добавлено: 2011-07-13 15:06:33
rax
Да, не красиво, но потенциально работает. =)

Re: Dovecot & ntlm & auth_username_format

Добавлено: 2011-07-13 16:41:51
opt1k
kerberos:
exim:

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

plain_pam:
        driver                  = plaintext
        public_name             = PLAIN
        server_prompts          = :
        server_condition        = ${if pam{$auth2:${sg{$auth3}{:}{::}}}}
        server_set_id           = $auth2

login_pam:
        driver                  = plaintext
        public_name             = LOGIN
        server_prompts          = Username:: : Password::
        server_condition        = ${if pam{$auth1:${sg{$auth2}{:}{::}}}}
        server_set_id           = $auth1
dovecot:

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

passdb {
  driver = pam
}
/etc/pam.d/exim:

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

auth    required        pam_nologin.so
auth    required        pam_krb5.so no_user_check
account required        pam_permit.so
/etc/pam.d/dovecot:

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

auth    required        pam_nologin.so
auth    required        pam_krb5.so no_user_check
account required        pam_permit.so
Как то так. Сразу скажу - я в pam мало что понимаю, поэтому не уверен на счёт безопасности. Но проверку делал - с правильным паролем пускает, с не правильным нет.
Ещё есть вариант аутентификации в АД через ldap, могу и эти кофиги показать.

Re: Dovecot & ntlm & auth_username_format

Добавлено: 2011-07-14 8:37:51
rax
Спасибо за пример, а можно ещё настройки кербероса глянуть?
АД через ldap у меня реализовано было, но нужен был вариант с прозрачной аутентификацией в АД.

Re: Dovecot & ntlm & auth_username_format

Добавлено: 2011-07-16 21:47:20
opt1k
вобщем-то всё "стандартно":

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

[libdefaults]
      default_realm = DOMAIN.MY
      dns_lookup_kdc = no
      dns_lookup_realm = no
      default_keytab_name = /etc/krb5.keytab
; for Windows 2003
;      default_tgs_enctypes = rc4-hmac des-cbc-crc des-cbc-md5
;      default_tkt_enctypes = rc4-hmac des-cbc-crc des-cbc-md5
;      permitted_enctypes = rc4-hmac des-cbc-crc des-cbc-md5
; for Windows 2008 with AES
      default_tgs_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
      default_tkt_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
      permitted_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5

; for MIT/Heimdal kdc no need to restrict encryption type
[realms]
      DOMAIN.MY = {
              kdc = tcp/dc.domain.my
              admin_server = tcp/dc.domain.my
      }
[domain_realm]
      .domain.my = DOMAIN.MY
      .domain.my = DOMAIN.MY
      domain.my = DOMAIN.MY
;[logging]
;  kdc = FILE:/var/log/kdc.log
;  admin_server = FILE:/var/log/kadmin.log
;  default = FILE:/var/log/krb5lib.log
Но, дабы было понимание - мой вариант не несёт прозрачной авторизации. Если надо прозрачно, то смотрите в сторону GSSAPI, сам же я не пробовал.