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

Это руководство предполагает наличие почтового сервера на базе 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 всегда использовать последнюю версию, у Вас есть два варианта:
- Укажите конфигурации непосредственно на файлы в ~/.acme.sh/mail.example.com/
(например, smtpd_tls_cert_file = /root/.acme.sh/mail.example.com/fullchain.cer) и убедитесь, что только root может их прочитать. - Напишите небольшой сценарий развертывания, который копирует обновленные файлы в
/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

