Checker Rekordów SPF — Sprawdź SPF Online
Sprawdź rekord SPF dowolnej domeny tak, jak robią to serwery odbierające pocztę: każdy include z własnym kosztem zapytań DNS, bieżąca suma względem limitu 10, puste zapytania i wynik testu SPF dla dowolnego IP nadawcy wraz z członem, który zdecydował.
Dokładnie ta nazwa, którą wpiszesz: SPF nie dziedziczy, więc mail.example.com potrzebuje własnego rekordu.
Czym jest rekord SPF?
Rekord SPF to rekord TXT, który wymienia serwery uprawnione do wysyłania poczty w imieniu domeny. Zaczyna się od v=spf1, potem wskazuje nadawców człon po członie i kończy się tym, co odbiorcy mają zrobić z całą resztą (RFC 7208, kwiecień 2014, wciąż obowiązujący standard).
Odbiorcy sprawdzają go względem adresu serwera, który się łączy, i domeny w nadawcy koperty, czyli MAIL FROM lub Return-Path, a nie względem linii From:, którą widzi czytelnik. Powiązanie SPF z From: to zadanie DMARC.
Rekord obejmuje tylko dokładnie tę nazwę, w której leży: SPF nie dziedziczy, więc mail.example.com potrzebuje własnego rekordu. Domena, która nie wysyła poczty, powinna opublikować v=spf1 -all.
Include wskazuje _spf.google.com · 8 zakresów, bez dalszych zapytań
ip4:74.125.0.0/16ip4:209.85.128.0/17ip6:2001:4860:4864::/56ip6:2404:6800:4864::/56ip6:2607:f8b0:4864::/56ip6:2800:3f0:4864::/56ip6:2a00:1450:4864::/56ip6:2c0f:fb50:4864::/56~all
v=spf1, na początku: rekord, który zaczyna się inaczej, nie jest rekordem SPF.redirect= przekazuje sprawdzenie do innego rekordu; exp= wyjaśnia fail.~all. Zapisano przez Google Public DNS dnia 24 października 2026.Jak sprawdzić rekord SPF
Wpisz domenę powyżej, a checker odczyta jej rekordy TXT, wybierze ten, który zaczyna się od v=spf1, i pójdzie za każdym include i redirect tak, jak zrobiłby to serwer odbierający, licząc po drodze każde zapytanie DNS.
Ręcznie zapytaj o rekordy TXT: dig TXT example.com +short lub nslookup -type=TXT example.com. Odpowiedź zawiera każdy rekord TXT w tej nazwie; rekordem SPF jest ten zaczynający się od v=spf1, a długi przychodzi jako kilka ciągów w cudzysłowach, które SPF łączy bez spacji. Każdy include to kolejne zapytanie, a liczyć trzeba samodzielnie.
Aby sprawdzić, czy konkretny serwer może wysyłać, przełącz się na Test IP: uruchamia to samo sprawdzenie dla tego adresu i pokazuje człon, który pasował.
dig TXT example.com +shortKażdy rekord TXT w tej nazwie, tak jak ma go twój resolver; rekordem SPF jest ten zaczynający się od v=spf1. Uruchom ponownie dla każdego include.
$ dig TXT github.com @dns1.p08.nsone.net +norec +noall +answer github.com. 300 IN TXT "v=spf1 ip4:192.30.252.0/22 include:spf.protection.outlook.com include:_netblocks.google.com include:_netblocks2.google.com include:mail.zendesk.com include:_spf.salesforce.com include:servers.mcsv.net include:mktomail.com include:sendgrid.net ip4:62.253.2" "27.114 ip4:166.78.69.169 ip4:166.78.69.170 ip4:166.78.71.131 ~all" # potem każdy include, po jednym zapytaniu: $ dig +short TXT _spf.salesforce.com "v=spf1 exists:%{i}._spf.mta.salesforce.com -all"
- Jeden rekord zaczyna się od v=spf1. 23 inne rekordy TXT obok (tokeny weryfikacyjne i tym podobne) nie mają znaczenia dla SPF, poza rozmiarem odpowiedzi.
- Połączone bez spacji: 2 ciągi. Podział co 255 bajtów wypada wewnątrz
ip4:62.253.227.114: odbiorcy sklejają ciągi z powrotem, więc to w porządku. - TTL 5 minut. Jak długo resolvery mogą trzymać tę kopię po zmianie. Własny serwer strefy mówi 5 minut; resolver pokazuje to, co zostało z jego kopii.
- Każdy include to osobne zapytanie. Przejście rekordu domeny github.com to 10 zapytań, razem z zagnieżdżonymi. dig pokazuje jedną nazwę naraz: liczenie do 10 zostaje po twojej stronie.
$ nslookup -type=TXT github.com 8.8.8.8
# każdy rekord TXT w tej nazwie, z Google Public DNS PS> Resolve-DnsName -Name github.com -Type TXT -Server 8.8.8.8
Jak czytać wynik: drzewo include
Werdykt mówi, co dostają odbiorcy dla nadawcy, którego rekord nie wymienia: poprawny z zakończeniem (softfail dla ~all, fail dla -all), albo permerror z przyczyną, albo „nie udało się sprawdzić”, gdy DNS nie odpowiedział.
Granatowa kolumna to budżet zapytań: jedna komórka na zapytanie DNS, w kolorze include, który je wydaje, bieżąca suma względem 10 i puste zapytania jako kółka. Po 10. komórki czerwienieją i zaznaczona jest gałąź, na której odbiorcy przerywają.
Widok Drzewo wylicza odczyty, najpierw błędy, każdy z sekcją RFC i poprawką, a potem każde zapytanie w kolejności, w jakiej pyta odbiorca.

WerdyktCo dostają odbiorcy dla nadawcy, którego rekord nie wymienia, i zakończenie, które o tym decyduje.Rekord, człon po członieKażdy człon w kolorze swojego rodzaju; include niesie znak swojego właściciela i własny koszt zapytań.OdczytyJeden rekord, poprawna składnia, zapytania, puste zapytania, zakończenie, ptr, DMARC: najpierw błędy, każdy z poprawką.Budżet zapytańKażde zapytanie DNS jako komórka, w kolorze include, który je wydaje, względem limitu 10.Koszt każdego includeGałąź na include: jego własne komórki, to, co zagnieżdża, i bieżąca suma.Puste zapytaniaKółka dla zapytań, które wróciły puste; trzecie kończy sprawdzenie.Limit 10 zapytań i „too many DNS lookups” (permerror)
Odbiorcy liczą każdy człon, który wymaga zapytania DNS, czyli include, a, mx, ptr, exists i redirect, przez każdy zagnieżdżony include, i przerywają na 10. Jedenaste daje permerror (RFC 7208 §4.6.4). ip4, ip6, all i exp nic nie kosztują.
To permerror, a nie fail: co odbiorca z nim zrobi, to jego własna decyzja, ale przy DMARC permerror nigdy nie liczy się jako pass. A ponieważ sprawdzenie kończy się na pierwszym trafieniu, rekord ponad limit wciąż przechodzi dla nadawców wymienionych wcześnie i psuje się tylko dla tych wymienionych późno.
Koszt chowa się w include: include:_netblocks.mimecast.com sam wydaje 9, Yandex 360 wydaje 8, Freshdesk 7, Mailgun 5. Include Google i Microsoft 365 kosztują po 1. Aby zejść poniżej 10, usuń nadawców, z których już nie korzystasz, i przenieś masowego nadawcę na subdomenę z własnym rekordem.
v=spf1 include:spf.protection.outlook.com include:_netblocks.mimecast.com include:mailgun.org include:sendgrid.net -all
Wszyscy pozostali też dostają permerror, a nie fail z -all z rekordu: odbiorcy przerywają, zanim do niego dojdą.
- _netblocks.mimecast.comMimecast9 zapytań
- _spf.yandex.netYandex 3608 zapytań
- email.freshdesk.comFreshdesk7 zapytań
- mailgun.orgMailgun5 zapytań
- icloud.comiCloud+5 zapytań
- spf.titan.emailTitan Email4 zapytania
- secureserver.netGoDaddy3 zapytania
- _spf.google.comGoogle Workspace1 zapytanie
- spf.protection.outlook.comMicrosoft 3651 zapytanie
Czym są puste zapytania (void lookups)?
Puste zapytanie (void lookup) to zapytanie, które wraca bez żadnych rekordów: nazwa nie istnieje (NXDOMAIN) albo istnieje bez rekordu, o który pytano. Odbiorcy powinni dopuścić dwa; trzecie to permerror (RFC 7208 §4.6.4).
Człon wskazujący na host, którego już nie ma, a:old.example.com, sam w sobie nie jest błędem: po prostu nie pasuje i liczy się jako jedno puste zapytanie. Tak samo exists:%{i}._spf.mta.salesforce.com dla każdego nadawcy, którego Salesforce nie wymienia, dlatego kolejność include ma znaczenie.
Awaria serwera albo przekroczenie czasu nie jest pustym zapytaniem: to temperror, a odbiorcy zwykle próbują ponownie później.
Własny rekord domeny salesforce.com dla 192.0.2.1, zapisano 24 października 2026
v=spf1 include:_spf.google.com include:_spf.salesforce.com exists:%{i}._spf.corp.salesforce.com ~all
exists:%{i}._spf.mta.salesforce.com192.0.2.1._spf.mta.salesforce.com → NXDOMAIN · zapytanie 3 · w _spf.salesforce.comexists:%{i}._spf.corp.salesforce.com192.0.2.1._spf.corp.salesforce.com → NXDOMAIN · zapytanie 4 · w salesforce.com
Wynik: softfail, z wykorzystanymi obydwoma dozwolonymi pustymi zapytaniami
a:mail.example.com dla nazwy, która wciąż jest, ale nie ma już adresu: NOERROR bez odpowiedzi. Brak dopasowania, jedno puste zapytanie, sprawdzenie idzie dalej.NODATApusteexists:%{i}._spf.mta.salesforce.com buduje nazwę z każdego IP nadawcy; dla adresu, którego Salesforce nie wymienia, odpowiedzią jest NXDOMAIN: za każdym razem jedno puste zapytanie.NXDOMAINpustemx:shop.example.com, nazwa, której już nie ma, po 2 pustych zapytaniach: odbiorcy przerywają tutaj.NXDOMAINpermerrorinclude:_spf.vendor.example: DNS zawiódł, więc nic nie liczy się jako puste.SERVFAILtemperror, nie pusteInclude include:spf.bmv.jp domeny blastmail zaczyna się od dwóch takich członów exists: dla adresu, którego nie wymienia, sam wydaje oba dozwolone puste zapytania.
Spłaszczanie SPF: kiedy pomaga, a kiedy psuje
Spłaszczanie zastępuje include adresami, które wymienia, więc rekord kosztuje mniej zapytań. Działa dla zakresów, które rzadko się zmieniają, i obraca się przeciwko tobie, gdy dostawca doda serwer, którego nie skopiowałeś: poczta z niego nie przechodzi wtedy SPF.
Microsoft mówi, żeby nie spłaszczać include:spf.protection.outlook.com, a include Google i Microsoft i tak kosztują po jednym zapytaniu. Przeniesienie masowego nadawcy na subdomenę, taką jak news.example.com, daje mu własny rekord i własne 10 zapytań.
Przed
include:mailgun.org
- Zapytania
- 5
- Pobrane rekordy
- 5
- Bajty w twoim rekordzie
- 19
- Mailgun zmienia zakres
- uwzględnione od razu
Po
ip4:159.135.224.0/20 ip4:69.72.32.0/20 ip4:204.220.90.0/23 ip4:204.220.92.0/22 +18 więcej
- Zapytania
- 0
- Bajty w twoim rekordzie
- 450
- Potrzebne ciągi TXT
- 2
- Mailgun zmienia zakres
- twoja kopia jest nieaktualna
Ryzyko nieaktualnej kopii. Kopiujesz dziś 22 zakresy; gdy Mailgun doda kolejny, poczta z niego nie przechodzi SPF, dopóki ktoś nie zauważy i nie zaktualizuje rekordu.
- skopiowano
- Mailgun dodaje zakres
- poczta z niego nie przechodzi SPF
~all czy -all (i DMARC)
Ostatni człon mówi, co dzieje się z każdym nadawcą spoza listy. -all to fail, najmocniejsze stwierdzenie; ~all to softfail, „raczej nie”; ?all to neutral, który odbiorcy traktują jak brak SPF; +all przepuszcza wszystkich i nigdy nie powinien być publikowany.
Między ~all a -all nie ma złej odpowiedzi. Google dokumentuje ~all dla Google Workspace, a Microsoft -all dla Microsoft 365. Przy DMARC w trybie egzekwowania ~all pozwala DMARC zdecydować na podstawie DKIM: niektórzy odbiorcy odrzucają na -all, zanim DMARC zobaczy poprawny podpis DKIM, więc przekazana poczta może wrócić (RFC 9989 §7.1).
~all-all?all?all: tam jest to nieszkodliwe, bo pasuje tylko pass wewnątrz include.+all-all z DMARC na p=reject
- SPF: fail
- odrzucone w SMTP
- DKIM nigdy nie sprawdzony
Niektórzy odbiorcy działają najpierw na podstawie SPF, więc przekazana wiadomość z poprawnym podpisem DKIM może zostać odrzucona, zanim ruszy DMARC, a strata nigdy nie pojawia się w raportach DMARC.
~all z DMARC na p=reject
- SPF: softfail
- DMARC sprawdza DKIM
- zgodny DKIM: pass
Decyduje DMARC. Bez podpisu DKIM Microsoft mówi jednak, że DMARC jest w praktyce ignorowany przy niepowodzeniach ~all, i z tego powodu zaleca -all.
~all, jak i -all to poprawne wybory; ?all nic nie mówi, a +all przepuszcza każdego.Najczęstsze błędy w rekordzie SPF i jak je naprawić
Większość zepsutych rekordów bierze się z trzech wpadek: drugiego rekordu SPF dodanego obok pierwszego zamiast scalenia, include dla dostawcy, którego już nie ma, i wartości skopiowanej z dokumentacji z literówką.
Dokumentacje dostawców same drukują część z nich: Mimecast pisze –all z półpauzą, Postmark include: spf.mtasv.net ze spacją, a Twilio SendGrid wymienia mechanizm aaaa, który nie istnieje. Każdy błąd składni robi z całego rekordu permerror. Kropka po domenie jest natomiast poprawna.
Dwa rekordy SPFpermerror
v=spf1 include:_spf.google.com ~allv=spf1 include:sendgrid.net ~allPoprawka: scal je w jeden: jedno v=spf1, każdy include raz, jedno zakończenie.
Ponad 10 zapytańpermerror
v=spf1 include:_netblocks.mimecast.com include:mailgun.org -all14 zapytań
Poprawka: usuń nadawców, z których już nie korzystasz, albo daj masowemu nadawcy własną subdomenę.
Trzecie puste zapytaniepermerror
v=spf1 a:old.example.com mx:gone.example.net exists:%{i}.spf.example.org -all3 puste
Poprawka: usuń człony z nazwami, których już nie ma, i daj include'y exists na końcu.
Include bez rekordu SPF za sobąpermerror
v=spf1 include:spf.retired-vendor.example -allPoprawka: popraw nazwę albo usuń dostawcę, którego już nie używasz.
Półpauza w –allpermerror
v=spf1 include:_netblocks.mimecast.com –allTak wydrukowane we własnej dokumentacji Mimecast
Poprawka: zwykły łącznik: -all.
Spacja po include:permerror
v=spf1 a mx include: spf.mtasv.net ~allTak wydrukowane we własnej dokumentacji Postmark
Poprawka: include:spf.mtasv.net
Mechanizm aaaapermerror
v=spf1 aaaa:example.com ~allTak wydrukowane we własnej dokumentacji Twilio SendGrid
Poprawka: a:example.com; a już pasuje do rekordów AAAA nadawców IPv6.
Kropka na końcupoprawny
v=spf1 include:spf.protection.outlook.com. -allPoprawna: RFC 7208 §7.3 mówi, żeby jej nie publikować, ale odbiorcy muszą ją akceptować.
W pomocy Zendesk czytamy też: „składnia redirect: jest obsługiwana”; modyfikator zapisuje się redirect= (RFC 7208 §6.1).
Czego wymagają Gmail, Yahoo i Microsoft
Od lutego 2024 Gmail i Yahoo wymagają od każdego nadawcy skonfigurowania SPF lub DKIM. Nadawcy masowi potrzebują obu, rekordu DMARC co najmniej p=none i domeny From: zgodnej z jednym z nich. Outlook.com prosi nadawców o dużym wolumenie o SPF i DKIM jednocześnie, a od 5 maja 2025 odrzuca tych, którzy ich nie mają.
Próg Gmaila to ponad 5000 wiadomości dziennie do kont osobistych; Yahoo żadnego nie publikuje. Sam SPF nigdy nie sprawia, że poczta jest „zgodna” (aligned): domena MAIL FROM musi być twoja, a nie domeną zwrotną dostawcy.
| Gmail | Yahoo | Outlook.com | |
|---|---|---|---|
| Próg masowy | Gmailponad 5000 wiadomości dziennie do osobistych kont Gmail, liczone na domenę główną | Yahoobrak opublikowanego: „Nie będziemy określać progu wolumenu” | Outlook.componad 5000 dziennie (blog Microsoftu); 5000 lub więcej z jednej domeny From: (jego artykuł pomocy) |
| Wszyscy nadawcy | GmailSPF lub DKIM, plus DNS w przód i odwrotny, TLS i odsetek spamu poniżej 0,3% | YahooSPF lub DKIM, plus DNS w przód i odwrotny oraz odsetek spamu poniżej 0,3% | Outlook.combrak twardej zasady |
| Nadawcy masowi | GmailSPF i DKIM, DMARC (wystarczy p=none), From: zgodne z SPF lub DKIM, wypisanie jednym kliknięciem dla poczty marketingowej | YahooSPF i DKIM, DMARC co najmniej p=none i przechodzący, From: zgodne z SPF lub DKIM, wypisanie jednym kliknięciem | Outlook.comSPF musi przejść i DKIM musi przejść, DMARC co najmniej p=none, zgodne z SPF lub DKIM |
| Obowiązuje od | Gmail1 lutego 2024; odrzucanie nasiliło się od listopad 2025 | Yahooluty 2024 | Outlook.com5 maja 2025 (odrzucanie) |
| Niepowodzenie SPF widać jako | Gmail4.7.275.7.27 | Yahooniedokumentowane dla SPF | Outlook.com550 5.7.515 |
Japonia: najostrzejsze ustawienie NTT docomo, 「全て拒否する」, odrzuca pocztę, której IP nadawcy nie autoryzuje rekord SPF domeny, oraz pocztę z domen, które w ogóle nie publikują rekordu SPF. docomo.ne.jp
Źródłasupport.google.comsenders.yahooinc.comtechcommunity.microsoft.com
Sprawdzanie SPF a dig i nslookup
dig i nslookup pokazują rekordy TXT tak, jak ma je twój resolver: rekord SPF i cokolwiek jeszcze leży w tej nazwie. Nie idą za include, nie liczą zapytań ani pustych zapytań i nie mówią, co zdecydowałby odbiorca.
Test SPF taki jak ten przechodzi cały rekord, więc liczby zgadzają się z tym, co oblicza serwer odbierający. Użyj dig dla jednej nazwy, a tego checkera dla werdyktu.
dig TXT | nslookup -type=TXT | ||
|---|---|---|---|
| Pokazuje rekordy TXT | Ten checkerTakpodzielone na człony | dig TXTTak | nslookup -type=TXTTak |
| Łączy ciągi długiego rekordu | Ten checkerTakjak odbiorcy | dig TXTNiepokazuje każdy ciąg osobno | nslookup -type=TXTNiepokazuje każdy ciąg osobno |
| Idzie za każdym include | Ten checkerTakcałe drzewo | dig TXTNiejedna nazwa na zapytanie | nslookup -type=TXTNiejedna nazwa na zapytanie |
| Liczy zapytania do 10 | Ten checkerTakbieżąca suma, dla każdego include | dig TXTNieręcznie | nslookup -type=TXTNieręcznie |
| Liczy puste zapytania | Ten checkerTakz nazwami | dig TXTNie | nslookup -type=TXTNie |
| Mówi, że dwa rekordy = permerror | Ten checkerTak | dig TXTNiedrukuje oba | nslookup -type=TXTNiedrukuje oba |
| Testuje IP nadawcy | Ten checkerTakcheck_host i pasujący człon | dig TXTNie | nslookup -type=TXTNie |
| Pyta twój własny resolver | Ten checkerNieGoogle Public DNS, z naszego serwera | dig TXTTak | nslookup -type=TXTTak |
Checker SPF: najczęstsze pytania
Co to jest sprawdzenie rekordu SPF?
Jak sprawdzić, czy adres IP może wysyłać pocztę w imieniu mojej domeny?
Co znaczy „SPF too many DNS lookups”?
Co to jest permerror w SPF?
Co to jest puste zapytanie (void lookup) w SPF?
Czy mój rekord SPF powinien kończyć się na ~all czy -all?
Czy domena może mieć dwa rekordy SPF?
Czym jest spłaszczanie SPF i czy warto z niego korzystać?
Czy subdomena potrzebuje własnego rekordu SPF?
Dlaczego SPF przechodzi tutaj, a w Gmailu nie?
Jaka jest różnica między SPF, DKIM i DMARC?
Jak długo zmiana rekordu SPF zaczyna działać?
Powiązane narzędzia do poczty i DNS
Wyszukiwanie MX
Znajdź rekordy wymiany poczty i szczegóły serwera pocztowego
Sprawdzanie DMARC
Sprawdź politykę DMARC i ustawienia wyrównania dla dowolnej domeny
Sprawdzanie DKIM
Weryfikuj rekordy DKIM z automatycznym wykrywaniem selektorów
Analiza Nagłówków E-mail
Analizuj surowe nagłówki e-mail i śledź drogę wiadomości
Sprawdzanie Czarnej Listy IP
Sprawdź, czy adres IP jest na czarnych listach spamu lub złośliwego oprogramowania
Odwrotne DNS
Znajdź nazwy hostów powiązane z dowolnym adresem IP przez rekordy PTR
Wyszukiwanie DNS
Wszystkie rekordy DNS prosto z serwerów nazw domeny, obok pamięci podręcznej Google i Cloudflare
Generator rekordu SPF
Zbuduj poprawny rekord TXT SPF dla swoich dostawców poczty i serwerów, z bieżącą kontrolą limitu 10 zapytań DNS
