ULTIMATE GUIDE: Konfiguracja serwera dla prawidłowej dostawy poczty. CZĘŚĆ 1: Firewall

Firewall (zapora sieciowa) - to sprzęt z oprogramowaniem lub samo oprogramowanie, które kontroluje, jakie połączenia z serwerem są dozwolone, a jakie powinny zostać zablokowane. W zdecydowanej większości współczesnych dystrybucji serwerowych Linux firewall jest dostępny od razu po instalacji systemu, choć może wymagać dodatkowej konfiguracji.
Prawidłowe dostarczanie poczty do adresata zależy nie tylko od działania serwera pocztowego, ale także od prawidłowej konfiguracji rekordów DNS i firewall. Jeśli coś jest z nimi nie tak, wiadomości mogą trafiać do folderu SPAM albo w ogóle nie zostać doręczone.
W tym artykule omawiamy kluczowe kroki, które pozwolą zwiększyć skuteczność dostarczania poczty praktycznie do 100%. W pierwszej części skupimy się na problemach związanych z konfiguracją zapory sieciowej, a w drugiej podamy instrukcje dotyczące konfiguracji rekordów DNS.
Informacje zawarte w poradniku dotyczą serwerów pocztowych działających na systemach z rodziny Linux. W przykładach wykorzystano Debian 12 oraz Rocky Linux 8.10 z panelem sterowania FASTPANEL.
Etap wstępny
Krok 1. Instalacja oprogramowania potrzebnego do diagnostyki
Do sprawdzenia wpisów i portów będą potrzebne następujące narzędzia:
-
dig - do analizy rekordów DNS.
-
lsof - do sprawdzania stanu serwera pocztowego.
-
netcat - do testowania dostępności portów.
-
whois - do sprawdzania aktualnego operatora DNS.
Instalacja w Debian/Ubuntu:
sudo apt update && sudo apt install -y bind9-dnsutils netcat-openbsd lsof whois
W CentOS/AlmaLinux/Rocky Linux:
sudo yum install -y bind-utils nmap-ncat lsof whois
Dostępność portów pocztowych
Port to numeryczny identyfikator używany do adresowania usług działających na serwerze. Każdy serwis lub aplikacja „nasłuchuje” na określonym porcie, aby móc odbierać i wysyłać dane przez sieć (np. HTTP działa na porcie 80, a SMTP na porcie 25).
Aby wykonać dalsze kroki, połącz się z serwerem przez SSH jako użytkownik root, albo korzystaj z sudo tak jak w przedstawionych poleceniach. Jeśli potrzebujesz pomocy z połączeniem przez SSH, odsyłamy do naszego poradnika.
Krok 2. Sprawdzenie stanu serwerów pocztowych.
Zanim przejdziemy do testowania dostępności portów z sieci, trzeba upewnić się, że serwery pocztowe działają poprawnie. Za pocztę wychodzącą odpowiada zwykle Exim albo Postfix, natomiast za odbiór wiadomości - Dovecot.
Sprawdzisz to poleceniami:
sudo lsof -i:25
sudo lsof -i:143
Jeśli serwery działają, zobaczysz mniej więcej taki wynik:
Port 25:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
exim 839 exim 4u IPv6 778199358 0t0 TCP *:smtp (LISTEN)
exim 839 exim 5u IPv4 778199359 0t0 TCP *:smtp (LISTEN)
Jeśli na twoim serwerze używany jest inny serwer SMTP, na przykład Postfix, w wynikach w pierwszej kolumnie zostanie podana jego dokładna nazwa zamiast exim. W razie potrzeby użyj jej w kolejnych poleceniach.
Port 143:
dovecot 859 root 39u IPv4 778204692 0t0 TCP *:imap (LISTEN)
dovecot 859 root 40u IPv6 778204693 0t0 TCP *:imap (LISTEN)
Taki wynik oznacza, że wszystko jest w porządku i możesz przejść dalej.
Jeśli serwery pocztowe nie są uruchomione, zobaczysz pusty wynik:
~ sudo lsof -i:25
~
~ sudo lsof -i:143
~
W takim przypadku wystąpił jakiś problem z serwerami pocztowymi i nie są one dostępne. Możesz spróbować uruchomić je ręcznie, a następnie sprawdzić status:
Debian/Ubuntu:
systemctl restart exim4 dovecot
systemctl status exim4
systemctl status dovecot
CentOS/AlmaLinux/Rocky Linux:
systemctl restart exim dovecot
systemctl status exim
systemctl status dovecot
Po uruchomieniu status usług będzie wyglądał następująco:
Exim:
● exim.service - Exim Mail Transport Agent
Loaded: loaded (/usr/lib/systemd/system/exim.service; enabled; vendor preset: disabled)
Active: active (running) since Sun 2025-11-02 16:38:57 UTC; 57min ago
Main PID: 839 (exim)
Tasks: 1
Memory: 11.0M
CGroup: /system.slice/exim.service
└─839 /usr/sbin/exim -bd -q1h
Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.
Dovecot:
● dovecot.service - Dovecot IMAP/POP3 email server
Loaded: loaded (/usr/lib/systemd/system/dovecot.service; enabled; vendor preset: disabled)
Active: active (running) since Sun 2025-11-02 16:38:58 UTC; 58min ago
Docs: man:dovecot(1)
https://doc.dovecot.org/
Main PID: 859 (dovecot)
Tasks: 5
Memory: 9.5M
CGroup: /system.slice/dovecot.service
├─ 859 /usr/sbin/dovecot -F
├─ 880 dovecot/anvil
├─ 881 dovecot/log
├─ 882 dovecot/config
└─1729 dovecot/stats
W takiej sytuacji wszystko jest w porządku i możesz przejść do kolejnych kroków.
Jeśli jednak coś jest nie tak, zobaczysz to:
Exim:
● exim.service - Exim Mail Transport Agent
Loaded: loaded (/usr/lib/systemd/system/exim.service; enabled; vendor preset: disabled)
Active: inactive (dead) since Sun 2025-11-02 17:38:44 UTC; 3s ago
Process: 839 ExecStart=/usr/sbin/exim -bd -q${QUEUE} (code=exited, status=0/SUCCESS)
Main PID: 839 (code=exited, status=0/SUCCESS)
Dovecot:
● dovecot.service - Dovecot IMAP/POP3 email server
Loaded: loaded (/usr/lib/systemd/system/dovecot.service; enabled; vendor preset: disabled)
Active: inactive (dead) since Sun 2025-11-02 17:39:32 UTC; 3s ago
Docs: man:dovecot(1)
https://doc.dovecot.org/
Process: 2278 ExecStop=/usr/bin/doveadm stop (code=exited, status=0/SUCCESS)
Process: 859 ExecStart=/usr/sbin/dovecot -F (code=exited, status=0/SUCCESS)
Main PID: 859 (code=exited, status=0/SUCCESS)
Przyczyny mogą być bardzo różne - błędna konfiguracja, uszkodzone logi, brak miejsca na dysku itd. W tym artykule nie będziemy zagłębiać się w diagnozowanie takich problemów.
Jeśli chcesz spróbować rozwiązać je samodzielnie, polecamy nasz poradnik o pracy z dziennikiem systemowym. Możesz też skontaktować się z pomocą techniczną swojego dostawcy hostingu. W kodu.cloud pracujemy 24/7 i odpowiadamy na zgłoszenia w ciągu kilku minut.
Krok 3. Sprawdzenie dostępności portów pocztowych z sieci publicznej
Aby poczta działała prawidłowo, następujące porty TCP muszą być dostępne z globalnej sieci:
-
25, 465, 587 - wysyłanie poczty (SMTP)
-
143, 993 - odbieranie poczty (IMAP)
Dostępność portów możesz sprawdzić za pomocą netcat:
nc -vz 1.2.3.4 25
Zamiast 1.2.3.4 wstaw prawdziwy adres IP swojego serwera.
Jeśli port jest otwarty, zobaczysz:
Debian/Ubuntu:
Connection to 1.2.3.4 25 port [tcp/smtp] succeeded!
CentOS/AlmaLinux/Rocky Linux:
Ncat: Version 7.92 ( https://nmap.org/ncat )
Ncat: Connected to 1.2.3.4:25.
Ncat: 0 bytes sent, 0 bytes received in 0.01 seconds.
Jeśli port jest zamknięty:
Debian/Ubuntu:
nc: connect to 1.2.3.4 port 25 (tcp) failed: Connection refused
CentOS/AlmaLinux/Rocky Linux:
Ncat: Version 7.92 ( https://nmap.org/ncat )
Ncat: Connection refused.
Wykonaj to polecenie dla wszystkich portów wymienionych na początku tej sekcji. Jeśli wszystkie są dostępne, przejdź do drugiej części tego artykułu. Jeśli nie, przejdź do kroku 4, aby to naprawić.