ARK. B24Parametr monitoringuBezpieczeństwo · lista 50 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
33przebiegów
Ostatni
19.09.2026start przebiegu
Stron w przebiegach
33 przebiegów bez liczby stron
ARK. 3

CARD

karta z kodu CREATO_PING, odczyt 16.09.2026
RYS. 3.1Droga parametru przez system: Rekord SPF
TAB. 3.1Pomiarpliki: 4
Obszar i ważnośćBezpieczeństwo · wysoka (B24)
Workflow i częstotliwośćcreato_ping_security_v2 · P3 działa na LAB247cron co 24 h, T1–T3; T4 raz po anomalii · 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 → _TASK_SEVERITIES (dalej idą tylko urgent i high)CREATO_PING/config/incident_policy.toml → [finding] dns_spf_missing
Retencja odczytówŻadna dla ustalenia. Na serwerze monitoringu plik wzorca DNS trzyma ostatni odczyt SPF per domena, nadpisywany co przebieg. Replay niemożliwy.
Znane rozbieżności
  1. Ustalenie nigdy nie wychodzi z przebiegu: powaga niska odpada na filtrze, a --no-stats nie zapisuje liczników. Parametr dziś nie zostawia żadnego śladu.
  2. 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.
  3. Brak trzeciego stanu: timeout albo błąd zapytania TXT przy odpowiadających NS i MX daje „brak SPF”.
  4. Pusty rekord MX (RFC 7505 — domena deklaruje, że nie przyjmuje poczty) liczy się jako istniejący MX, więc taka domena dostaje ustalenie.
  5. Notatka katalogu „domena bez poczty nie potrzebuje SPF” przeczy zaleceniom RFC 7505, CERT Polska i Microsoft: domena bez poczty powinna publikować v=spf1 -all.
  6. 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/workflows/_prod/creato_ping_security_v2.json · odczyt 16.09.2026
TAB. 3.2Co oznacza failtypów ustaleń: 1

Helper zgłasza powagę niską, więc filtr przebiegu odrzuca ustalenie, zanim dotrze do zapisu. Polityka i tak mówi: niska, bez skutku, gate=false. Przebieg produkcyjny idzie z --no-stats, więc nie zostaje nawet licznik. Utwardzenie, nie incydent.

UstaleniePowagaPewnośćSkutekSubtask / alarmCo zrobić
Brak rekordu SPFdns_spf_missingNiskieEwidentnebez wpływunie / nieDodaj rekord TXT v=spf1 z serwerami poczty klienta i kończące -all.
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
20.09Zastrzeżony PESEL: zmiana raz na 30 minut, blokada przy wypłaciedobreprogramy.pl20.09Fałszywe SMS-y od GITD o mandacie za autostradę wyłudzają dane kartyinstalki.pl20.09Pakiet npm indexed-btree omija blokadę skryptów instalacyjnychbleepingcomputer.com19.09SolarWinds łata CVE-2026-28326 w Access Rights Manager, zdalny kod bez logowaniathehackernews.com19.09Orkes Conductor: luka CVE-2026-58138 atakowana w sieci, poprawka w wersji 3.30.2thehackernews.com19.09Trzy luki jądra Linux w katalogu CISA KEV, Red Hat potwierdza aktywne atakithehackernews.com18.09Publiczne exploity na cztery luki jądra Linux dają lokalnie uprawnienia rootthehackernews.com18.09Brevo: skradziony klucz API Cloudflare i skrypty ClickFix na stronach klientówbleepingcomputer.com18.09WaterPlum z Korei Północnej zainfekowała 30 000 urządzeń w 100 krajachtherecord.media18.09Jedna zgoda OAuth daje napastnikowi dostęp do poczty i plików mimo MFAdarkreading.com