Tento článek stručně shrne význam a správné použítí SPF záznamu v DNS domény tak, aby aplikace na serveru mohla odesílat emaily, které nepadají do SPAMu.
Princip SPF neboli Sender Policy Frameworku spočívá v tom, že ověřuje IP adresu odesílatele tak, aby zabránil rozesílání SPAMu. Jedná se o DNS záznam typu TXT, který se u domény nastavuje zejména proto, že v něm definujeme adresy serverů, které mohou jménem domény posílat emaily. Serveru který přijímá odeslaný email tak říkáme, které servery jsou autorizovány k tomu, aby mohly jménem domény odesílat poštu.
Jednoduchý příklad SPF záznamu
v=spf1 a -all
Tento záznam říká, že jediný server který může poštu odesílat je ten, který má IP adresu stejnou jako je uvedeno v DNS A záznamech. Díky direktivě -all je cokoli co tomuto pravidlu neodpovídá neautorizované a mělo by být automaticky zamítnuto.
SPF syntaxe podrobně
Uveďme si další příklad:
v=spf1 a mx ip4:1.2.3.4 -all
- v=spf1 určuje verzi spf, která se používá
- a mx ip4:1.2.3.4 definuje jeden nebo více serverů, které jsou autorizovány pro rozesílání SPF
- -all definuje pravidlo, co se má stát, pokud se pravidla nedodrží
Autorizované servery
Možností jak které servery jsou autorizované k rozesílání emailů je poměrně dost.
- a - všechny adresy obsažené v DNS A záznamu domény a to IPv4 i v IPv6
- mx - všechny adresy obsažené v DNS A záznamu domény a to IPv4 i v IPv6
- ip4 - definice konkrétní IPv4 adresy nebo rozsahu ve tvaru ip4:xxx.xxx.xxx.xxx/y
- ip6 - definice konkrétní IPv6 adresy nebo rozsahu ve tvaru ip6:xxxx:xxxx:x:x::xxxx:x/y
- include - definice konkrétní doménové adresy ve tvaru include:thirdparty.server.tld
- all - všechny (nedoporučuji používat - nikdy!)
Co se stane při nesplnění pravidel
Pokud email nevyhovuje výčtu autorizovaných serverů, můžeme v SPF definovat, co se má s emailem stát.
- -all - zamítnout / zahodit
- ~all - částečně zamítnout (označit jako podezřelé), email může být doručen
- ?all - neutární hodnocení
Příklady z praxe
v=spf1 a mx ip4:37.157.197.51 ip6:2a02:2b88:2:1::54c6:1 -all
V tomto případě může emaily rozesílat IP adresa která je uvedena v DNS A a MX záznamu domény a současně také definované adresy IPv4 a IPv6. Emaily rozeslané z jiných serverů jsou zamítnuty a označeny jako neautorizované.
v=spf1 a include:_spf.google.com -all
Další příklad autorizuje odesílání emailů ze serveru na kterém leží webová prezentace (například prostřednictvím PHP skriptu) a současně autorizuje Gmail, který je klientem používán pro primární poštu.
Best practice
Poštu je vhodné centralizovat na jedno místo - na jeden server. Současně většinou potřebujete, aby webová prezentace mohla odesílat notifikace z vyplněných formulářů nebo například objednávky z eshopu. Proto doporučuji navrhnou SPF v co možná nejkratší formě, kde specifikujete pouze server na kterém leží web a současně server na které leží primární pošta. Vše je díky tomu přehledné a na první pohled jasné.