====== Сервер dovecot ======
* [[http://ru.wikipedia.org/wiki/POP3]]
* [[http://ru.wikipedia.org/wiki/IMAP]]
* [[http://ru.wikipedia.org/wiki/Dovecot]]
===== Установка =====
==== Debian/Ubuntu ====
* [[https://help.ubuntu.com/community/Dovecot]]
root@server:~# apt install dovecot-imapd
===== Настройка с использованием стандартных mailboxes и аутентификации открытым текстом =====
!!! Можно не делать, если удастся "уговорить" Thunderbird использовать самоподписанные сертификаты (не удалось под Linux)
server# cat /etc/dovecot/conf.d/10-auth.conf
...
disable_plaintext_auth = no
...
server# cat /etc/dovecot/conf.d/10-ssl.conf
...
ssl = no
...
server# less /etc/dovecot/conf.d/10-mail.conf
...
mail_location = mbox:~/mail:INBOX=/var/mail/%u
...
mail_privileged_group = mail
...
===== Тестирование конфигурации и запуск =====
* [[Протокол IMAP]]
# dovecot -n
# service dovecot restart
===== Kerberos GSSAPI аутентификация =====
# apt install dovecot-imapd dovecot-gssapi
==== Создаем ключи сервиса и копируем иx на сервер ====
=== При использовании Winbind ===
* [[Сервис WINBIND#Управление ключами KERBEROS в режиме ADS]]
=== Если в роли KDC выступает Active Directory ===
== Добавляем пользователя в AD ==
Добавляем пользователя в AD
Login: gatesmtp
Login: gateimap
Password: Pa$$w0rd
Пароль не меняется и не устаревает
== Создаем ключ сервиса http связывая его с фиктивным пользователем AD ==
C:\>ktpass -princ imap/gate.corpX.un@CORPX.UN -mapuser gateimap -pass 'Pa$$w0rd' -out gateimap.keytab
C:\>ktpass -princ smtp/gate.corpX.un@CORPX.UN -mapuser gatesmtp -pass 'Pa$$w0rd' -out gatesmtp.keytab
== Копируем ключ сервиса http сервер dovecot ==
C:\>pscp gateimap.keytab root@gate:
C:\>pscp gatesmtp.keytab root@gate:
=== Если в роли KDC выступает HEIMDAL (FreeBSD) ===
[server:~] # kadmin -l
kadmin> add -r imap/gate.corpX.un
kadmin> add -r imap/gate.CORPX.UN
kadmin> ext -k gateimap.keytab imap/gate.corpX.un
kadmin> ext -k gateimap.keytab imap/gate.CORPX.UN
kadmin> exit
=== Если в роли KDC выступает MIT (Debian/Ubuntu) ===
root@server:~# kadmin.local
kadmin.local: addprinc -randkey imap/gate.corpX.un
kadmin.local: addprinc -e rc4-hmac:normal -randkey imap/gate.CORPX.UN
kadmin.local: ktadd -k gateimap.keytab imap/gate.corpX.un
kadmin.local: ktadd -k gateimap.keytab imap/gate.CORPX.UN
kadmin.local: addprinc -randkey smtp/gate.corpX.un
kadmin.local: addprinc -e rc4-hmac:normal -randkey smtp/gate.CORPX.UN
kadmin.local: ktadd -k gatesmtp.keytab smtp/gate.corpX.un
kadmin.local: ktadd -k gatesmtp.keytab smtp/gate.CORPX.UN
kadmin.local: exit
=== Samba4 ===
server# samba-tool user create gatemail
server# samba-tool user setexpiry gatemail --noexpiry
server# samba-tool spn add imap/gate.corpX.un gatemail
server# samba-tool spn add smtp/gate.corpX.un gatemail
server# samba-tool spn list gatemail
server# samba-tool domain exportkeytab gateimap.keytab --principal=imap/gate.corpX.un
server# samba-tool domain exportkeytab gatesmtp.keytab --principal=smtp/gate.corpX.un
=== ===
server# scp gateimap.keytab gate:
server# scp gatesmtp.keytab gate:
==== Копируем ключи в системный keytab ====
=== FreeBSD ===
gate# ktutil copy /root/gateimap.keytab /etc/krb5.keytab
gate# ktutil list
=== Debian/Ubuntu ===
root@gate:~# ktutil
ktutil: rkt /root/gateimap.keytab
ktutil: rkt /root/gatesmtp.keytab
ktutil: wkt /etc/krb5.keytab
ktutil: quit
root@gate:~# klist -k /etc/krb5.keytab
...
==== Настройка dovecot на использование GSSAPI ====
# cat /etc/dovecot/conf.d/10-auth.conf
...
#периодически нужно :)
auth_gssapi_hostname = "$ALL"
...
auth_mechanisms = gssapi plain
...
debian10/11/12# chmod +r /etc/krb5.keytab
gate# mail user1
* Thunderbird - [[Thunderbird#Настройка на использование GSSAPI]]
===== Аутентификация для postfix =====
* [[Сервис MTA#Настройка MTA на релеинг почты на основе аутентификации]]
# cat /etc/dovecot/conf.d/10-master.conf
...
service auth {
...
# Postfix smtp-auth
unix_listener /var/spool/postfix/private/auth {
mode = 0666
}
...
===== Использование сертификатов для шифрования трафика =====
[[http://wiki.dovecot.org/SSL/DovecotConfiguration]]
==== Debian/Ubuntu/FreeBSD ====
server# cat /etc/dovecot/conf.d/10-auth.conf
...
disable_plaintext_auth = yes
...
server# cat /etc/dovecot/conf.d/10-ssl.conf
...
ssl = yes
...
ssl_cert =
===== Аутентификация на основе пользовательских сертификатов =====
* [[http://www.linux.org.ru/forum/admin/6375238|Dovecot и клиентские сертификаты]]
* [[http://wiki.dovecot.org/SSL/DovecotConfiguration|Dovecot SSL configuration]]
* [[http://www.dovecot.org/list/dovecot/2012-December/087225.html|Thunderbird SSL/TLS client authentication fails - solved with workaround]]
* Проверить можно из shell ([[Пакет OpenSSL#Интерактивное подключение по ssl]])
* Заработало в Thunderbird с импортированным в него пользовательским сертификатом в формате PKS#12
* Установка параметров ssl_cert_username_field и ssl_username_from_cert позволяет указывать произвольное имя пользователя в почтовом клиенте
# cat ca.crt ca.crl > /root/ca_crt_crl.pem
# cat /etc/dovecot/conf.d/10-ssl.conf
...
#ssl_ca_file =
# cat /etc/dovecot/conf.d/10-auth.conf
...
auth_ssl_require_client_cert = yes
...
auth_ssl_username_from_cert = yes
...
auth_mechanisms = EXTERNAL
...
===== OAuth аутентификация =====
* [[https://doc.dovecot.org/configuration_manual/authentication/oauth2/|Open Authentication v2.0 database]]
# cat /etc/dovecot/conf.d/10-auth.conf
...
auth_mechanisms = xoauth2 oauthbearer #gssapi
...
===== Авторизация без пароля, на основе аутентификации =====
# cat /etc/dovecot/conf.d/auth-system.conf.ext
...
passdb {
driver = static
args = nopassword=yes allow_all_users=yes
}
...
===== Сокрытие названия сервиса =====
# cat /etc/dovecot/dovecot.conf
...
login_greeting = Exchange ready.
...
* [[#Тестирование конфигурации и запуск]]
===== Дополнительные материалы =====
==== FreeBSD ====
=== Без поддержки GSSAPI ===
[server:~] # pkg install dovecot
=== C поддержкой GSSAPI ===
[gate:~] # cd /usr/ports/mail/dovecot2
[gate:ports/mail/dovecot2] # make config
[gate:ports/mail/dovecot2] make showconfig | grep '=on'
DOCS=on: Build and/or install documentation
EXAMPLES=on: Build and/or install examples
KQUEUE=on: kqueue(2) support
GSSAPI_BASE=on: Use GSSAPI from base
[gate:ports/mail/dovecot2] # make install clean
=== Подготовка к запуску ===
[gate:~] # cat /etc/rc.conf
...
dovecot_enable=yes
[gate:~] # cp -R /usr/local/etc/dovecot/example-config/ /usr/local/etc/dovecot/
[gate:~] # cd /usr/local/etc/dovecot/conf.d/
==== NTLM аутентификация и авторизация ====
* [[Сервис WINBIND#Регистрация unix системы в домене в режиме DOMAIN]]
* [[Сервис WINBIND#Авторизация в режиме DOMAIN]]
=== Настройка dovecot на использование NTLM ===
# cat 10-auth.conf
...
auth_use_winbind = yes
...
#auth_winbind_helper_path = /usr/bin/ntlm_auth #For Linux
#auth_winbind_helper_path = /usr/local/bin/ntlm_auth #For FreeBSD
...
auth_mechanisms = ntlm
...
# chown root:dovecot /var/run/samba/winbindd_privileged/ #For Linux
# chown root:dovecot /var/db/samba34/winbindd_privileged/ #For FreeBSD
# chown root:dovecot /var/db/samba/winbindd_privileged/ #For FreeBSD
=== Настройка клиента Outlook Express на использование NTLM ===
...
Использовать безопасную проверку пароля (SPA)
...