DKIM fail: tutte le cause e come correggerle
Di CaptainDNS
Pubblicato il 19 febbraio 2026

- Un risultato
dkim=failsignifica che la firma DKIM dell'email non è stata verificata dal server di ricezione - Le 3 cause più frequenti: body hash alterato (contenuto modificato), chiave pubblica non trovata nel DNS, firma scaduta (termine
x=superato) - L'inoltro email rompe quasi sempre la firma DKIM, è un comportamento atteso che solo ARC può compensare
- Usa il comando
dig TXT selettore._domainkey.captaindns.comper verificare che la tua chiave pubblica sia correttamente pubblicata - Abbina sempre DKIM a DMARC e SPF per un'autenticazione completa
Apri gli header di un'email e trovi dkim=fail. Il messaggio è stato inviato correttamente, la tua configurazione sembrava corretta, eppure la verifica DKIM fallisce. Questo scenario è frequente e le cause sono molteplici.
Questa guida analizza ogni causa di un errore DKIM, spiega come diagnosticarla e fornisce la soluzione precisa da applicare. Che il problema venga dal DNS, dalla firma, dall'inoltro o dall'allineamento DMARC, saprai esattamente cosa correggere.
Come leggere un risultato DKIM negli header email?
Ogni email ricevuta contiene un header Authentication-Results aggiunto dal server di ricezione. È lì che trovi il verdetto DKIM.
I verdetti possibili
| Verdetto | Significato |
|---|---|
dkim=pass | Firma verificata con successo |
dkim=fail | La firma esiste ma la verifica è fallita |
dkim=none | Nessuna firma DKIM trovata nel messaggio |
dkim=neutral | Firma presente ma il verificatore non ha potuto trarre conclusioni |
dkim=temperror | Errore temporaneo (timeout DNS, server non disponibile) |
dkim=permerror | Errore permanente (sintassi DNS non valida, chiave malformata) |
Esempio di header con errore
Authentication-Results: mx.google.com;
dkim=fail (body hash did not verify) header.d=captaindns.com header.s=google header.b=abc12345;
spf=pass smtp.mailfrom=captaindns.com;
dmarc=fail
Il testo tra parentesi (body hash did not verify) indica il motivo preciso dell'errore. È il tuo punto di partenza per la diagnosi.
Le 7 cause di un errore DKIM

Causa 1: body hash non verificato
Messaggio: body hash did not verify
È l'errore più comune. Il server di invio calcola un hash del contenuto dell'email e lo include nella firma (tag bh=). Il server di ricezione ricalcola questo hash. Se i due non corrispondono, la verifica fallisce.
Cause frequenti:
- Un relay intermedio ha modificato il contenuto (aggiunta di footer, riscrittura URL, antivirus)
- Il server di mailing aggiunge un pixel di tracking dopo la firma
- Un proxy email o un DLP (Data Loss Prevention) altera il corpo del messaggio
Diagnosi:
# Verificare che il record DKIM sia correttamente pubblicato
dig TXT google._domainkey.captaindns.com +short
Soluzione: identifica il servizio che modifica il contenuto dopo la firma. Configuralo per agire prima della firma DKIM, oppure escludi le modifiche dal corpo firmato.
Causa 2: chiave pubblica non trovata
Messaggio: key not found o no key for signature
Il server di ricezione non trova il record DNS selettore._domainkey.dominio. Senza chiave pubblica, è impossibile verificare la firma.
Cause frequenti:
- Il selettore dichiarato nella firma (
s=) non corrisponde a nessun record DNS - Il record è stato eliminato per errore
- Il CNAME verso il provider (Google, Microsoft) non è configurato
- La propagazione DNS non è terminata
Diagnosi:
# Sostituisci "selettore" con il valore del campo s= della firma
dig TXT selettore._domainkey.captaindns.com +short
Se il comando non restituisce nulla, il record è assente.
Soluzione: pubblica (o ripubblica) il record DNS TXT o CNAME corrispondente al selettore. Attendi la propagazione DNS (fino a 48h a seconda del TTL).
Causa 3: firma scaduta
Messaggio: signature expired
Il tag x= della firma DKIM fissa un timestamp di scadenza. Se il server di ricezione verifica la firma dopo questa data, la verifica fallisce.
Cause frequenti:
- L'email è rimasta in coda troppo a lungo (greylisting, server di ricezione lento)
- Il valore
x=è troppo breve (es: 1 ora invece di 7 giorni) - Sfasamento di orologio tra i server
Soluzione: aumenta la durata di validità della firma. La maggior parte dei provider usa 7 giorni. Se controlli il server di invio, verifica che x= lasci un margine sufficiente (minimo 72 ore consigliato).
Causa 4: errore di canonicalizzazione
Messaggio: bad signature o signature verification failed
La canonicalizzazione definisce come il server normalizza il messaggio prima di verificare la firma. Esistono due modalità: simple e relaxed. Se l'header DKIM dichiara c=simple/simple ma un relay modifica spazi o maiuscole/minuscole degli header, la verifica fallisce.
Diagnosi: nella firma DKIM, cerca il tag c=. Se il valore è simple/simple, è probabilmente la causa.
Soluzione: passa a c=relaxed/relaxed. Questa modalità tollera le modifiche minori (spazi, maiuscole/minuscole) che i relay email effettuano comunemente.
Causa 5: chiave troppo corta
Messaggio: key too short o insecure key
Dal 2024, Google e Yahoo rifiutano le chiavi RSA da 512 e 768 bit. La dimensione minima accettata è 1024 bit, e 2048 bit è raccomandata.
Diagnosi:
# Recuperare la chiave e verificarne la dimensione
dig TXT google._domainkey.captaindns.com +short
# Copiare il valore p= e decodificare in Base64 per contare i bit
Soluzione: genera una nuova coppia di chiavi RSA 2048 bit (o Ed25519) e pubblica la nuova chiave pubblica nel DNS. Aggiorna la configurazione del tuo server di invio con la nuova chiave privata.
Causa 6: inoltro email (forwarding)
L'inoltro email è la causa più difficile da risolvere. Quando un server intermedio ritrasmette un messaggio, può modificarne il contenuto (aggiunta di header, riscrittura dell'indirizzo di ritorno). La firma DKIM originale risulta quindi non valida.
Casi tipici:
- Inoltro automatico Gmail/Outlook verso un'altra casella di posta
- Mailing list che aggiungono un footer
- Alias email che inoltrano verso un altro dominio
Soluzione: non esiste una soluzione universale. Il protocollo ARC (Authenticated Received Chain, RFC 8617) è stato progettato per questo caso: ogni server intermedio aggiunge la propria firma ARC, formando una catena di fiducia. Gmail e Microsoft supportano ARC. Lato mittente, non puoi impedire la rottura della firma durante l'inoltro.
Causa 7: difetto di allineamento DMARC
Messaggio: dmarc=fail (mentre dkim=pass)
Questo caso è particolare. La firma DKIM è tecnicamente valida (dkim=pass), ma DMARC fallisce perché il dominio d= della firma non corrisponde al dominio del From:. È un problema di allineamento, non di firma.

Esempio:
From: contact@captaindns.com- Firma DKIM:
d=sendgrid.net(il provider firma con il proprio dominio)
DKIM passa, ma l'allineamento fallisce perché sendgrid.net ≠ captaindns.com.
Soluzione: configura il tuo provider di invio per firmare con il tuo dominio (d=captaindns.com). Nella maggior parte dei provider (SendGrid, Mailchimp, Brevo), questo avviene creando un CNAME selettore._domainkey.captaindns.com che punta alla loro infrastruttura.
Diagnosi rapida: tabella riepilogativa
| Sintomo | Causa probabile | Verifica | Soluzione |
|---|---|---|---|
body hash did not verify | Contenuto modificato dopo la firma | Identificare il relay che modifica | Firmare dopo le modifiche |
key not found | Record DNS assente | dig TXT s._domainkey.dominio | Pubblicare il record |
signature expired | Termine x= superato | Confrontare x= con l'ora di verifica | Aumentare la durata |
bad signature | Canonicalizzazione troppo restrittiva | Verificare c= nella firma | Passare a relaxed/relaxed |
key too short | Chiave RSA <1024 bit | Decodificare la chiave pubblica | Rigenerare a 2048 bit |
dkim=pass + dmarc=fail | Allineamento dominio | Confrontare d= e From: | Firmare con il tuo dominio |
Differenza tra dkim=fail, dkim=none e dkim=temperror
Questi tre verdetti segnalano situazioni molto diverse.
dkim=fail: una firma DKIM esiste nel messaggio, ma la sua verifica è fallita. È un problema attivo da correggere.
dkim=none: nessuna firma DKIM è presente nel messaggio. Il server di invio non firma le email. Configura DKIM sul tuo server o sul tuo provider.
dkim=temperror: il server di ricezione non ha potuto verificare la firma a causa di un errore temporaneo (timeout DNS, server sovraccarico). La verifica verrà ritentata. Se il problema persiste, verifica che i tuoi server DNS rispondano rapidamente (TTL basso, nessun SERVFAIL).
Piano d'azione consigliato
- Identifica il verdetto esatto: apri gli header email e rileva il testo tra parentesi dopo
dkim=fail - Verifica il tuo record DNS: avvia un'analisi con il verificatore DKIM per confermare che la chiave pubblica sia correttamente pubblicata e sintatticamente valida
- Identifica i tuoi selettori attivi: usa il DKIM Selector Finder per scansionare i selettori conosciuti sul tuo dominio
- Correggi la causa identificata: applica la soluzione corrispondente al tuo caso (vedi tabella sopra)
- Monitora i risultati: dopo la correzione, invia email di test e verifica che
dkim=passappaia negli header
FAQ
Cosa significa dkim=fail negli header email?
Il verdetto dkim=fail indica che il messaggio contiene una firma DKIM, ma il server di ricezione non è riuscito a verificarla. Il testo tra parentesi (es: body hash did not verify) precisa il motivo dell'errore. Questo non significa necessariamente che l'email sia fraudolenta: una modifica legittima del contenuto in transito può causare questo errore.
Perché il mio DKIM fallisce anche se il record DNS è corretto?
Se il tuo record DNS è valido ma DKIM fallisce, il problema viene probabilmente dal contenuto del messaggio. Un relay intermedio (antivirus, DLP, proxy) potrebbe aver modificato il corpo dopo la firma. Verifica anche che il selettore nella firma (s=) corrisponda a quello pubblicato nel DNS.
Qual è la causa del messaggio 'body hash did not verify'?
Questo messaggio significa che l'hash del contenuto calcolato dal server di ricezione non corrisponde all'hash dichiarato nella firma (tag bh=). Il corpo del messaggio è stato modificato tra la firma e la verifica. Le cause più frequenti sono i relay che aggiungono un footer, i sistemi antivirus e gli strumenti di riscrittura URL.
Un'email può essere recapitata nonostante un errore DKIM?
Sì. DKIM da solo non determina la consegna. È la policy DMARC del dominio a decidere: con p=none, l'email viene recapitata anche se DKIM fallisce. Con p=reject, l'email viene rifiutata solo se anche SPF fallisce (DMARC richiede che almeno uno dei due passi). Molti provider recapitano il messaggio nella cartella spam piuttosto che rifiutarlo.
Qual è la differenza tra dkim=fail e dkim=none?
dkim=fail significa che una firma esiste ma la sua verifica è fallita. dkim=none significa che nessuna firma DKIM è presente nel messaggio. Il primo è un problema di configurazione, il secondo indica che DKIM non è affatto attivato sul server di invio.
L'inoltro email rompe sempre la firma DKIM?
Nella maggior parte dei casi, sì. L'inoltro modifica spesso il contenuto (aggiunta di header, riscrittura di indirizzi), invalidando la firma DKIM originale. Il protocollo ARC (RFC 8617) è stato progettato per risolvere questo problema creando una catena di fiducia tra i server intermedi. Gmail e Microsoft supportano ARC.
Come verificare che la correzione DKIM abbia funzionato?
Dopo aver applicato la soluzione, invia un'email di test verso un indirizzo Gmail o Outlook. Apri gli header del messaggio ricevuto e cerca Authentication-Results. Se vedi dkim=pass, la correzione è effettiva. Puoi anche usare uno strumento di test online che mostra i risultati di autenticazione dettagliati.
📖 Glossario
- DKIM (DomainKeys Identified Mail): protocollo di autenticazione email tramite firma crittografica, che verifica l'integrità dei messaggi in uscita.
- Body hash: impronta SHA-256 del corpo dell'email, inclusa nella firma DKIM (tag
bh=). - Selettore: identificativo testuale che forma l'indirizzo DNS della chiave pubblica DKIM (
selettore._domainkey.dominio). - Canonicalizzazione: normalizzazione del messaggio (spazi, maiuscole/minuscole) prima del calcolo della firma. Modalità:
simpleorelaxed. - ARC (Authenticated Received Chain): protocollo RFC 8617 che preserva i risultati di autenticazione durante l'inoltro delle email.
- Allineamento DKIM: verifica da parte di DMARC che il dominio
d=della firma corrisponda al dominio delFrom:.
Genera le tue chiavi DKIM in pochi secondi: usa il Generatore DKIM per creare una coppia di chiavi RSA 2048 o Ed25519 con il record DNS pronto da pubblicare.
📚 Guide DKIM correlate
- Come trovare il proprio selettore DKIM: 4 metodi: header email, DNS, console di amministrazione e scansione automatica.
- Cos'è un record DKIM? La guida completa: funzionamento, tag DNS, RSA vs Ed25519 e rotazione delle chiavi.


