Appendix A. Extended Examples (Esempi estesi)
Appendix A. Extended Examples (Esempi estesi)
Questa appendice fornisce esempi estesi di record SPF, dimostrando vari scenari di configurazione e migliori pratiche.
A.1 Simple Examples (Esempi semplici)
A.1.1 Consentire solo un singolo indirizzo IP
example.com. IN TXT "v=spf1 ip4:192.0.2.1 -all"
Spiegazione: Solo l'indirizzo IP 192.0.2.1 è autorizzato a inviare e-mail per conto di example.com. Tutti gli altri indirizzi IP porteranno a un risultato "fail".
A.1.2 Utilizzo dei record MX
example.com. IN TXT "v=spf1 mx -all"
Spiegazione: Consente ai server di posta elencati nei record MX di example.com di inviare e-mail. Questa è una configurazione comune perché si adatta automaticamente alle modifiche dei record MX.
A.1.3 Utilizzo dei record A
example.com. IN TXT "v=spf1 a -all"
Spiegazione: Consente agli indirizzi IP nel record A (o AAAA per IPv6) di example.com di inviare e-mail.
A.1.4 Combinazione di più meccanismi
example.com. IN TXT "v=spf1 mx a:mail.example.com ip4:192.0.2.0/24 -all"
Spiegazione: Consente e-mail dalle seguenti fonti:
- Server MX di example.com
- Record A di mail.example.com
- Qualsiasi IP nella rete 192.0.2.0/24
A.1.5 Politica di soft-fail
example.com. IN TXT "v=spf1 mx a ~all"
Spiegazione: Utilizza soft-fail (~all) invece di hard-fail (-all). Questo è utile durante la fase di test o migrazione. I destinatari possono accettare le e-mail ma contrassegnarle come sospette.
A.2 Multiple Domain Example (Esempio multi-dominio)
Per le organizzazioni con più domini che utilizzano la stessa infrastruttura di posta:
example.com. IN TXT "v=spf1 mx -all"
example.org. IN TXT "v=spf1 redirect=_spf.example.com"
example.net. IN TXT "v=spf1 redirect=_spf.example.com"
_spf.example.com. IN TXT "v=spf1 mx:example.com -all"
Spiegazione:
- example.com ha il proprio record SPF
- example.org ed example.net reindirizzano al record SPF condiviso
- _spf.example.com contiene la politica effettiva
Vantaggi:
- Gestione centralizzata della configurazione dei server di posta
- Un singolo aggiornamento influenza più domini
- Manutenzione DNS ridotta
A.3 DNS Blacklist (DNSBL) Style Example (Esempio di stile blacklist DNS)
Utilizzo del meccanismo exists per implementare funzionalità simili a DNSBL:
example.com. IN TXT "v=spf1 exists:%\{ir}.%\{l1r+-}._spf.%\{d} -all"
Spiegazione:
%\{ir}: Indirizzo IP invertito (ad esempio, 192.0.2.1 diventa 1.2.0.192)%\{l1r+-}: Prima parte del local-part del mittente, invertita, "." e "+" sostituiti da "-"%\{d}: Nome di dominio
Esempio di espansione:
Se il mittente è [email protected] che invia da 192.0.2.1:
- La macro si espande a:
1.2.0.192.user._spf.example.com
Quindi questo nome di dominio viene interrogato per i record A. Se esiste, la verifica SPF ha successo.
Casi d'uso:
- Controllo granulare basato sull'utente
- Integrazione con database o sistemi personalizzati
- Decisioni di autorizzazione dinamiche
A.4 Multiple Requirements Example (Esempio di requisiti multipli)
Configurazione complessa che combina più meccanismi e modificatori:
example.com. IN TXT "v=spf1 ip4:192.0.2.0/24 ip4:198.51.100.0/24 include:_spf-servers.example.com include:_spf.google.com a:outbound.example.com mx ~all"
Spiegazione:
ip4:192.0.2.0/24: Rete server di posta interniip4:198.51.100.0/24: Rete data center di backupinclude:_spf-servers.example.com: Includere lista server aggiuntiviinclude:_spf.google.com: Utilizzare Google Workspacea:outbound.example.com: Server in uscita specificomx: Includere server dei record MX~all: Soft-fail per tutti gli altri casi
Progettazione gerarchica:
_spf-servers.example.com. IN TXT "v=spf1 ip4:203.0.113.0/24 ip4:198.51.100.128/25 -all"
Questo consente di dividere i grandi record SPF in parti più gestibili.
A.5 Esempi di configurazione sottodomini
A.5.1 Sottodomini con politiche diverse
example.com. IN TXT "v=spf1 mx -all"
mail.example.com. IN TXT "v=spf1 a -all"
shop.example.com. IN TXT "v=spf1 include:shopify.com -all"
Spiegazione:
- Il dominio principale utilizza i record MX
- Il sottodominio mail utilizza solo il suo record A
- Il sottodominio shop utilizza un servizio di terze parti (Shopify)
A.5.2 Sottodomini che non inviano e-mail
noreply.example.com. IN TXT "v=spf1 -all"
static.example.com. IN TXT "v=spf1 -all"
Spiegazione: Dichiara esplicitamente che questi sottodomini non inviano e-mail, per prevenire la contraffazione.
A.6 Esempi di integrazione servizi di terze parti
A.6.1 Utilizzo di più fornitori di servizi di posta elettronica
example.com. IN TXT "v=spf1 include:_spf.google.com include:spf.protection.outlook.com include:sendgrid.net -all"
Spiegazione:
- Google Workspace per e-mail dei dipendenti
- Microsoft 365 per i partner
- SendGrid per e-mail di marketing
A.6.2 Verifica dei limiti delle query DNS
L'esempio sopra utilizza 3 include, ognuno dei quali può attivare query aggiuntive. È necessario assicurarsi che il numero totale di query non superi 10.
Metodo di verifica:
# Verificare SPF di Google
dig _spf.google.com TXT
# Verificare SPF di Microsoft
dig spf.protection.outlook.com TXT
# Verificare SPF di SendGrid
dig sendgrid.net TXT
Calcolare il numero di meccanismi in ogni include, assicurandosi che il totale ≤ 10.
A.7 Esempi di configurazione errata (da evitare)
A.7.1 ❌ Record SPF multipli (errore)
example.com. IN TXT "v=spf1 mx -all"
example.com. IN TXT "v=spf1 a -all"
Problema: Questo porterà a "permerror". Un dominio può avere solo un record SPF.
Metodo corretto:
example.com. IN TXT "v=spf1 mx a -all"
A.7.2 ❌ -all mancante (non sicuro)
example.com. IN TXT "v=spf1 mx"
Problema: Nessuna politica predefinita esplicita, equivale a ?all (neutrale), nessun IP fallirà.
Metodo corretto:
example.com. IN TXT "v=spf1 mx -all"
A.7.3 ❌ Superamento del limite di query DNS
example.com. IN TXT "v=spf1 include:a include:b include:c include:d include:e include:f include:g include:h include:i include:j include:k -all"
Problema: 11 include superano il limite di 10 query, portando a "permerror".
Soluzione: Utilizzare l'appiattimento SPF o utilizzare direttamente i meccanismi ip4.
A.8 Esempio di configurazione IPv6
example.com. IN TXT "v=spf1 ip6:2001:db8::/32 ip4:192.0.2.0/24 mx -all"
Spiegazione: Supporta sia reti IPv6 che IPv4.
A.9 Esempio di stringa di spiegazione
example.com. IN TXT "v=spf1 mx -all exp=explain._spf.%\{d}"
explain._spf.example.com. IN TXT "E-mail da %\{i}, ma questo IP non è autorizzato da %\{d}. Contattare postmaster@%\{d}."
Spiegazione: Quando la verifica SPF fallisce, il destinatario può interrogare la stringa di spiegazione e mostrarla all'utente.
Dopo l'espansione macro (supponendo invio da 192.0.2.99):
"E-mail da 192.0.2.99, ma questo IP non è autorizzato da example.com. Contattare [email protected]."
A.10 Strategia di test e transizione
Fase 1: Modalità monitoraggio (2-4 settimane)
example.com. IN TXT "v=spf1 ?all"
Fase 2: Registrare fonti di invio effettive (2-4 settimane)
example.com. IN TXT "v=spf1 ip4:192.0.2.0/24 include:provider.com ?all"
Fase 3: Soft-fail (4-8 settimane)
example.com. IN TXT "v=spf1 ip4:192.0.2.0/24 include:provider.com ~all"
Fase 4: Modalità rigorosa (ambiente di produzione)
example.com. IN TXT "v=spf1 ip4:192.0.2.0/24 include:provider.com -all"
Raccomandazione: Monitorare i risultati della verifica SPF in ogni fase per assicurarsi che nessuna e-mail legittima venga bloccata.