Мини Вики. Чтоб ничего не забыть!

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