Почтовый сервер на Debian чаще всего предполагает использование связки из Postfix — SMTP сервера, отвечающего за передачу писем и Dovecot, обеспечивающего их хранение.
Альтернативными Postfix вариантами являются Sendmail и Exim, но применяются они значительно реже ввиду меньшего удобства эксплуатации и меньших возможностей (в случае с Sendmail) и большей сложности настройки (в случае с Exim).
В распределенных системах Dovecot работает с сервером баз данных (чаще всего — MySQL) храня данные о ящиках и доменах в базе, письма хранятся на диске.
По умолчанию же Dovecot используем системных пользователей и хранит письма в их домашних каталогах.
Разберем настройку связки Postfix + Dovecot для случая когда последний использует системных пользователей.
Почтовый сервер будет работать по защищенному соединению, SSL сертификат и ключ сгенерируем самостоятельно.
Когда ключ и сертификат сгенерированы — начинаем настройку. Используется машина, созданная на основе дистрибутива Debian 8. Аутентификация пользователей будет осуществляться посредством SSL + TLS.
Настройка почтового сервера Debian Postfix + Dovecot
Убедимся в том, что для сервера используется статический IP-адрес
mcedit /etc/network/interfaces
Для адреса должен быть установлен параметр static
Устанавливаем Postfix из репозитория
apt-get install postfix
В первом окне выбираем опцию Internet site
При запросе System mail name вводим имя домена
example.com
Те же параметры в любой момент можно изменить в конфиге пакета, также можно запустить реконфигуратор
dpkg-reconfigure postfix
Открываем при помощи текстового редактора основной конфигурационный файл postfix
mcedit /etc/postfix/main.cf
home_mailbox = Maildir/
mailbox_command =
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_enable = yes
myorigin=$mydomain
В конфиге указываем директорию, в которой будут храниться письма пользователя и задаем параметры аутентификации, которые будут применяться при работе почтовой системы.
SASL (Simple Authentication and Security Layer)
Если в файле присутствовала строка mailbox_command с определенным значением — комментируем ее.
Конфигурационный файл postfix можно не редактировать вручную, вместо этого можно вводить в консоль команды вида postconf -e 'команда'
Продолжим конфигурацию именно этим способом. После ее завершения можно просмотреть конфигурационный файл чтобы убедиться в том, что нужная информация в него действительно записалась .
Будем использовать tls
postconf -e 'smtpd_tls_auth_only=no'
postconf -e 'smtpd_use_tls=yes'
postconf -e 'smtp_use_tls=yes'
postconf -e 'smtp_tls_note_starttls_offer=yes'
Задаем пути к ключу и сертификату SSL
postconf -e 'smtp_tls_key_file=/etc/ssl/private/example.key'
postconf -e 'smtp_tls_cert_file=/etc/ssl/private/example.crt'
postconf -e 'smtp_tls_CAfile=/etc/ssl/certs/example.pem'
postconf -e 'smtp_tls_loglevel=1'
postconf -e 'smtp_tls_received_header=yes'
postconf -e 'smtp_tls_session_timeout=3600s'
Ниже приведен минимальный конфигурационный файл /etc/postfix/main.cf для функционирования почтового сервера на Debian
mydomain = example.com
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
append_dot_mydomain = no
readme_directory = no
smtpd_tls_cert_file=/etc/dovecot/dovecot.crt
smtpd_tls_key_file=/etc/dovecot/private/dovecot.key
smtpd_use_tls = yes
smtp_use_tls = yes
smtpd_tls_auth_only = no
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_tls_note_starttls_offer = yes
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_tls_received_header = yes
smtpd_tls_loglevel = 1
tls_random_source = dev:/dev/urandom
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = example.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = $mydomain
mydestination = example.com, localhost
mynetworks = 127.0.0.0/8
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = ipv4
home_mailbox = Maildir/
mailbox_command =
Перезапускаем сервис
/etc/init.d/postfix restart
Устанавливаем dovecot, письма будем забирать по imap
apt-get install dovecot-common dovecot-imapd
Затем добавляем в конфиг пути к файлам с ключом и сертификатом, а также указание на необходимость использования SSL
mcedit /etc/dovecot/conf.d/10-ssl.conf
ssl = required
ssl_certs = </etc/ssl/certs/example.crt
ssl_key = </etc/ssl/private/example.key
Снимаем знак комментария со следующей строки:
disable_plaintext_auth = yes
mcedit /etc/dovecot/10-master.conf
Здесь раскомментируем и поправим при необходимости значение следующей директивы:
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}
Устанавливаем правильные права, пользователя и группу пользователя
mcedit /etc/dovecot/10-mail.conf
Находим mail_location и убеждаемся в том, что выглядит директива приблизительно следующим образом:
mail_location = maildir:~/Maildir
Также раскомментируем следующую строку с упоминанием mail_location в конфиге
Раскомментируем:
mail_privileged_group = mail
Перезапускаем сервис
/etc/init.d/dovecot restart
Добавляем пользователей и задаем им пароли при помощи passwd
adduser user1
passwd user1
adduser user2
passwd user2
Открываем Thanderbird и проверяем работоспособность настроенной почтовой системы, авторизовываться в интерфейсе программы необходимо по логинам и паролям системных пользователей созданных на последнем шаге.
Почтовый сервер на Debian с Postfix и Dovecot настроен. Читайте про удобный веб-интерфейс Rainloop для работы с почтой.