Cos'è DKIM?
DKIM (DomainKeys Identified Mail) è un meccanismo di autenticazione email definito nella RFC 6376. Permette di firmare crittograficamente le email in uscita per provare la loro origine e integrità.
Perché configurare DKIM:
- Autenticare le tue email - Dimostra che l'email proviene realmente dal tuo dominio
- Proteggere contro la falsificazione - La firma rileva qualsiasi modifica del contenuto
- Migliorare la deliverability - Le email firmate DKIM sono meglio accettate da Gmail, Outlook, Yahoo
- Prerequisito per DMARC - DKIM è uno dei due pilastri dell'autenticazione DMARC (insieme a SPF)
Come funziona DKIM?
DKIM utilizza la crittografia asimmetrica (chiave pubblica/privata):
- Firma all'invio: Il tuo server mail calcola un hash del messaggio e lo firma con la chiave privata
- Pubblicazione DNS: La chiave pubblica viene pubblicata in un record TXT su
selector._domainkey.dominio.com - Verifica alla ricezione: Il server destinatario recupera la chiave pubblica tramite DNS e verifica la firma
Invio: Messaggio → Hash → Firma (chiave privata) → Header DKIM-Signature
Ricezione: Header → Chiave pubblica (DNS) → Verifica firma → Pass/Fail
Sintassi di un record DKIM
Un record DKIM è un record DNS TXT pubblicato su <selector>._domainkey.<domain>:
v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA...
Tag DKIM
| Tag | Descrizione | Obbligatorio | Valori |
|---|---|---|---|
v | Versione | Consigliato | DKIM1 |
k | Tipo di chiave | No (default: rsa) | rsa, ed25519 |
p | Chiave pubblica | Sì | Base64 DER |
h | Algoritmi di hash | No | sha256, sha1 |
t | Flag | No | y (test), s (strict) |
s | Tipi di servizio | No | email, * |
n | Note | No | Testo libero |
Esempi di record
RSA 2048 bit (consigliato):
default._domainkey.captaindns.com TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkq..."
Ed25519:
default._domainkey.captaindns.com TXT "v=DKIM1; k=ed25519; p=11qYAYKxCrfVS/7TyWQHOg7hcvPapiMlrwIaaPcHURo="
I due p= non codificano la stessa cosa. Con k=rsa contiene la chiave in formato SubjectPublicKeyInfo DER (RFC 6376 §3.6.1). Con k=ed25519 contiene la chiave grezza da 32 byte, cioè 44 caratteri in base64 (RFC 8463 §4.2): una chiave Ed25519 incapsulata in DER viene rifiutata da un verificatore conforme.
RSA vs Ed25519: quale algoritmo scegliere?
| Criterio | RSA 2048 | RSA 4096 | Ed25519 |
|---|---|---|---|
| Sicurezza | Buona | Eccellente | Eccellente |
| Supporto | Universale | Universale | Parziale (~80%) |
| Lunghezza record | ~410 caratteri | ~750 caratteri | 66 caratteri |
| Prestazioni | Buone | Lente | Molto veloci |
| Raccomandazione | Produzione | Sensibile | Avanzato |
Raccomandazioni
- RSA 2048 bit: Standard attuale, compatibilità massima. Scegli questa opzione di default.
- RSA 4096 bit: Per ambienti molto sensibili. Attenzione alle limitazioni DNS.
- Ed25519: Per configurazioni avanzate. Valuta un doppio selettore (RSA + Ed25519).
- RSA 1024 bit: Deprecato dal 2020. Da evitare.
Lunghezza delle chiavi e limiti DNS
Il limite di 255 caratteri
I record DNS TXT sono limitati a 255 caratteri per stringa. Ecco l'impatto per algoritmo:
| Algoritmo | Lunghezza record | Compatibile DNS |
|---|---|---|
| Ed25519 | 66 caratteri | ✅ Sempre |
| RSA 1024 | ~230 caratteri | ✅ Sempre |
| RSA 2048 | ~410 caratteri | ⚠️ Suddivisione auto |
| RSA 4096 | ~750 caratteri | ⚠️ Verifica provider |
Come i provider gestiscono i record lunghi
La maggior parte dei provider DNS (Cloudflare, AWS Route 53, Google Cloud DNS) suddivide automaticamente i record lunghi in più stringhe. Il protocollo DNS le concatena alla lettura.
Se il tuo provider non supporta i record lunghi, preferisci RSA 2048 bit o Ed25519.
Casi d'uso concreti
Nuovo dominio: prima configurazione DKIM
Contesto: Stai configurando un nuovo server mail (Postfix, ecc.)
Soluzione:
- Genera una chiave RSA 2048 bit con il selettore
default - Scarica la chiave privata e configura OpenDKIM
- Pubblica il record TXT nella tua zona DNS
- Verifica con il DKIM Checker
Rotazione della chiave DKIM
Contesto: La tua chiave DKIM ha più di 12 mesi o è stata compromessa
Soluzione:
- Genera una nuova chiave con un nuovo selettore (es: s2, 202602)
- Configura la nuova chiave nel tuo server mail
- Pubblica il nuovo record DNS
- Attendi 24-48h di propagazione DNS
- Elimina il vecchio record
Doppio selettore: RSA + Ed25519
Contesto: Vuoi sfruttare Ed25519 mantenendo la compatibilità RSA
Soluzione:
- Genera una chiave RSA 2048 con il selettore
rsa - Genera una chiave Ed25519 con il selettore
ed - Configura il tuo server per firmare con entrambe le chiavi
- I server moderni verificheranno Ed25519, quelli vecchi useranno RSA
Flag DKIM: modalità test e strict
Flag t=y (modalità test)
Attiva la modalità test DKIM. I fallimenti della verifica vengono trattati come neutri (né pass né fail).
Uso: Testa la tua configurazione senza rischiare rifiuti. Rimuovi il flag una volta validato.
Flag t=s (modalità strict)
Impone che l'identità della firma (i=) usi esattamente il dominio di firma (d=): l'identità non può quindi essere un sottodominio del dominio di firma. Senza questo flag, un'identità su un sottodominio viene accettata. Non modifica l'allineamento DMARC, che dipende dalla policy DMARC stessa.
Uso: Rafforza la sicurezza in produzione. Prima di attivarlo, assicurati che tutti i flussi legittimi firmino con il dominio esatto.
FAQ - Domande frequenti
D: Come generare una chiave DKIM per il mio dominio?
R: Usa il nostro generatore: inserisci il tuo dominio e un selettore, scegli RSA 2048 bit, clicca su Genera. Scarica la chiave privata e pubblica il record TXT nel tuo DNS.
D: Qual è la differenza tra RSA ed Ed25519?
R: RSA è supportato da tutti i server. Ed25519 è più moderno con chiavi più corte, ma il supporto non è universale (~80%). Consiglio: RSA 2048 bit per la produzione.
D: Quale lunghezza di chiave RSA scegliere?
R: RSA 2048 bit è lo standard. RSA 1024 è deprecato. RSA 4096 offre più sicurezza ma genera record molto lunghi.
D: Cos'è un selettore DKIM?
R: Un identificatore che permette di avere più chiavi DKIM. Esempi: default, google, s1. Il record viene pubblicato su selector._domainkey.dominio.com.
D: La chiave privata viene memorizzata?
R: No. Generata una sola volta, trasmessa, poi eliminata. Scaricala immediatamente.
D: Perché il mio record supera i 255 caratteri?
R: RSA 4096 genera record di circa 750 caratteri. La maggior parte dei provider li suddivide automaticamente. Altrimenti, preferisci RSA 2048 o Ed25519.
D: Come configurare DKIM con Google Workspace?
R: Google genera le proprie chiavi. Admin Console > Gmail > Authenticate email > Generate new record. Il nostro strumento è per server personalizzati.
Strumenti complementari
| Strumento | Utilità |
|---|---|
| DKIM Record Check | Verifica che il tuo DKIM sia pubblicato e valido |
| DKIM Syntax Check | Valida la sintassi di un record DKIM |
| DKIM Selector Finder | Scopri i selettori DKIM attivi del tuo dominio |
| SPF Generator | Crea il tuo record SPF |
| DMARC Generator | Configura DMARC per completare l'autenticazione |
| Mail Tester | Testa la deliverability delle tue email |
Risorse utili
- RFC 6376 - DomainKeys Identified Mail (DKIM) Signatures: Specifica ufficiale DKIM
- RFC 8463 - A New Cryptographic Signature Method for DKIM (Ed25519): Supporto Ed25519 per DKIM
- RFC 8301 - Cryptographic Algorithm and Key Usage Update to DKIM: Raccomandazioni di sicurezza attuali
- OpenDKIM - Configuration Guide: Documentazione per Postfix/OpenDKIM
- Google Workspace - Set up DKIM: Guida ufficiale Google
- Microsoft 365 - Use DKIM: Guida ufficiale Microsoft