Почтовый сервер: SSL сертификаты LetsEncrypt
Устанавливаем certbot
apt-get install certbot
Что будет делать Certbot
Ожидается что certbot будет создавать необходимые для проверки прав на домен файлы в подкаталогах ниже по иерархии к указанному. Вроде таких:
/var/www/html/.well-known/acme-challenge/example.html
Эти файлы должны будут быть доступны из сети на целевом домене по крайней мере по HTTP:
http://www.example.com/.well-known/acme-challenge/example.html
Для следующих проверок создадим какой-то такой файл:
mkdir -p /var/www/html/.well-known/acme-challenge
echo Success > /var/www/html/.well-known/acme-challenge/example.html
Регистрация в Let's Encrypt
Регистрацию нужно сделать только один раз:
certbot register --email me@example.com
Получаем сертификаты
Если все настроено верно, то можно получить сертификаты
certbot certonly --dry-run -d example.com -d www.example.com
Добавляем сертификаты Let's Encrypt в Postfix
В файл /etc/postfix/main.cf добавляем запись о сертификате нашего первичного домена и далее указываем откуда брать информацию о сертификатов для каждого из обслуживаемых доменов.
smtpd_tls_chain_files =
/etc/letsencrypt/live/mail.domain.ru/privkey.pem,
/etc/letsencrypt/live/mail.domain.ru/fullchain.pem
# provide the map to be used when SNI support is enabled
tls_server_sni_maps = hash:/etc/postfix/vmail_ssl.map
Далее создаем файл /etc/postfix/vmail_ssl.map и в него вносим данные о каждом нашем домене, в том числе и о первичном:
mail.domain.ru
/etc/letsencrypt/live/mail.domain.ru/privkey.pem
/etc/letsencrypt/live/mail.domain.ru/fullchain.pem
mail.domain1.ru
/etc/letsencrypt/live/mail.domain1.ru/privkey.pem
/etc/letsencrypt/live/mail.domain1.ru/fullchain.pem
mail.domain2.ru
/etc/letsencrypt/live/mail.domain2.ru/privkey.pem
/etc/letsencrypt/live/mail.domain2.ru/fullchain.pem
Перед каждым сертификатом должен быть пробел, того требует синтаксис данного файла. Перед доменом пробел не нужен
Перечитываем хещ для внесения его в БД постфикса и перезапускаем почтовик:
postmap -F hash:/etc/postfix/vmail_ssl.map
systemctl restart postfix
На этом собственно всё. Осталось доработать команду крон, чтобы она выглядела подобно такой:
30 1 * * 1 certbot renew && postmap -F hash:/etc/postfix/vmail_ssl.map && systemctl restart postfix
Dovecot и сертификаты Let's Encrypt
Дальше проделаем то же самое, только для Dovecot. Настроим его на работу с сертификатом let's encrypt. Для этого добавляем в его конфиг /etc/dovecot/dovecot.conf параметры.
# Default
ssl_cert = ssl_key = # mail.example.it
local_name mail.example.it {
ssl_cert = ssl_key = }
# mail.example.com
local_name mail.example.com {
ssl_cert = ssl_key = }
И так же перечитываем конфигурацию.
# systemctl reload dovecot
Обновление сертификатов
certbot renew
postmap -F hash:/etc/postfix/vmail_ssl.map
systemctl restart postfix
Чтобы проверить валидность сертификата, есть команда
openssl s_client -starttls smtp -connect mail.rts18.ru:25 | openssl x509 -noout -dates 2>/dev/null | grep notAfter | cut -d'=' -f2
Ниже полезная статья
https://mirv.top/2022/12/15/postfix-neskolko-domenov-neskolko-sertifikatov-letsencrypt/