Продолжаем настройку нашего почтового сервера Postfix на Arch Linux. В этой статье я опишу процесс настройки TLS шифрования для Postfix. Сертификаты будем использовать от Let’s Encrypt. Для этого установим необходимые пакеты:
pacman -Syu certbot certbot-nginx nginx
Создадим каталог для конфигов Nginx:
mkdir -p /etc/nginx/conf.d
Далее необходимо добавить загрузку конфигов из каталога conf.d
nano /etc/nginx/nginx.conf
Внутри блока http { ... } в конце файла добавь строку:
include conf.d/*.conf;
Базовые настройки сайта для генерирования сертификатов от Let’s Encrypt. Не забываем менять домен на свой.
cat > /etc/nginx/conf.d/mx.codebeer.ru.conf <<'EOF'
server {
listen 80;
listen [::]:80;
server_name mx.codebeer.ru;
root /var/lib/letsencrypt;
location ~ /.well-known/acme-challenge {
allow all;
}
}
EOF
Применяем настройки:
systemctl enable nginx systemctl restart nginx
Авто-рестарт Nginx при падении:
mkdir -p /etc/systemd/system/nginx.service.d cat > /etc/systemd/system/nginx.service.d/restart.conf <<'EOF' [Unit] StartLimitIntervalSec=300 StartLimitBurst=5 [Service] Restart=on-failure RestartSec=5s EOF
Применяем настройки:
systemctl daemon-reload systemctl restart nginx systemctl --no-pager -l status nginx
Может высветится вот такое предупреждение:
Feb 07 00:10:05 mx.codebeer.ru systemd[1]: Starting nginx web server... Feb 07 00:10:05 mx.codebeer.ru nginx[16960]: 2026/02/07 00:10:05 [warn] 16960#16960: could not build optimal types_hash, you should increase either types_hash_max_size: 1024 or types_hash_bucket_size: 64; ignoring types_hash_bucket_size Feb 07 00:10:05 mx.codebeer.ru systemd[1]: Started nginx web server.
Предупреждение types_hash не критично, но лучше поправить:
nano /etc/nginx/nginx.conf
Внутри блока http { ... } добавить:
types_hash_max_size 2048; types_hash_bucket_size 128;
Убьём процесс nginx, systemd должен поднять снова:
pkill -9 nginx sleep 2 systemctl status nginx --no-pager
Nginx настроен. Теперь можно переходить непосредственно к выпуску сертификат:
certbot --nginx -d mx.codebeer.ru
В процессе вас попросят указать ваш email, принят правила сервиса и вы можете разрешить принимать информационную рассылку на ваш email или отказаться.
Сертификат и ключ будет записан по указанному пути:
/etc/letsencrypt/live/mx.codebeer.ru/fullchain.pem /etc/letsencrypt/live/mx.codebeer.ru/privkey.pem
Дале включаем автоматический перевыпуск сертификата:
systemctl enable --now certbot-renew.timer systemctl status certbot-renew.timer --no-pager systemctl list-timers | grep certbot
После этого systemd будет запускать обновление сертификата по расписанию.
Включаем шифрование в Postfix
Нужно внести изменения в master.cf
nano /etc/postfix/master.cf
Добавить в файл:
submission inet n - n - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
Прописываем TLS сертификат для Postfix:
postconf -e "smtpd_tls_cert_file = /etc/letsencrypt/live/mx.codebeer.ru/fullchain.pem" postconf -e "smtpd_tls_key_file = /etc/letsencrypt/live/mx.codebeer.ru/privkey.pem"
Чтобы отключить небезопасные версии SSL/TLS, добавьте в конец файла /etc/postfix/main.cf:
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1 smtpd_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1 smtp_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1 smtp_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
Далее отключим авторизацию на порте 25. Это нужно что бы подключаться к серверу можно было только через порты с шифрованием.
smtpd_tls_auth_only = yes
Применяем настройки:
postfix reload systemctl restart postfix
Следующий этап настройки Postfix настройка OpenDKIM