Obiettivo: configurare in modo corretto SPF, DKIM e DMARC con esempi “copia-incolla” per i provider più comuni. Ordine consigliato: 1) SPF → 2) DKIM → 3) DMARC.
Indice
- Cos’è cosa (in 30 secondi)
- 1) SPF: esempi pronti
- 2) DKIM: cosa pubblicare
- 3) DMARC: partire soft, arrivare a reject
- Checklist veloce
- Debug: errori comuni
- Strumenti utili
- Fonti rapide
Tip: dopo ogni modifica DNS, attendi la propagazione (da pochi minuti a qualche ora).
Cos’è cosa (in 30 secondi)
- SPF: elenca da quali server si può inviare per il tuo dominio (record
TXT
conv=spf1
). - DKIM: firma le email con chiave privata; pubblichi la chiave pubblica nel DNS (record
TXT
oCNAME→TXT
a seconda del provider). - DMARC: decide cosa fare se SPF/DKIM falliscono (
none/quarantine/reject
) e invia report (rua/ruf
).
1) SPF: esempi pronti
Un solo record TXT
sul dominio radice (es. example.com
). Evita di creare più record SPF: unisci tutto in un’unica riga.
Provider singolo
- Google Workspace
v=spf1 include:_spf.google.com ~all
- Microsoft 365
v=spf1 include:spf.protection.outlook.com -all
- SendGrid
v=spf1 include:sendgrid.net -all
- Mailgun
v=spf1 include:mailgun.org ~all
- Amazon SES
v=spf1 include:amazonses.com -all
(se usi custom MAIL FROM, ricordati lo SPF anche sul sottodominio)
Più sorgenti insieme (unico record)
v=spf1 include:_spf.google.com include:spf.protection.outlook.com include:sendgrid.net ip4:203.0.113.7 ~all
Note: ~all
= softfail (tollerante); -all
= fail duro. SPF ha max 10 lookup (include/a/mx/ptr). Se li superi, riduci i servizi o valuta un “flattening” controllato.
2) DKIM: cosa pubblicare
Per DKIM ti serve un selector. Il record si pubblica come <selector>._domainkey.example.com
.
TXT diretto (es. Google Workspace)
Host (Nome): google._domainkey
Tipo: TXT
Valore: v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A... (chiave pubblica)
CNAME → TXT (es. Microsoft 365, SendGrid)
Host: selector1._domainkey
Tipo: CNAME
Valore: selector1-xxxxx._domainkey.tenant.onmicrosoft.com.
Host: selector2._domainkey
Tipo: CNAME
Valore: selector2-xxxxx._domainkey.tenant.onmicrosoft.com.
Dopo la pubblicazione, attiva la firma DKIM nella console del provider (Google Admin / M365 Defender / SendGrid / Mailgun / SES).
3) DMARC: partire soft, arrivare a reject
Record TXT
su _dmarc.example.com. Parti in monitoraggio, poi aumenta l’enforcement.
Fase 1 — solo monitoraggio
Host: _dmarc
Tipo: TXT
Valore: v=DMARC1; p=none; rua=mailto:dmarc-aggregate@example.com; ruf=mailto:dmarc-forensic@example.com; fo=1; adkim=s; aspf=s
Fase 2 — quarantena graduale
v=DMARC1; p=quarantine; pct=50; rua=mailto:dmarc-aggregate@example.com; fo=1; adkim=s; aspf=s
Fase 3 — reject
v=DMARC1; p=reject; rua=mailto:dmarc-aggregate@example.com; fo=1; adkim=s; aspf=s
adkim/aspf=s
= allineamento “strict” (dominio esatto). rua
= report aggregati (XML compressi), ruf
= report forensics (molto dettagliati, non sempre inviati).
Checklist veloce
- SPF: un solo TXT, tutte le sorgenti, passa a
-all
quando sei sicuro. - DKIM: record corretti pubbl., firma attiva nel pannello.
- DMARC: parti da
p=none
conrua
, poiquarantine
→reject
. - Allineamento: fai in modo che il From: sia allineato al dominio firmato DKIM e/o autorizzato SPF.
Debug: errori comuni
- Doppio record SPF: uniscili in un solo
v=spf1 ...
. - SPF > 10 lookup: rimuovi include superflui o usa IP diretti (
ip4:
,ip6:
). - DKIM non valido: selector errato, CNAME non risolto o firma non “attivata” nel provider.
- DMARC senza report: controlla le mailbox in
rua/ruf
e i filtri che bloccano gli XML compressi.
Strumenti utili
- Email Cleaner & MX Check — pulizia e verifica DNS/MX di liste.
- Verificatori pubblici: MXToolbox / dmarcian / EasyDMARC (per analizzare i report
rua
).
Fonti rapide
Google Workspace (SPF: _spf.google.com
) • Microsoft 365 (SPF: spf.protection.outlook.com
) •
SendGrid (include:sendgrid.net
) • Mailgun (include:mailgun.org
) • Amazon SES (MAIL FROM + SPF).
DKIM/DMARC: guide ufficiali Google/Microsoft.