В этом руководстве вы узнаете, как установить SSL/TLS-сертификат на Postfix, популярный почтовый агент Linux.
Мы также записали видео, которое проведет вас через весь процесс. Посмотрите его ниже или продолжайте читать текстовую версию.
Создание кода CSR на Postfix
Если вы уже сгенерировали код CSR и вам нужны только шаги установки, перейдите к разделу Установка SSL-сертификата на Postfix.
Чтобы получить SSL-сертификат от доверенного CA (центра сертификации), необходимо отправить CSR (запрос на подпись сертификата). CSR — это блок закодированного текста, содержащий контактные данные и информацию об организации. У вас есть два варианта:
- Использовать наш генератор CSR для автоматического создания CSR.
- Следовать нашему подробному руководству по генерации CSR в Postfix.
В процессе заказа у вашего SSL-поставщика откройте файл CSR в любом текстовом редакторе и скопируйте весь блок, включая строки ——BEGIN CERTIFICATE REQUEST—— и ——END CERTIFICATE REQUEST——, в соответствующее поле. После того как CA проверит ваш запрос и выпустит сертификат, продолжайте установку ниже.
Установка SSL-сертификата на Postfix
После того как CA проверит ваш запрос и отправит файлы сертификата на вашу почту, вы можете начать установку.
Шаг 1: Подготовьте файлы SSL
Postfix использует SSL/TLS-сертификаты в формате X.509. Для правильной установки требуются три файла:
- Ваш закрытый ключ, сгенерированный вместе с CSR на вашем сервере (например, privkey.key).
- Ваш основной SSL-сертификат — файл внутри ZIP-архива, отправленного вам CA по электронной почте. В этом руководстве мы будем называть его server.crt.
- Промежуточный сертификат(ы) — CA bundle из того же ZIP-архива. Мы будем называть его intermediate.pem.
Вы можете хранить все три файла в одной директории, например /etc/postfix/. Убедитесь, что закрытый ключ доступен для чтения только пользователю root:
sudo chmod 600 /etc/postfix/privkey.key
Шаг 2: Соберите цепочку сертификатов
Способ сборки файлов зависит от вашей версии Postfix. Сначала проверьте её:
postconf mail_version
Рекомендуемый способ (Postfix 3.4 и новее)
Создайте один файл цепочки, содержащий закрытый ключ, серверный сертификат и промежуточный(е) сертификат(ы), именно в этом порядке:
cat /path/to/privkey.key /path/to/server.crt /path/to/intermediate.pem > /etc/postfix/rsachain.pem
Этот современный метод избегает проблем при обновлении сертификата и корректно работает с директивой Postfix smtpd_tls_chain_files. Защитите файл цепочки так же, как и ключ, поскольку он содержит ваш закрытый ключ:
sudo chmod 600 /etc/postfix/rsachain.pem
Альтернативный способ (все версии Postfix)
Если у вас установлена версия Postfix старше 3.4, храните ключ отдельно и объединяйте только серверный сертификат с промежуточным(и):
cat /path/to/server.crt /path/to/intermediate.pem > /etc/postfix/server.pem
Вы будете ссылаться на этот бандл и закрытый ключ отдельно в конфигурации ниже.
Шаг 3: Настройте Postfix
Откройте основной конфигурационный файл /etc/postfix/main.cf и выберите вариант, соответствующий вашей настройке.
Вариант A: Postfix 3.4 или новее (рекомендуется). Укажите Postfix на единый файл цепочки, который вы создали:
smtpd_tls_chain_files = /etc/postfix/rsachain.pem
smtpd_tls_security_level = may
Вариант B: устаревший способ (Postfix старше 3.4). Укажите бандл сертификатов и ключ отдельно:
smtpd_tls_cert_file = /etc/postfix/server.pem
smtpd_tls_key_file = /etc/postfix/privkey.key
smtpd_tls_security_level = may
Несколько замечаний по этим директивам:
- smtpd_tls_security_level = may включает оппортунистический TLS для входящей почты на порту 25. Это правильная настройка для публичного MX-сервера: он предлагает STARTTLS отправителям, которые его поддерживают, при этом принимая обычные соединения от тех, кто не поддерживает. Не устанавливайте значение encrypt на публичном MX, поскольку это приведет к отклонению легитимной почты от отправителей без поддержки TLS. (Старый переключатель smtpd_use_tls = yes устарел; его заменяет smtpd_tls_security_level.)
- Используйте сертификат полной цепочки (ваш сертификат плюс промежуточные), независимо от того, передаёте ли вы его через smtpd_tls_chain_files (Вариант A) или smtpd_tls_cert_file (Вариант B). Предоставление только конечного сертификата вызывает ошибки проверки цепочки на стороне получателя.
- Современный Postfix уже отключает SSLv2, SSLv3 и слабые шифры по умолчанию, поэтому дополнительные списки исключений для входящего трафика на порту 25 не требуются.
Защита службы отправки (порт 587)
Когда ваши собственные пользователи отправляют почту через Postfix (через Outlook, Thunderbird, Apple Mail и т. д.), они подключаются к порту submission 587, а не к порту 25, который зарезервирован для доставки между серверами. Поскольку этот порт используют только ваши авторизованные пользователи, вы можете безопасно применить более строгие правила: требовать TLS и установить минимальный протокол TLS 1.2.
Откройте /etc/postfix/master.cf, убедитесь, что служба submission включена, и добавьте следующие переопределения:
submission inet n - y - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_tls_mandatory_protocols=>=TLSv1.2
Несколько нюансов, которые могут запутать:
- smtpd_tls_mandatory_protocols действует только когда уровень безопасности равен encrypt (обязательный TLS), что именно так и есть для порта 587. Для оппортунистического TLS на порту 25 (уровень безопасности may) эквивалентным параметром будет smtpd_tls_protocols, но на публичном MX обычно оставляют значения по умолчанию, чтобы не отсекать более старые отправители.
- Компактный синтаксис >=TLSv1.2 требует Postfix 3.6 или новее и не должен содержать пробела между >= и версией. На Postfix 3.4 или 3.5 используйте форму исключения: smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1.
- В master.cf в переопределении -o нет пробелов вокруг = (например, -o smtpd_tls_security_level=encrypt), тогда как в main.cf вы пишете key = value с пробелами.
Опционально: неявный TLS на порту 465. Многие современные клиенты предпочитают порт 465 (SMTPS / «submissions»), который с самого начала оборачивает всю сессию в TLS. RFC 8314 поддерживает его наряду с 587. Чтобы предложить его, включите службу smtps в master.cf с режимом обёртки:
smtps inet n - y - - smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
Шаг 4: Перезагрузите Postfix
Перед перезагрузкой рекомендуется проверить конфигурацию на синтаксические ошибки:
sudo postfix check
Если команда не выводит ничего, примените изменения. Перезагрузка повторно считывает конфигурацию без прерывания активных соединений:
sudo systemctl reload postfix
В системах без systemd используйте эквивалентную команду:
sudo postfix reload
Шаг 5: Проверьте сертификат
Убедитесь, что Postfix предоставляет правильный сертификат и цепочку, используя OpenSSL. Замените yourdomain.com на имя хоста вашего почтового сервера:
openssl s_client -starttls smtp -connect yourdomain.com:25 -servername yourdomain.com </dev/null
| openssl x509 -noout -issuer -subject -dates
Вывод должен показать субъект вашего серверного сертификата, его издателя (CA) и сроки действия. Чтобы протестировать службу submission, измените порт на 587 (она также использует STARTTLS), а для порта с неявным TLS 465 убирайте -starttls smtp и подключайтесь непосредственно к порту 465. Поздравляем, вы успешно установили SSL-сертификат на Postfix.
Проверьте установку SSL
После установки сертификата рекомендуется проверить вашу конфигурацию на наличие ошибок или уязвимостей. Наш SSL Checker предоставляет мгновенные отчёты по каждому аспекту вашего сертификата и его настройки, чтобы вы могли убедиться, что цепочка полная, а протоколы настроены правильно.
Где купить лучший SSL-сертификат для Postfix?
Вы попали по адресу. В SSL Dragon мы предлагаем один из самых широких ассортиментов SSL-продуктов по одним из самых низких цен на рынке, и все наши сертификаты совместимы с почтовым агентом Postfix.
Не уверены, какой сертификат выбрать? Наш SSL Wizard поможет быстро и легко найти подходящий продукт для вашего почтового сервера.
Часто задаваемые вопросы
TLS настраивается в файле /etc/postfix/main.cf. На Postfix 3.4 и новее рекомендуемой директивой является smtpd_tls_chain_files, которая указывает на единый PEM-файл, содержащий закрытый ключ, серверный сертификат и промежуточные сертификаты. В более старых версиях вы вместо этого отдельно указываете smtpd_tls_cert_file (сертификат полной цепочки) и smtpd_tls_key_file (закрытый ключ). Переопределения для отдельных служб на портах 587 и 465 находятся в файле /etc/postfix/master.cf.
Для smtpd_tls_chain_files порядок таков: сначала закрытый ключ, затем серверный (конечный) сертификат, затем промежуточный(е) сертификат(ы):cat privkey.key server.crt intermediate.pem > /etc/postfix/rsachain.pem
Если порядок неверен, Postfix не сможет загрузить цепочку. Не включайте корневой сертификат CA — клиенты уже доверяют ему.
Используйте may (оппортунистический TLS) для входящей почты на порту 25. Публичный MX-сервер должен принимать почту от отправителей, не поддерживающих TLS, а encrypt отклонит их, что приведёт к потере писем. Оставьте encrypt (обязательный TLS) для авторизованной службы submission на порту 587, где подключаются только ваши собственные пользователи.
Для изменений сертификата и TLS достаточно перезагрузки; выполните sudo systemctl reload postfix (или sudo postfix reload). Перезагрузка повторно считывает конфигурацию без сброса активных соединений. Сначала выполните sudo postfix check, чтобы выявить синтаксические ошибки до их применения.
Подключитесь с помощью OpenSSL и прочитайте сертификат, который Postfix предоставляет через STARTTLS:openssl s_client -starttls smtp -connect yourdomain.com:25 -servername yourdomain.com </dev/null | openssl x509 -noout -issuer -subject -dates
Эта команда выводит субъект сертификата, издателя и сроки действия. Вы также можете выполнить полное сканирование с помощью наших SSL-инструментов, чтобы убедиться, что цепочка полная.
Итоги
Установка SSL-сертификата на Postfix сводится к сборке файла полной цепочки PEM, указанию его в main.cf с помощью smtpd_tls_chain_files (или устаревшей пары smtpd_tls_cert_file / smtpd_tls_key_file), установке smtpd_tls_security_level = may для входящей почты, усилению защиты службы submission на порту 587, проверке конфигурации с помощью sudo postfix check и перезагрузке Postfix.
Нужен сертификат для начала? Просмотрите наши SSL-сертификаты.
Сэкономьте 10% на SSL-сертификатах при заказе сегодня!
Быстрая выдача, надежное шифрование, 99,99% доверия к браузеру, специализированная поддержка и 25-дневная гарантия возврата денег. Код купона: SAVE10


