L'SPF (Sender Policy Framework) è usato da un MTA (Mail Transfer Agent, cioè il server di posta) per verificare che un'email in arrivo provenga davvero dal server di posta dichiarato.
In questa guida vedrai come configurare un record DNS TXT per l'SPF sul tuo dominio, impedendo a chi tenta di falsificare il tuo server di posta di inviare email a un server che controlla l'SPF.
È utile perché riduce la probabilità che le tue email finiscano nello spam e rende più difficile per altri impersonare il tuo server di posta.
Prerequisiti
Un record SPF su un dominio indica ai server di posta che ricevono email come trattare i messaggi che dichiarano di provenire dal tuo dominio: ad esempio verificando che l'indirizzo IP del server mittente corrisponda a un indirizzo IP indicato nel record SPF. In questo modo si impedisce ad altri di spacciarsi per il tuo dominio quando inviano email verso un server che controlla l'SPF.
Avere l'SPF attivo sul tuo dominio rende più probabile che le email che invii non finiscano nello spam o non vengano rifiutate, perché molti filtri antispam (come SpamAssassin) verificano la presenza di un record SPF valido e ne tengono conto.
Anche se non hai un server di posta, configurare un record SPF che blocca tutte le email che dichiarano di provenire dal tuo dominio rende più difficile a chiunque inviare posta a tuo nome, anche nel caso in cui il tuo server venisse compromesso.
I record SPF sono composti da 3 parti. Ecco un esempio di record SPF:
v=spf1 mx ip4:10.0.0.1 ip6:2001:db8:abcd::1 -all
v=spf1 indica all'MTA che il record SPF è di versione spf1, la più usata. È obbligatorio.mx ip4:10.0.0.1 ip6:2001:db8:abcd::1 indica che le email possono essere accettate dall'indirizzo IP di qualsiasi record MX trovato, oltre agli indirizzi IP elencati. Questa parte non è strettamente obbligatoria.-all fa rifiutare all'MTA tutte le email che non soddisfano i criteri indicati nella seconda parte del record SPF.La seconda parte può essere personalizzata in base alle esigenze del tuo server di posta, con le seguenti opzioni disponibili:
a — corrisponde all'indirizzo IP di un eventuale record A/AAAA del dominioa:[dominio] — corrisponde all'indirizzo IP di un eventuale record A/AAAA del dominio indicato; può essere usata più volteexists — corrisponde se il dominio si risolve in un qualsiasi indirizzo IPip4:[IndirizzoIPv4] — corrisponde a un indirizzo o a una subnet IPv4; può essere usata più volteip6:[IndirizzoIPv6] — corrisponde a un indirizzo o a una subnet IPv6; può essere usata più volteinclude:[dominio] — usa la policy SPF del dominio indicato, se esistemx — corrisponde al dominio usato nel record MXInoltre, si possono usare i seguenti qualificatori per specificare cosa accade quando una delle opzioni SPF corrisponde:
+ — PASS (consente l'email; è il valore predefinito se non si specifica nulla)? — NEUTRAL (nessuna azione)~ — SOFTFAIL (di solito non rifiuta ma contrassegna l'email)- — FAIL (rifiuta l'email)La maggior parte dei record SPF termina con -all o ~all per rifiutare tutte le email che non soddisfano gli altri criteri. In alternativa puoi usare ?all per una configurazione meno rigida. v=spf1 -all è un record SPF valido e può essere usato per impedire a chiunque di inviare email dal tuo dominio; non è però pratico se gestisci un server di posta, perché qualsiasi MTA che controlla l'SPF bloccherebbe le tue email.
Dalle opzioni qui sopra puoi creare un record SPF su misura per il tuo server di posta.
Dopo aver scelto le opzioni per il tuo record SPF, devi aggiungere un record DNS TXT che ne contenga i dettagli.
In questo tutorial usiamo il record SPF di esempio visto prima.
Nella Console ICBS apri la sezione "DNS", seleziona la zona del tuo dominio e crea un nuovo record TXT. Imposta il nome host sulla radice del dominio (@) e inserisci il record SPF nel campo "valore". Il TTL (Time-to-live) indica a un resolver DNS per quanti secondi mantenere in cache il contenuto del record: la maggior parte dei record ha un TTL compreso tra 1 ora (3600 secondi) e 24 ore (86400 secondi).
dig example.com TXT
Se hai aggiunto correttamente il record SPF, dovresti ottenere un output simile a questo:
; <<>> DiG 9.13.0 <<>> example.com TXT
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50010
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;example.com. IN TXT
;; ANSWER SECTION:
example.com. 3600 IN TXT "v=spf1 mx ip4:10.0.0.1 ip6:2001:db8:a::1 -all"
;; Query time: 32 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Fri Sep 04 00:00:00 UTC 2020
;; MSG SIZE rcvd: 100
Potresti avere uno o più record TXT aggiuntivi sul tuo dominio: cerca quello che inizia con v=spf1, che è il record SPF appena aggiunto.
Se non compare, potrebbe essere necessario attendere un po' prima che la modifica al DNS venga propagata.
Per verificare che il record SPF sia valido puoi usare servizi disponibili su siti come kitterman.com o mxtoolbox.com. Ecco un esempio di esito positivo della verifica SPF su kitterman.com:
Input accepted, querying now...
evaluating v=spf1 mx ip4:10.0.0.1 ip6:2001:db8:abcd::1 -all ...
SPF record passed validation test with pySPF (Python SPF library)!
Ora dovresti avere un record DNS SPF funzionante per il tuo server di posta, migliorando l'autenticità delle email per te e per chi le riceve e riducendo la probabilità che vengano contrassegnate come spam.
Ecco alcune cose che puoi fare dopo aver configurato un record SPF per migliorare ulteriormente il tuo server di posta: