Dostarczalność emaili — SPF, DKIM, DMARC i blacklist
Opublikowano: 10 kwietnia 2026 · Kategoria: Hosting / Email
Twoje emaile lądują w spamie mimo że są legalne? Problem leży zwykle w braku lub błędnej konfiguracji SPF, DKIM i DMARC — trzech standardów uwierzytelniania poczty. Razem informują odbiorców czy email naprawdę pochodzi od Ciebie i co zrobić jeśli nie pochodzi. Bez tych rekordów nawet dobrze skonstruowany email może zostać odrzucony lub oznaczony jako spam. Artykuł przeprowadza przez kompletną konfigurację, diagnostykę i monitoring dostarczalności.
SPF — Sender Policy Framework
SPF to rekord TXT w DNS definiujący które serwery IP są uprawnione do wysyłania emaili z Twojej domeny. Odbiorca sprawdza rekord SPF dla domeny w nagłówku Return-Path (envelope sender). Mechanizmy SPF:
# Przyklad rekordow SPF — dodaj jako TXT do DNS domeny # Tylko własny serwer (IP 1.2.3.4) v=spf1 ip4:1.2.3.4 -all # Serwer + Google Workspace v=spf1 ip4:1.2.3.4 include:_spf.google.com -all # Serwer + Mailchimp + SendGrid v=spf1 ip4:1.2.3.4 include:servers.mcsv.net include:sendgrid.net -all # Mechanizmy: # ip4:1.2.3.4 — konkretne IP IPv4 # ip4:1.2.3.0/24 — caly subnet # ip6:2001:db8::/32 — IPv6 # include:domena.com — rekord SPF innej domeny # a — IP z rekordu A Twojej domeny # mx — IP z rekordow MX Twojej domeny # ~all — softfail (podejrzane, ale dostarczone) # -all — hardfail (odrzuc) # +all — allow all (NIGDY nie uzywac!) # Weryfikacja SPF przez dig dig TXT twojadomena.pl | grep spf nslookup -type=TXT twojadomena.pl # Test przez MXToolbox # https://mxtoolbox.com/spf.aspx
Limit 10 DNS lookupów: SPF ma twardy limit 10 mechanizmów wymagających DNS lookup (include, a, mx, ptr, exists). Przekroczenie = SPF PermError = fail. Używaj narzędzi jak dmarcian SPF Surveyor do sprawdzenia liczby lookupów.
DKIM — DomainKeys Identified Mail
DKIM podpisuje emaile kryptograficznie — serwer wysyłający dodaje podpis do nagłówka, a odbiorca weryfikuje go kluczem publicznym z DNS. Podpis pokrywa treść emaila i wybrane nagłówki, więc modyfikacja emaila w tranzycie unieważnia podpis.
# Generowanie pary kluczy DKIM (serwer Postfix + OpenDKIM) sudo apt install opendkim opendkim-tools -y # Generuj klucze mkdir -p /etc/opendkim/keys/twojadomena.pl opendkim-genkey -b 2048 -d twojadomena.pl -D /etc/opendkim/keys/twojadomena.pl \ -s mail -v # Tworzy: mail.private (klucz prywatny) + mail.txt (rekord DNS) # Wyswietl rekord do wklejenia w DNS cat /etc/opendkim/keys/twojadomena.pl/mail.txt # mail._domainkey IN TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkqhki..." # Konfiguracja OpenDKIM (/etc/opendkim.conf) # Domain twojadomena.pl # KeyFile /etc/opendkim/keys/twojadomena.pl/mail.private # Selector mail # Socket inet:8891@localhost # Integracja z Postfix (/etc/postfix/main.cf) # milter_protocol = 6 # milter_default_action = accept # smtpd_milters = inet:localhost:8891 # non_smtpd_milters = inet:localhost:8891 sudo systemctl restart opendkim postfix # Test DKIM dig TXT mail._domainkey.twojadomena.pl # Powinien zwrocic klucz publiczny # Weryfikacja przez MXToolbox # https://mxtoolbox.com/dkim.aspx
DMARC — polityka i raporty
# Rekord DMARC — dodaj jako TXT do _dmarc.twojadomena.pl # Faza 1 — monitoring (brak akcji, tylko raporty) v=DMARC1; p=none; rua=mailto:[email protected]; pct=100; adkim=r; aspf=r # Faza 2 — kwarantanna (spam folder) v=DMARC1; p=quarantine; rua=mailto:[email protected]; pct=25; adkim=r; aspf=r # Faza 3 — odrzucanie (docelowe) v=DMARC1; p=reject; rua=mailto:[email protected]; ruf=mailto:[email protected]; pct=100; adkim=r; aspf=r # Parametry: # p=none/quarantine/reject — polityka # rua= — adres raportow agregatowych (dzienne) # ruf= — adres raportow forensycznych (per-wiadomosc) # pct= — procent maili objetych polityka (100 = wszystkie) # adkim=r/s — alignment DKIM (r=relaxed, s=strict) # aspf=r/s — alignment SPF (r=relaxed, s=strict) # sp= — polityka dla subdomen # Weryfikacja dig TXT _dmarc.twojadomena.pl
Parsowanie raportów DMARC
Raporty DMARC przychodzą jako XML w ZIP — nie do czytania ręcznie. Użyj narzędzia do ich wizualizacji:
- dmarcian.com — bezpłatny plan, dashboard z wykresami, wyszukiwanie po IP i domenie, kategoryzacja źródeł wysyłki (własny serwer, ESP, forwarding)
- postmarkapp.com/dmarc — bezpłatne parsowanie, cotygodniowe podsumowanie email
- Google Postmaster Tools — dla domen wysyłających dużo do Gmail; osobny dashboard z reputacją IP i domeny
- self-hosted: parsedmarc — Python, eksportuje do Elasticsearch/Grafana, pełna kontrola nad danymi
Blacklist check i derejestracja
# Sprawdz IP serwera pocztowego w listach RBL # 1. MXToolbox Blacklist Check: https://mxtoolbox.com/blacklists.aspx # 2. MultiRBL: https://multirbl.valli.org/ # 3. Spamhaus: https://check.spamhaus.org/ # Sprawdz przez CLI (dig odwrotne lookup w Spamhaus SBL) # Dla IP 1.2.3.4 — odwroc oktety: 4.3.2.1 dig 4.3.2.1.zen.spamhaus.org # 127.0.0.2 = SBL (spam source) # 127.0.0.10/11 = PBL (dynamiczne IP — nie powinno wysylac) # NXDOMAIN = nie na liscie # Najwazniejsze listy i derejestracja # Spamhaus SBL: https://www.spamhaus.org/lookup/ # Spamhaus PBL: https://www.spamhaus.org/pbl/ (dla statycznych IP VPS - usun) # Barracuda: https://www.barracudacentral.org/rbl/removal-request # SORBS: https://sorbs.net/lookup.shtml # SpamCop: automatyczna, wygasa po 24h # DMARC diagnostyka przez MXToolbox # https://mxtoolbox.com/emailheader.aspx — wklej naglowki emaila # https://mxtoolbox.com/diagnostic.aspx — pelna diagnostyka domeny
Plan warm-up nowego IP
| Tydzień | Max emaili/dzień | Odbiorcy | Monitoruj |
|---|---|---|---|
| 1 | 500 | Najbardziej zaangażowani (ostatnie 30 dni) | Bounce rate, spam complaints |
| 2 | 2 000 | Aktywni (ostatnie 60 dni) | Inbox placement rate |
| 3 | 5 000 | Aktywni (ostatnie 90 dni) | DMARC raporty, blacklists |
| 4 | 10 000 | Aktywni (ostatnie 180 dni) | Google Postmaster reputation |
| 5+ | Docelowy wolumen | Cała lista (posegmentowana) | Continual monitoring |
Bounce handling — klasyfikacja i obsługa
Bouncy (niedostarczone emaile) niszczą reputację. Rozróżniaj typy i reaguj prawidłowo:
- Hard bounce (SMTP 5xx) — adres nie istnieje, domena nie istnieje. Usuń z listy natychmiast i permanentnie. Tolerancja: poniżej 0,1%.
- Soft bounce (SMTP 4xx) — skrzynka pełna, serwer tymczasowo niedostępny. Ponów próbę 3-5 razy przez 48-72 godziny. Po wyczerpaniu prób — usuń.
- Spam complaint (FBL) — odbiorca kliknął "To jest spam". Odsubskrybuj natychmiast. Tolerancja: poniżej 0,08% (Google limit: 0,1%).
- Bounce rate > 2% — STOP. Wyczyść listę, sprawdź źródło zbierania adresów, użyj double opt-in.
# Postfix — analiza logów bounce grep "status=bounced" /var/log/mail.log | tail -50 grep "5\.\d\.\d" /var/log/mail.log | tail -20 # Sprawdz kolejke Postfix postqueue -p mailq | grep -c "Request" # Flush kolejki (wymus ponowna probe) postqueue -f # Usuń emaile do konkretnej domeny postsuper -d ALL deferred