UMGUM.COM (лучше) 

Let‘s Encrypt + Courier Mail ( Настройки подсистемы получения и автоматического обновления сертификатов "Let's Encrypt" для почтового сервера "Courier Mail". )

30 августа 2019  (обновлено 14 января 2020)

OS: "Linux Ubuntu 16/18 LTS", "Linux Debian 8/9/10".
Application: "Certbot client v.0.28/1.0" for "Let`s Encrypt" (on Python), "Courier Mail".

Основная инструкция по настройке "Let`s Encrypt" в спарке с web-сервером "Nginx" опубликована отдельно. Здесь рассматриваются лишь отличия от неё в плане интеграции с почтовым сервером "Courier Mail".


Применение сертификатов "Let`s Encrypt" в почтовом сервисе "Courier Mail".

Считая, что SSL-сертификаты уже запрошены посредством любого web-сервера в соответствии с базовой инструкцией, проведём предварительную их адаптацию к требованиям используемого почтового сервера. "Courier Mail" ожидает файл SSL-сертификата, включающий сразу "закрытую" и "открытую" части, размещённые последовательно:

# cat /etc/letsencrypt/live/mail.example.net/privkey.pem /etc/letsencrypt/live/mail.example.net/cert.pem > /etc/courier/letsencrypt.pem
# chown courier:courier /etc/courier/letsencrypt.pem
# chmod o-rwx /etc/courier/letsencrypt.pem

После создания комбинированного файла с SSL-сертификатами применяем таковые в конфигурации подсистем IMAP-SSL, SMTP-SSL и SMTP-StartTLS, поддерживаемых почтовым сервером "Courier Mail", примерно следующим образом:

# vi /etc/courier/imapd-ssl

....
# Тип используемого сертификата
TLS_CERTS=X509

# Перечень поддерживаемых протоколов, по убыванию приоритета
TLS_PROTOCOL="TLS1_1:TLS1:SSL3"

# Перечень поддерживаемых методов, по убыванию приоритета
TLS_CIPHER_LIST="SSLv3:TLSv1:HIGH:!LOW:!MEDIUM:!EXP:!NULL:!aNULL@STRENGTH"

# Файл набора параметров для протокола "Diffie–Hellman"
TLS_DHCERTFILE=/etc/courier/dhparams.pem

# Файл комбинированного сертификата (private + public keys)
TLS_CERTFILE=/etc/courier/letsencrypt.pem

# Директория с публичными корневыми и промежуточными сертификатами
TLS_TRUSTCERTS=/etc/ssl/certs
....

Для подсистем SMTP-SSL и SMTP-StartTLS ключевые параметры конфигурационных файлов идентичны используемых для настройки IMAP-SSL:

# vi /etc/courier/esmtpd-ssl
# vi /etc/courier/esmtpd

Перезапускаем сервисы, применяя изменения в конфигурации:

# /etc/init.d/courier-imap-ssl restart
# /etc/init.d/courier-mta restart
# /etc/init.d/courier-mta-ssl restart

После перезапуска можно убедиться, что почтовый сервер прослушивает соответствующие сетевые порты:

# netstat -apn | grep -i listen | grep -i "^tcp" | grep -i courier

tcp ... 0.0.0.0:993 0.0.0.0:* LISTEN .../couriertcpd
tcp ... 0.0.0.0:465 0.0.0.0:* LISTEN .../couriertcpd
tcp ... 0.0.0.0:25  0.0.0.0:* LISTEN .../couriertcpd

Проверка использования сертификата.

IMAP via SSL:

$ echo QUIT | openssl s_client -connect mail.example.net:993 | openssl x509 -noout -text | less

SMTP via SSL:

$ echo QUIT | openssl s_client -connect mail.example.net:465 | openssl x509 -noout -text | less

SMTP via TLS/StartTLS:

$ echo QUIT | openssl s_client -starttls smtp -connect mail.example.net:25 | openssl x509 -noout -text | less

Автоматизация продления сертификатов.

Общая идея и способ реализации автоматического продления сертификатов рассматривается в основной инструкции, а здесь лишь приводится специфичная для "Courier Mail" последовательность команд подготовки и применения обновлённой конфигурации:

# vi /opt/eff.org/cert-renew.sh

#!/bin/bash
....

# Даём указание использующему сертификаты почтовому сервису "Courier Mail" принять конфигурацию
[ "${?}" -eq "0" ] && /opt/eff.org/cert-apply-courier.sh
....

Скрипт адаптации набора сертификатов "Let`s Encrypt" к формату "Courier Mail" и применения таковых:

# vi /opt/eff.org/cert-apply-courier.sh && chmod +x /opt/eff.org/cert-apply-courier.sh

#!/bin/bash

# FQDN used by mail service
DOMAIN="mail.example.net"

# Preparation of a combined SSL-file
cat "/etc/letsencrypt/live/${DOMAIN}/privkey.pem" "/etc/letsencrypt/live/${DOMAIN}/cert.pem" > /etc/courier/letsencrypt.pem
chown courier:courier /etc/courier/letsencrypt.pem
chmod o-rwx /etc/courier/letsencrypt.pem

# Applications restart
/etc/init.d/courier-imap-ssl restart
/etc/init.d/courier-mta restart
/etc/init.d/courier-mta-ssl restart

exit ${?}


Заметки и комментарии к публикации:


Оставьте свой комментарий ( выразите мнение относительно публикации, поделитесь дополнительными сведениями или укажите на ошибку )