bg-tutorials

Как установить SSL-сертификат ACME на почтовые серверы

В этом руководстве Вы узнаете, как установить SSL-сертификат ACME на почтовые серверы, а именно Postfix, Dovecot и, как вариант, Exim, используя коммерческих провайдеров, поддерживающих ACME + EAB. Мы будем использовать команду acme.sh для регистрации Вашего аккаунта ACME, выпуска сертификата для имени Вашего почтового хоста, а затем подключим этот сертификат непосредственно к конфигурации TLS Вашего почтового сервера.

Почтовые серверы ACME SSL

Это руководство предполагает наличие почтового сервера на базе Linux и коммерческого ЦС, который предоставляет URL каталога ACME вместе с учетными данными EAB (Key ID + HMAC). Поскольку почтовые среды различаются в разных дистрибутивах и хостингах, рассматривайте это руководство как четкий и надежный образец, но всегда проверяйте пути, имена служб и настройки TLS на своем сервере по ходу работы.


Прежде чем начать

Вы проведете время гораздо спокойнее, если эти основы будут готовы:

  • Имя почтового хоста, например, mail.example.com, с записью A/AAAA, указывающей на Ваш почтовый сервер.
  • Ваша запись MX, указывающая на это имя хоста (обычная настройка)
  • Shell/SSH-доступ к почтовому серверу с правами sudo или root
  • Коммерческая учетная запись CA, предоставляющая URL-адрес каталога ACME(например, https://acme.yourca.com/v2/acme), идентификатор ключа EAB и ключ EAB HMAC.
  • Почтовый стек: Postfix/Exim для SMTP и Dovecot для IMAP/POP3

Мы будем использовать проверку DNS-01, поскольку она работает, даже если на Вашем почтовом сервере нет публичного сайта, и часто предпочтительна в производстве.


Шаг 1: Установите файл acme.sh на почтовый сервер

Вы установите клиент ACME непосредственно на почтовый сервер, чтобы он мог обновлять сертификаты и записывать их на диск, где Postfix/Dovecot/Exim сможет их прочитать.

На почтовом сервере:

curl https://get.acme.sh | sh
source ~/.bashrc
acme.sh --version

Если Вы видите номер версии, значит, клиент установлен и готов к работе. Если строка source ~/.bashrc не работает, выйдите из системы и снова войдите в нее, а затем снова запустите acme.sh --version.


Шаг 2: Зарегистрируйте свою учетную запись ACME (с EAB)

Затем Вам необходимо зарегистрировать учетную запись ACME в Вашем коммерческом ЦС, используя учетные данные EAB из его панели. acme.sh поддерживает EAB через --eab-kid и --eab-hmac-key.

Запустите это на почтовом сервере:

acme.sh --register-account \
  --server https://acme.yourca.com/v2/acme \
  --eab-kid YOUR_EAB_KID \
  --eab-hmac-key YOUR_EAB_HMAC_KEY \
  --accountemail [email protected]

Замените:

  • https://acme.yourca.com/v2/acme с URL-адресом каталога ACME Вашего ЦС
  • YOUR_EAB_KID с идентификатором ключа
  • YOUR_EAB_HMAC_KEY с ключом HMAC
  • [email protected] с Вашим настоящим электронным адресом администратора для уведомлений об истечении срока действия

Вы делаете это один раз для каждой учетной записи. Если команда не срабатывает, это почти всегда опечатка в значениях URL или EAB.


Шаг 3: Выдача сертификата через DNS-01

Теперь Вы запрашиваете сертификат для имени хоста, к которому будут подключаться Ваши пользователи, например, mail.example.com (или imap.example.com, smtp.example.com. Просто выберите тот, который Вы действительно используете в конфигурации клиента).

Выдайте сертификат (ручной DNS)

Бег:

acme.sh --issue \
  -d mail.example.com \
  --dns dns_manual \
  --server https://acme.yourca.com/v2/acme

--dns dns_manual Рассказывает acme.sh Вы будете добавлять TXT-записи вручную в своей DNS-панели.

Клиент выдаст что-то вроде:

Please add a TXT record:
_acme-challenge.mail.example.com → some-long-token-value

Добавьте запись TXT

В панели Вашего DNS-провайдера создайте TXT-запись:

  • Имя: _acme-challenge.mail.example.com
  • Значение: маркер, показанный acme.sh

Подождите несколько минут, пока DNS распространится, затем проверьте его:

dig TXT _acme-challenge.mail.example.com +short

Если Вы видите там маркер, выполните команду acme.sh --issue еще раз, чтобы завершить проверку. Если проверка прошла успешно, acme.sh сохранит Ваши файлы в каталоге ~/.acme.sh/mail.example.com/.

Внутри этой директории у Вас будет как минимум:

  • fullchain.cer — сертификат плюс промежуточная цепочка
  • mail.example.com.key — закрытый ключ
  • ca.cer — сертификаты CA (если Ваш CA предоставляет их отдельно).

Мы будем использовать их в следующих шагах.


Шаг 4: Настройте Postfix на использование сертификата ACME (SMTP)

Postfix должен знать, где находятся Ваш новый сертификат и ключ. TLS в Postfix управляется такими опциями, как smtpd_tls_cert_file и smtpd_tls_key_file.

Сначала скопируйте файлы в стабильное место, например:

sudo mkdir -p /etc/ssl/mail
sudo cp ~/.acme.sh/mail.example.com/fullchain.cer /etc/ssl/mail/mail-fullchain.cer
sudo cp ~/.acme.sh/mail.example.com/mail.example.com.key /etc/ssl/mail/mail.key
sudo chown root:root /etc/ssl/mail/*
sudo chmod 600 /etc/ssl/mail/mail.key

Затем скажите Postfix использовать их:

sudo postconf -e 'smtpd_use_tls = yes'
sudo postconf -e 'smtpd_tls_security_level = may'
sudo postconf -e 'smtpd_tls_cert_file = /etc/ssl/mail/mail-fullchain.cer'
sudo postconf -e 'smtpd_tls_key_file = /etc/ssl/mail/mail.key'
sudo postconf -e 'smtp_tls_security_level = may'
  • smtpd_* Настройки управления входящей почтой (клиенты, отправляющие Вам почту)
  • smtp_* Настройки управления исходящей почтой (Ваш сервер отправляет почту другим)

Примените изменения:

sudo systemctl restart postfix

Если в Вашем дистрибутиве все еще используется service, настройте команду соответствующим образом.


Шаг 5: Настройте Dovecot на использование сертификата ACME (IMAP/POP3)

Dovecot работает с IMAP и POP3. Вы настраиваете TLS, указывая ssl_cert и ssl_key на те же файлы, которые мы только что подготовили.

Откройте конфигурацию SSL Dovecot:

sudo nano /etc/dovecot/conf.d/10-ssl.conf

Обновите (или добавьте) эти строки:

ssl = yes
ssl_cert = </etc/ssl/mail/mail-fullchain.cer
ssl_key  = </etc/ssl/mail/mail.key

Сохраните файл и перезагрузите Dovecot:

sudo systemctl restart dovecot

Теперь IMAP/POP3 по TLS будет представлять тот же самый коммерческий сертификат ACME.


Необязательно: Используйте тот же сертификат в Exim

Если Вы используете Exim в качестве почтового сервера вместо Postfix, интеграция будет аналогичной. Exim использует опции tls_certificate и tls_privatekey для TLS.

В Вашей конфигурации Exim (путь зависит от дистрибутива, часто это /etc/exim4/exim4.conf.template или split config под /etc/exim4/conf.d/) установите:

tls_certificate = /etc/ssl/mail/mail-fullchain.cer
tls_privatekey  = /etc/ssl/mail/mail.key

Затем перезагрузите Exim:

sudo systemctl restart exim4

Проверьте документацию Вашего дистрибутива, если название службы немного отличается.


Шаг 6: Проверьте TLS Вашей почты

Вы можете проводить тестирование с любой другой машины, на которой установлен OpenSSL .

Протестируйте SMTP (Postfix или Exim)

openssl s_client -starttls smtp -connect mail.example.com:587 -showcerts

Тест IMAP (Dovecot)

openssl s_client -starttls imap -connect mail.example.com:143 -showcerts

Если в результатах отображается Ваш коммерческий ЦС и имя хоста совпадает, то все в порядке.


Шаг 7: Поддерживайте автоматическое обновление и перезагрузку

acme.sh уже установлено задание cron, которое ежедневно проверяет наличие обновлений. Когда срок действия Вашего сертификата подойдет к концу, он обновится автоматически и обновит файлы в ~/.acme.sh/mail.example.com/.

Чтобы заставить Postfix/Dovecot/Exim всегда использовать последнюю версию, у Вас есть два варианта:

  1. Укажите конфигурации непосредственно на файлы в ~/.acme.sh/mail.example.com/
    (например, smtpd_tls_cert_file = /root/.acme.sh/mail.example.com/fullchain.cer) и убедитесь, что только root может их прочитать.
  2. Напишите небольшой сценарий развертывания, который копирует обновленные файлы в /etc/ssl/mail/ и перезапускает или перезагружает сервер.

Пример сценария:

#!/usr/bin/env bash
DOMAIN="mail.example.com"
SRC="$HOME/.acme.sh/$DOMAIN"
DEST="/etc/ssl/mail"

sudo cp "$SRC/fullchain.cer" "$DEST/mail-fullchain.cer"
sudo cp "$SRC/$DOMAIN.key"   "$DEST/mail.key"
sudo chown root:root "$DEST/"*
sudo chmod 600 "$DEST/mail.key"

sudo systemctl restart postfix dovecot

Этот скрипт копирует только что выпущенный сертификат ACME и закрытый ключ в каталог почтового SSL Вашего сервера, устанавливает правильные права собственности и разрешения, а затем перезапускает Postfix и Dovecot, чтобы они сразу же начали использовать обновленный сертификат. Используйте свои учетные данные вместо заполнителей.

Затем подключите его к acme.sh:

acme.sh --install-cert -d mail.example.com \
  --key-file       ~/.acme.sh/mail.example.com/mail.example.com.key \
  --fullchain-file ~/.acme.sh/mail.example.com/fullchain.cer \
  --reloadcmd "/path/to/your/deploy-script.sh"

С этого момента продление происходит автоматически.


Общие вопросы и устранение неполадок

Когда Вы делаете это в первый раз, могут возникнуть некоторые проблемы. Вот как быстро с ними справиться.

Почему при проверке ACME выдается сообщение «unauthorized» или «invalid response»?

Это происходит, когда ЦС не может проверить TXT-запись Вашего DNS. Проверьте это:

  • Запись в формате TXT выглядит следующим образом _acme-challenge.mail.example.com
  • В маркере нет лишних кавычек или пробелов
  • DNS распространился (dig TXT _acme-challenge.mail.example.com +short)
  • Вы не перепутали mail.example.com с example.com

Если Вы не уверены, удалите запись TXT, запустите заново acme.sh --issue, и снова добавьте точное значение, которое дает Вам ACME.

Почему я получаю ошибки «accountDoesNotExist» или ошибки, связанные с EAB?

Они появляются, когда регистрация Вашей учетной записи ACME не совпадает с учетными данными EAB из Вашего центра сертификации.

Исправить по:

  • Повторная проверка URL-адреса каталога ACME (производственный и промежуточный)
  • Убедитесь, что идентификатор ключа и HMAC скопированы точно, без скрытых пробелов
  • Повторное выполнение команды регистрации один раз с правильными значениями

Коммерческие центры сертификации отклоняют любую регистрацию EAB, которая не соответствует их профилю.

Почему SMTP/IMAP все еще показывает старый сертификат?

Это означает, что служба не перезагрузила новый сертификат или считывает его с другого пути. Проверьте:

  • Пути TLS в Postfix/Dovecot/Exim соответствуют реальным файлам
  • Вы перезапустили правильную службу (systemctl restart postfix dovecot exim4).
  • Ни один второй экземпляр, контейнер или прокси не обслуживает старый сертификат.

Вы можете проверить живой сертификат, используя:

openssl s_client -connect mail.example.com:465 -servername mail.example.com

Заключительные слова

При такой настройке Ваш почтовый сервер представляет клиентам SMTP и IMAP/POP3 надлежащий коммерческий сертификат ACME, а файл acme.sh спокойно занимается обновлением в фоновом режиме. Вы сохраняете полный контроль над цепочкой сертификатов и именами файлов, Ваши пользователи перестают видеть предупреждения о безопасности, и Вам не нужно заходить в систему каждые несколько месяцев, чтобы вручную загружать новые файлы.

Сделав это один раз, Вы можете повторить ту же схему для других имен хостов, вторичных MX-серверов или дополнительных почтовых стеков, используя ту же учетную запись и процесс ACME.

Сэкономьте 10% на SSL-сертификатах при заказе сегодня!

Быстрая выдача, надежное шифрование, 99,99% доверия к браузеру, специализированная поддержка и 25-дневная гарантия возврата денег. Код купона: SAVE10

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

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

Avatar of Sergiu Rosca
Technical Review by Sergiu Rosca

Sergiu Rosca is the core web developer behind SSL Dragon. He manages the technical infrastructure, platform performance, and backend integrations that keep the site running smoothly and securely. At SSL Dragon, Sergiu shares practical insights on web development, site optimization, and technical troubleshooting.

All SSL Dragon installation guides are tested on live server environments and undergo a strict peer-review process to ensure your infrastructure remains secure. Read our full Editorial Policy.