Самой распространенной связкой, используемой для настройки почтовых серверов под Linux является Postfix + Dovecot. Dovecot отвечает за прием писем и работу с ними, Postfix — за отправку. По умолчанию оба пакета работают без шифрования. Dovecot на порту 143, Postfix на порту 25. Из соображений безопасности лучше менять данное поведение. В рамках данного материала рассмотрим как производится настройка SSL в Postfix.
Для демонстрации используем дистрибутив Ubuntu, в Debian настройки идентичные. В CentOS принципиальных отличий тоже нет, но сервисы нужно перезапускать через systemctl.
В Ubuntu / Debian также можно использовать systemctl:
systemctl restart postfix
Как выполняется настройка SSL в Postfix
Основной конфигурационный файл Postfix main.cf. Открываем его для редактирования
mcedit /etc/postfix/main.cf
В файле находим секцию, относящуюся к настройкам TLS и добавляем туда несколько строк или раскомментируем их
# TLS parameters
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
SSL сертификат (и ключ, который подходит к нему), можно приобрести, выпустить бесплатно или сгенерировать самостоятельно на сервере. В файле указываем пути к ним. Для Dovecot и Postfix могут использоваться одни и те же файлы.
Сейчас настраиваем Postfix. Он используется для отправки писем. Dovecot в почтовой системе отвечает за получение и хранение писем.
После перезапуска Postfix пакет будет видеть сертификат и ключ и руководствоваться указанием на необходимость их использования.
Тем не менее, этого недостаточно — дополнительно требуется добиться того, чтобы Postfix работал на портах, поддерживающих шифрование — это 587 и 465 порты.
mcedit /etc/postfix/master.cf
В файле находим и раскомментируем 2 строки:
#submission inet n — — — — smtpd
Отвечает за работу службы на порту 587
#smtps inet n — — — — smtpd
Отвечает за работу службы на порту 465
Перезапускаем почтовую службу
/etc/init.d/postfix restart
Проверяем какие порты использует Postfix сейчас
netstat -nltp | grep master
tcp 0 0 0.0.0.0:465 0.0.0.0:* LISTEN 1264/master tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 1264/master tcp 0 0 0.0.0.0:587 0.0.0.0:* LISTEN 1264/master
Пример вывода приведен на скриншоте:
Цель достигнута, используются в том числе порты 587 и 465.
Чтобы теперь отправлять с сервера почту с шифрованием достаточно указывать в настройках почтового клиента SSL/TLS и один из открытых только что портов.