bg-tutorials

Как установить SSL-сертификат на Postfix

В этом руководстве вы узнаете, как установить SSL/TLS-сертификат на Postfix, популярный почтовый агент Linux.

Мы также записали видео, которое проведет вас через весь процесс. Посмотрите его ниже или продолжайте читать текстовую версию.

Создание кода CSR на Postfix

Если вы уже сгенерировали код CSR и вам нужны только шаги установки, перейдите к разделу Установка SSL-сертификата на Postfix.

Чтобы получить SSL-сертификат от доверенного CA (центра сертификации), необходимо отправить CSR (запрос на подпись сертификата). CSR — это блок закодированного текста, содержащий контактные данные и информацию об организации. У вас есть два варианта:

В процессе заказа у вашего 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 поможет быстро и легко найти подходящий продукт для вашего почтового сервера.

Часто задаваемые вопросы

Какой файл использует Postfix для SSL-сертификата?

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.

Каков правильный порядок для файла цепочки Postfix?

Для smtpd_tls_chain_files порядок таков: сначала закрытый ключ, затем серверный (конечный) сертификат, затем промежуточный(е) сертификат(ы):
cat privkey.key server.crt intermediate.pem > /etc/postfix/rsachain.pem
Если порядок неверен, Postfix не сможет загрузить цепочку. Не включайте корневой сертификат CA — клиенты уже доверяют ему.

Следует ли использовать «may» или «encrypt» для smtpd_tls_security_level?

Используйте may (оппортунистический TLS) для входящей почты на порту 25. Публичный MX-сервер должен принимать почту от отправителей, не поддерживающих TLS, а encrypt отклонит их, что приведёт к потере писем. Оставьте encrypt (обязательный TLS) для авторизованной службы submission на порту 587, где подключаются только ваши собственные пользователи.

Нужно ли перезапускать Postfix или достаточно перезагрузить?

Для изменений сертификата и TLS достаточно перезагрузки; выполните sudo systemctl reload postfix (или sudo postfix reload). Перезагрузка повторно считывает конфигурацию без сброса активных соединений. Сначала выполните sudo postfix check, чтобы выявить синтаксические ошибки до их применения.

Как проверить, что Postfix предоставляет сертификат?

Подключитесь с помощью 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

Детальное изображение дракона в полете
Написано

Опытный автор контента, специализирующийся на SSL-сертификатах. Превращает сложные темы кибербезопасности в понятный, увлекательный контент. Вносите свой вклад в повышение уровня цифровой безопасности с помощью впечатляющих рассказов.