December 4, 2024

Установка SSL

apt update

Переходим в папку:

mkdir /var/www/mail

Создаем index.php для поддомена mail:

sudo mkdir -p /var/www/mail && echo "<?php phpinfo(); ?>" | sudo tee /var/www/mail/index.php > /dev/null

Создаем конфиг:

nano /etc/nginx/sites-available/mail.interesnoe24.ru.conf
server {
    listen 80;
    listen [::]:80;

    server_name mail.interesnoe24.ru www.mail.interesnoe24.ru;

    root /var/www/mail;
    index index.php index.html index.xml;

    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include /etc/nginx/fastcgi_params;
    }
}

Перелинкуем:

sudo ln -s /etc/nginx/sites-available/mail.interesnoe24.ru.conf /etc/nginx/sites-enabled/
systemctl restart nginx

Генерирует ключ

openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Создаёт папку для снипетов

mkdir -p /etc/nginx/snippets/

Создаёт снипет для SSL

nano /etc/nginx/snippets/ssl-params.conf
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;

ssl_dhparam /etc/ssl/certs/dhparam.pem;

ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;

add_header Strict-Transport-Security "max-age=63072000" always;

Обновляет snapd

snap install core

Устанавливает certbot

snap install --classic certbot

Получаем сертификаты:

sudo certbot --nginx -d mail.interesnoe24.ru -d postfixadmin.interesnoe24.ru

Смотрим папку и видим наши сертификаты, также они автоматически установились в конфигах nginx:

ll /etc/letsencrypt/live/mail.interesnoe24.ru

Переходим в настройки Postfix:

nano /etc/postfix/main.cf

И в самом низу вставляем:

smtpd_use_tls=yes
smtpd_tls_auth_only = yes
smtp_tls_security_level = may
smtpd_tls_security_level = may
smtpd_tls_cert_file=/etc/letsencrypt/live/mail.interesnoe24.ru/fullchain.pem
smtpd_tls_key_file=/etc/letsencrypt/live/mail.interesnoe24.ru/privkey.pem
smtpd_sasl_security_options = noanonymous, noplaintext
smtpd_sasl_tls_security_options = noanonymous

Далее другой конфиг и раскосментируем строку:

nano /etc/postfix/master.cf

Под этой же строкой вставляем:

  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=private/auth
  -o smtpd_reject_unlisted_recipient=no
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING

Далее идем вниз и раскомментируем еще одну строку, и вставляем запись:

  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=private/auth
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING

Перезапускаем:

systemctl restart postfix


Далее настраиваем конфиги dovecot:

nano /etc/dovecot/conf.d/10-master.conf

Там открываем порты 993 и 995

Другой конфиг:

nano /etc/dovecot/conf.d/10-ssl.conf

И меняем строки:

ssl = required

ssl_cert = </etc/letsencrypt/live/mail.interesnoe24.ru/fullchain.pem
ssl_key = </etc/letsencrypt/live/mail.interesnoe24.ru/privkey.pem

Другой конфиг:

nano /etc/dovecot/conf.d/10-auth.conf

Меняем строку:

disable_plaintext_auth = yes

Перезапускаем

systemctl restart dovecot