Capita spesso di vedere un messaggio con spf=pass e dkim=pass nelle intestazioni e, subito dopo, dmarc=fail. Sembra una contraddizione, ma non lo è. DMARC non si limita a chiedere se SPF e DKIM hanno funzionato: chiede se hanno funzionato per il dominio giusto. Questo concetto si chiama allineamento ed è la parte di DMARC che chi configura la posta capisce per ultima.
I tre domini di un'email
Un messaggio contiene almeno tre domini che possono essere diversi tra loro.
- Il dominio del From (RFC5322.From): quello che il destinatario vede nel client di posta. È l'identità che DMARC vuole proteggere.
- Il dominio del Return-Path, detto anche envelope sender o MAIL FROM: l'indirizzo a cui tornano i bounce. Su di esso viene valutato SPF.
- Il dominio della firma DKIM, cioè il valore
d=dell'intestazioneDKIM-Signature.
SPF verifica che il server che ha consegnato il messaggio sia autorizzato dal dominio del Return-Path. DKIM verifica che la firma sia valida per il dominio d=. Nessuno dei due, da solo, dice nulla sul From. È qui che interviene DMARC.
La regola di DMARC
Un messaggio supera DMARC se almeno uno di questi due controlli è vero:
- SPF è in pass e il dominio del Return-Path è allineato al From;
- DKIM è in pass e il dominio
d=è allineato al From.
Basta uno dei due. Per questo un SPF rotto non è grave se DKIM è allineato, e viceversa.
Un esempio concreto
Un'azienda usa una piattaforma esterna per le newsletter. Il messaggio arriva con queste caratteristiche:
From: Notizie <news@example.com>
Return-Path: <bounce-8812@mailer.example.net>
DKIM-Signature: v=1; d=mailer.example.net; s=k1; ...
SPF passa, perché il server della piattaforma è autorizzato da mailer.example.net. DKIM passa, perché la firma della piattaforma è valida. Ma entrambi i domini sono diversi da example.com: nessuno è allineato, DMARC fallisce. Con una policy p=reject il messaggio viene rifiutato.
La soluzione è configurare la piattaforma perché firmi con d=example.com (pubblicando la sua chiave sotto un selettore del tuo dominio) o usi un Return-Path come bounce.example.com.
Rilassato o stretto
DMARC prevede due modalità di allineamento, configurabili separatamente per SPF e DKIM con i tag aspf= e adkim=.
| Modalità | Valore | Quando i domini sono allineati |
|---|---|---|
| Rilassato | r (predefinito) |
appartengono allo stesso dominio organizzativo |
| Stretto | s |
coincidono esattamente |
Il dominio organizzativo è, semplificando, il dominio registrato: per news.example.com è example.com. Il calcolo si basa su un elenco pubblico dei suffissi di dominio, così che per un nome come example.co.uk il dominio organizzativo sia correttamente example.co.uk e non co.uk.
Con l'allineamento rilassato, una firma DKIM con d=mail.example.com è allineata a un From info@example.com. Con l'allineamento stretto, no.
Quale scegliere
Per quasi tutti i domini il rilassato è la scelta giusta. Permette di delegare a ogni servizio un sottodominio di bounce o di firma senza perdere l'allineamento, e la protezione resta solida: un attaccante dovrebbe comunque controllare un sottodominio del tuo dominio.
Lo stretto ha senso in casi particolari, per esempio quando alcuni sottodomini sono gestiti da terzi di cui non ti fidi pienamente: se un fornitore controlla promo.example.com, con l'allineamento rilassato potrebbe firmare messaggi con From example.com. Con lo stretto non può.
_dmarc.example.com. TXT "v=DMARC1; p=reject; adkim=s; aspf=r; rua=mailto:dmarc@example.com"
Come verificare l'allineamento
L'intestazione Authentication-Results aggiunta dal destinatario riporta tutti i domini coinvolti:
Authentication-Results: mx.example.org;
dkim=pass header.d=example.com header.s=s1;
spf=pass smtp.mailfrom=bounce.example.com;
dmarc=pass header.from=example.com
Si confrontano header.from con header.d e con il dominio di smtp.mailfrom. Se almeno uno dei due coincide o, in modalità rilassata, condivide il dominio organizzativo, l'allineamento è a posto.
Errori ricorrenti
- Considerare sufficiente «SPF pass» mostrato dal pannello del fornitore: spesso è un pass sul dominio del fornitore.
- Passare ad
adkim=ssenza verificare che tutte le firme usino esattamente il dominio del From. - Dimenticare i sottodomini del From: se invii da
info@shop.example.com, è quel dominio che deve essere allineato.
In sintesi
- Un'email ha almeno tre domini: From, Return-Path e
d=della firma DKIM. - DMARC passa se SPF o DKIM sono in pass e il loro dominio è allineato al From.
- L'allineamento rilassato accetta lo stesso dominio organizzativo, quello stretto richiede l'identità esatta.
- Il rilassato è adatto quasi sempre; lo stretto serve quando non ti fidi di chi gestisce i sottodomini.
- L'intestazione
Authentication-Resultsmostra tutti i domini da confrontare.