Почтовый сервер · 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

Это должно выглядеть примерно так:

Скриншот проверки SSL

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

Замена сертификата на сертификат 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/, чтобы увидеть, какой из (псевдоним) доменов имеет там папку.

Если у вас все еще есть проблема, откройте тему на форуме, чтобы другие могли помочь вам.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.