📧 Jak skonfigurować serwer SMTP na Ubuntu 20.04

Posiadanie własnego serwera SMTP daje Ci pełną kontrolę nad wysyłką maili z Twoich stron i aplikacji. W tym przewodniku przeprowadzimy Cię krok po kroku przez proces instalacji i konfiguracji serwera SMTP na Ubuntu 20.04 z wykorzystaniem Postfix. Nauczysz się również, jak zabezpieczyć swój serwer i zoptymalizować go pod kątem dostarczalności wiadomości.

⚡ Ekspresowe Podsumowanie:

  1. Przygotowanie systemu: Upewnij się, że masz odpowiednio skonfigurowaną domenę, statyczny adres IP oraz aktualizacje systemu.
  2. Instalacja i konfiguracja: Zainstaluj Postfix, skonfiguruj podstawowe ustawienia SMTP oraz zabezpieczenia TLS.
  3. Uwierzytelnianie: Dodaj uwierzytelnianie SASL do ochrony przed spamerami.
  4. Zwiększenie dostarczalności: Skonfiguruj rekordy SPF, DKIM i DMARC, aby Twoje maile nie trafiały do spamu.

🗺️ Spis Treści - Twoja Mapa Drogowa


📋 Przygotowanie do instalacji

Przed przystąpieniem do instalacji serwera SMTP, musisz spełnić kilka ważnych wymagań. Właściwe przygotowanie systemu pomoże uniknąć problemów z dostarczalnością maili oraz zabezpieczeniem serwera.

Wymagania wstępne

Aby pomyślnie skonfigurować serwer SMTP na Ubuntu 20.04, potrzebujesz:

  • Serwer z Ubuntu 20.04 LTS - serwer VPS lub dedykowany z co najmniej 1GB RAM
  • Pełna nazwa domeny (FQDN) - np. mail.twojadomena.pl
  • Statyczny adres IP - najlepiej dedykowany adres IP dla Twojego serwera pocztowego
  • Uprawnienia administratora (root) do instalacji i konfiguracji
  • Podstawowa znajomość terminala Linux

Konfiguracja rekordów DNS

Poprawne ustawienie rekordów DNS jest kluczowe dla działania serwera SMTP:

  1. Rekord A - wskazujący na adres IP Twojego serwera:

    mail.twojadomena.pl. IN A 123.456.789.10
  2. Rekord MX - określający serwer odbierający pocztę dla Twojej domeny:

    twojadomena.pl. IN MX 10 mail.twojadomena.pl.
  3. Rekord PTR (Reverse DNS) - łączący adres IP z nazwą domeny (zazwyczaj konfigurowany przez dostawcę hostingu):

    10.789.456.123.in-addr.arpa. IN PTR mail.twojadomena.pl.

Uwaga: Poprawny rekord PTR (Reverse DNS) jest kluczowy dla dostarczalności maili. Wielu dostawców usług pocztowych odrzuca wiadomości z serwerów, które nie mają poprawnie skonfigurowanego Reverse DNS.

Aktualizacja systemu

Przed instalacją upewnij się, że Twój system jest aktualny:

sudo apt update
sudo apt upgrade -y

Ustawienie odpowiedniej nazwy hosta

Ustaw prawidłową nazwę hosta dla Twojego serwera:

sudo hostnamectl set-hostname mail.twojadomena.pl

Następnie edytuj plik /etc/hosts, aby dodać nową nazwę hosta:

sudo nano /etc/hosts

Dodaj lub zmodyfikuj linię z adresem IP Twojego serwera:

123.456.789.10 mail.twojadomena.pl mail

💻 Instalacja i podstawowa konfiguracja Postfix

Postfix to popularny serwer SMTP, który jest łatwy w konfiguracji i zapewnia wysoką wydajność. W tej sekcji przeprowadzimy Cię przez proces instalacji i podstawowej konfiguracji.

Instalacja Postfix

Aby zainstalować Postfix, uruchom:

sudo apt install postfix -y

Podczas instalacji zobaczysz okno konfiguracyjne:

  1. Wybierz "Internet Site"
  2. Jako "System mail name" wprowadź swoją pełną nazwę domeny (np. twojadomena.pl)

Podstawowa konfiguracja Postfix

Po instalacji, edytuj główny plik konfiguracyjny Postfix:

sudo nano /etc/postfix/main.cf

Ustaw następujące parametry (niektóre mogą już być skonfigurowane):

# Podstawowe ustawienia
myhostname = mail.twojadomena.pl
mydomain = twojadomena.pl
myorigin = $mydomain
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

# Ograniczenia rozmiaru wiadomości (opcjonalnie)
message_size_limit = 10240000  # Maksymalny rozmiar wiadomości (10MB)

# Ustawienia SMTP
smtpd_banner = $myhostname ESMTP $mail_name
biff = no
append_dot_mydomain = no
readme_directory = no

Zapisz zmiany i zrestartuj Postfix:

sudo systemctl restart postfix

✨ Pro Tip: Aby sprawdzić, czy Postfix działa poprawnie, sprawdź logi:

sudo tail -f /var/log/mail.log

Konfiguracja zapory sieciowej

Jeśli masz aktywną zaporę sieciową (UFW), musisz otworzyć port SMTP:

sudo ufw allow 25/tcp   # Standardowy port SMTP
sudo ufw allow 587/tcp  # Port do wysyłania poczty (submission)
sudo ufw allow 465/tcp  # Port SSL/TLS (SMTPS)

🔒 Konfiguracja zabezpieczeń TLS/SSL

Szyfrowanie komunikacji jest kluczowym elementem nowoczesnego serwera SMTP. W tej sekcji skonfigurujemy zabezpieczenia TLS, aby chronić przesyłane wiadomości.

Instalacja certyfikatu SSL/TLS

Zalecamy użycie Let's Encrypt do uzyskania darmowego certyfikatu SSL:

sudo apt install certbot -y
sudo certbot certonly --standalone -d mail.twojadomena.pl

Certyfikat zostanie zapisany w katalogu /etc/letsencrypt/live/mail.twojadomena.pl/.

Konfiguracja Postfix do używania TLS

Edytuj główny plik konfiguracyjny Postfix:

sudo nano /etc/postfix/main.cf

Dodaj następujące linie na końcu pliku:

# Konfiguracja TLS
smtpd_tls_cert_file = /etc/letsencrypt/live/mail.twojadomena.pl/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/mail.twojadomena.pl/privkey.pem
smtpd_tls_security_level = may
smtpd_tls_loglevel = 1
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache

smtp_tls_security_level = may
smtp_tls_loglevel = 1
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# Wymuszanie TLS dla niektórych domen (opcjonalnie)
smtp_tls_policy_maps = hash:/etc/postfix/tls_policy

Następnie edytuj plik /etc/postfix/master.cf:

sudo nano /etc/postfix/master.cf

Odkomentuj następujące linie (usuń symbol # z początku każdej linii), aby włączyć porty submission (587) i smtps (465):

submission inet n       -       y       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_tls_auth_only=yes
  -o smtpd_reject_unlisted_recipient=no
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING

smtps     inet  n       -       y       -       -       smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_reject_unlisted_recipient=no
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING

Zapisz zmiany i zrestartuj Postfix:

sudo systemctl restart postfix

Automatyczne odnawianie certyfikatu

Utwórz skrypt, który będzie odnawiał certyfikat i restartował Postfix:

sudo nano /etc/letsencrypt/renewal-hooks/post/postfix-restart.sh

Zawartość skryptu:

#!/bin/bash
systemctl restart postfix

Nadaj uprawnienia do wykonania:

sudo chmod +x /etc/letsencrypt/renewal-hooks/post/postfix-restart.sh

Certbot automatycznie będzie próbował odnowić certyfikat przed wygaśnięciem.

🔐 Konfiguracja uwierzytelniania SASL

Uwierzytelnianie SASL (Simple Authentication and Security Layer) pozwala na bezpieczne logowanie do serwera SMTP. Jest to konieczne, aby chronić serwer przed wykorzystaniem przez spamerów.

Instalacja pakietów SASL

sudo apt install sasl2-bin libsasl2-modules -y

Konfiguracja SASL dla Postfix

Edytuj plik konfiguracyjny Postfix:

sudo nano /etc/postfix/main.cf

Dodaj następujące linie na końcu pliku:

# Konfiguracja SASL
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
broken_sasl_auth_clients = yes

# Restrykcje dla klientów
smtpd_recipient_restrictions =
   permit_mynetworks,
   permit_sasl_authenticated,
   reject_unauth_destination

Tworzenie użytkowników poczty

Aby utworzyć użytkownika systemu, który będzie mógł korzystać z serwera SMTP:

sudo adduser email_user

Albo możesz użyć wirtualnych użytkowników z bazą danych, co jest zalecane dla większych wdrożeń.

Uwaga: W pełnoprawnej konfiguracji serwera pocztowego zwykle używamy Dovecot do dostarczania poczty i uwierzytelniania. W tym poradniku koncentrujemy się jednak tylko na konfiguracji SMTP dla wysyłania poczty.

📬 Zwiększanie dostarczalności e-maili

Aby Twoje e-maile nie trafiały do spamu i były poprawnie dostarczane, konieczne jest skonfigurowanie dodatkowych mechanizmów weryfikacji.

Konfiguracja SPF (Sender Policy Framework)

SPF pomaga w weryfikacji, czy serwer wysyłający jest autoryzowany do wysyłania maili z Twojej domeny.

Dodaj rekord TXT w swojej konfiguracji DNS:

twojadomena.pl. IN TXT "v=spf1 a mx ip4:123.456.789.10 ~all"

Gdzie:

  • a - zezwala wszystkim serwerom wymienionym w rekordach A domeny
  • mx - zezwala serwerom wymienionym w rekordach MX
  • ip4:123.456.789.10 - zezwala konkretnemu adresowi IP
  • ~all - oznacza, że inne serwery nie powinny być traktowane jako autoryzowane (soft-fail)

Konfiguracja DKIM (DomainKeys Identified Mail)

DKIM dodaje podpis cyfrowy do wysyłanych wiadomości, co pozwala weryfikować ich autentyczność.

  1. Zainstaluj OpenDKIM:
sudo apt install opendkim opendkim-tools -y
  1. Skonfiguruj OpenDKIM:
sudo nano /etc/opendkim.conf

Przykładowa konfiguracja:

# Podstawowe ustawienia
Syslog                  yes
UMask                   002
UserID                  opendkim
OversignHeaders         From

# Konfiguracja domeny
Domain                  twojadomena.pl
KeyFile                 /etc/opendkim/keys/twojadomena.pl/mail.private
Selector                mail

# Specyfikacja podpisywania
SigningTable            refile:/etc/opendkim/signing.table
KeyTable                refile:/etc/opendkim/key.table
ExternalIgnoreList      refile:/etc/opendkim/trusted.hosts
InternalHosts           refile:/etc/opendkim/trusted.hosts
  1. Utwórz potrzebne katalogi i pliki:
sudo mkdir -p /etc/opendkim/keys/twojadomena.pl
sudo chown -R opendkim:opendkim /etc/opendkim
sudo chmod -R go-rw /etc/opendkim/keys

sudo nano /etc/opendkim/signing.table
# Dodaj: *@twojadomena.pl mail._domainkey.twojadomena.pl

sudo nano /etc/opendkim/key.table
# Dodaj: mail._domainkey.twojadomena.pl twojadomena.pl:mail:/etc/opendkim/keys/twojadomena.pl/mail.private

sudo nano /etc/opendkim/trusted.hosts
# Dodaj:
# 127.0.0.1
# localhost
# *.twojadomena.pl
# 123.456.789.10
  1. Wygeneruj klucze DKIM:
cd /etc/opendkim/keys/twojadomena.pl
sudo opendkim-genkey -s mail -d twojadomena.pl
sudo chown opendkim:opendkim mail.private
  1. Dodaj rekord DNS dla DKIM. Zawartość rekordu znajduje się w pliku /etc/opendkim/keys/twojadomena.pl/mail.txt:
mail._domainkey.twojadomena.pl. IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqG..."
  1. Skonfiguruj Postfix, aby używał OpenDKIM:
sudo nano /etc/postfix/main.cf

Dodaj na końcu:

# OpenDKIM
milter_protocol = 2
milter_default_action = accept
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891
  1. Konfiguruj socket OpenDKIM:
sudo nano /etc/default/opendkim

Upewnij się, że masz linię:

SOCKET="inet:8891@localhost"
  1. Zrestartuj usługi:
sudo systemctl restart opendkim
sudo systemctl restart postfix

Konfiguracja DMARC (Domain-based Message Authentication)

DMARC określa, co zrobić z e-mailami, które nie przejdą weryfikacji SPF lub DKIM.

Dodaj rekord DMARC w konfiguracji DNS:

_dmarc.twojadomena.pl. IN TXT "v=DMARC1; p=none; sp=none; rua=mailto:dmarc-raporty@twojadomena.pl"

Gdzie:

  • p=none - oznacza monitoring (bez odrzucania)
  • sp=none - polityka dla subdomen
  • rua=mailto:... - adres do otrzymywania raportów o niepowodzeniach

✨ Pro Tip: Zacznij od polityki p=none, aby monitorować wyniki bez odrzucania wiadomości. Po upewnieniu się, że wszystko działa poprawnie, możesz zmienić na p=quarantine lub p=reject.

🛠️ Testowanie i rozwiązywanie problemów

Po skonfigurowaniu serwera SMTP, należy przetestować jego działanie i rozwiązać ewentualne problemy.

Testowanie wysyłania e-maili

Możesz przetestować wysyłanie e-maili za pomocą polecenia mail:

sudo apt install mailutils -y
echo "To jest test" | mail -s "Testowa wiadomość" adres@odbiorcy.pl

Albo używając Telnet do ręcznego testowania SMTP:

telnet localhost 25

Następnie wprowadź polecenia SMTP:

EHLO twojadomena.pl
MAIL FROM: test@twojadomena.pl
RCPT TO: adres@odbiorcy.pl
DATA
Subject: Test wiadomości

To jest testowa wiadomość.
.
QUIT

Sprawdzanie logów

Aby zobaczyć, co dzieje się na serwerze SMTP, sprawdź logi:

sudo tail -f /var/log/mail.log

Rozwiązywanie typowych problemów

  1. Problem z połączeniem:

    • Sprawdź, czy porty są otwarte: sudo netstat -tulpn | grep master
    • Upewnij się, że zapora nie blokuje portów: sudo ufw status
  2. Problemy z uwierzytelnianiem:

    • Sprawdź logi: sudo grep "auth failure" /var/log/mail.log
    • Zweryfikuj ustawienia SASL: sudo postconf -d | grep sasl
  3. E-maile trafiają do spamu:

    • Sprawdź rekordy SPF, DKIM i DMARC za pomocą narzędzi online
    • Upewnij się, że masz poprawnie skonfigurowany rekord PTR
    • Zweryfikuj, czy adres IP nie jest na czarnych listach
  4. Problemy z TLS:

    • Sprawdź certyfikat: openssl s_client -connect mail.twojadomena.pl:587 -starttls smtp
    • Upewnij się, że ścieżki do certyfikatów w konfiguracji są poprawne

✅ Twoja checklista poprawnej konfiguracji:

  • 🔍 Poprawna konfiguracja rekordów DNS (A, MX, PTR)
  • 🌐 Działające połączenie na standardowych portach SMTP (25, 587, 465)
  • 🔐 Skonfigurowane szyfrowanie TLS z ważnym certyfikatem
  • 🔑 Działające uwierzytelnianie SASL
  • 📧 Skonfigurowane mechanizmy SPF, DKIM i DMARC
  • 📝 Sprawdzone logi pod kątem błędów
  • ✅ Przeprowadzone testy wysyłania wiadomości

💼 Dodatkowe narzędzia i optymalizacje

Aby jeszcze bardziej ulepszyć swój serwer SMTP, rozważ wdrożenie następujących narzędzi i optymalizacji:

Antyspamowe i antywirusowe narzędzia

Dla pełnego serwera pocztowego (nie tylko SMTP) warto dodać:

  1. SpamAssassin - filtrowanie spamu:

    sudo apt install spamassassin spamc -y
  2. ClamAV - skanowanie antywirusowe:

    sudo apt install clamav clamav-daemon -y
  3. Amavis - integracja z Postfix:

    sudo apt install amavisd-new -y

Monitorowanie serwera

  1. Postfix Admin - webowy interfejs do zarządzania:

    sudo apt install postfixadmin -y
  2. MailGraph - wizualizacja statystyk:

    sudo apt install mailgraph -y

Optymalizacja wydajności

  1. Kolejki pocztowe - dostosowanie parametrów kolejek:

    # Dodaj do /etc/postfix/main.cf
    maximal_queue_lifetime = 1d  # Maksymalny czas przechowywania w kolejce
    minimal_backoff_time = 1000s # Minimalny czas między próbami dostarczenia
    maximal_backoff_time = 8000s # Maksymalny czas między próbami dostarczenia
    queue_run_delay = 300s       # Opóźnienie między skanowaniami kolejki
  2. Ograniczenia zasobów - aby zapobiec przeciążeniu:

    # Dodaj do /etc/postfix/main.cf
    default_process_limit = 100  # Limit procesów Postfix
    smtp_destination_concurrency_limit = 20  # Maksymalna liczba równoczesnych połączeń na domenę

❓ FAQ - Odpowiedzi na Twoje Pytania

Czy mogę używać serwera SMTP tylko do wysyłania, a nie do odbierania poczty?
Tak, można skonfigurować Postfix tylko do wysyłania wiadomości, nie obsługując przychodzących. Wystarczy odpowiednio skonfigurować mydestination i nie ustawiać MX rekordu na swój serwer.

Jak mogę sprawdzić, czy moje e-maile nie są klasyfikowane jako spam?
Istnieje wiele narzędzi online, takich jak mail-tester.com, które pozwalają sprawdzić "dostarczalność" Twoich e-maili. Testują one ustawienia SPF, DKIM, DMARC oraz inne czynniki wpływające na klasyfikację spamu.

Jak ograniczyć liczbę wiadomości wysyłanych przez użytkownika?
Możesz użyć modułu postfix-policyd-spf-python lub bardziej zaawansowanych rozwiązań jak policyd-rate-limit do ograniczania liczby wiadomości:

sudo apt install postfix-policyd-spf-python -y

Czy jeden serwer SMTP może obsługiwać wiele domen?
Tak, Postfix może obsługiwać wiele domen. Wystarczy dodać odpowiednie wpisy w virtual_mailbox_domains lub mydestination, a także skonfigurować DKIM dla każdej domeny.

Jak odzyskać hasło do konta pocztowego?
Jako administrator systemu możesz zmienić hasło użytkownika za pomocą polecenia:

sudo passwd nazwa_użytkownika

Dla wirtualnych kont, proces zależy od używanego systemu zarządzania (np. Postfix Admin lub baza danych).

🏁 Podsumowanie - Twój własny serwer SMTP

Skonfigurowanie własnego serwera SMTP daje Ci pełną kontrolę nad wysyłaniem poczty, ale wymaga również dbałości o jego utrzymanie i bezpieczeństwo. W tym przewodniku przedstawiliśmy:

  • Podstawową instalację i konfigurację Postfix na Ubuntu 20.04
  • Zabezpieczenie serwera za pomocą TLS i uwierzytelniania SASL
  • Konfigurację mechanizmów zwiększających dostarczalność e-maili (SPF, DKIM, DMARC)
  • Testowanie i rozwiązywanie typowych problemów
  • Dodatkowe optymalizacje i narzędzia

Pamiętaj, że prowadzenie serwera pocztowego wymaga regularnego monitorowania i aktualizacji, aby zapewnić jego bezpieczeństwo i efektywność. Dobrze skonfigurowany serwer SMTP to potężne narzędzie dla Twojej firmy lub projektu.

🚀 Potrzebujesz profesjonalnej obsługi poczty bez kłopotów z konfiguracją?

Sprawdź hosting poczty e-mail w IQHost

Oferujemy w pełni zarządzane rozwiązanie pocztowe z gwarancją dostarczalności, zabezpieczeniami antyspamowymi i antywirusowymi oraz technicznym wsparciem 24/7.

Czy ten artykuł był pomocny?

Wróć do listy wpisów

Twoja strona WordPress działa wolno?

Sprawdź nasz hosting WordPress z ultraszybkimi dyskami NVMe i konfiguracją serwera zoptymalizowaną pod kątem wydajności. Doświadcz różnicy już dziś!

Sprawdź ofertę hostingu
30-dniowa gwarancja zwrotu pieniędzy