LINUX.ORG.RU
ФорумAdmin

Прозрачная авторизация клиентов Dovecot

 , , , ,


0

1

Здравствуйте!

Исходные данные:
Домен (dom.lan): Microsoft Windows 2008
Почтовый сервер (mail.dom.lan): FreeBSD 10.0+Postfix 2.11.1+Dovecot 2.2.15
На почтовом сервере настроена Samba 3.6.24, является членом домена, предоставляет прозрачный доступ к сетевым ресурсам, используя winbind.
Т.е. пользователям, которые авторизовались в домене, не приходится повторно вводить доменный пароль, чтобы получить доступ к сетевому ресурсу.

Команды:

wbinfo -t 
wbinfo -p 
wbinfo -u
wbinfo -g 
id real_domain_user
getent group 
getent passwd
отрабатывают правильно, выводя информацию о пользователях и группах домена.

Задача: настроить прозрачную авторизацию клиентов Dovecot. Т.е. сделать так, чтобы почтовый клиент забирал почту не с помощью пароля, указанного в почтовом клиенте, а на основе существующей доменной сессии (пароли пользователей в домене периодически подлежат замене).

Подозреваю, что это можно реализовать, используя Samba+PAM+Winbind. Делал так:

Создал файл /etc/pam.d/dovecot следующего содержания:
auth    required    /usr/local/lib/pam_winbind.so   try_first_pass 

Конфиги dovecot:

10-auth.conf
disable_plaintext_auth = no  
auth_username_format = %u    
auth_mechanism = plain       
!include auth-static.conf.ext

auth-static.conf.ext
passdb {
   driver = pam
   args = dovecot
}

userdb {
  driver = static
  args = uid=vmail gid=vmail home=/usr/home/vmail/%d/%u allow_all_users=yes
}
10-ssl.conf
ssl = no
В настройках почтового клиента Microsoft Outlook в поле ПОЛЬЗОВАТЕЛЬ пишу (user - имя пользователя в домене, user@dom.lan - это значение поля UserPrincipalName в AD):
user@dom.lan
В почтовом клиенте поле пароль не заполняю (ведь это и есть цель!). В итоге, после попытки получить почту, в /var/log/maillog вижу следующее:
Oct 30 08:29:11 mail dovecot: auth-worker(4558): pam(user@dom.lan,<ip клиента>): pam_authenticate() failed: authentication error (password mismatch?) (given password: )
Я так понимаю, что пароль предоставлен не был и аутентификация не случилась. Находил в Интернете упоминания, что такая схема работает, но, к сожалению без подробностей. Все, что нашел - реализовал, однако этого недостаточно. Как сделать так, чтобы был предоставлен пароль текущей доменной сессии? Чего именно не хватает или где у меня ошибка пока не понял. Прошу помочь и направить в нужном направлении. Спасибо!

Ответ на: комментарий от zgen

Microsoft Outlook умеет?
Я пытался настроить Dovecot+Kerberos+AD, не получалось сгенерить такой файл-keytab, чтобы получать билет kerberos. Открыл тему:

https://www.linux.org.ru/forum/admin/10957621

Ошибку свою при генерации файла нашел. Я давал команду:

ktpass -princ IMAP/mail.dom.lan@DOM.LAN -mapuser imap@DOM.LAN -crypto RC4-HMAC-NT -pass 1234 -ptype KRB5_NT_PRINCIPAL -out c:\imap.keytab
А надо было:
ktpass -princ IMAP/mail@DOM.LAN -mapuser imap@DOM.LAN -crypto RC4-HMAC-NT -pass 1234 -ptype KRB5_NT_PRINCIPAL -out c:\imap.keytab
С помощью такого keytab-файла (после добавления его в /etc/krb5.keytab) билет был получен с помощью команды:
kinit -k IMAP/mail
При попытке забрать почту Microsoft Outlook (в настройках установлена опция Безопасная проверка пароля (SPA)) оставлял записи <...method=NTLM...>, а Mozilla Thunderbird:
Билет Kerberos/GSSAPI небыл принят IMAP-сервером «user@dom.lan». Проверьте что вы вошли в Kerberos/GSSAPI realm
Этим же самым закончилось обсуждение темы:
https://www.linux.org.ru/forum/admin/10301670

Дальше с настройкой kerberos продвинуться не удалось. Все клиенты у меня Microsoft Outlook, пытался настроить это:

http://wiki2.dovecot.org/HowTo/ActiveDirectoryNtlm
тоже безуспешно.

Так как решить эту задачу?
Freebsd+Dovecot+AD+Microsoft Outlook+прозрачная авторизация. Уверен, что это возможно! Прошу помочь, очень нужно реализовать.
Спасибо!

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

Добрый день!
Жаль, что тема не нашла отклика. На мой взгляд типовая задача для корпоративной почты. Тем не менее, продолжаю ковырять kerberos.
Читая и перечитывая:

http://wiki2.dovecot.org/Authentication/Kerberos
стараюсь привести свои настройки в полное соответствие.

В каталоге /usr/lib присутствовал файл pam_krb5.so. Однако указание на него в /etc/pam.d/dovecot к изменениям ситуации не привело.

Установил порт /usr/ports/security/pam_krb5 и переписал /etc/pam.d/dovecot к такому виду:
auth sufficient /usr/local/lib/security/pam_krb5.so
account sufficient /usr/local/lib/security/pam_krb5.so
Пытаюсь получить почту почтовым клиентом Mozilla Thunderbird, потому что в нем можно четко указать «Метод аутентификации Kerberos/GSSAPI». Сам Thunderbird по прежнему сообщает:
Билет Kerberos/GSSAPI не был принят IMAP-сервером «user@dom.lan». Проверьте что вы вошли в Kerberos/GSSAPI realm
А вот в /var/log/maillog появилась такая запись:
Oct 31 12:30:57 mail dovecot: imap-login: Disconnetcted (auth process communication failure): user=<>, method=GSSAPI,rip=<ip-клиента>, lip=<ip-почтового сервера>, session=<vHbxXrQGTwDAqAIf>
До установки порта /usr/ports/security/pam_krb5 в /var/log/maillog было так:
Oct 31 11:16:34 mail dovecot: imap-login: Disconnetcted (no auth attempts in 0 sec): user=<>, rip=<ip-клиента>, lip=<ip-почтового сервера>, session=<45Z/nbMGrwDAqAIf>
Радует, что ситуация изменилась. И вроде как в лучшую сторону. Но почему в логе user=<> - непонятно. Получается, что ip-клиента определился, а имя пользователся нет? Может быть кто-то сможет это прокомментировать?

Файл /etc/krb5.keytab работает нормально. Команды:
kinit -k imap/mail
klist
отрабатывают правильно, как в статьях и примерах. Вот вывод команды klist -v:
Credentials cache: FILE:/tmp/krb5cc_0
        Principal: imap/mail@DOM.LAN
    Cache version: 4

Server: krbtgt/DOM.LAN@DOM.LAN
Client: imap/mail@DOM.LAN
Ticket etype: arcfour-hmac-md5, kvno 2
Ticket length: 242
Auth time: Oct 31 11:05:49 2014
End time:  Oct 31 17:45:49 2014
Ticket flags: initial, forwardable
Addresses:addressless
kinit --version отвечает так:
kinit (Heimdal 1.5.2)
И вот еще момент. Make config для порта /usr/ports/mail/dovecot2 предлагает сборку в части GSSAPI c такими вариантами:
( ) GSSAPI_NONE      Build without GSSAPI support
( ) GSSAPI_BASE      Use GSSAPI from base
( ) GSSAPI_HEIMDAL   Use Heimdal GSSAPI from security/heimdal
(*) GSSAPI_MIT       Use MIT GSSAPI from security/krb5
Собрал так, как указано. Первый вариант отпадает, сборка со вторым и третьим вылетела с ошибкой. Четвертый вариант собрался без ошибок. Но правильно ли это?
Спасибо!

citmen ()

может быть все-таки поменять auth_mechanism = plain на что-то другое?

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

Надо же, опять опечатался. В конфиге:

auth_mechanism = plain gssapi

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

Как то так получается, что после поста находится решение или происходит движение вперед. Поэтому продолжаю :) , но от помощи не отказываюсь.

Когда надоело мучать Mozilla Thunderbird и GSSAPI, закрыл его и снова открыл Microsoft Outlook. Тут случилось чудо! Он залогинился! К этому моменту в 10-ssl.conf было:

ssl = yes
Сразу смотрю в /var/log/maillog
Oct 31 16:51:53 mail dovecot: imap-login: Login: user=<user@dom.lan>, method=PLAIN, rip=ip-клиента, lip=ip-почтового сервера, mpid=5805, TLS, session=<AwutTLgGxgDAqAIf>
В /var/log/debug.log много всего, красиво и без ошибок.
При этом в Microsoft Outlook поле ПАРОЛЬ не заполнено!

Так исторически сложилось, что имя пользователя домена и адрес электронной почты не совпадают, причем имя пользователся может быть по русски. Например, login - "Смирнов" и email - "smirnov@dom.lan".

А Microsoft Outlook не позволяет оставить поле ПОЛЬЗОВАТЕЛЬ пустым. Написал для начала туда не login пользователя, а его адрес электронной почты (user@dom.lan). В Maildir создался ящик электронной почты. Отлично! Затем в поле ПОЛЬЗОВАТЕЛЬ написал адрес электронной почты (например, user1@dom.lan), которого не существует в AD. Ящик создался! Это нехорошо! Затем написал адрес электронной почты ДРУГОГО ПОЛЬЗОВАТЕЛЯ. Ящик загрузился. А вот это уже совсем плохо! Вся почта принадлежит пользователю vmail.

Вопрос: можно ли сделать так, чтобы в поле ПОЛЬЗОВАТЕЛЬ в Microsoft Outlook можно было бы написать только адрес электронной почты того пользователя, который авторизовался в домене?

Плодить несуществующие ящики и читать чужую почту не есть хорошо.
Спасибо!

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

Здравствуйте!

Почитав Вашу тему, получилось настроить авторизацию в Thunderbird через kerberos/gssapi, а вот MS Outlook по-прежнему не хочет работать с пустым паролем. Не могли бы Вы выложить содержимое файлов, в которые внесли изменения при настройке, чтобы понять, благодаря чему у Вас произошло чудо?

Спасибо!

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