SPF (Sender Policy Framework) è un protocollo di autenticazione delle email progettato per rilevare e prevenire la falsificazione degli indirizzi email. SPF consente ai proprietari di domini di specificare quali server di posta sono autorizzati a inviare email per conto del loro dominio. Questo aiuta a prevenire attacchi di phishing e spoofing, migliorando la sicurezza delle comunicazioni via email.
SPF utilizza i record DNS per verificare l’autenticità dell’indirizzo del mittente. Quando un server di posta riceve un’email, controlla il record SPF del dominio del mittente per determinare se il server che ha inviato l’email è autorizzato a farlo. Se il server di invio non è incluso nel record SPF, l’email può essere contrassegnata come sospetta o rifiutata.
Un record SPF è pubblicato nel DNS del dominio come un record TXT. Ecco un esempio di record SPF:
example.com. IN TXT "v=spf1 ip4:192.0.2.0/24 include:_spf.google.com -all"
In questo esempio:
v=spf1
: Indica la versione di SPF utilizzata.ip4:192.0.2.0/24
: Autorizza tutti gli indirizzi IP nell’intervallo specificato a inviare email per il dominio.include:_spf.google.com
: Autorizza i server di posta di Google a inviare email per il dominio.-all
: Indica che solo i server specificati sono autorizzati a inviare email per il dominio.Supponiamo di avere un dominio example.com
e che tu voglia autorizzare solo il tuo server di posta con l’indirizzo IP 192.0.2.1
e i server di Google a inviare email per il tuo dominio. Il record SPF sarebbe configurato come segue:
example.com. IN TXT "v=spf1 ip4:192.0.2.1 include:_spf.google.com -all"
Puoi verificare il record SPF di un dominio utilizzando strumenti online o uno script Python. Ecco un esempio di script Python che utilizza il modulo dnspython
per verificare il record SPF:
import dns.resolver
def get_spf_record(domain):
try:
txt_records = dns.resolver.resolve(domain, 'TXT')
for record in txt_records:
for string in record.strings:
if string.startswith(b'v=spf1'):
return string.decode()
except dns.resolver.NoAnswer:
return "No SPF record found"
except dns.resolver.NXDOMAIN:
return "Domain does not exist"
except Exception as e:
return str(e)
domain = 'example.com'
spf_record = get_spf_record(domain)
print(f"SPF record for {domain}: {spf_record}")
Quando un’email viene ricevuta, il server di posta destinatario può eseguire un controllo SPF per verificare l’autenticità dell’indirizzo del mittente. Ecco un esempio di intestazione email con le informazioni SPF:
Received: from mail.example.com (mail.example.com [192.0.2.1])
by receiver.example.net (Postfix) with ESMTP id ABC123
for <user@example.net>; Mon, 29 Mar 2024 12:34:56 -0700 (PDT)
Received-SPF: Pass (example.net: domain of example.com designates 192.0.2.1 as permitted sender) client-ip=192.0.2.1;
In questo esempio:
Received-SPF: Pass
: Indica che l’email ha superato il controllo SPF.domain of example.com designates 192.0.2.1 as permitted sender
: Specifica che il dominio example.com
autorizza l’indirizzo IP 192.0.2.1
a inviare email.SPF è uno strumento essenziale per migliorare la sicurezza delle email, proteggendo contro attacchi di phishing e spoofing. Configurare correttamente un record SPF richiede una comprensione delle risorse di invio del dominio e una gestione attenta dei record DNS. Implementando SPF, i proprietari dei domini possono garantire che solo i server autorizzati possano inviare email per conto del loro dominio, migliorando la fiducia e la sicurezza nelle comunicazioni via email.