Appendix E. Mail Services (Servizi di posta)
Appendix E. Mail Services (Servizi di posta)
Questa appendice discute le considerazioni di implementazione SPF per vari scenari di servizi di posta.
E.1 Web-Based Mail Services (Servizi di posta basati sul web)
E.1.1 Prospettiva del fornitore di servizi
Scenario: Fornire servizi di webmail (come Gmail, Yahoo Mail, Outlook.com)
Considerazioni SPF:
1. Gli utenti inviano e-mail da più domini
2. Tutte le e-mail vengono inviate tramite i server del fornitore di servizi
3. Record SPF appropriati richiesti
Esempio di configurazione:
# Dominio principale del fornitore di servizi
mailprovider.com IN TXT "v=spf1 ip4:203.0.113.0/24 ip4:198.51.100.0/24 -all"
# Supporto per domini personalizzati
# Gli utenti devono includere il fornitore di servizi nel loro dominio
user-domain.com IN TXT "v=spf1 include:_spf.mailprovider.com -all"
_spf.mailprovider.com IN TXT "v=spf1 ip4:203.0.113.0/24 ip4:198.51.100.0/24 -all"
E.1.2 Configurazione dei domini personalizzati
Requisito dell'utente: Utilizzare un dominio personalizzato per inviare e-mail tramite il servizio di webmail
Passaggi di configurazione:
- Verificare la proprietà del dominio
Il fornitore di servizi richiede l'aggiunta di un record di verifica:
_verification.user-domain.com IN TXT "provider-verification-code"
- Configurare SPF
user-domain.com IN TXT "v=spf1 include:_spf.mailprovider.com -all"
- Configurare DKIM
# Il fornitore di servizi fornisce la chiave pubblica DKIM
selector._domainkey.user-domain.com IN TXT "v=DKIM1; k=rsa; p=MIGfMA0..."
- Configurare DMARC
_dmarc.user-domain.com IN TXT "v=DMARC1; p=quarantine; rua=mailto:[email protected]"
E.2 Shared Hosting Services (Servizi di hosting condiviso)
E.2.1 Sfide
Problema: Più clienti condividono lo stesso indirizzo IP
hosting-provider.com: 203.0.113.10
customer1.com: Ospitato su 203.0.113.10
customer2.com: Ospitato su 203.0.113.10
customer3.com: Ospitato su 203.0.113.10
Requisito SPF: Ogni dominio cliente deve autorizzare l'IP condiviso
E.2.2 Soluzioni
Soluzione 1: Inclusione SPF unificata
# Il fornitore di hosting fornisce
_spf.hosting-provider.com IN TXT "v=spf1 ip4:203.0.113.0/24 -all"
# Configurazione del cliente
customer1.com IN TXT "v=spf1 include:_spf.hosting-provider.com -all"
customer2.com IN TXT "v=spf1 include:_spf.hosting-provider.com -all"
customer3.com IN TXT "v=spf1 include:_spf.hosting-provider.com -all"
Soluzione 2: Autorizzazione IP diretta
# Ogni cliente configura indipendentemente
customer1.com IN TXT "v=spf1 ip4:203.0.113.10 -all"
customer2.com IN TXT "v=spf1 ip4:203.0.113.10 -all"
Vantaggi: Semplice, nessuna dipendenza Svantaggi: In caso di cambio IP, tutti i clienti devono aggiornare
Soluzione 3: IP dedicato (consigliato per i grandi clienti)
# Assegnare IP dedicato ai clienti importanti
important-customer.com IN TXT "v=spf1 ip4:203.0.113.50 -all"
E.2.3 Best practice
I fornitori di hosting dovrebbero:
1. Fornire documentazione chiara sulla configurazione SPF
2. Generare automaticamente record SPF (tramite pannello di controllo)
3. Informare i clienti delle modifiche all'indirizzo IP
4. Fornire strumenti di validazione SPF
I clienti dovrebbero:
1. Utilizzare il metodo include per fare riferimento all'SPF del fornitore di hosting
2. Validare regolarmente i record SPF
3. Monitorare la consegnabilità delle e-mail
E.3 Enterprise Mail Systems (Sistemi di posta aziendali)
E.3.1 Ambiente complesso
Scenario aziendale tipico:
- Più data center
- Più server di posta in uscita
- Servizi di posta di terze parti (marketing, notifiche, ecc.)
- Server di uffici locali
- Integrazione di servizi cloud
Sfide di configurazione SPF:
1. Limite di query DNS (10 volte)
2. Limite di dimensione del record (512 byte)
3. Più dipartimenti/unità aziendali
4. Frequenti modifiche all'infrastruttura
E.3.2 Architettura SPF aziendale
Progettazione gerarchica:
# Dominio principale
company.com IN TXT "v=spf1 include:_spf-internal.company.com include:_spf-external.company.com -all"
# Server interni
_spf-internal.company.com IN TXT "v=spf1 ip4:10.0.0.0/8 ip4:203.0.113.0/24 -all"
# Servizi esterni
_spf-external.company.com IN TXT "v=spf1 include:_spf.salesforce.com include:sendgrid.net include:mailchimp.com -all"
# Sottodomini dipartimentali
marketing.company.com IN TXT "v=spf1 include:_spf-marketing.company.com -all"
_spf-marketing.company.com IN TXT "v=spf1 include:sendgrid.net include:mailchimp.com -all"
Gestione degli intervalli IP:
# Data center A
_spf-dc-a.company.com IN TXT "v=spf1 ip4:203.0.113.0/25 -all"
# Data center B
_spf-dc-b.company.com IN TXT "v=spf1 ip4:198.51.100.0/25 -all"
# Aggregazione
_spf-datacenters.company.com IN TXT "v=spf1 include:_spf-dc-a.company.com include:_spf-dc-b.company.com -all"
E.3.3 Strategia di appiattimento SPF
Problema: Superamento del limite di 10 query DNS
Soluzione: Appiattimento regolare
# Script di automazione
def flatten_spf_includes():
"""
Interrogare regolarmente tutti gli IP di dominio inclusi
Generare un record SPF appiattito
"""
includes = [
'_spf.salesforce.com',
'sendgrid.net',
'mailchimp.com'
]
ips = []
for domain in includes:
# Analizzare il record SPF ed estrarre gli IP
ips.extend(resolve_spf_ips(domain))
# Generare un nuovo record SPF
spf_record = f"v=spf1 {' '.join([f'ip4:{ip}' for ip in ips])} -all"
# Aggiornare DNS (tramite API)
update_dns_record('_spf-flattened.company.com', spf_record)
# Eseguire settimanalmente
Nota: Dopo l'appiattimento, aggiornare regolarmente poiché gli IP di terze parti possono cambiare
E.4 Email Marketing Services (Servizi di email marketing)
E.4.1 Configurazione del servizio
Servizi comuni:
- SendGrid
- Mailchimp
- Amazon SES
- Mailgun
Esempi di configurazione SPF:
SendGrid:
company.com IN TXT "v=spf1 include:sendgrid.net -all"
Mailchimp:
company.com IN TXT "v=spf1 include:servers.mcsv.net -all"
Amazon SES:
company.com IN TXT "v=spf1 include:amazonses.com -all"
Uso combinato:
company.com IN TXT "v=spf1 mx include:sendgrid.net include:servers.mcsv.net -all"
E.4.2 Strategia di sottodominio
Best practice: Utilizzare un sottodominio dedicato per le e-mail di marketing
# Dominio principale (per e-mail aziendali importanti)
company.com IN TXT "v=spf1 mx -all"
# Sottodominio marketing
marketing.company.com IN TXT "v=spf1 include:sendgrid.net -all"
# Sottodominio notifiche
notifications.company.com IN TXT "v=spf1 include:amazonses.com -all"
Vantaggi:
1. Separazione della reputazione (le e-mail di marketing non influenzano il dominio principale)
2. Gestione più facile dei record SPF
3. Migliore monitoraggio e reporting
4. Conforme alle best practice DMARC
E.4.3 Configurazione DKIM
Combinato con SPF:
# SPF
marketing.company.com IN TXT "v=spf1 include:sendgrid.net -all"
# DKIM (fornito da SendGrid)
s1._domainkey.marketing.company.com IN CNAME s1.domainkey.u12345.wl.sendgrid.net
s2._domainkey.marketing.company.com IN CNAME s2.domainkey.u12345.wl.sendgrid.net
# DMARC
_dmarc.marketing.company.com IN TXT "v=DMARC1; p=quarantine; pct=100; rua=mailto:[email protected]"
E.5 Transactional Email Services (Servizi di e-mail transazionali)
E.5.1 Scenario
E-mail transazionali:
- Conferma di registrazione
- Reimpostazione password
- Notifiche ordini
- Fatture e ricevute
Fornitori di servizi:
- Amazon SES
- SendGrid
- Mailgun
- Postmark
E.5.2 Configurazione
Utilizzare un sottodominio dedicato:
# Sottodominio e-mail transazionali
transactional.company.com IN TXT "v=spf1 include:_spf.mailgun.org -all"
# DKIM
smtp._domainkey.transactional.company.com IN TXT "v=DKIM1; k=rsa; p=..."
Configurazione dell'applicazione:
# Esempio Django
EMAIL_HOST = 'smtp.mailgun.org'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_FROM = '[email protected]'
# Inviare un'e-mail
send_mail(
subject='Password Reset',
message='Click here to reset...',
from_email='[email protected]',
recipient_list=['[email protected]']
)
E.5.3 Monitoraggio
Metriche chiave:
- Tasso di consegna e-mail
- Tasso di rimbalzo
- Tasso di successo SPF
- Tasso di successo DKIM
- Tasso di allineamento DMARC
- Tasso di reclami
Impostazioni di avviso:
if delivery_rate < 95%:
alert("Delivery rate dropped below 95%")
if spf_pass_rate < 98%:
alert("SPF configuration issue detected")
E.6 Mobile and IoT Devices (Dispositivi mobili e IoT)
E.6.1 Sfide
Dispositivi mobili:
- Indirizzi IP dinamici
- Invio tramite reti degli operatori
- Non possono essere elencati in SPF
Dispositivi IoT:
- Grande numero di dispositivi
- Distribuiti su reti diverse
- Invio di e-mail diretto
E.6.2 Soluzioni
Soluzione 1: Utilizzare un relay SMTP
Dispositivo → Relay SMTP → Destinatario
Configurazione:
- Il dispositivo si connette al relay tramite autenticazione
- Server relay autorizzato nel record SPF
- Il relay aggiunge una firma DKIM
Configurazione SPF:
iot-devices.company.com IN TXT "v=spf1 mx include:_spf-relay.company.com -all"
_spf-relay.company.com IN TXT "v=spf1 ip4:203.0.113.50 -all"
Soluzione 2: Invio tramite API
I dispositivi inviano e-mail tramite API HTTP:
- Utilizzare un servizio di terze parti (come API SendGrid)
- Coperto dal record SPF del fornitore di servizi
- Nessun invio SMTP diretto dal dispositivo richiesto
E.7 Best Practices Summary (Riepilogo delle best practice)
E.7.1 Raccomandazioni generali
1. Utilizzare sottodomini per separare diversi tipi di e-mail
2. Implementare la tripla protezione SPF + DKIM + DMARC
3. Verificare e aggiornare regolarmente i record SPF
4. Monitorare i limiti di query DNS
5. Utilizzare include invece di elencare direttamente tutti gli IP
6. Utilizzare IP dedicati per servizi critici
7. Implementare il monitoraggio dell'autenticazione e-mail
8. Stabilire un processo di risposta agli incidenti
E.7.2 Checklist di configurazione
Verificare prima della pubblicazione:
□ Sintassi del record SPF corretta
□ Numero di query DNS ≤ 10
□ Dimensione del record < 512 byte
□ Tutti i server di invio autorizzati
□ Utilizzare qualificatori appropriati (-all o ~all)
□ DKIM configurato
□ Politica DMARC pubblicata
□ E-mail di test inviate e verificate
Monitoraggio continuo:
□ Verificare i rapporti DMARC settimanalmente
□ Monitorare la consegnabilità delle e-mail
□ Tracciare gli errori SPF/DKIM
□ Verificare le nuove fonti di invio
□ Aggiornare le modifiche dei servizi di terze parti