Moduł 4 · 4.3
SPF: kto może wysyłać wiadomości w imieniu Państwa domeny?
Moduł 4: Rekordy dla poczty e-mail · Czas czytania: 10 min
Cel lekcji: Po tej lekcji będą Państwo potrafili odczytać rekord SPF, poprawnie dodać usługę i unikać trzech najbardziej znanych błędów SPF: dwóch rekordów, +all oraz ponad dziesięciu zapytań.
Kluczowe pojęcia: SPF, v=spf1, mechanizm (a, mx, ip4, ip6, include), kwalifikator (+ - ~ ?), all, jeden rekord SPF, limit 10 zapytań DNS, nadawca koperty (Return-Path)
Problem: każdy może użyć Państwa nazwy
Poczta e-mail została wymyślona w latach osiemdziesiątych z myślą o małym, przyjaznym internecie. Każdy serwer pocztowy może wysłać wiadomość z adresem nadawcy info@example.com, nawet jeśli ten serwer nie ma nic wspólnego z example.com. Oszuści chętnie to wykorzystują.
SPF (Sender Policy Framework, RFC 7208) to pierwszy krok, aby temu zapobiec. W rekordzie SPF zapisują Państwo, które serwery mogą wysyłać pocztę w imieniu Państwa domeny. Serwer pocztowy odbiorcy sprawdza przy każdej przychodzącej wiadomości: czy ta wiadomość pochodzi z serwera, który znajduje się na liście?
Proszę to traktować jak listę gości przy drzwiach. Portier (serwer pocztowy odbiorcy) sprawdza listę u Państwa domeny i patrzy, czy gość (serwer wysyłający) się na niej znajduje.
Jak wygląda rekord SPF?
Rekord SPF to rekord TXT w nazwie Państwa domeny, który zaczyna się od v=spf1:
example.com. 3600 IN TXT "v=spf1 mx ip4:192.0.2.25 include:spf.mailer.example ~all"Czyta się go od lewej do prawej. Odbiorca przechodzi po kolei przez poszczególne części i zatrzymuje się na pierwszej pasującej.
| Element | Znaczenie |
|---|---|
v=spf1 | To jest rekord SPF. Musi znajdować się na początku. |
a | Serwer(y), na które wskazuje rekord A/AAAA Państwa domeny, mogą wysyłać pocztę. |
mx | Serwery z Państwa rekordów MX mogą wysyłać pocztę. |
ip4:192.0.2.25 | Ten adres IPv4 może wysyłać pocztę. Można też podać zakres: ip4:192.0.2.0/24. |
ip6:2001:db8::25 | To samo dla IPv6. |
include:spf.mailer.example | Wszystkie serwery wymienione w rekordzie SPF domeny spf.mailer.example również mogą wysyłać pocztę. W ten sposób dodają Państwo usługę zewnętrzną. |
~all | Wszystkie inne serwery: podejrzane. Zawsze znajduje się na końcu. |
Zakończenie: ~all, -all, ?all lub +all
Przed każdym elementem może znajdować się znak, który określa, co się stanie, gdy element pasuje. Przy all (które pasuje zawsze) ten znak ma kluczowe znaczenie:
| Zakończenie | Nazwa | Znaczenie |
|---|---|---|
-all | fail | Inne serwery nie mogą wysyłać poczty. Odbiorcy mogą odrzucić wiadomość. |
~all | softfail | Inne serwery są podejrzane. Wiadomość zwykle zostaje przyjęta, ale częściej jest uznawana za spam. |
?all | neutral | Brak jednoznacznego stanowiska. Praktycznie bezużyteczne. |
+all | pass | Każdy serwer na świecie może wysyłać pocztę w Państwa imieniu. Nigdy nie należy tego używać. |
Jeśli nie ma znaku, obowiązuje +. mx oznacza więc +mx.
Który wybrać? ~all to bezpieczne ustawienie domyślne. -all jest bardziej restrykcyjne i dobre, gdy mają Państwo pewność, że wszyscy nadawcy znajdują się w rekordzie. Jeśli korzystają Państwo z DMARC (lekcja 4.5), to ostatecznie polityka DMARC decyduje, co się stanie; wielu administratorów wybiera wtedy ~all.
Błąd 1: dwa rekordy SPF
Dla jednej domeny może istnieć tylko jeden rekord SPF. Jeśli odbiorca znajdzie dwa, wynikiem jest błąd (permerror) i Państwa SPF w ogóle się nie liczy. To gorsze niż brak SPF.
W praktyce często dochodzi tu do pomyłek. Dostawca newslettera lub Microsoft 365 mówi "dodaj ten rekord SPF" i nagle obok starego pojawia się drugi rekord v=spf1. Rozwiązanie: nową usługę należy dodać do istniejącego rekordu.
Błędnie:
"v=spf1 mx include:spf.oldhost.example ~all"
"v=spf1 include:spf.protection.outlook.com -all"Prawidłowo:
"v=spf1 mx include:spf.oldhost.example include:spf.protection.outlook.com ~all"Uwaga: przy łączeniu rekordów proszę nie usuwać serwerów, z których nadal Państwo korzystają. Jeśli Państwa strona internetowa wysyła pocztę przez serwer firmy hostingowej, musi on pozostać w rekordzie, nawet jeśli zwykła poczta trafia do Microsoft 365. Pakiet hostingowy często ma już domyślny SPF z include firmy hostingowej (w WebOké jest to na przykład include:webawere.nl); proszę go zostawić, dopóki Państwa strona lub formularze wysyłają pocztę przez ten serwer.
Błąd 2: +all lub zbyt szeroki rekord
+all na końcu lub ogromny zakres, taki jak ip4:0.0.0.0/0, oznacza, że każdy może wysyłać pocztę. Wtedy Państwa SPF niczego już nie chroni, a filtry antyspamowe uznają to za zły sygnał.
Błąd 3: ponad dziesięć zapytań
Aby sprawdzić rekord SPF, odbiorca musi czasem wykonać dodatkowe zapytania DNS. Każdy include, a, mx, exists, ptr i redirect kosztuje jedno zapytanie, a include liczy również wszystkie zapytania w rekordzie, do którego odsyła. Zgodnie z RFC 7208 łączna liczba nie może przekroczyć dziesięciu. Jeśli tak się stanie, wynikiem jest permerror i SPF kończy się niepowodzeniem.
ip4 i ip6 nie kosztują zapytania. all również nie.
Dodatkowo maksymalnie dwa zapytania mogą zwrócić pusty wynik (nazwa, która nie istnieje, lub brak odpowiedzi). include wskazujący na usługę, z której dawno Państwo nie korzystają i która usunęła swój rekord, może więc również powodować problemy.
Jeśli korzystają Państwo z wielu usług, proszę policzyć zapytania za pomocą narzędzia do kontroli SPF (lekcja 8.3) i usunąć usługi, z których Państwo już nie korzystają.
Czego SPF nie robi
SPF sprawdza nadawcę koperty: techniczny adres nadawcy (Return-Path), którego serwery pocztowe używają między sobą. Nie zawsze jest to ten sam adres co adres "Od:", który widać w programie pocztowym. Dostawca newslettera często wysyła wiadomości z własnym Return-Path. Samo SPF nie powstrzyma więc każdego sfałszowanego nadawcy. Do tego służą DKIM (lekcja 4.4) i DMARC (lekcja 4.5).
SPF przestaje też działać przy przekierowaniu: jeśli wiadomości są automatycznie przekierowywane na inny adres, docierają do ostatecznego odbiorcy z serwera, którego nie ma w Państwa SPF.
Dlaczego to ma znaczenie
Duzi dostawcy poczty zaostrzyli wymagania. Od lutego 2024 roku Gmail i Yahoo wymagają, aby każdy, kto wysyła pocztę, miał co najmniej SPF lub DKIM, a kto wysyła dużo poczty (ponad około 5000 dziennie) miał SPF, DKIM i DMARC. Microsoft od maja 2025 roku stawia takie same wymagania dla Outlook.com, Hotmail i Live.com. Nawet jeśli wysyłają Państwo niewiele wiadomości, dobry rekord SPF pomaga uniknąć folderu spam.
W praktyce: jak to wygląda w panelu
W tym przykładzie korzystamy z DirectAdmin. W Administracji DNS klikają Państwo na ołówek przy rekordzie TXT, który zaczyna się od v=spf1. DirectAdmin otwiera pomocnika SPF: przy polu Dołącz domenę wpisują Państwo domenę usługi (bez include:), przy polu Tryb wybierają Państwo SoftFail (~all) lub Niepowodzenie (-all). Na dole widoczny jest cały rekord. Moje WebOké ma podobnego pomocnika SPF na karcie DNS.
Inne panele nie zawsze mają taką pomoc. Wtedy edytują Państwo rekord TXT jako zwykły tekst; treść jest dokładnie taka sama.
Podsumowanie
- SPF to rekord TXT z
v=spf1, który określa, które serwery mogą wysyłać pocztę w imieniu Państwa domeny. - Dokładnie jeden rekord SPF na domenę. Nowa usługa? Proszę uzupełnić istniejący rekord.
- Proszę kończyć rekord na
~alllub-all, nigdy na+all. - Maksymalnie dziesięć zapytań DNS (
include,a,mx,exists,ptr,redirect),ip4/ip6się nie liczą. - SPF sprawdza nadawcę koperty; dla pełnej ochrony potrzebne są również DKIM i DMARC.
Quiz
Zadanie
Zadanie Z4.3: wyszukanie rekordu SPF. Proszę wyszukać rekord SPF domeny google.com (lub Państwa własnej domeny). Proszę wkleić pełny rekord oraz podać, czym się kończy (~all, -all, ?all lub +all). W przypadku własnej domeny zadanie sprawdzi również, czy mają Państwo dokładnie jeden rekord SPF.
Zadanie O4.3: samodzielna konfiguracja w strefie ćwiczeniowej. W strefie ćwiczeniowej korzystają Państwo z fikcyjnej usługi; w swojej prawdziwej domenie używają Państwo prawdziwego include podanego przez dostawcę poczty (na przykład include:_spf.google.com). W swojej strefie ćwiczeniowej proszę utworzyć rekord SPF, który zezwala na: serwery MX strefy (<code>.dnspractice.eumx), adres 192.0.2.25 oraz usługę ćwiczeniową _spf.mailsuite-demo.dnspractice.eu. Inne serwery są podejrzane lub niedozwolone, więc rekord kończy się na ~all lub -all.
Zadanie O4.3
To zadanie wykonują Państwo we własnej strefie ćwiczeniowej: prawdziwej strefie DNS na serwerach nazw WebOké, przeznaczonej tylko dla Państwa. Proszę zalogować się za pomocą adresu e-mail. Otrzymają Państwo link logujący e-mailem i wrócą następnie do tej lekcji. Adres e-mail wykorzystujemy wyłącznie na potrzeby kursu.
Dalsza lektura
Kroki opisane w tych artykułach dotyczą paneli WebOké; w innych panelach działanie jest podobne.
- Instrukcja DirectAdmin 5.7: Ustawianie i uzupełnianie SPF
- Jak działa rekord SPF w DNS?
- Dodawanie lub zmiana rekordu SPF w DirectAdmin
- Podręcznik WebOké 5.5: Pomocnicy DNS: MX, SPF, DMARC, CAA i SRV
- RFC 7208 (SPF), w szczególności punkt 4.6.4 (limit dziesięciu zapytań i dwóch pustych zapytań)
