📧 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:
- Przygotowanie systemu: Upewnij się, że masz odpowiednio skonfigurowaną domenę, statyczny adres IP oraz aktualizacje systemu.
- Instalacja i konfiguracja: Zainstaluj Postfix, skonfiguruj podstawowe ustawienia SMTP oraz zabezpieczenia TLS.
- Uwierzytelnianie: Dodaj uwierzytelnianie SASL do ochrony przed spamerami.
- 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:
-
Rekord A - wskazujący na adres IP Twojego serwera:
mail.twojadomena.pl. IN A 123.456.789.10
-
Rekord MX - określający serwer odbierający pocztę dla Twojej domeny:
twojadomena.pl. IN MX 10 mail.twojadomena.pl.
-
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:
- Wybierz "Internet Site"
- 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 domenymx
- zezwala serwerom wymienionym w rekordach MXip4: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ść.
- Zainstaluj OpenDKIM:
sudo apt install opendkim opendkim-tools -y
- 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
- 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
- Wygeneruj klucze DKIM:
cd /etc/opendkim/keys/twojadomena.pl
sudo opendkim-genkey -s mail -d twojadomena.pl
sudo chown opendkim:opendkim mail.private
- 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..."
- 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
- Konfiguruj socket OpenDKIM:
sudo nano /etc/default/opendkim
Upewnij się, że masz linię:
SOCKET="inet:8891@localhost"
- 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 subdomenrua=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
-
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
- Sprawdź, czy porty są otwarte:
-
Problemy z uwierzytelnianiem:
- Sprawdź logi:
sudo grep "auth failure" /var/log/mail.log
- Zweryfikuj ustawienia SASL:
sudo postconf -d | grep sasl
- Sprawdź logi:
-
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
-
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
- Sprawdź certyfikat:
✅ 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ć:
-
SpamAssassin - filtrowanie spamu:
sudo apt install spamassassin spamc -y
-
ClamAV - skanowanie antywirusowe:
sudo apt install clamav clamav-daemon -y
-
Amavis - integracja z Postfix:
sudo apt install amavisd-new -y
Monitorowanie serwera
-
Postfix Admin - webowy interfejs do zarządzania:
sudo apt install postfixadmin -y
-
MailGraph - wizualizacja statystyk:
sudo apt install mailgraph -y
Optymalizacja wydajności
-
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
-
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?
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