Тот же сертификат Let’s Encrypt, который защищает ваш сайт, может также шифровать соединения электронной почты. В этом руководстве описана настройка TLS для наиболее распространённых почтовых серверов.
Зачем электронной почте нужен TLS
Без TLS почтовый трафик (включая пароли и содержимое сообщений) передаётся открытым текстом:
- SMTP (отправка почты) — порт 25/587 по умолчанию без шифрования
- IMAP (чтение почты) — порт 143 по умолчанию без шифрования
- POP3 (чтение почты) — порт 110 по умолчанию без шифрования
TLS шифрует эти соединения так же, как HTTPS шифрует веб-трафик. Современные почтовые клиенты ожидают TLS и предупреждают пользователей о незашифрованных соединениях.
Настройка сертификата
Вы можете использовать те же файлы сертификата от GetHTTPS для веб-сервера и почтового сервера одновременно — при условии, что сертификат покрывает имя хоста вашего почтового сервера (например, mail.example.com).
Получите сертификат, покрывающий имя хоста почтового сервера:
- В GetHTTPS добавьте
mail.example.com(или другое имя хоста, на которое указывает ваша MX-запись) - Вы можете включить его вместе с веб-доменом:
example.com+www.example.com+mail.example.com - Скачайте файлы:
fullchain.pem,privkey.pem
Postfix (SMTP)
Отредактируйте /etc/postfix/main.cf:
# TLS для исходящей почты (отправка)
smtp_tls_security_level = may
smtp_tls_loglevel = 1
# TLS для входящей почты (приём) — STARTTLS на порту 25/587
smtpd_tls_cert_file = /etc/ssl/gethttps/fullchain.pem
smtpd_tls_key_file = /etc/ssl/gethttps/privkey.pem
smtpd_tls_security_level = may
smtpd_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtpd_tls_loglevel = 1
Для submission (порт 587) отредактируйте /etc/postfix/master.cf:
submission inet n - y - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
Перезагрузка: sudo systemctl reload postfix
Dovecot (IMAP/POP3)
Отредактируйте /etc/dovecot/conf.d/10-ssl.conf:
ssl = required
ssl_cert = </etc/ssl/gethttps/fullchain.pem
ssl_key = </etc/ssl/gethttps/privkey.pem
ssl_min_protocol = TLSv1.2
ssl_prefer_server_ciphers = no
Обратите внимание на < перед путём к файлу — Dovecot использует этот синтаксис для чтения содержимого файла инлайн.
Перезагрузка: sudo systemctl reload dovecot
Порты IMAP/POP3
| Сервис | Без шифрования | STARTTLS | Неявный TLS (рекомендуется) |
|---|---|---|---|
| IMAP | 143 | 143 (обновление) | 993 |
| POP3 | 110 | 110 (обновление) | 995 |
| SMTP submission | 587 | 587 (обновление) | 465 (smtps) |
Современные почтовые клиенты должны подключаться к портам с неявным TLS (993, 995, 465). Настройте их в Dovecot и Postfix наряду с портами STARTTLS.
Проверка TLS для электронной почты
# Тест SMTP STARTTLS
openssl s_client -connect mail.example.com:587 -starttls smtp
# Тест неявного TLS для IMAP
openssl s_client -connect mail.example.com:993
# Тест неявного TLS для SMTP (smtps)
openssl s_client -connect mail.example.com:465
Ищите Verify return code: 0 (ok) и данные вашего сертификата.
Обновление
Когда вы обновляете сертификат Let’s Encrypt, замените файлы и перезагрузите как веб-сервер, так и почтовый сервер:
sudo systemctl reload nginx # веб
sudo systemctl reload postfix # SMTP
sudo systemctl reload dovecot # IMAP
При использовании Certbot с --deploy-hook добавьте перезагрузку почтового сервера в скрипт хука.
Часто задаваемые вопросы
Можно ли использовать один сертификат для веб-сервера и почты?
Да — при условии, что SAN (Subject Alternative Name) сертификата включает имя хоста почтового сервера. Если ваша MX-запись указывает на mail.example.com, включите это имя при запросе сертификата.
Работает ли Let’s Encrypt для почтовых серверов?
Да. Сертификаты Let’s Encrypt — это стандартные сертификаты X.509, которые работают с любым сервисом, поддерживающим TLS, а не только с веб-серверами. Сертификат не знает, используется ли он для HTTPS, SMTP, IMAP или чего-то другого.
Нужен ли отдельный сертификат для каждого почтового протокола?
Нет. Один сертификат работает для SMTP (Postfix), IMAP (Dovecot) и вашего веб-сервера одновременно. Укажите во всех сервисах одни и те же fullchain.pem и privkey.pem.
А как насчёт Microsoft Exchange?
Exchange использует формат PFX/PKCS#12. Сконвертируйте ваши PEM-файлы в PFX, затем импортируйте через Exchange Admin Center → Servers → Certificates → Import. Процесс аналогичен установке сертификата на IIS.