Skip to main content
New SPF lookups must resolve in milliseconds — why a DMARC tool's add-on isn't enough Learn Why → →

Firma DKIM

Una firma DKIM è una firma crittografica aggiunta alle intestazioni di un'email (l'intestazione DKIM-Signature) che consente ai destinatari di verificare che il messaggio è stato autorizzato dal dominio mittente e non è stato alterato durante il transito. I tag principali includono d (dominio), s (selettore), b (firma) e bh (hash del corpo).

Questa guida fa parte della nostra guida completa a DKIM. Correlati: il record DKIM e perché DKIM fallisce.

Una firma DKIM è una firma crittografica aggiunta alle intestazioni di un’email — trasportata nell’intestazione DKIM-Signature — che consente a un server ricevente di verificare che il messaggio è stato autorizzato dal dominio mittente e non è stato alterato durante il transito. La firma è generata con una chiave privata detenuta dal mittente e controllata rispetto a una chiave pubblica corrispondente pubblicata nel DNS.

Che aspetto ha l’intestazione DKIM-Signature

La firma viaggia come un singolo campo di intestazione anteposto al messaggio. Racchiude tutto ciò di cui un ricevente ha bisogno — il dominio firmatario, il selettore, quali intestazioni sono state firmate, un hash del corpo e la firma stessa — in una serie di coppie tag=value separate da punti e virgola.

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
    d=example.com; s=selector1; t=1700000000;
    h=from:to:subject:date;
    bh=2jUSOH9NhtVGCQWNr9BrIAPreKQjO6Sn7XIkfJVOzv8=;
    b=Cg5Xje8kY0m5xT1pW2qL4vN8rH6dF3aZ9cU7bE0iQoR2sT4uV6wX8yZ1
    aB3cD5eF7gH9jK2lM4nP6qR8sT0uV2wX4yZ6aB8cD0eF2gH4jK6l=

L’intestazione viene inserita dal server di posta del mittente prima che il messaggio lasci il dominio. Le interruzioni di riga e l’indentazione servono solo per il folding — il valore è logicamente un’unica stringa continua.

I tag in una firma DKIM

Ogni tag porta un pezzo del puzzle della verifica. Il firmatario sceglie questi valori; il verificatore li rilegge per ricostruire e controllare la firma.

TagNomeScopo
vVersioneVersione DKIM. Sempre 1.
aAlgoritmoAlgoritmo di hash e firma, ad es. rsa-sha256 o ed25519-sha256.
dDominioIl dominio firmatario — l’identità che DKIM autentica.
sSelettoreIndica quale chiave pubblica recuperare dal DNS del dominio.
hIntestazioni firmateElenco separato da due punti dei campi di intestazione coperti dalla firma.
bhHash del corpoHash del corpo del messaggio (canonicalizzato).
bFirmaLa firma crittografica effettiva, codificata in base64.
cCanonicalizzazioneCome le intestazioni/il corpo vengono normalizzati prima dell’hashing, ad es. relaxed/relaxed.
t / xTimestampt è quando il messaggio è stato firmato; x è quando la firma scade.

Come funziona la firma (all’invio)

Quando un messaggio lascia il server mittente, DKIM fa due cose. Prima canonicalizza il corpo e ne calcola l’hash, memorizzando il risultato in bh. Poi canonicalizza le intestazioni nominate in h — insieme all’intestazione DKIM-Signature stessa (con un b vuoto) — calcola l’hash di quel blocco e firma l’hash con la chiave privata del dominio. La firma risultante diventa il valore b. Poiché la chiave privata non lascia mai il mittente, solo il vero proprietario del dominio può produrre una firma che verrà convalidata.

Come funziona la verifica (alla ricezione)

Il server ricevente legge l’intestazione DKIM-Signature per apprendere il dominio (d) e il selettore. Interroga il DNS all’indirizzo <selector>._domainkey.<domain> per recuperare la chiave pubblica dal record DKIM. Poi ripete il lavoro del mittente: canonicalizza e calcola l’hash del corpo, lo confronta con bh, canonicalizza e calcola l’hash delle intestazioni firmate e usa la chiave pubblica per controllare b rispetto a quell’hash delle intestazioni. Se sia l’hash del corpo corrisponde sia la firma viene verificata, DKIM supera i controlli. Il controllo bh è ciò che coglie qualsiasi manomissione del corpo del messaggio — anche un solo carattere cambiato produce un hash diverso e fa fallire il controllo.

Quando le firme falliscono

Una firma DKIM fallisce ogni volta che il messaggio che il ricevente vede non corrisponde più a ciò che il mittente ha firmato. Le cause più comuni sono:

  • Modifica durante il transito — mailing list, servizi di inoltro e alcuni gateway riscrivono gli oggetti, aggiungono footer o ricodificano il corpo, il che rompe l’hash del corpo.
  • Mancata corrispondenza dell’hash del corpo — qualsiasi modifica alla porzione firmata del corpo cambia bh, quindi la verifica fallisce anche se la chiave è corretta.
  • Chiave errata o mancante — il selettore punta a un record DNS assente, scaduto o che contiene la chiave pubblica sbagliata.

Per un’analisi più completa delle cause e delle soluzioni, vedi perché DKIM fallisce, e usa lo strumento di lookup DKIM gratuito per confermare che la chiave pubblica di un selettore è pubblicata e ben formata.

Domande frequenti

Cos’è una firma DKIM?

Una firma DKIM è una firma crittografica aggiunta alle intestazioni di un’email nel campo DKIM-Signature. Il mittente la genera con una chiave privata su intestazioni selezionate e un hash del corpo. I destinatari la verificano rispetto a una chiave pubblica nel DNS, dimostrando che il messaggio proviene dal dominio e non è stato alterato.

Cosa significa il tag b= in una firma DKIM?

Il tag b= contiene la firma effettiva: un valore codificato in base64 prodotto firmando un hash delle intestazioni firmate canonicalizzate con la chiave privata del dominio mittente. Il ricevente lo decodifica e lo verifica rispetto alla chiave pubblica recuperata dal DNS. Se le intestazioni firmate sono cambiate durante il transito, il controllo b= fallisce.

Perché una firma DKIM fallisce dopo l’inoltro?

I servizi di inoltro e le mailing list spesso modificano il messaggio — aggiungendo footer, riscrivendo l’oggetto o ricodificando il corpo. Poiché DKIM firma il corpo esatto e le intestazioni selezionate, qualsiasi modifica di questo tipo altera l’hash calcolato così che non corrisponda più all’bh firmato o all’hash delle intestazioni. La firma quindi fallisce la verifica anche se l’originale era valido.

Cos’è l’hash del corpo (bh) in DKIM?

Il tag bh= è un hash del corpo del messaggio dopo la canonicalizzazione, calcolato con l’algoritmo nominato in a. Alla ricezione, il verificatore ricalcola l’hash del corpo e lo confronta con bh. Una mancata corrispondenza significa che il corpo è stato alterato durante il transito, quindi la firma viene rifiutata prima ancora che la firma crittografica in b= venga controllata.

Rated 5/5 on G2 · Trusted since 2018

Trusted by 50,000+ domains

"AutoSPF Flattens SPF Records Seamlessly & Keeps Changes Logged - I am quite pleased with the product"

It does what it promises to do, and does it very well. I appreciate that it keeps a log of changes made, which prevents many mistakes. A client's SPF record would have way too many lookups, but AutoSPF makes that problem go away. The length of the SPF record is typically not the issue; it's the amount of lookups in the record that are. AutoSPF "flattens" the record, automatically expanding the defined lookups to IP addresses or ranges. And it auto-updates the record when the un-flattened lookups change.
PJ

Peter J.

President · Small-Business (50 or fewer emp.)

"Helped us go beyond capacity"

AutoSPF did exactly as described, it helped us get past our 10 lookup limit. Afterwards, we hit another limit regarding overall capacity and when contacted, they quickly provided us with a new solution to eliminate capacity issues entirely going forward, so now we can add as many SPF records as needed. They also provided us with a personalized support video explaining their new method in its entirety using our instance as the example.
VU

Verified User

Financial Services · Mid-Market (51-1000 emp.)

"Great service and great support"

AutoSPF was easy to initially set up on our own and a great cost effective entry into spf flattening. Needed our first support assistance today and got great response including a video demonstrating the issue I was trying to solve, a quick fix, and more detailed followup.
GF

Greg F.

Mid-Market (51-1000 emp.)