DKIM è uno standard di autenticazione delle e-mail che sfrutta la crittografia a chiave pubblica/privata per firmare i messaggi e-mail. I record DKIM consentono di verificare se un'e-mail in arrivo è stata effettivamente inviata dal dominio a cui è associata la chiave DKIM. Di conseguenza, un record DKIM consente di verificare se un'e-mail è stata manipolata durante il transito e se è sicura da aprire.
Il DKIM esiste nel DNS come record DNS TXT (testo) o CNAME (nome canonico). La scelta di utilizzare TXT o CNAME dipende da una serie di fattori, illustrati di seguito.
I punti chiave da prendere in considerazione
- DKIM è uno standard di autenticazione delle e-mail progettato per identificare gli indirizzi di mittenti di e-mail contraffatti.
- I record DKIM sono sempre record TXT. Tuttavia, alcuni provider utilizzano la delega CNAME per puntare il vostro dominio a un record TXT ospitato sui loro server.
- Ognuno di questi metodi presenta una serie di vantaggi e limiti.
- La scelta dell'uno o dell'altro dipende da quale sia la vostra priorità: controllo e sicurezza o facilità e comodità.
- Le insidie più comuni sono il formato errato del selettore, la combinazione di TXT/CNAME per lo stesso selettore e i ritardi TTL durante la rotazione dei tasti.
Capire la pubblicazione dei record DKIM
Vediamo come si compone un record DKIM.
Cosa contiene un record DKIM?
Un record DKIM comprende un selettore, una chiave pubblica e un algoritmo. È possibile generare il proprio record DKIM con lo strumento online di PowerDMARC.
Selettori DKIM
I selettori DKIM consentono al server di posta elettronica del destinatario di individuare e verificare la chiave pubblica del mittente. Aiutano a identificare quale chiave pubblica DKIM utilizzare per la verifica tra più chiavi pubbliche. Si trova nell'intestazione DKIM-Signature di ogni email firmata. È il parametro "s=".
Chiave pubblica
La chiave pubblica DKIM viene pubblicata nel DNS del vostro dominio come record TXT (o talvolta come CNAME che punta alla chiave del vostro provider). Viene utilizzata dai server di ricezione per verificare l'hash del messaggio creato utilizzando la chiave privata del mittente, garantendo l'integrità e l'autenticità delle e-mail.
La chiave, fornita dall'organizzazione che invia l'e-mail, sarà inserita direttamente nella vostra zona DNS come record TXT. In alternativa, sarà un CNAME che punterà alla chiave nel DNS del vostro provider.
Algoritmo
L'algoritmo utilizzato per l'hashing è definito nel parametro a= dell'intestazione DKIM-Signature (non nel record DNS). Gli algoritmi di firma DKIM supportati sono:
- rsa-sha256 (consigliato e più comune)
- rsa-sha1 (deprecato a causa della minore sicurezza)
Posizione e sintassi DNS
Il record DKIM è un record TXT contenente diverse coppie tag-valore, in genere separate da punti e virgola:
v=DKIM1; k=rsa; p=PUBLIC_KEY
- v=DKIM1 specifica la versione DKIM.
- k=rsa, dove "k" si riferisce al tipo di chiave (RSA è l'unica attualmente supportata)
- p=PUBLIC_KEY La chiave pubblica effettiva utilizzata per verificare la firma.
Ecco un esempio: selector._domainkey.example.com
In questo caso, "selettore" è un identificatore unico per la chiave DKIM e example.com è il vostro dominio.
Metodo 1 - DKIM come record TXT
Con questo metodo, la chiave pubblica DKIM viene pubblicata come record DNS TXT nella posizione selector._domainkey.example.com. La posta in uscita viene firmata con la chiave privata e i server riceventi utilizzano la chiave pubblica del vostro DNS per verificare la firma.
Pro
- Controllo totale: L'utilizzo del DKIM come record TXT consente di avere il pieno controllo sulle chiavi DKIM e sul DNS.
- Nessuna dipendenza da terzi: Non è necessario affidarsi a fornitori terzi quando si utilizza questo metodo. Questo metodo vi darà un maggiore senso di privacy e sicurezza, in quanto siete voi i proprietari dei vostri dati.
Contro
- Rotazione manuale delle chiavi: L'aggiornamento delle chiavi è a carico dell'utente, il che può essere complicato per gli utenti non tecnici.
- Rischio di configurazione errata più elevato: La configurazione fai-da-te aumenta le possibilità di errori che possono indebolire la sicurezza delle e-mail. Utilizzate il nostro controllore DKIM gratuito per evitare errori.
Metodo 2 - DKIM tramite delega CNAME
Questo metodo funziona in modo molto diverso dal primo. Invece di pubblicare direttamente la chiave pubblica DKIM, si crea un record CNAME su selector._domainkey.example.com che punta al record DKIM del provider di servizi e-mail (ESP).
Una volta che il server ricevente cerca la chiave DKIM, la query DNS segue il CNAME fino al DNS dell'ESP. È qui che viene ospitato il record TXT con la chiave pubblica. I principali provider come SendGrid, Mailchimp e Amazon SES utilizzano questo sistema.
Pro
- Rotazione automatica dei tasti: Questo metodo non richiede aggiornamenti manuali e la rotazione delle chiavi avviene automaticamente.
- Semplicità di configurazione: Questo metodo è più adatto ai principianti o alla gestione di più domini. Consente una gestione continua e senza intoppi, senza dover ricorrere a lavori pesanti.
Contro
- Meno visibilità: Una configurazione più semplice ha il costo di un controllo e di una visibilità limitati sulle chiavi DKIM e sul DNS.
- Limitazioni dei CNAME: I CNAME profondamente annidati o concatenati possono raggiungere i limiti di risoluzione DNS o causare problemi di prestazioni. Alcuni provider richiedono formati specifici o non supportano la delega dei CNAME, che se non vengono rispettati possono interrompere il DKIM.
TXT vs. CNAME: quale utilizzare?
Per decidere se utilizzare il DKIM in TXT o in CNAME, ecco alcuni consigli generali da seguire.
Utilizzare TXT Se...
- Avete un hosting autonomo della vostra posta elettronica e disponete di competenze tecniche.
- Si vuole avere il pieno controllo su DKIM e DNS.
- Preferite gestire e ruotare le chiavi da soli.
Nota: in alcuni casi, il provider potrebbe richiedere l'inserimento diretto del TXT, rendendo questo metodo non facoltativo.
Utilizzare CNAME se...
- Utilizzate un ESP come Mailchimp, SES o SendGrid.
- Preferite la gestione automatizzata del DKIM.
- Non avete tempo o competenze tecniche per l'impostazione manuale.
Mescolanza di TXT/CNAME per lo stesso selettore
Il DNS non consente di avere sia un record TXT che un record CNAME sullo stesso nome di dominio (cioè sullo stesso selettore DKIM). Utilizzare un solo tipo di record (TXT o CNAME) per ogni selettore. Scegliere TXT per il controllo manuale o CNAME se si delega a un ESP.
Esempi del mondo reale
Se state cercando esempi di DKIM in TXT o CNAME, eccone uno per ciascuno, con una descrizione concisa.
Esempio di DKIM TXT
google._domainkey.example.com. IN TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG..."
Questo record memorizza direttamente la chiave pubblica DKIM nel DNS sotto il selettore e il dominio specificati.
Esempio di CNAME DKIM
em1234._domainkey.example.com. IN CNAME em1234.example.dkim.emailsvc.com.
Questo record delega la ricerca della chiave DKIM a un fornitore terzo, puntando al suo record DKIM ospitato.
Riassunto
La scelta tra DKIM in TXT e CNAME può sembrare difficile. Entrambi i metodi funzionano bene e sono comunemente utilizzati, quindi la decisione dipende spesso da voi. La scelta dipende spesso dalla priorità che si dà al controllo diretto e completo rispetto alla convenienza, o viceversa.
Qualunque sia la vostra scelta finale, verificate sempre la conformità dell'attuale configurazione DKIM. Questo può aiutarvi a prevenire lacune nella sicurezza e a garantire il massimo livello di sicurezza per le vostre comunicazioni!