В сети можно найти много статей про создание и настройку своего почтового сервера. Так как рецептов и конфигурационных файлов может быть от каждого автора много, я всего лишь затрону тему работы почтового сервера с несколькими доменами, использующими tls сертификаты. За источник настройки сервера возьму эту инструкцию — https://serveradmin.ru/nastrojka-postfix-dovecot-postfixadmin-roundcube-dkim-na-debian/
В статье выше хорошо расписано как настроить свой собственный почтовый сервер на базе postfix и dovecot. Так что после корректно настроенного обмена почтой\приёмом и отправкой можно озадачиться и настройкой её для нескольких доменов при использовании не самоподписных сертификатов, а сертификатов от LetsEncrypt. Для этого редактируем конфигурацию postfix — файл main.cf
Обратите внимание, что postfix начал поддержку SNI (Server Name Indication) только начиная с версии 3.4. Для старых версий постфикса данная статья не применима.
Добавляем строки
tls_server_sni_maps = hash:/etc/postfix/vmail_ssl.map smtpd_tls_chain_files = /etc/postfix/certs/key-example.org.pem /etc/postfix/certs/cert-example.org.pem
где,
tls_server_sni_maps — дополнительные таблицы поиска, которые сопоставляют имена, полученные от удаленных SMTP-клиентов через расширение TLS Server Name Indication (SNI), с соответствующими ключами и цепочками сертификатов. Параметр должен указываться для случаев когда клиент не отправляет SNI или когда он отправляет SNI с доменом, для которого сервер не знает сертификатов. В таком случае он (вероятно) будет использовать ключи из параметра smtpd_tls_chain_files;
smtpd_tls_chain_files — список из одного или нескольких файлов PEM, каждый из которых содержит один или несколько закрытых ключей, за которыми непосредственно следует соответствующая цепочка сертификатов. То есть сначала описывается закрытый ключ, а потом — открытый.
Комментируем строки (если они есть)
#smtpd_tls_key_file = /etc/postfix/certs/key.pem #smtpd_tls_cert_file = /etc/postfix/certs/cert.pem
Создаём файл vmail_ssl.map и прописываем в него все наши домены с путями до их закрытых и открытых ключей.
nano /etc/postfix/vmail_ssl.map
# Compile with postmap -F hash:/etc/postfix/vmail_ssl.map when updating # One host per line mx.example.org /etc/postfix/certs/key-example.org.pem /etc/postfix/certs/cert-example.org.pem mail.example.com /etc/postfix/certs/key-example.com.pem /etc/postfix/certs/cert-example.com.pem # add more domains with keys and certs as needed
Из инструкции в файле выполняем генерацию базы сертификатов
postmap -F hash:/etc/postfix/vmail_ssl.map
Для postfix все шаги сделаны. Но у нас есть ещё и IMAP сервер, роль которого выполняет Dovecot. Поэтому правим конфигурацию и для него.
Правим файл dovecot.conf
nano /etc/dovecot/dovecot.conf
Приводим файл к следующему виду, дополнив файл необходимыми строками ниже
... # Default ssl_cert = </etc/postfix/certs/cert-example.org.pem ssl_key = </etc/postfix/certs/key-example.org.pem # mx.example.org local_name mx.example.org { ssl_cert = </etc/postfix/certs/cert-example.org.pem ssl_key = <//etc/postfix/certs/key-example.org.pem } # mail.example.com local_name mail.example.com { ssl_cert = </etc/postfix/certs/cert-example.com.pem ssl_key = <//etc/postfix/certs/key-example.com.pem } ...
где секция Default указывает на сертификаты по-умолчанию. Ниже пишется секция для каждого почтового домена. Если у вас почтовая запись указывает на один домен (например mail), а в почтовом клиенте указывается imap, то и пишите для двух доменов записи.
После можно перезапустить сервисы
systemctl restart postfix dovecot
Источники:
Если их закомментировать — сервер перестает отдавать сертификаты на 465 и 587
Сервер прекрасно отдаёт сертификаты с закомментированными строками на всех указанных выше портах. На postfix 3.4 и подключённым хэшем сертификатов. Можете скинуть конфиг или сюда или мне на почту, может там есть какие ошибки?