Почтовый сервер · 4 min read · Sep 08, 2025
Защита вашего почтового сервера, управляемого ISPConfig 3, с помощью действительного SSL-сертификата Let's Encrypt

Если вы управляете собственным почтовым сервером, лучшей практикой будет подключение к нему по защищенному соединению SSL/TLS. Вам нужен действительный сертификат для этих защищенных соединений. В этом руководстве мы настроим сертификат Let’s Encrypt для нашего почтового сервера, который будет автоматически обновляться.
Предупреждение: Это руководство основано на этом руководстве: https://www.howtoforge.com/tutorial/securing-ispconfig-3-with-a-free-lets-encrypt-ssl-certificate/, но модифицировано так, чтобы у вас был отдельный сертификат для вашего почтового сервера и панели управления. Если вы ранее следовали этому руководству, это руководство может нарушить вашу настройку.
Это руководство использует сертификаты, выданные acme.sh. Если вы используете certbot, следуйте этому руководству: https://www.howtoforge.com/community/threads/securing-your-ispconfig-3-managed-mailserver-with-a-valid-lets-encrypt-ssl-certificate-certbot.86372/
Примечание для ISPConfig 3.2: ISPConfig 3.2 может автоматически создать действительный SSL-сертификат Let’s Encrypt для имени хоста сервера во время установки, который также используется для почтового сервера. Нет необходимости вручную создавать SSL-сертификат Let’s Encrypt, как описано здесь для систем ISPConfig 3.2, если вам не нужны разные доменные имена в SSL-сертификате, кроме имени хоста сервера.
Предварительные требования
- Ваш сервер должен быть установлен в соответствии с руководством Perfect Server для вашей ОС.
- Убедитесь, что вы вошли в систему как пользователь root.
Начало работы
Я буду использовать следующие имена хостов для моего почтового сервера: mail.example.com, smtp.example.com, imap.example.com.
Замените все красные подчеркнутые имена хостов в этом руководстве на свои собственные.
Создайте DNS-записи для вашего имени хоста, чтобы они указывали на ваш сервер. Это должны быть записи A (и, возможно, AAAA). Затем в интерфейсе ISPConfig перейдите на вкладку Сайты.
Выдача сертификата
В разделе Сайты нажмите “Добавить новый веб-сайт”. Установите mail.example.com в качестве домена. Отключите Авто-поддомен и отметьте флажок Let’s Encrypt.
После этого вы можете добавить свои другие имена хостов в качестве доменных псевдонимов, перейдя в список aliasdomain и нажав “Добавить новый aliasdomain”. Выберите smtp.example.com в качестве домена и mail.example.com в качестве родительского веб-сайта. Отключите Авто-поддомен и сохраните новую запись. Повторите это для остальных ваших имен хостов.
Проверьте, что сертификат установлен. Вы можете сделать это с помощью инструмента, такого как https://www.sslshopper.com/ssl-checker.html
Это должно выглядеть примерно так:

Если имена хостов перечислены и нет других ошибок, вы можете продолжить. В противном случае проверьте ошибки и исправьте их, прежде чем продолжать.
Замена сертификата на сертификат Let’s Encrypt
Теперь мы можем заменить текущий сертификат на ваш доверенный сертификат. Войдите на свой сервер и выполните эти команды:
(замените mail.example.com на имя хоста, которое вы использовали для веб-сайта)
cd /etc/postfix/
mv smtpd.cert smtpd.cert-$(date +"%y%m%d%H%M%S").bak
mv smtpd.key smtpd.key-$(date +"%y%m%d%H%M%S").bak
ln -s /var/www/mail.example.com/ssl/mail.example.com-le.crt smtpd.cert
ln -s /var/www/mail.example.com/ssl/mail.example.com-le.key smtpd.key
systemctl restart postfix
systemctl restart dovecotСертификат теперь должен использоваться для вашего сервера Postfix и Dovecot. Но мы еще не закончили! Сертификат Let’s Encrypt обновляется каждые 60 дней, поэтому мы должны автоматизировать процесс замены сертификата в будущем, чтобы вы не забыли об этом.
Многосерверные узлы без GUI ISPConfig
Если это узел без GUI в многосерверной настройке ISPConfig, вам теперь нужно проверить, есть ли у самого ISPConfig SSL-сертификат. Не выполняйте этот шаг на настройке единого сервера или на сервере, который работает с GUI ISPConfig.
Вы можете протестировать это с помощью следующих команд ls:
cd /usr/local/ispconfig/interface/ssl/
ls ispserver.crt
ls ispserver.keyРезультат будет выглядеть так, если сертификат уже существует:
root@server:/usr/local/ispconfig/interface/ssl# ls ispserver.crt
ispserver.crt
root@server:/usr/local/ispconfig/interface/ssl# ls ispserver.key
ispserver.keyЕсли две команды ls не возвращают файлы ispserver.crt и ispserver.key, то создайте их как символические ссылки на сертификат Let’s Encrypt следующим образом:
ln -s /var/www/mail.example.com/ssl/mail.example.com-le.cer ispserver.crt
ln -s /var/www/mail.example.com/ssl/mail.example.com-le.key ispserver.keyНастройка скрипта автоматического обновления
Откройте новый файл скрипта:
nano /usr/local/bin/le_mailserver_restart.shВставьте это в файл:
#!/bin/sh
### BEGIN INIT INFO
# Provides: LE MAILSERVER CERT AUTO UPDATER
# Required-Start: $local_fs $network
# Required-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: LE MAILSERVER CERT AUTO UPDATER
# Description: Перезапускает почтовый сервер автоматически, когда выдан новый сертификат Let's Encrypt.
### END INIT INFO
systemctl restart postfix
systemctl restart dovecotСделайте скрипт исполняемым:
chmod +x /usr/local/bin/le_mailserver_restart.shЧтобы автоматически запускать этот скрипт при обновлении, мы будем использовать systemd.
Создайте и откройте новую службу systemd:
nano /etc/systemd/system/le-mailserver-restart.serviceВставьте это в файл:
[Unit]
Description="Запуск скрипта для перезапуска Postfix и Dovecot после обновления сертификата"
[Service]
ExecStart=/usr/local/bin/le_mailserver_restart.shСохраните и закройте этот файл. Затем создайте и откройте новый файл пути systemd:
nano /etc/systemd/system/le-mailserver-restart.pathВставьте это в файл и замените mail.example.com на имя хоста, которое вы использовали:
[Unit]
Description="Мониторинг файлов сертификатов почтового сервера для запуска перезапуска служб электронной почты после обновления сертификатов"
[Path]
PathModified=/var/www/mail.example.com/ssl/
Unit=le-mailserver-restart.service
[Install]
WantedBy=multi-user.targetСохраните и закройте этот файл. Затем запустите службу и включите ее, чтобы она запускалась при старте:
systemctl start le-mailserver-restart.pathИ включите ее, чтобы она запускалась при старте:
systemctl enable le-mailserver-restart.pathИ мы закончили!
Не работает?
Однажды у меня была проблема с этим, потому что Let’s Encrypt использовал один из доменных псевдонимов в качестве основного домена. Вы можете найти основной домен в ранее упомянутом инструменте SSL как “Общее имя” или, перечислив содержимое /root/acme.sh/, чтобы увидеть, какой из (псевдоним) доменов имеет там папку.
Если у вас все еще есть проблема, откройте тему на форуме, чтобы другие могли помочь вам.
Get new posts in your inbox
No spam. Unsubscribe anytime.