Postfix настройка TLS шифрования

Продолжаем настройку нашего почтового сервера. Далее нам понадобится настроить автоматический выпуск сертификатов Let’s Encrypt. Для этого установим необходимые пакеты:

pacman -Syu certbot certbot-nginx nginx

Далее необходимо создать конфигурационный файл Nginx. Создадим каталог для конфигов Nginx:

mkdir -p /etc/nginx/conf.d

Далее необходимо добавить include в nginx.conf

nano /etc/nginx/nginx.conf

Внутри блока http { ... } в конце файла добавь строку:

include conf.d/*.conf;
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 daemon-reload
systemctl restart nginx

Убьём процесс nginx, systemd должен поднять снова:

pkill -9 nginx
sleep 2
systemctl status nginx --no-pager

Применяем настройки Nginx:

nginx -t && systemctl restart nginx

Далее выпускаем сертификат для нашего домена:

# certbot --nginx -d mx.codebeer.ru

Сертификат и ключ будет хранится по указанному пути:

/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 будет запускать обновление сертификата по расписанию.

Включаем автоперезапуск nginx при падении

mkdir -p /etc/systemd/system/nginx.service.d
cat > /etc/systemd/system/nginx.service.d/restart.conf <<'EOF'
[Service]
Restart=on-failure
RestartSec=3s

StartLimitIntervalSec=300
StartLimitBurst=5
EOF

Включаем submission порт 587 и smtps порт 465 в Postfix

Нужно внести изменения в master.cf

nano /etc/postfix/master.cf

Добавить в файл:

submission     inet     n    -    y    -    -    smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_tls_wrappermode=no
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
  -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=private/auth
smtps     inet  n       -       y       -       -       smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
  -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=private/auth

Прописываем 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_sasl_auth_enable = no
smtpd_tls_auth_only = yes

Применяем настройки:

postfix reload
systemctl restart postfix

Следующий этап настройки Postfix настройка OpenDKIM