====== Mail: SPF – Sender Policy Framework ======
===== Co to jest SPF? =====
**SPF (Sender Policy Framework)** to mechanizm uwierzytelniania poczty e-mail, który pomaga chronić domenę przed:
* **spoofingiem** (podszywaniem się pod adresy e-mail),
* **phishingiem**,
* nadużyciem serwerów do wysyłki nieautoryzowanych wiadomości.
SPF pozwala właścicielowi domeny określić, które serwery **mają prawo wysyłać e-maile** w jej imieniu.
===== Jak działa SPF? =====
1. Właściciel domeny dodaje specjalny rekord **TXT** do DNS swojej domeny.
2. Gdy serwer odbiorcy (np. Gmail) otrzymuje e-mail:
* sprawdza, z jakiego **adresu IP** wiadomość została wysłana,
* porównuje ten adres z listą serwerów zdefiniowaną w rekordzie SPF domeny nadawcy.
3. Na tej podstawie wiadomość:
* przechodzi test SPF (**pass**),
* lub go nie przechodzi (**fail**, **softfail**, **neutral**, itp.).
===== Rekord SPF – Gdzie i jak go dodać =====
Rekord SPF dodaje się jako rekord **TXT** do DNS domeny.
^ Typ ^ Nazwa ^ Wartość (przykład) ^
| TXT | ostrowski.net.pl | v=spf1 include:mx.ovh.com -all
|
* `Nazwa`: to główna domena (bez prefiksu, np. nie `_spf`).
* `Wartość`: deklaracja SPF (szczegóły poniżej).
===== Składnia rekordu SPF =====
v=spf1 [elementy] [mechanizmy końcowe]
=== Najczęstsze elementy SPF ===
^ Element ^ Opis ^
| `ip4:x.x.x.x` | Pozwala na wysyłkę z adresu IPv4 |
| `ip6:xxxx::xxxx` | Pozwala na wysyłkę z adresu IPv6 |
| `include:domena` | Uznaje rekord SPF innej domeny (np. dostawcy usług e-mail) |
| `a` | Zezwala na serwery wskazane w rekordzie A domeny |
| `mx` | Zezwala na serwery MX zdefiniowane dla domeny |
| `exists:` | Zezwolenie w oparciu o istnienie DNS |
| `all` | Pasuje do wszystkich — używane na końcu jako domyślne zachowanie |
=== Modyfikatory mechanizmów ===
^ Symbol ^ Znaczenie ^
| `+` | Pass (domyślnie — nie trzeba pisać) |
| `-` | Fail – odrzucić |
| `~` | SoftFail – zaakceptuj, ale oznacz jako podejrzane |
| `?` | Neutral – żadnego wyraźnego wyniku |
===== Przykłady Rekordów SPF =====
=== 1. Prosty rekord tylko dla jednego IP ===
v=spf1 ip4:192.0.2.1 -all
Tylko IP `192.0.2.1` może wysyłać maile z tej domeny. Wszystko inne jest odrzucane (`-all`).
=== 2. SPF dla serwerów OVH ===
v=spf1 include:mx.ovh.com -all
Zezwala wszystkim serwerom OVH (zdefiniowanym w `mx.ovh.com`) na wysyłanie maili.
=== 3. Kombinacja IP + serwerów mailowych + fallback ===
v=spf1 ip4:203.0.113.0/24 include:_spf.google.com ~all
Zezwala:
* adresom IP z zakresu `203.0.113.0/24`
* serwerom Gmaila
Wszystko inne dostaje **softfail** (trafia np. do spamu, ale nie jest odrzucane).
===== Rekomendacje Bezpieczeństwa =====
1. **Zawsze kończ rekord SPF mechanizmem `all`**:
* `-all` → wszystko poza listą = odrzuć
* `~all` → wszystko poza listą = oznacz jako podejrzane
2. **Unikaj nadmiaru `include:`** – każde z nich to dodatkowe zapytanie DNS (limit: 10).
3. **Nie używaj SPF bez `all`** – to otwarte zaproszenie dla spamerów.
4. **Testuj po każdej zmianie** – np. na [https://mxtoolbox.com](https://mxtoolbox.com).
===== Narzędzia do testowania SPF =====
* https://mxtoolbox.com/spf.aspx
* https://dmarcian.com/spf-survey/
* https://www.kitterman.com/spf/validate.html
* https://dnschecker.org/spf-record-checker.php
===== Co się stanie, gdy SPF zawiedzie? =====
To zależy od polityki serwera odbiorczego. Możliwe reakcje:
* zaakceptowanie, ale oznaczenie jako SPAM (softfail),
* odrzucenie wiadomości (fail),
* całkowita neutralność – traktowanie jak każdą inną wiadomość.
===== Częste problemy z SPF =====
* Brak `all` → rekord nieskuteczny
* Zbyt wiele `include:` → przekroczenie limitu zapytań DNS
* Błąd składni (np. podwójne `v=spf1`)
* Nieaktualne wpisy dostawców (np. po migracji serwera)
===== Podsumowanie =====
**SPF** jest prostym, ale bardzo skutecznym narzędziem zabezpieczającym Twoją domenę e-mail przed nadużyciami. Prawidłowo skonfigurowany:
* ogranicza możliwość podszywania się pod Twój adres e-mail,
* poprawia reputację domeny,
* zwiększa dostarczalność wiadomości.
SPF powinien być stosowany **razem z DKIM i DMARC** dla pełnej ochrony poczty.