Поиск по сайту:

Защита вашего почтового сервера, управляемого ISPConfig 3, с помощью действительного SSL-сертификата Lets Encrypt


На этой странице

  1. Предпосылки
  2. Начало работы
  3. Выдача сертификата
  4. Замена сертификата сертификатом Lets Encrypt
  5. Настройте сценарий автоматического продления
  6. Не работает?

Если у вас есть собственный почтовый сервер, рекомендуется безопасно подключаться к нему с помощью соединения SSL/TLS. Вам понадобится действительный сертификат для этих безопасных соединений. В этом руководстве мы настроим сертификат Lets Encrypt для нашего почтового сервера, который будет автоматически обновляться.

Предупреждение. Это руководство основано на этом руководстве: https://linux-console.net/tutorial/securing-ispconfig-3-with-a-free-lets-encrypt-ssl-certificate/, но изменено, поэтому у вас есть отдельный сертификат. для вашего почтового сервера и панели управления. Если вы следовали этому руководству раньше, это руководство может нарушить вашу настройку.

В этом руководстве используются сертификаты, выпущенные acme.sh. Если вы используете certbot, следуйте этому руководству: https://linux-console.net/community/threads/securing-your-ispconfig-3-managed-mailserver-with-a-valid-lets-encrypt-ssl-certificate -certbot.86372/

Примечание для ISPConfig 3.2: ISPConfig 3.2 может автоматически создать действительный SSL-сертификат Lets Encrypt для имени хоста сервера во время установки, который также используется для почтового сервера. Нет необходимости вручную создавать SSL-сертификат Lets Encrypt, как описано здесь, в системах ISPConfig 3.2, если вам не нужны другие доменные имена в SSL-сертификате рядом с именем хоста сервера.

Предпосылки

  • Ваш сервер должен быть установлен в соответствии с руководством по работе с Perfect Server для вашей ОС.
  • Убедитесь, что вы вошли в систему как пользователь root.

Начиная

Я буду использовать следующие имена хостов для своего почтового сервера: mail.example.com, smtp.example.com, imap.example.com.

Замените все имена хостов, подчеркнутые красным, в этом руководстве на свои собственные.

Создайте записи DNS для ваших имен хостов, чтобы они указывали на ваш сервер. Это должны быть записи A (и, в конечном итоге, AAAA). Затем в интерфейсе ISPConfig перейдите на вкладку «Сайты».

Выдача сертификата

В разделе Сайты нажмите \Добавить новый веб-сайт\. Установите mail.example.com в качестве домена. Отключите Auto-Subdomain и установите флажок Lets Encrypt.

После этого вы можете добавить другие ваши имена хостов в качестве псевдонимов доменов, перейдя в список псевдонимов и нажав \Добавить новый псевдоним\. Выберите smtp.example.com в качестве домена и mail.example.com в качестве родительского веб-сайта. Отключите Auto-Subdomain и сохраните новую запись. Повторите это для возможных других имен хостов.

Убедитесь, что сертификат находится на месте. Вы можете сделать это с помощью такого инструмента, как https://www.sslshopper.com/ssl-checker.html.

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

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

Замена сертификата на сертификат Lets 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 /root/.acme.sh/mail.example.com/fullchain.cer smtpd.cert
ln -s /root/.acme.sh/mail.example.com/mail.example.com.key smtpd.key
systemctl restart postfix
systemctl restart dovecot

Теперь сертификат должен использоваться для вашего сервера Postfix и Dovecot. Но мы еще не закончили! Сертификат Lets Encrypt обновляется каждые 60 дней, поэтому нам следует автоматизировать процесс замены сертификата в будущем, чтобы вы не могли об этом забыть.

Настройте сценарий автоматического обновления

Откройте новый файл сценария:

nano /etc/init.d/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: Restart mail server automatically when a new Let's Encrypt certificate is issued.
### END INIT INFO
systemctl restart postfix
systemctl restart dovecot

Сделайте скрипт исполняемым:

chmod +x /etc/init.d/le_mailserver_restart.sh

Чтобы автоматически запускать этот скрипт при обновлении, мы собираемся использовать systemd.

Создайте и откройте новую службу systemd:

nano /etc/systemd/system/le-mailserver-restart.service

Вставьте это в этот файл:

[Unit] 
Description="Run script to restart Postfix and Dovecot after the certificate has been renewed"

[Service]
ExecStart=/etc/init.d/le_mailserver_restart.sh

Сохраните и закройте этот файл. Затем создайте и откройте новый файл пути systemd:

nano /etc/systemd/system/le-mailserver-restart.path

Вставьте это в этот файл и замените mail.example.com именем хоста, которое вы использовали:

[Unit]
Description="Monitor the mailserver certificate files to trigger a e-mail services restart after the certificates has been renewed"

[Path]
PathModified=/root/.acme.sh/mail.example.com/
Unit=le-mailserver-restart.service

[Install]
WantedBy=multi-user.target

Сохраните и закройте этот файл. Затем запустите службу и включите ее, чтобы она запускалась при запуске:

systemctl start le-mailserver-restart.path

И включите его, чтобы он запускался при запуске:

systemctl enable le-mailserver-restart.path

И были сделаны!

Не работает?

Однажды у меня была проблема с этим, потому что Lets Encrypt использовал один из доменов-алиасов в качестве основного домена. Вы можете найти основной домен в ранее упомянутом инструменте SSL как «Общее имя» или перечислив содержимое /root/acme.sh/, чтобы увидеть, в каком из доменов (псевдонимов) есть папка.

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