Konfiguracja transportu szyfrowanego TLS w Postfix
Linux

Konfiguracja transportu szyfrowanego TLS w Postfix

Konfiguracja transportu szyfrowanego TLS w Postfix

Transport Layer Security (TLS) to kluczowy mechanizm zabezpieczający komunikację SMTP przed podsłuchiwaniem i manipulacją wiadomościami e-mail. Wymuszenie szyfrowania TLS w Postfix pozwala na bezpieczną wymianę wiadomości między serwerami pocztowymi oraz zapewnia poufność i integralność danych.

W tym artykule omówimy:

Jak działa TLS w SMTP i dlaczego jest ważny?
Instalację i konfigurację certyfikatów TLS w Postfix.
Wymuszanie szyfrowanych połączeń SMTP.
Testowanie poprawności konfiguracji.


1. Jak działa TLS w SMTP i dlaczego warto go stosować?

TLS (następca SSL) to protokół szyfrujący dane przesyłane między serwerami pocztowymi. W przypadku SMTP z TLS transmisja wiadomości jest zaszyfrowana, co zapobiega:

🔹 Podsłuchiwaniu (eavesdropping) – dane są szyfrowane, więc nie mogą zostać przechwycone przez atakujących.
🔹 Atakom MITM (Man-in-the-Middle) – certyfikaty TLS potwierdzają tożsamość serwera i eliminują możliwość podszycia.
🔹 Modyfikacji wiadomości w trakcie transmisji – dzięki integralności kryptograficznej.

Konfiguracja transportu szyfrowanego TLS w Postfix
Konfiguracja transportu szyfrowanego TLS w Postfix

2. Instalacja certyfikatów TLS

Do obsługi TLS w Postfix potrzebujemy certyfikatów SSL/TLS. Możemy użyć:
Darmowych certyfikatów Let’s Encrypt
Certyfikatów samopodpisanych (do użytku wewnętrznego)
Certyfikatów od zaufanego Urzędu Certyfikacji (CA)

2.1. Instalacja Let’s Encrypt (zalecane)

Jeśli mamy publiczny serwer, najprostszą opcją jest Let’s Encrypt:

sudo apt update
sudo apt install certbot
sudo certbot certonly --standalone -d mail.domena.pl

Po poprawnej instalacji certyfikaty znajdują się w katalogu:

/etc/letsencrypt/live/mail.domena.pl/fullchain.pem
/etc/letsencrypt/live/mail.domena.pl/privkey.pem

2.2. Generowanie certyfikatu samopodpisanego (alternatywa)

Jeśli serwer jest używany wewnętrznie, możemy wygenerować certyfikat:

sudo openssl req -new -x509 -days 365 -nodes \
  -out /etc/ssl/certs/postfix.pem \
  -keyout /etc/ssl/private/postfix.key

Pliki certyfikatu znajdują się w:

/etc/ssl/certs/postfix.pem
/etc/ssl/private/postfix.key

📌 Ważne: Klucz prywatny musi mieć odpowiednie uprawnienia:

sudo chmod 600 /etc/ssl/private/postfix.key

3. Konfiguracja TLS w Postfix

Edytujemy plik main.cf:

sudo nano /etc/postfix/main.cf

Dodajemy następujące ustawienia:

smtpd_tls_cert_file=/etc/letsencrypt/live/mail.domena.pl/fullchain.pem
smtpd_tls_key_file=/etc/letsencrypt/live/mail.domena.pl/privkey.pem
smtpd_tls_CAfile=/etc/ssl/certs/ca-certificates.crt

smtpd_use_tls=yes
smtpd_tls_security_level=may
smtpd_tls_loglevel=1
smtpd_tls_received_header=yes
smtpd_tls_auth_only=yes

📌 Wyjaśnienie opcji:

  • smtpd_use_tls=yes → Włącza obsługę TLS.
  • smtpd_tls_security_level=may → TLS jest opcjonalny (zmienimy to w następnym kroku).
  • smtpd_tls_auth_only=yes → Wymaga TLS dla uwierzytelnionych użytkowników.
  • smtpd_tls_received_header=yes → Dodaje nagłówek informujący o użyciu TLS.
  • smtpd_tls_loglevel=1 → Włącza podstawowe logowanie TLS.
Czytaj  Jak zainstalować i używać Composera dla PHP na CentOS

4. Wymuszanie szyfrowania TLS dla wszystkich połączeń

Aby wymusić szyfrowanie TLS i uniemożliwić wysyłanie wiadomości bez zabezpieczeń, zmieniamy poziom zabezpieczeń:

smtpd_tls_security_level=encrypt

📌 Co to oznacza?

  • Serwer będzie akceptował tylko zaszyfrowane połączenia SMTP.
  • Nadawcy, którzy nie obsługują TLS, nie będą mogli wysyłać wiadomości.

📢 Po zmianie konfiguracji restartujemy Postfix:

sudo systemctl restart postfix

5. Testowanie konfiguracji TLS

5.1. Sprawdzenie logów Postfix

sudo tail -f /var/log/mail.log | grep TLS

Powinniśmy zobaczyć komunikaty informujące o szyfrowaniu:

postfix/smtpd[12345]: Anonymous TLS connection established using ECDHE-RSA-AES256-GCM-SHA384

5.2. Sprawdzenie dostępności TLS

Możemy użyć polecenia openssl, aby zweryfikować obsługę TLS:

openssl s_client -starttls smtp -connect mail.domena.pl:25

Jeśli konfiguracja jest poprawna, zobaczymy odpowiedź zawierającą Certyfikat TLS i informacje o szyfrowaniu:

SSL handshake has read 3000 bytes and written 500 bytes
New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384

6. Opcjonalne zabezpieczenia TLS

6.1. Wymuszanie TLS dla wychodzących wiadomości

Domyślnie Postfix nie wymusza TLS przy wysyłaniu wiadomości. Możemy to zmienić:

smtp_tls_security_level=encrypt
smtp_tls_policy_maps=hash:/etc/postfix/tls_policy

Plik /etc/postfix/tls_policy może zawierać reguły dla poszczególnych domen:

gmail.com encrypt
outlook.com encrypt

📌 Oznacza to, że Postfix nie wyśle wiadomości do tych domen, jeśli nie obsługują TLS.

📢 Po edycji regenerujemy mapy:

sudo postmap /etc/postfix/tls_policy
sudo systemctl restart postfix

7. Podsumowanie

TLS w Postfix zapewnia poufność i bezpieczeństwo przesyłanych wiadomości.
Wykorzystanie Let’s Encrypt lub certyfikatów samopodpisanych umożliwia łatwą implementację szyfrowania.
Możemy wymusić TLS, aby uniemożliwić wysyłanie niezaszyfrowanych wiadomości.
Testowanie konfiguracji pozwala upewnić się, że serwer jest dobrze zabezpieczony.

💡 Jeśli chcesz zapewnić maksymalne bezpieczeństwo, wymuszaj szyfrowanie TLS i monitoruj logi serwera!

Polecane wpisy
Fedora 38 – najnowsza odsłona popularnego systemu operacyjnego już dostępna!
fedora 38

Fedora 38 to najnowsza wersja systemu operacyjnego, stworzonego przez społeczność, opartego na darmowym i otwartym kodzie źródłowym. Oprogramowanie to jest Czytaj dalej