Vai al contenuto principale

Cos'è un record DKIM? La guida completa

Di CaptainDNS
Pubblicato il 18 febbraio 2026

Schema del funzionamento di un record DKIM nel DNS
TL;DR
  • Un record DKIM è un record DNS TXT che pubblica la chiave pubblica per verificare la firma crittografica di un'email
  • Il server di invio firma ogni messaggio con la propria chiave privata, il server di ricezione verifica la firma tramite il DNS
  • I tag essenziali sono v=DKIM1 (versione), k=rsa o k=ed25519 (algoritmo) e p= (chiave pubblica codificata in Base64)
  • RSA 2048 bit è lo standard attuale, Ed25519 è più veloce ma non ancora supportato ovunque
  • DKIM da solo non protegge dallo spoofing: va abbinato a DMARC per verificare l'allineamento del dominio

Stai configurando l'autenticazione email del tuo dominio e ti imbatti in DKIM. Sai che è importante, ma i termini "firma crittografica", "selettore" e "chiave pubblica DNS" restano poco chiari. Questa guida ti spiega tutto.

DKIM (DomainKeys Identified Mail) è un protocollo di autenticazione email definito dalla RFC 6376. Permette al server di ricezione di verificare che il contenuto di un messaggio non sia stato alterato tra l'invio e la ricezione, e che il dominio indicato nel campo From: abbia effettivamente autorizzato quell'invio.

Questa guida copre il funzionamento completo: il ciclo di firma, la struttura del record DNS, i tag disponibili, la scelta tra RSA ed Ed25519, l'integrazione con DMARC e la rotazione delle chiavi. Che tu sia un amministratore di sistema, un responsabile marketing o uno sviluppatore, avrai tutte le informazioni per configurare e mantenere DKIM correttamente.

Cos'è DKIM? Il principio in 30 secondi

DKIM si basa su un meccanismo di crittografia asimmetrica (chiave pubblica/chiave privata). Il server di invio possiede una chiave privata che utilizza per firmare ogni email in uscita. La chiave pubblica corrispondente è pubblicata nel DNS sotto forma di record TXT, accessibile a qualsiasi server di ricezione.

Quando un'email arriva, il server di ricezione:

  1. Legge l'header DKIM-Signature per identificare il dominio (d=) e il selettore (s=)
  2. Costruisce la query DNS: <selettore>._domainkey.<dominio>
  3. Recupera la chiave pubblica dal record TXT
  4. Verifica che la firma corrisponda al contenuto del messaggio

Se la firma è valida, il messaggio è autenticato. In caso contrario, fallisce la verifica DKIM.

Come funziona DKIM: il ciclo completo

Fase 1: firma da parte del server di invio

Quando un utente invia un'email da captaindns.com, il server di invio esegue tre operazioni:

  1. Seleziona gli header da firmare: From, To, Subject, Date, Message-ID (definiti dal tag h=)
  2. Calcola un hash del corpo del messaggio (algoritmo SHA-256, memorizzato in bh=)
  3. Firma l'hash con la chiave privata RSA o Ed25519, poi aggiunge l'header DKIM-Signature al messaggio

Ecco un esempio di header DKIM-Signature:

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=captaindns.com; s=google; t=1739800000;
  h=from:to:subject:date:message-id;
  bh=2jUSOH9NhtVGCQWNr9BrIAPreKQjO6Sn7XIkfJVOzv8=;
  b=AuUoFEfDxTDkHlLXSZEpZj79LICEps6eda7W3deTVFOk...

Fase 2: verifica da parte del server di ricezione

Il server di ricezione estrae d=captaindns.com e s=google dall'header, poi interroga il DNS:

dig TXT google._domainkey.captaindns.com +short

Risultato:

"v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOC..."

Utilizza poi la chiave pubblica (p=) per verificare la firma (b=). Se l'hash ricalcolato corrisponde, la verifica è riuscita.

Schema del ciclo di firma e verifica DKIM

Anatomia di un record DKIM

Il record DKIM è pubblicato come record DNS TXT all'indirizzo <selettore>._domainkey.<dominio>.

Formato DNS completo

google._domainkey.captaindns.com  IN  TXT  "v=DKIM1; k=rsa; t=s; p=MIIBIjANBgkq..."

I tag obbligatori

TagFunzioneValoriEsempio
v=Versione del protocolloDKIM1 (unico valore valido)v=DKIM1
p=Chiave pubblica codificata in Base64Stringa Base64p=MIIBIjANBgkq...

Il tag p= è il cuore del record. Se è vuoto (p=), significa che la chiave è stata revocata. Il server di ricezione tratterà qualsiasi firma che utilizza quel selettore come non valida.

I tag opzionali

TagFunzioneValori possibiliDefault
k=Algoritmo della chiaversa, ed25519rsa
t=Flagy (test), s (strict)nessuno
h=Algoritmi di hash accettatisha256, sha1tutti
s=Tipo di servizioemail, ** (tutti)
n=Note leggibili da un umanoTesto liberonessuno

Dettaglio dei flag t=:

  • t=y: modalità test. I server di ricezione non devono penalizzare un fallimento DKIM. Utile durante il deploy iniziale.
  • t=s: modalità strict. Il dominio dell'header From: deve corrispondere esattamente al dominio d= della firma (nessun sottodominio).

Esempio completo spiegato

selector1._domainkey.captaindns.com  IN  TXT  "v=DKIM1; k=rsa; t=s; h=sha256; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA..."
ElementoSignificato
selector1._domainkey.captaindns.comPosizione DNS (selettore selector1, dominio captaindns.com)
v=DKIM1Protocollo DKIM versione 1
k=rsaChiave RSA
t=sModalità strict (nessun sottodominio)
h=sha256Accetta solo SHA-256
p=MIIBIj...Chiave pubblica RSA 2048 bit codificata in Base64

Anatomia di un record DKIM con tutti i tag

RSA vs Ed25519: quale chiave scegliere?

La RFC 8463 (2018) ha introdotto il supporto di Ed25519 come alternativa a RSA per DKIM.

CriterioRSA 2048RSA 4096Ed25519
Dimensione chiave pubblica~392 caratteri~736 caratteri~44 caratteri
Dimensione firma256 byte512 byte64 byte
Performance di verificaVeloceMediaMolto veloce
SicurezzaSolida (2030+)Molto solidaMolto solida
Supporto providerUniversaleUniversaleParziale (Google, Fastmail)
Compatibilità DNSOKPuò superare 255 byte TXTOK

Raccomandazioni

  • RSA 2048: scelta predefinita. Supportato da tutti i provider e server. Sufficiente per la sicurezza attuale.
  • RSA 4096: per le organizzazioni con requisiti di sicurezza elevati. Attenzione ai limiti di dimensione dei record TXT (può richiedere più stringhe da 255 byte).
  • Ed25519: consigliato in doppia firma (Ed25519 + RSA 2048) per la transizione. I server che non supportano Ed25519 ignoreranno la firma e utilizzeranno quella RSA.

Non utilizzare più RSA 1024 bit. Google, Microsoft e Yahoo considerano le chiavi da 1024 bit come deboli dal 2024.

DKIM e DMARC: il legame essenziale

DKIM autentica il contenuto di un messaggio, ma non verifica che il dominio indicato nel From: sia legittimo. Questo è il ruolo di DMARC.

Allineamento DKIM

DMARC verifica che il dominio d= della firma DKIM corrisponda al dominio del From:. Esistono due modalità:

ModalitàComportamentoEsempio
Relaxed (default)Il dominio d= può essere un sottodominio del From:d=mail.captaindns.com valido per From: contact@captaindns.com
StrictIl dominio d= deve corrispondere esattamente al From:d=captaindns.com obbligatorio per From: contact@captaindns.com

La modalità di allineamento DKIM si configura nel record DMARC tramite il tag adkim:

_dmarc.captaindns.com  IN  TXT  "v=DMARC1; p=reject; adkim=s; rua=mailto:dmarc@captaindns.com"

Perché DKIM da solo non basta?

Senza DMARC, un attaccante può inviare un'email con From: contact@captaindns.com firmando con il proprio dominio DKIM (d=attacker.com). La firma DKIM sarà valida, ma il destinatario vedrà un falso mittente. DMARC blocca questo scenario richiedendo l'allineamento tra il dominio From: e il dominio d=.

Rotazione delle chiavi DKIM: perché e come

Perché ruotare le chiavi?

Una chiave DKIM utilizzata troppo a lungo presenta dei rischi:

  • Compromissione: più una chiave è esposta, più è vulnerabile agli attacchi
  • Conformità: alcuni standard (PCI DSS, SOC 2) richiedono una rotazione regolare
  • Best practice: Google raccomanda una rotazione trimestrale

Frequenza consigliata

Dimensione chiaveFrequenza minimaRaccomandazione
RSA 1024ImmediatoMigrare a 2048 bit
RSA 2048Ogni 6 mesiOgni 3 mesi
RSA 4096Ogni 12 mesiOgni 6 mesi
Ed25519Ogni 12 mesiOgni 6 mesi

Procedura passo per passo

  1. Generare una nuova coppia di chiavi con un nuovo selettore (es.: s202602)
  2. Pubblicare la nuova chiave pubblica nel DNS: s202602._domainkey.captaindns.com
  3. Attendere la propagazione DNS (24-48 ore)
  4. Configurare il server di invio per utilizzare il nuovo selettore
  5. Verificare che le email in uscita siano firmate con il nuovo selettore
  6. Revocare la vecchia chiave pubblicando p= (vuoto) nel vecchio record DNS
  7. Eliminare il vecchio record dopo 30 giorni (il tempo necessario perché le email in transito vengano elaborate)

Errori comuni nei record DKIM

ErroreSintomoSoluzione
Chiave 1024 bitWarning da Google/YahooMigrare a RSA 2048 bit
Tag p= vuotoDKIM fail: key revokedRipubblicare la chiave pubblica o usare un nuovo selettore
Selettore non trovatoDKIM fail: no key for signatureVerificare il DNS, la propagazione e l'ortografia del selettore
Chiave pubblica troncataDKIM fail: bad RSA signatureVerificare che il record TXT non sia troncato (limite 255 byte per stringa)
v=DKIM1 assenteAlcuni server ignorano il recordIncludere sempre v=DKIM1 come primo tag
Header From non firmatoDMARC fallisce nonostante DKIM validoAggiungere from nel tag h= della firma
Modalità test dimenticatat=y resta attivo in produzioneRimuovere t=y una volta che DKIM è stato validato

Piano d'azione consigliato

  1. Verificare la situazione attuale: usa un DKIM Checker per analizzare i tuoi record DKIM attuali
  2. Inventariare i selettori: identifica tutti i selettori attivi sul tuo dominio con uno strumento di scoperta automatica
  3. Verificare la dimensione delle chiavi: qualsiasi chiave inferiore a 2048 bit deve essere sostituita
  4. Configurare DMARC: pubblica un record DMARC con adkim=r (relaxed) per iniziare, poi passa a strict (adkim=s) quando tutto è stabile
  5. Pianificare la rotazione: segna nel calendario una rotazione trimestrale delle chiavi DKIM

FAQ

Cos'è un record DKIM?

Un record DKIM è un record DNS di tipo TXT pubblicato all'indirizzo selettore._domainkey.dominio.com. Contiene la chiave pubblica che permette ai server di ricezione di verificare la firma crittografica aggiunta a ogni email in uscita. I tag essenziali sono v=DKIM1 (versione), k= (algoritmo) e p= (chiave pubblica in Base64).

Come funziona la firma DKIM?

Il server di invio calcola un hash SHA-256 degli header selezionati e del corpo del messaggio, poi firma questo hash con la propria chiave privata. La firma viene aggiunta nell'header DKIM-Signature. Il server di ricezione recupera la chiave pubblica tramite il DNS e verifica che la firma corrisponda al contenuto ricevuto.

Quali sono i tag di un record DKIM?

I tag obbligatori sono v=DKIM1 (versione) e p= (chiave pubblica). I tag opzionali includono k= (algoritmo, rsa di default), t= (flag: y per test, s per strict), h= (algoritmi di hash accettati), s= (tipo di servizio) e n= (note).

Qual è la differenza tra RSA ed Ed25519 per DKIM?

RSA 2048 è lo standard attuale, supportato da tutti i provider. Ed25519 produce firme più corte (64 byte vs 256) ed è più veloce, ma è supportato solo da alcuni provider (Google, Fastmail). L'approccio migliore è la doppia firma: Ed25519 + RSA 2048.

Come verificare un record DKIM?

Usa il comando dig TXT selettore._domainkey.dominio.com +short per interrogare il DNS. Se viene restituito un record TXT contenente v=DKIM1 e p=, la chiave pubblica è pubblicata. Per un'analisi completa (dimensione della chiave, sintassi, validità), usa uno strumento di verifica DKIM online.

Perché la rotazione delle chiavi DKIM è importante?

Una chiave utilizzata troppo a lungo aumenta il rischio di compromissione. Google raccomanda una rotazione trimestrale. La procedura consiste nel creare un nuovo selettore con una nuova coppia di chiavi, pubblicare la nuova chiave nel DNS, aggiornare il server di invio, poi revocare la vecchia chiave svuotando il tag p=.

Qual è il legame tra DKIM e DMARC?

DKIM autentica il contenuto di un messaggio, DMARC verifica che il dominio della firma DKIM (d=) corrisponda al dominio del From:. Senza DMARC, un attaccante può firmare un'email con il proprio dominio pur falsificando il From:. DMARC blocca questo scenario tramite la verifica di allineamento.

Glossario

  • DKIM (DomainKeys Identified Mail): protocollo di autenticazione email che utilizza la crittografia asimmetrica per firmare i messaggi in uscita e permettere ai destinatari di verificarne l'integrità.
  • Selettore DKIM: identificativo testuale (es.: google, selector1) che, combinato con il dominio, forma l'indirizzo DNS della chiave pubblica (selettore._domainkey.dominio).
  • Chiave pubblica: parte della coppia crittografica pubblicata nel DNS, utilizzata dai server di ricezione per verificare le firme DKIM.
  • Allineamento DKIM: verifica da parte di DMARC che il dominio d= della firma DKIM corrisponda al dominio del From: dell'email.
  • Ed25519: algoritmo di firma digitale introdotto dalla RFC 8463 come alternativa a RSA per DKIM, che offre firme più corte e una verifica più rapida.
  • Rotazione delle chiavi: processo di sostituzione regolare delle coppie di chiavi DKIM per limitare i rischi di compromissione.

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

Fonti

Articoli simili