Rekord SPF
ważność wysokamierzonysposób dns_integrity
Czy domena deklaruje w DNS, które serwery mogą wysyłać jej pocztę (TXT v=spf1). Brak oznacza, że każdy może podszyć się pod adres klienta.
Sprawdzane tylko wtedy, gdy domena ma rekord MX — domena bez poczty nie potrzebuje SPF.
WIKI
artykuł z 16.09.2026 · źródeł 8Rekord SPF to parametr monitoringu stron internetowych, który sprawdza, czy domena obsługująca pocztę publikuje w DNS rekord SPF, czyli deklarację, które serwery mogą wysyłać pocztę w jej imieniu. Pomiar dotyczy domen z rekordem MX i kończy się jednym z trzech wyników: rekord jest, rekordu nie ma albo DNS nie dał rozstrzygającej odpowiedzi. SPF pozwala właścicielowi domeny wskazać hosty uprawnione do używania jej nazwy w sesji SMTP, a serwerowi odbiorcy — sprawdzić to uprawnienie [1].
Jak działa
Rekord SPF musi być opublikowany jako rekord DNS typu TXT i zaczyna się od oznaczenia wersji v=spf1 [1]. Serwer odbiorcy sprawdza tożsamość z polecenia MAIL FROM, jeśli sprawdzenie nazwy z HELO nie zostało wykonane albo nie dało rozstrzygnięcia; norma zaleca sprawdzać obie [1].
Rekord składa się z mechanizmów i modyfikatorów. Mechanizmy podstawowe to all i include, a mechanizmy wskazujące nadawców to a, mx, ptr, ip4, ip6 i exists; modyfikatory to redirect i exp [1]. Mechanizmu ptr nie należy publikować, bo po latach wdrożeń uznano go za zbędny i zawodny [1]. Każdy mechanizm może mieć kwalifikator: + daje wynik pass, - fail, ~ softfail, a ? neutral; brak kwalifikatora oznacza + [1]. Odbiorca przechodzi mechanizmy od lewej do prawej i kończy przy pierwszym dopasowaniu [3].
Ewaluacja kończy się jednym z siedmiu wyników. Wynik none oznacza, że nie pobrano żadnego rekordu SPF; neutral — że domena świadomie nie przesądza o uprawnieniu; pass — że klient jest uprawniony; fail — że nie jest; softfail — że prawdopodobnie nie jest [1]. Temperror to przejściowy, zwykle DNS-owy błąd weryfikatora, a permerror — rekord, którego nie da się poprawnie zinterpretować [1]. Gdy domena ma więcej niż jeden rekord SPF, wynik to permerror [1].
Mechanizmy wymagające zapytań DNS podlegają limitowi: implementacja musi ograniczyć ich liczbę do 10 i po przekroczeniu zwrócić permerror [1]. Do limitu liczą się include, a, mx, exists i redirect, a zagnieżdżone include dodają kolejne zapytania; ip4, ip6 i all się nie liczą [3]. Osobno norma zaleca ograniczyć do dwóch zapytania puste (ang. void lookups), czyli takie, które nie zwracają rekordu [1].
Standardy i specyfikacje
- RFC 7208 (kwiecień 2014, zastępuje RFC 4408) definiuje SPF: składnię rekordu, mechanizmy, kwalifikatory, wyniki i limity zapytań [1].
- RFC 7489 opisuje DMARC. SPF uwierzytelnia domenę z MAIL FROM albo HELO, czyli adresy z warstwy SMTP, a DMARC dotyczy pola From, które klienci poczty pokazują użytkownikowi [2].
- RFC 7505 wprowadza pusty rekord MX dla domen, które nie przyjmują poczty, i przypomina, że domeny niewysyłające poczty mogą opublikować politykę SPF
-all[7]. - Google od 1 lutego 2024 r. wymaga od wszystkich nadawców do kont Gmail SPF lub DKIM, a od wysyłających ponad 5000 wiadomości dziennie — SPF, DKIM i DMARC oraz zgodności domeny z pola From z domeną SPF albo DKIM [4].
- Yahoo od lutego 2024 r. wymaga od wszystkich nadawców co najmniej SPF lub DKIM, a od nadawców masowych obu mechanizmów i polityki DMARC co najmniej
p=none[5]. - Ustawa o zwalczaniu nadużyć w komunikacji elektronicznej wymusza na dostawcach poczty dla co najmniej 500 000 użytkowników albo dla podmiotu publicznego stosowanie SPF, DMARC i DKIM [8].
Zagrożenia i skutki
Podszywanie się pod domenę. Protokół SMTP powstał, gdy kluczowe były stabilność i prostota, a o bezpieczeństwie informacji mało kto myślał [6]. Bez rekordu SPF wynik sprawdzenia to none [1]: odbiorca nie ma od właściciela domeny żadnej deklaracji, z którą mógłby porównać adres serwera nadawcy.
SPF nie chroni widocznego nadawcy. SPF samodzielnie nie sprawdza pola From wyświetlanego w programach pocztowych, a jedynie adres z koperty SMTP, więc nie chroni przed podszyciem się pod wyświetlany adres [6]. Tę lukę zamyka dopiero DMARC, wymagający wyrównania domeny From z domeną uwierzytelnioną [2].
Miękka polityka. Softfail jest słabym stwierdzeniem, że host prawdopodobnie nie jest uprawniony [1], choć wiele serwerów traktuje -all i ~all tak samo [6]. Według dokumentacji Microsoft polityka DMARC jest w praktyce pomijana dla porażek SPF z ~all, gdy wiadomość nie ma podpisu DKIM; wartość ?all służy do testów [3].
Błędy konfiguracji. Drugi rekord SPF, przekroczony limit zapytań albo include wskazujący domenę bez rekordu SPF dają permerror, a wiadomość może zostać odrzucona [3]. Rekord domeny nie obejmuje subdomen — każda wysyłająca subdomena potrzebuje własnego [3].
Doręczalność. Poczta niespełniająca wymagań Google może nie zostać doręczona albo trafić do spamu [4], a Yahoo zapowiada negatywny wpływ na doręczanie do swoich domen [5].
Przykłady
| Rekord w DNS | Wynik dla serwera spoza listy | Uwagi |
|---|---|---|
brak rekordu v=spf1 | none [1] | odbiorca nie ma deklaracji domeny |
v=spf1 include:… -all | fail [1] | odrzucenie w sesji SMTP kodem 550 [1] |
v=spf1 include:… ~all | softfail [1] | często traktowany jak fail [6] |
v=spf1 include:… ?all | neutral [1] | wartość do testów [3] |
v=spf1 +all | pass dla każdego [1] | rekord jest, ale nic nie ogranicza |
dwa rekordy v=spf1 | permerror [1] | jeden rekord na domenę [3] |
| ponad 10 zapytań DNS | permerror [1] | zagnieżdżone include [3] |
v=spf1 -all w domenie bez poczty | fail dla każdego [3] | domena nie wysyła poczty [7] |
- [1] RFC 7208 — Sender Policy Framework (SPF) for Authorizing Use of Domains in Email, Version 1 · IETF
- [2] RFC 7489 — Domain-based Message Authentication, Reporting, and Conformance (DMARC) · IETF
- [3] Set up SPF to identify valid email sources for your Microsoft 365 domain · Microsoft Learn
- [4] Email sender guidelines · Google Workspace Admin Help
- [5] Sender Best Practices · Yahoo
- [6] Mechanizmy weryfikacji nadawcy wiadomości · CERT Polska
- [7] RFC 7505 — A "Null MX" No Service Resource Record for Domains That Accept No Mail · IETF
- [8] Ustawa o zwalczaniu nadużyć w komunikacji elektronicznej · CERT Polska
STATS
wyniki z systemu · tylko liczby zbiorczeTen parametr nie zapisuje odczytu per strona — przebieg zostawia tylko ustalenia, więc liczby sprawdzonych stron i wyników „ok” system nie ma. Pojawią się po wdrożeniu zapisu przebiegów per strona per parametr.
Ten parametr nie otworzył jeszcze żadnego ustalenia w bazie LAB247. Pusto nie znaczy „czysto” — znaczy, że nic nie przekroczyło reguły.
- Przebiegów
- 33sposób dns_integrity
- W 30 dni
- 0przebiegów
- Ostatni
- 19.09.2026start przebiegu
- Stron w przebiegach
- —33 przebiegów bez liczby stron
CARD
karta z kodu CREATO_PING, odczyt 22.09.2026Jak ten parametr trafia do ClickUpa: wynik sondy to linia w subtasku 2. Pomiar, a usterka, którą otwiera — linia w subtasku 1. Podsumowanie (z identyfikatorem CWE i kategorią OWASP), skąd liczy się wskaźnik zagrożenia i status strony. Projekcja z bazy skanera odświeża oba subtaski co godzinę. Do 22.09 każde ustalenie dostawało własny subtask i status ze starego słownika (PODATNA, WARNING…) — te słowa zostały jeszcze w części opisów pomiaru niżej jako język wewnętrzny sond.
| Obszar i ważność | Bezpieczeństwo · wysoka (B24) |
|---|---|
| Workflow i częstotliwość | creato_ping_security_v2 · P3 działa na LAB247Skaner 2.0, rytm „p3” / „bezpieczenstwo”: premium co 6 h, reszta co 24 h (tier 1–3), co 9 dni (tier 4) · Dokładny skan. dns_integrity porównuje NS, MX, SPF i DMARC z wzorcem z poprzedniego przebiegu. |
| Sonda i helper | sposób dns_integrity · CREATO_PING/helpers/dns_integrity_check.py |
| Testy |
|
| Typ wyniku | 0 albo 1 ustalenie dns_spf_missing |
| Jednostka | brak — wynik jakościowy (obecność rekordu TXT v=spf1); w dowodzie lista rekordów MX |
| Próg i reguła | Timeout 5,0 s na zapytanie. Reguła: MX niepusty i brak TXT v=spf1 = dns_spf_missing. NXDOMAIN, błąd i timeout zapytania TXT dają pustą listę, czyli także „brak rekordu”. |
| Gdzie leżą pokrętła | CREATO_PING/helpers/dns_integrity_check.py → _LIFETIME, _pick, missing_findingsCREATO_PING/helpers/security_runner.py → do_writera (bramka gate z polityki; sito powagi zniknęło 18.09)CREATO_PING/config/incident_policy.toml → [finding] dns_spf_missing |
| Retencja odczytów | Surowy pomiar jako NIEZMIENNY wiersz tabeli `odczyty` w bazie skanera (wejście, wyjście, dowody, sha karty sondy i helpera, commit kodu) — trigger odrzuca każdą zmianę. Okno retencji z kohorty: 90 dni premium, 30 dni reszta; poza oknem zostają odczyty z werdyktem problemu, akcją albo etykietą, bo replay reguł ich potrzebuje (`skaner/retencja.py`). Do LAB247 ten kanał nie idzie (do bazy serwisu jadą dziś tylko sprawdzenia dostępności), więc poza odczytem zostaje werdykt w tabeli `werdykty` i sprawa w tabeli `sprawy`. |
| Znane rozbieżności |
|
| Karta przepisana z | CREATO_PING/helpers/dns_integrity_check.py · CREATO_PING/helpers/security_runner.py · CREATO_PING/config/incident_policy.toml · CREATO_PING/skaner/klasyfikacja.py · CREATO_PING/skaner/usterki.toml · CREATO_PING/skaner/ocena.py · odczyt 22.09.2026 |
dns_spf_missing: bramka polityki zamknięta (gate=false) — zostaje odczyt i werdykt „bez_subtaska” w bazie skanera, sprawa nie powstaje, więc usterka „Brak rekordu SPF przy działającej poczcie” (waga 1) nie wchodzi do wskaźnika strony. Zniknięcie rekordu, który wcześniej był, to osobna usterka `dns_mail_auth_removed` o wadze 3 — patrz parametr Wzorzec uwierzytelniania poczty.
| Kod | Finding | Severity | Pewność | Skutek | Finding / alarm | Waga → ocena | Co zrobić |
|---|---|---|---|---|---|---|---|
| B24.01 | Brak rekordu SPFdns_spf_missing | Niska | Ewidentne | bez wpływu | nie / nie | waga 1 → ocena 2 (zielony) | Dodaj rekord TXT v=spf1 z serwerami poczty klienta i kończące -all. |
| Kod i klucz | B24.01 · dns_spf_missing · w tabeli typów |
|---|---|
| Co znaczy | Domena ma pocztę (rekord MX), ale nie deklaruje, które serwery mogą wysyłać w jej imieniu. |
| Kiedy powstaje | Domena ma rekordy MX i brak jej TXT zaczynającego się od v=spf1. Warunek sprawdzany jest tylko wtedy, gdy odpowiedź NS nie jest pusta. |
| Severity · pewność | Niska · Ewidentne |
| Skutek dla strony | bez wpływu · tylko statystyka (gate=false) · alarm nie |
| Waga → ocena | waga 1 → ocena 2 (zielony) |
| Klasyfikacja | CWE: CWE-290 (Authentication Bypass by Spoofing)OWASP Top 10:2025: A07:2025 Authentication FailuresOCSF 1.9.0: Compliance Finding (class_uid 2003) |
| Rekord OCSF | finding_info.analytic.uid = "B24.01" · analytic.name = "dns_spf_missing" · finding_info.types = ["B24 Rekord SPF"] |
| Co zrobić | Dodaj rekord TXT v=spf1 z serwerami poczty klienta i kończące -all. |
| Wersje typu |
|
LOOP
bez pętliTrafności jeszcze nie liczymy: zamknięcie subtaska nie niesie dziś werdyktu (prawdziwy / fałszywy / nie dało się sprawdzić). Cztery liczby pojawią się, gdy każde zamknięcie dostanie werdykt — to warunek startu pętli 1.
Ten parametr nie przeszedł jeszcze żadnej pętli. Kolejność po pierwszych pięciu grupach ustali miara trafności.