Czym jest SPF?
SPF (Sender Policy Framework) to metoda uwierzytelniania poczty e-mail, która pozwala właścicielom domen określić, które serwery pocztowe są uprawnione do wysyłania wiadomości w ich imieniu. Serwery pocztowe odbiorców sprawdzają rekordy SPF, aby potwierdzić, że przychodząca wiadomość z danej domeny pochodzi z autoryzowanego źródła.
Dlaczego SPF ma znaczenie
Bez SPF każdy może wysłać wiadomość wyglądającą tak, jakby pochodziła z Twojej domeny (podszywanie się). SPF pomaga:
- Zapobiegać phishingowi: atakujący nie mogą łatwo podszyć się pod Twoją domenę
- Poprawiać dostarczalność: dostawcy poczty ufają uwierzytelnionym wiadomościom
- Chronić reputację: spam wysłany w ramach podszywania się nie uszkodzi reputacji domeny
- Umożliwiać DMARC: SPF jest elementem budulcowym polityk DMARC
Jak działa SPF
1. Właściciel domeny publikuje rekord SPF (TXT) w DNS
2. Serwer pocztowy nadawcy wysyła wiadomość, twierdząc, że pochodzi ona z @example.com
3. Serwer pocztowy odbiorcy wyszukuje rekord SPF domeny example.com
4. Serwer sprawdza, czy adres IP nadawcy jest autoryzowany
5. Stosowany jest wynik: pass, fail, softfail lub neutral
Składnia rekordu SPF
Rekord SPF jest rekordem TXT o określonym formacie:
v=spf1 [mechanisms] [qualifier]all
Przykładowe rekordy SPF
Podstawowy (jeden serwer pocztowy):v=spf1 ip4:203.0.113.50 -all
Google Workspace:
v=spf1 include:_spf.google.com ~all
Wiele usług:
v=spf1 include:_spf.google.com include:sendgrid.net ip4:203.0.113.50 -all
Mechanizmy SPF
| Mechanizm | Opis | Przykład |
|---|---|---|
| ip4 | Adres IPv4 lub zakres | ip4:203.0.113.0/24 |
| ip6 | Adres IPv6 lub zakres | ip6:2001:db8::/32 |
| include | Dołączenie SPF innej domeny | include:_spf.google.com |
| a | Adresy IP rekordu A domeny | a:mail.example.com |
| mx | Adresy IP serwerów MX domeny | mx |
| all | Dopasowanie do wszystkiego (zwykle na końcu) | -all, ~all, ?all |
Kwalifikatory
| Kwalifikator | Wynik | Znaczenie |
|---|---|---|
| + (domyślny) | Pass | Autoryzowany nadawca |
| - | Fail | Nieautoryzowany, odrzuć |
| ~ | SoftFail | Prawdopodobnie nieautoryzowany, zaakceptuj, ale oznacz |
| ? | Neutral | Brak deklaracji polityki |
Najlepsze praktyki wdrażania SPF
Zacznij od SoftFail
Przy pierwszym wdrażaniu SPF użyj ~all, aby nie odrzucać prawidłowych wiadomości e-mail:
v=spf1 include:_spf.google.com ~all
Przejdź do Fail
Po potwierdzeniu poprawnego działania przełącz się na -all, aby wymusić ścisłą politykę:
v=spf1 include:_spf.google.com -all
Utrzymuj liczbę zapytań DNS poniżej 10
SPF zezwala na maksymalnie 10 zapytań DNS (include, a, mx, redirect, exists). Przekroczenie tego limitu powoduje niepowodzenie SPF.
# Counts as DNS lookups:
include:_spf.google.com # 1 (plus nested includes)
a:mail.example.com # 1
mx # 1
# Does NOT count:
ip4:203.0.113.50 # 0
ip6:2001:db8::1 # 0
Tylko jeden rekord SPF
Wiele rekordów SPF powoduje niepowodzenie walidacji. Połącz wszystkie mechanizmy w jednym rekordzie:
# Wrong - two SPF records
v=spf1 include:_spf.google.com ~all
v=spf1 include:sendgrid.net ~all
# Correct - combined
v=spf1 include:_spf.google.com include:sendgrid.net ~all
Sprawdzanie rekordów SPF
Za pomocą dig:dig example.com TXT | grep spf
Za pomocą DomScan:
curl "https://domscan.net/v1/health?domain=example.com"
# Returns hasSPF status
Walidatory online: MXToolbox, mail-tester.com
Typowe problemy z SPF
Zbyt wiele zapytań DNS
Objaw: SPF permerror
Rozwiązanie: spłaszcz mechanizmy include lub użyj mniejszej liczby usług zewnętrznych
Brak usług zewnętrznych
Objaw: prawidłowa wiadomość e-mail nie przechodzi SPF
Rozwiązanie: dodaj include/ip4 dla wszystkich usług wysyłających (narzędzi marketingowych, CRM itp.)
Zbyt liberalny rekord SPF
Objaw: podszyta wiadomość przechodzi SPF
Problem: użycie +all lub dołączenie zbyt wielu usług
Rozwiązanie: przeprowadź audyt i ogranicz listę autoryzowanych nadawców
SPF ma kluczowe znaczenie dla uwierzytelniania poczty, ale najlepiej działa w połączeniu z DKIM i DMARC, zapewniając kompleksową ochronę.