Salta al contenuto principale

DKIM

DKIM (DomainKeys Identified Mail) è un metodo di autenticazione email che aggiunge una firma crittografica alle intestazioni dei messaggi in uscita, permettendo ai server di posta riceventi di verificare che il messaggio provenga davvero dal dominio dichiarato e non sia stato alterato durante la trasmissione.

Definizione

DKIM (DomainKeys Identified Mail) è una specifica di autenticazione email che usa la crittografia a chiave pubblica per firmare i messaggi in uscita, permettendo ai server di posta riceventi di confermare che l’email provenga dal dominio che dichiara come mittente e che il corpo del messaggio e le intestazioni selezionate non siano stati modificati in transito. Il dominio firmatario pubblica la propria chiave pubblica nel DNS; i server riceventi la recuperano e la usano per verificare la firma incorporata nell’intestazione DKIM-Signature.

DKIM è stato sviluppato da due proposte precedenti che si sovrapponevano — DomainKeys di Yahoo e Identified Internet Mail di Cisco — e pubblicato per la prima volta come IETF RFC 4871 nel 2007. La specifica autorevole attuale è RFC 6376, pubblicata a settembre 2011 e aggiornata da RFC 8301 (2018) e RFC 8463 (2018) per imporre algoritmi crittografici più robusti. DKIM è ampiamente distribuito nell’ecosistema email ed è un componente necessario per una policy DMARC che fornisca protezione significativa.

Come funziona

Quando il server di posta di un’organizzazione invia un messaggio, il modulo di firma DKIM (incorporato in MTA come Postfix, Exim e Microsoft Exchange, o fornito come servizio da provider transazionali come SendGrid, Mailgun, Amazon SES e Postmark) esegue le operazioni seguenti.

Il firmatario sceglie un sottoinsieme di intestazioni da includere nella firma — di solito From, To, Subject, Date e Content-Type — e le canonicalizza con uno dei due algoritmi definiti: simple (normalizzazione minima degli spazi) o relaxed (più permissivo, tollera piccole riscritture in transito). Anche il corpo viene canonicalizzato e ne viene calcolato l’hash con SHA-256 (l’algoritmo richiesto da quando RFC 8301 ha deprecato il vecchio SHA-1). Il firmatario calcola poi una firma digitale RSA o Ed25519 sull’hash delle intestazioni più una stringa strutturata di metadati di firma, e inserisce un’intestazione DKIM-Signature in cima al messaggio.

L’intestazione DKIM-Signature contiene: v=1 (versione), a=rsa-sha256 (algoritmo), d=example.com (dominio firmatario, noto come tag d=), s=selector1 (selettore, usato per cercare la chiave pubblica corretta), h=from:to:subject (intestazioni firmate), bh=<hash del corpo> e b=<firma in base64>.

Il proprietario del dominio pubblica la chiave pubblica corrispondente in <selector>._domainkey.<dominio> come record DNS TXT. Quando Gmail, Outlook, Yahoo Mail o qualsiasi MTA conforme a RFC 6376 riceve il messaggio, interroga il DNS per quel record, recupera la chiave pubblica e verifica la firma crittografica. Una firma valida produce un risultato DKIM pass. Una firma mancante o non valida, o qualsiasi modifica delle intestazioni firmate o del corpo in transito, produce fail o neutral, che vengono poi passati al motore di valutazione DMARC.

I selettori (tag s=) permettono a un dominio di pubblicare contemporaneamente più chiavi DKIM — utile per ruotare le chiavi senza interruzione di servizio o per isolare le chiavi tra sistemi di invio diversi (ad esempio marketing._domainkey.example.com rispetto a transactional._domainkey.example.com).

Dove lo incontri

DKIM è un requisito fondamentale di deliverability per qualsiasi servizio che dipenda dall’email. I provider transazionali come Amazon SES, SendGrid (parte di Twilio), Mailgun (parte di Sinch), Postmark e SparkPost includono la firma DKIM come passaggio obbligatorio di configurazione durante la verifica del dominio. Il provider genera una coppia di chiavi RSA-2048 o Ed25519, mostra la chiave pubblica come record DNS TXT e chiede al proprietario del dominio di pubblicarla prima di abilitare l’invio.

Per le piattaforme di concorsi che inviano email di conferma del voto, la firma DKIM è particolarmente importante perché le email di conferma devono superare i controlli di autenticazione applicati dai principali mailbox provider — Google Workspace / Gmail, Microsoft Outlook ed Exchange Online Protection, Yahoo Mail, Apple iCloud Mail e ProtonMail. I messaggi non firmati o con firma fallita hanno molte più probabilità di finire nello spam o di essere bloccati del tutto, impedendo ai votanti di confermare il proprio invio.

Strumenti di test come Mail-Tester, GlockApps e MXToolbox DKIM Lookup permettono ai mittenti di ispezionare e validare la propria configurazione DKIM prima dell’invio in produzione. Google Postmaster Tools e Microsoft SNDS forniscono dati di deliverability aggregati che riflettono i tassi di pass DKIM nel tempo.

Esempi pratici

Una piattaforma di concorsi configurata con un selettore DKIM s=contest per il dominio votes.example.com pubblica la chiave pubblica in contest._domainkey.votes.example.com. Ogni email di conferma in uscita porta un’intestazione DKIM-Signature firmata con la chiave privata corrispondente. Quando l’account Gmail di un votante riceve il messaggio, il filtro Gmail interroga il DNS, verifica la firma, registra un pass e inoltra il risultato al classificatore antispam. Il pass DKIM confermato, insieme all’allineamento SPF, soddisfa le condizioni di conformità DMARC.

Un amministratore di concorso ruota da una chiave RSA a 1024 bit (non più ritenuta crittograficamente adeguata) a una a 2048 bit dopo aver letto RFC 8301. Il vecchio selettore resta attivo per sette giorni per coprire i messaggi in transito, poi viene rimosso dal DNS. Tutti i nuovi messaggi usano selettore e chiave aggiornati.

Concetti correlati

DKIM lavora insieme a SPF Record — che autentica l’indirizzo IP del server di invio — e a DMARC — che definisce un’azione di policy e un meccanismo di reporting basati sui risultati di SPF e DKIM. I due segnali vanno capiti insieme: superare DKIM da solo non rende un messaggio conforme a DMARC se il dominio d= non si allinea al dominio RFC5322.From. Nel contesto operativo dei concorsi, le conseguenze pratiche dei fallimenti DKIM sono spiegate in Email Confirmation Vote, dove il posizionamento del messaggio di conferma in inbox determina direttamente se il voto espresso verrà conteggiato.

Dal blog — guide e case study

Guide pratiche, analisi tecnici approfonditi, case study anonimi.60+ articoli. Selezione ruota.

Victor Williams — founder of Buyvotescontest.com
Victor Williams
Online · risposta in 5 min

Ciao 👋 — mandami l'URL del concorso e ti faccio un preventivo entro un'ora. Nessuna carta richiesta.