SPF (Sender Policy Framework) to rekord DNS TXT, który mówi serwerom odbiorczym: maile z mojej domeny mogą wysyłać tylko te konkretne serwery, reszta to prawdopodobnie spam albo spoofing. Bez SPF każdy może wysłać maila „z twojej domeny” i serwer odbiorcy nie ma jak sprawdzić, czy to prawda. Skutek: twoje legalne maile lądują w spamie (Gmail i Outlook nie ufają nadawcom bez SPF), a spamerzy bezkarnie wysyłają phishing „z twojego adresu”.
Spis treści
ToggleJak SPF działa pod spodem
Serwer odbiorczy (np. Gmail) dostaje maila „od: kontakt@twojafirma.pl”. Sprawdza rekord SPF domeny twojafirma.pl w DNS. Porównuje IP serwera, który właśnie wysłał maila, z listą dozwolonych IP w SPF. Pasuje? SPF pass, mail wpada do skrzynki. Nie pasuje? SPF fail, mail leci do spamu albo zostaje odrzucony.
1. Mail od: kontakt@twojafirma.pl wysłany z IP 185.100.50.25
2. Gmail pyta DNS: jaki SPF ma twojafirma.pl?
3. DNS odpowiada: v=spf1 include:_spf.google.com ip4:185.100.50.0/24 ~all
4. Gmail sprawdza: czy 185.100.50.25 mieści się w 185.100.50.0/24? → TAK → SPF PASS
5. Mail dostarczony do inboxu
Jak wygląda rekord
SPF to rekord TXT w DNS. Przykład:
v=spf1 include:_spf.google.com include:sendgrid.net ip4:185.100.50.0/24 ~all
| Element | Co oznacza |
|---|---|
v=spf1 |
Wersja SPF (zawsze spf1) |
include:_spf.google.com |
Pozwól serwerom Google (Gmail, Workspace) wysyłać z tej domeny |
include:sendgrid.net |
Pozwól serwerom SendGrid wysyłać |
ip4:185.100.50.0/24 |
Pozwól konkretnemu zakresowi IP (np. serwer hostingu) |
~all |
Wszystkie inne serwery: soft fail (prawdopodobnie spam, ale nie odrzucaj) |
Mechanizmy SPF
| Mechanizm | Co robi | Przykład |
|---|---|---|
include: |
Dołącz SPF innej domeny (delegacja) | include:_spf.google.com |
ip4: |
Pozwól konkretnemu IPv4 | ip4:185.100.50.25 |
ip6: |
Pozwól konkretnemu IPv6 | ip6:2001:db8::1 |
a |
Pozwól IP z rekordów A domeny | a (IP serwera WWW) |
mx |
Pozwól serwerom z rekordów MX | mx (serwer poczty) |
all |
Wszystkie inne (z kwalifikatorem) | ~all, -all, ?all |
Kwalifikatory
| Kwalifikator | Znaczenie | Rekomendacja |
|---|---|---|
-all (hard fail) |
Odrzuć maile z niezautoryzowanych serwerów | Najlepszy, kiedy lista jest na pewno kompletna |
~all (soft fail) |
Oznacz jako podejrzane (spam), ale nie odrzucaj | Bezpieczny domyślny start |
?all (neutral) |
Brak opinii (jak brak SPF) | Bezużyteczne |
+all (pass all) |
Pozwól wszystkim wysyłać | NIGDY, to jak brak SPF |
Strategia: zaczynasz od ~all (soft fail). Maile z niezautoryzowanych serwerów lecą do spamu, ale nie są odrzucane. Po 2-4 tygodniach, kiedy widzisz, że wszystko działa, przełączasz na -all (hard fail) i masz pełną ochronę. Sam tak robię u każdego klienta, bo agresywne -all od pierwszego dnia potrafi odciąć ci legalną komunikację, jeśli o czymś zapomniałeś.
Konfiguracja krok po kroku
Krok 1: zidentyfikuj wszystkie serwery, które wysyłają maile z twojej domeny. To najważniejsza i najczęściej olewana część. Zanim cokolwiek napiszesz, odpowiedz: kto wysyła maile „z @twojadomena.pl”?
| Usługa | Co dodać do SPF |
|---|---|
| Hosting (poczta) | include:_spf.hostingprovider.pl albo ip4:IP_SERWERA (zapytaj support) |
| Google Workspace | include:_spf.google.com |
| Microsoft 365 | include:spf.protection.outlook.com |
| SendGrid | include:sendgrid.net |
| Mailgun | include:mailgun.org |
| Brevo (Sendinblue) | include:sendinblue.com |
| MailChimp | include:servers.mcsv.net |
| Zoho Mail | include:zoho.eu |
Często zapominane: WordPress z WP Mail SMTP (jeśli wysyła przez SendGrid/Mailgun, dorzuć ich include), systemy fakturowania (iFirma, wFirma, InFakt, jeśli wysyłają faktury z twojej domeny), CRM (HubSpot, Pipedrive). Sam mam checklistę w głowie i przepuszczam każdą domenę przez nią, bo brak jednego źródła to gwarantowany spam.
Krok 2: złóż rekord.
v=spf1 include:_spf.google.com include:sendgrid.net mx ~all
Tłumaczy się to „z mojej domeny mogą wysyłać: serwery Google, serwery SendGrid i serwery z rekordów MX. Reszta: soft fail”.
Krok 3: dodaj rekord TXT w DNS. W panelu DNS domeny:
| Pole | Wartość |
|---|---|
| Typ | TXT |
| Nazwa / Host | @ (albo puste, oznacza domenę root) |
| Wartość | v=spf1 include:_spf.google.com include:sendgrid.net mx ~all |
| TTL | 3600 |
Bardzo ważne: tylko jeden rekord SPF na domenę. Nie dodawaj dwóch TXT z „v=spf1”, to błąd RFC, serwery mogą oba zignorować. Wszystkie źródła łączysz w jednej linii (wiele include: w jednym rekordzie).
Krok 4: sprawdź, czy działa. mxtoolbox.com, SuperTool, „SPF Record Lookup”, widzisz rekord i interpretację (pass/fail). Albo wyślij testowego maila na adres z mail-tester.com, dostaniesz ocenę 0-10 i SPF status w raporcie. Najszybciej: wyślij maila na Gmaila, otwórz, trzy kropki, „Show original”, szukaj spf=pass.
Gotowe rekordy do skopiowania
# Hosting (poczta na serwerze hostingowym)
v=spf1 mx a ~all
# Google Workspace
v=spf1 include:_spf.google.com ~all
# Microsoft 365
v=spf1 include:spf.protection.outlook.com ~all
# Google Workspace + SendGrid (newsletter)
v=spf1 include:_spf.google.com include:sendgrid.net ~all
# Hosting + Google Workspace + Brevo
v=spf1 mx include:_spf.google.com include:sendinblue.com ~all
# Hosting + Microsoft 365 + Mailgun
v=spf1 mx include:spf.protection.outlook.com include:mailgun.org ~all
SPF + DKIM + DMARC: pełna ochrona
Sam SPF to za mało. To jedna trzecia trójcy bezpieczeństwa email.
| Mechanizm | Co robi | Gdzie konfigurujesz |
|---|---|---|
| SPF | Weryfikuje serwer wysyłający (po IP) | Ten artykuł |
| DKIM | Podpis kryptograficzny weryfikujący integralność maila | Konfiguracja u dostawcy poczty |
| DMARC | Polityka: co zrobić, kiedy SPF/DKIM nie przejdą | Rekord DNS _dmarc |
Minimum: SPF plus DKIM. Pełna ochrona: SPF plus DKIM plus DMARC z polityką p=reject. Od 2024 Gmail i Yahoo wymagają SPF plus DKIM plus DMARC od masowych nadawców (czyli np. każdego, kto wysyła newsletter).
Najczęstsze błędy
Dwa rekordy SPF. Domena ma dwa TXT zaczynające się od „v=spf1…”. Błąd RFC, serwer odbiorcy może zignorować oba. Łącz w jeden rekord.
Za dużo DNS lookupów. SPF ma limit 10 DNS lookupów (każde include: liczy się jako 1, plus include w środku include też liczy się). Przekroczenie 10 = SPF permerror = fail. Sprawdź mxtoolbox SPF Check, kolumna „DNS Lookups: X/10”. Powyżej 10? Zastępujesz część include: konkretnymi ip4:, bo te nie wymagają lookupu.
Zapomniana usługa. Dodałeś SPF z Google i hostingiem, ale zapomniałeś o SendGridzie, HubSpocie albo iFirmie. Maile z tych usług dostają SPF fail i lądują w spamie. Po dodaniu SPF zawsze rób audyt: kto realnie wysyła maile „z mojej domeny”?
+all zamiast ~all albo -all. +all oznacza „pozwól każdemu wysyłać z mojej domeny”, czyli to samo co brak SPF. Nigdy. Używasz ~all (soft fail, bezpieczny start) albo -all (hard fail, pełna ochrona).
Najczęściej zadawane pytania
Czy SPF jest obowiązkowy
Formalnie nie. Praktycznie tak. Od 2024 Gmail i Yahoo wymagają SPF od nadawców. Bez SPF maile lądują w spamie u większości dostawców. To absolutne minimum konfiguracji email.
Czy SPF chroni przed phishingiem
Częściowo. SPF weryfikuje serwer wysyłający, ale nie pole „From:” widoczne dla odbiorcy. Atakujący może wysłać maila ze swojego serwera i sfałszować „From:” na twój adres. Żeby chronić „From:”, potrzebujesz DMARC z alignmentem (sprawdza, czy domena w „From:” zgadza się z domeną SPF i DKIM).
Jak szybko SPF zacznie działać
Po propagacji DNS, czyli minuty do godzin (zależy od TTL). SPF jest sprawdzany przy każdym mailu, nie potrzebuje „rozgrzewania” jak reputacja IP. Dodajesz rekord, czekasz na propagację (max 24h) i działa.
Czy SPF wpływa na dostarczalność newslettera
Tak, bezpośrednio. Newsletter wysyłany przez SendGrid albo Mailguna z twojej domeny bez odpowiedniego include w SPF dostaje SPF fail i Gmail wrzuca go do spamu. Dorzucasz include:sendgrid.net i mail wraca do inboxu.
Mam hosting i Google Workspace, jaki SPF
v=spf1 mx include:_spf.google.com ~all. mx pozwala serwerowi hostingu (z rekordów MX), include:_spf.google.com pozwala Google. Jak masz też SendGrid: v=spf1 mx include:_spf.google.com include:sendgrid.net ~all.






