Blog 24/7
ARK. B24Parametr monitoringuBezpieczeństwo · lista 87 parametrów

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.

ARK. 1

WIKI

artykuł z 16.09.2026 · źródeł 8

Rekord 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].

RYS. 1.1Sprawdzenie SPF przy odbiorze

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].

RYS. 1.2Ewaluacja rekordu SPF

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 DNSWynik dla serwera spoza listyUwagi
brak rekordu v=spf1none [1]odbiorca nie ma deklaracji domeny
v=spf1 include:… -allfail [1]odrzucenie w sesji SMTP kodem 550 [1]
v=spf1 include:… ~allsoftfail [1]często traktowany jak fail [6]
v=spf1 include:… ?allneutral [1]wartość do testów [3]
v=spf1 +allpass dla każdego [1]rekord jest, ale nic nie ogranicza
dwa rekordy v=spf1permerror [1]jeden rekord na domenę [3]
ponad 10 zapytań DNSpermerror [1]zagnieżdżone include [3]
v=spf1 -all w domenie bez pocztyfail dla każdego [3]domena nie wysyła poczty [7]
TAB. 1.1Przypisy8
  1. [1] RFC 7208 — Sender Policy Framework (SPF) for Authorizing Use of Domains in Email, Version 1 · IETF
  2. [2] RFC 7489 — Domain-based Message Authentication, Reporting, and Conformance (DMARC) · IETF
  3. [3] Set up SPF to identify valid email sources for your Microsoft 365 domain · Microsoft Learn
  4. [4] Email sender guidelines · Google Workspace Admin Help
  5. [5] Sender Best Practices · Yahoo
  6. [6] Mechanizmy weryfikacji nadawcy wiadomości · CERT Polska
  7. [7] RFC 7505 — A "Null MX" No Service Resource Record for Domains That Accept No Mail · IETF
  8. [8] Ustawa o zwalczaniu nadużyć w komunikacji elektronicznej · CERT Polska
ARK. 2

STATS

wyniki z systemu · tylko liczby zbiorcze
TAB. 2.1Odczyty per strona—

Ten 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.

TAB. 2.3Ustalenia—

Ten parametr nie otworzył jeszcze żadnego ustalenia w bazie LAB247. Pusto nie znaczy „czysto” — znaczy, że nic nie przekroczyło reguły.

TAB. 2.4Przebiegi z tym sposobem sprawdzeniaod 09.09.2026
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
ARK. 3

CARD

karta z kodu CREATO_PING, odczyt 22.09.2026

Jak 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.

RYS. 3.1Droga parametru przez system: Rekord SPF
TAB. 3.1Pomiarpliki: 6
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 helpersposób dns_integrity · CREATO_PING/helpers/dns_integrity_check.py
Testy
  1. Tylko przebieg P3; domena bez rekordu A pominięta na wstępie.
  2. Cztery zapytania równolegle przez resolver systemowy serwera monitoringu: NS i MX domeny, TXT domeny, TXT _dmarc.domena; do 20 domen naraz.
  3. SPF = pierwszy rekord TXT zaczynający się od v=spf1; treść rekordu nie jest oceniana.
  4. Reguła działa tylko przy niepustej odpowiedzi NS i co najmniej jednym rekordzie MX — domena bez MX nie dostaje ustalenia.
  5. Pytana jest dokładnie nazwa z listy stron, nie domena główna.
Typ wyniku0 albo 1 ustalenie dns_spf_missing
Jednostkabrak — wynik jakościowy (obecność rekordu TXT v=spf1); w dowodzie lista rekordów MX
Próg i regułaTimeout 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łaCREATO_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ówSurowy 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
  1. Sprawdzana jest sama obecność: v=spf1 +all, dwa rekordy v=spf1 (wg RFC 7208 błąd trwały) i przekroczony limit 10 zapytań przechodzą jako ok.
  2. Brak trzeciego stanu: timeout albo błąd zapytania TXT przy odpowiadających NS i MX daje „brak SPF”.
  3. Pusty rekord MX (RFC 7505 — domena deklaruje, że nie przyjmuje poczty) liczy się jako istniejący MX, więc taka domena dostaje ustalenie.
  4. Notatka katalogu „domena bez poczty nie potrzebuje SPF” przeczy zaleceniom RFC 7505, CERT Polska i Microsoft: domena bez poczty powinna publikować v=spf1 -all.
  5. Nazwa z listy stron bez własnych rekordów NS (np. z przedrostkiem www) daje pustą odpowiedź NS — helper nic nie sprawdza.
kandydaci do pętli: kod a opis parametru albo specyfikacja
Karta przepisana zCREATO_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
TAB. 3.2Co oznacza failtypów Findingów: 1

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.

KodFindingSeverityPewnośćSkutekFinding / alarmWaga → ocenaCo zrobić
B24.01Brak rekordu SPFdns_spf_missingNiskaEwidentnebez wpływunie / niewaga 1 → ocena 2 (zielony)Dodaj rekord TXT v=spf1 z serwerami poczty klienta i kończące -all.
TAB. 3.3B24.01 · Brak rekordu SPFwersja 1 · 01.10.2026
Kod i kluczB24.01 · dns_spf_missing · w tabeli typów
Co znaczyDomena ma pocztę (rekord MX), ale nie deklaruje, które serwery mogą wysyłać w jej imieniu.
Kiedy powstajeDomena 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 stronybez wpływu · tylko statystyka (gate=false) · alarm nie
Waga → ocenawaga 1 → ocena 2 (zielony)
KlasyfikacjaCWE: CWE-290 (Authentication Bypass by Spoofing)OWASP Top 10:2025: A07:2025 Authentication FailuresOCSF 1.9.0: Compliance Finding (class_uid 2003)
Rekord OCSFfinding_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
  1. v1 · 01.10.2026 — kod B24.01 nadany (finding-codes.ts)
ARK. 4

LOOP

bez pętli
RYS. 4.1Pętla parametru — sześć etapów
TAB. 4.1Trafność, 30 dnialarmy · prawdziwe · fałszywe · bez rozstrzygnięcia

Trafnoś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.

TAB. 4.2Pętle—

Ten parametr nie przeszedł jeszcze żadnej pętli. Kolejność po pierwszych pięciu grupach ustali miara trafności.

Blog 24/7
05.11CISA i FBI wzywają do zabezpieczenia sterowników chłodzenia po atakach w Europietherecord.media05.11Midnight Blizzard atakowała iPhone'y i Androidy przez zainfekowane strony w Europie i USAsecurityweek.com05.11APT29 kradła dane z iPhone'ów i Androidów przez przejęte i podrobione stronytherecord.media05.11Grupa APT29 przejęła skrypt Plerdy i atakowała niezałatane iPhone'y i Androidythehackernews.com05.11Microsoft wykrył 7,3 mld wiadomości phishingowych w III kwartale 2026microsoft.com05.11DigiCert ujawnia wyciek danych klientów i skanów dokumentów tożsamościbleepingcomputer.com05.11CWPdoor podmienia serwer cwpsrv w Control Web Panel i otwiera tylne wejście do Linuksableepingcomputer.com05.11Brytyjskie NCSC ostrzega, że narzędzia AI zwiększyły liczbę wykrywanych luk zero-daythehackernews.com05.11Skaner RootEvidence sprawdza starą lukę w Cisco IOS i dodaje nagłówki Opt-Outisc.sans.edu05.11Włamanie do portalu grantowego Norad, zagrożone dane 20 614 użytkownikówhelpnetsecurity.com