DKIM: cos’è la firma delle email e come si configura

Controlla il DKIM del tuo dominio

Va bene anche l’indirizzo email del mittente.

Dove lo trovo? Se non lo scrivi, proviamo i più comuni.

Leggiamo solo record DNS pubblici, dal tuo browser, tramite Google Public DNS (o Cloudflare, se Google non risponde). Il dominio non passa dai nostri server e non lo conserviamo.

Nel febbraio 2024 questa pagina annunciava un costo di attivazione del DKIM per i nuovi domini. Non vale più: oggi in Infomail il DKIM per i nuovi domini è incluso. Al posto dell’annuncio c’è la guida, con il controllo in testa.

Il DKIM (DomainKeys Identified Mail) è una firma digitale che chi spedisce aggiunge a ogni email. Lavora con due chiavi: quella privata resta sul server che spedisce e firma i messaggi, quella pubblica sta nel DNS del tuo dominio, dove chiunque può leggerla. Il server che riceve la usa per controllare due cose: che la firma l’abbia messa chi controlla il dominio e che il messaggio non sia stato modificato per strada. Lo standard è la RFC 6376, del 2011.

Somiglia al sigillo di ceralacca sulla busta, con una differenza a nostro favore: la ceralacca si può rifare, una firma DKIM senza la chiave privata no.

Rispetto all’SPF, che guarda da quale server è partita l’email, il DKIM ha un vantaggio pratico: viaggia dentro il messaggio. Se un cliente gira la tua newsletter a un collega senza toccarla, la firma resta valida.

Dove sta la chiave: il selettore

La chiave pubblica non sta sul dominio, ma su un nome costruito così:

selettore._domainkey.tuodominio.it

Il selettore è il nome che chi firma ha dato alla chiave. Esiste perché un dominio può avere più chiavi nello stesso momento, una per ogni servizio che firma, senza che si pestino i piedi (RFC 6376, §3.1). Serve anche a cambiare chiave senza interruzioni: si pubblica la nuova con un altro selettore, si sposta la firma, poi si ritira la vecchia.

Dal DNS però non si può avere l’elenco dei selettori di un dominio: bisogna conoscerne il nome. Lo strumento prova quelli più diffusi, e se il tuo si chiama in un altro modo ti risponde «non trovato» anche se la chiave c’è.

Come trovare il selettore

È scritto in ogni email firmata, nell’intestazione DKIM-Signature.

  1. Apri un’email spedita dal dominio che vuoi controllare, per esempio una che hai mandato a te stesso su un indirizzo Gmail.
  2. Mostra il messaggio originale: in Gmail è nel menu con i tre puntini, alla voce «Mostra originale».
  3. Cerca la riga che comincia con DKIM-Signature. Il valore dopo s= è il selettore, quello dopo d= il dominio che ha firmato, che deve essere il tuo.
  4. Scrivi il selettore nel campo in testa alla pagina e premi Controlla.

Nella stessa pagina Gmail mostra in alto l’esito di SPF, DKIM e DMARC per quel messaggio. Se accanto a DKIM c’è PASS e il dominio è il tuo, la firma funziona.

Come si leggono la firma e il record

La firma nel messaggio

Un’intestazione DKIM somiglia a questa (le parti lunghe sono accorciate):

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tuodominio.it;
  s=catapulta; h=from:to:subject:date:message-id;
  bh=2jUSOH9NhtVGCQWNr9BrIAPreKQjO6Sn7XIkfJVOzv8=; b=AuUoFEfDxTDkHlLXSZEpZj79…
TagCosa contiene
d=Il dominio che firma. Per il DMARC è quello che conta
s=Il selettore, cioè dove cercare la chiave pubblica
a=L’algoritmo. Oggi rsa-sha256; rsa-sha1 è vietato dalla RFC 8301
h=Le intestazioni firmate: se una cambia, la firma non torna
bh=L’impronta del corpo del messaggio
b=La firma vera e propria
c=Quanto la verifica tollera spazi e a capo aggiunti per strada

Il record nel DNS

Il record della chiave è un TXT con pochi tag (§3.6.1):

v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx3f…IDAQAB
  • v=DKIM1 dice che è una chiave DKIM e, se c’è, va per primo.
  • k= è il tipo di chiave: rsa, il valore predefinito, oppure ed25519, più corta, arrivata con la RFC 8463 nel 2018.
  • p= è la chiave pubblica. Vuoto vuol dire chiave revocata: le email firmate con quel selettore non superano più il controllo.
  • t=y dichiara che il dominio sta facendo prove, e chi riceve tratta i messaggi come se non fossero firmati.

Quanto deve essere lunga la chiave

La RFC 8301 vieta le chiavi RSA sotto i 1024 bit e chiede di usarne almeno 2048. Gmail, per gli account personali, accetta da 1024 bit in su e consiglia 2048 se il fornitore del DNS li supporta. La scheda DKIM del controllo ti dice quanti bit ha la tua.

Come si pubblica una chiave DKIM

La chiave non la inventi: te la dà il servizio che firma le email, che ne tiene la parte privata. A te tocca pubblicare quella pubblica.

  1. Prendi dal servizio il nome e il valore del record. Il nome è del tipo selettore._domainkey, il valore comincia con v=DKIM1.
  2. Crea un record TXT con quel nome nel pannello DNS. Attenzione: molti pannelli aggiungono da soli il dominio in fondo, e se scrivi catapulta._domainkey.tuodominio.it il nome diventa catapulta._domainkey.tuodominio.it.tuodominio.it. Nel dubbio scrivi solo catapulta._domainkey.
  3. Incolla il valore così com’è, senza virgolette in più e senza a capo.
  4. Salva, poi chiedi la verifica al servizio o ripeti il controllo con il selettore.

Una chiave RSA da 2048 bit supera i 255 caratteri che un singolo pezzo di testo di un record TXT può contenere. Alcuni pannelli la dividono da soli in più stringhe, altri chiedono di farlo a mano. Chi riceve le riunisce senza aggiungere spazi (§3.6.2.2): puoi tagliare in qualsiasi punto, purché non aggiungi e non perdi caratteri.

Gli errori che rompono la firma

  • La chiave sul nome sbagliato: il dominio raddoppiato di cui sopra, un punto di troppo, _domainkeys al plurale: il record c’è, ma non dove lo cerca chi riceve.
  • La chiave copiata male: uno spazio nel mezzo, le virgolette incollate dentro il valore, un pezzo perso andando a capo. Il controllo se ne accorge perché non riesce a misurarne la lunghezza.
  • La firma con il dominio di qualcun altro. Se non pubblichi una chiave tua, alcuni servizi firmano con il loro dominio: la firma è valida, ma d= non è il tuo e per il DMARC non conta.
  • La chiave vecchia cancellata troppo presto. Cambi fornitore e togli il record mentre le ultime campagne stanno ancora partendo, o mentre il gestionale firma ancora con quella. Si pubblica la nuova, si aspetta, poi si spegne la vecchia.
  • t=y dimenticato dopo le prove: le email risultano firmate, ma la firma non conta.
  • Il messaggio cambiato dopo la firma. Una lista di distribuzione che aggiunge un piè di pagina, un filtro aziendale che riscrive i link: se cambia una parte firmata, la verifica fallisce. Non dipende da te, ed è uno dei motivi per avere anche l’SPF.
Domini di invio con lo stato di verifica di DKIM, SPF e DMARC
Lo stato dei tre record del dominio mittente, ricontrollato periodicamente.

Il DKIM con Infomail

Nella pagina dei Domini di invio scegli tra due strade: lasciare che Infomail generi una chiave nuova, RSA da 2048 bit, oppure importare una chiave che hai già. In tutti e due i casi vedi il nome del record, del tipo catapulta._domainkey.tuodominio.it se non hai scelto un selettore tuo, e il valore da incollare. Per i nuovi domini non costa niente in più.

Con la chiave pubblicata le campagne partono firmate con il tuo dominio in d=, cioè allineate per il DMARC. Dopo la pubblicazione premi Verifica DNS; chi ti gestisce il DNS può ricevere le istruzioni direttamente dalla piattaforma. Infomail ricontrolla DKIM e SPF al momento di ogni invio. I passaggi uno per uno sono nella guida Inserire un nuovo mittente, e per tutto il resto ti assistiamo per la configurazione del mittente.

Le richieste di Gmail e Yahoo sul DKIM

Per tutti i mittenti basta SPF o DKIM; per chi spedisce molto servono entrambi, insieme al DMARC (le regole, in vigore da febbraio 2024, le avevamo raccontate quando sono state annunciate). Sulla chiave le indicazioni sono queste:

Quando Gmail respinge un messaggio per il DKIM, il codice nell’errore è 4.7.30 o 5.7.30 (domande frequenti di Google). La soglia dei mittenti massivi e il resto dei requisiti sono nella guida al DMARC.

Domande frequenti

Nell’originale dell’email vedo «DKIM: fail». Cosa controllo?

Tre cose, in quest’ordine. Che il selettore in s= abbia una chiave pubblicata (il controllo qui sopra te lo dice). Che quella chiave sia la stessa che il servizio usa per firmare: capita che venga rigenerata e il DNS resti con la vecchia. Infine, se il messaggio è passato da una lista di distribuzione o da un inoltro che l’ha modificato: in quel caso il problema non è il record.

Ogni quanto va cambiata la chiave?

Le regole non fissano una scadenza. Cambiala quando cambi fornitore, quando chi aveva accesso alla chiave privata non lavora più con te, o se temi che sia finita dove non doveva. Pubblica la nuova con un selettore diverso: la RFC 6376 sconsiglia di riusare un selettore per una chiave nuova, e così le email ancora in viaggio restano verificabili.

Il DKIM basta contro chi si spaccia per me?

Da solo no. Dimostra quale dominio ha firmato, ma chi truffa può firmare con un dominio suo e mettere il tuo nel «Da». Il controllo che li collega è il DMARC.

Ho più domini: serve una chiave per ciascuno?

Sì, almeno un record per dominio: la firma vale per il dominio scritto in d=, e chi riceve cerca la chiave sotto quel dominio. Se spedisci con tuodominio.it e tuodominio.com, pubblichi il record su tutti e due.

Conviene una chiave ed25519?

È più corta e più moderna, e la RFC 8463 chiede ai server che ricevono di saperla verificare. Chi la adotta, di solito, firma due volte, con una chiave RSA e una ed25519 su due selettori diversi, come suggerisce la stessa RFC per il periodo di transizione. Se il servizio con cui spedisci non te la propone, la RSA da 2048 bit va benissimo.

Parla con noi