Che cos'è DKIM?
DKIM (DomainKeys Identified Mail) è un metodo di autenticazione e-mail che consente al server di inviare di firmare digitalmente messaggi in uscita. Il server ricevente può quindi verificare questa firma utilizzando una chiave pubblica pubblicata in DNS, confermando che l'e-mail non è stata modificata in transito e realmente originata dal dominio rivendicato.
Come funziona DKIM
1. Traduzione: Il proprietario del dominio genera una coppia chiave pubblica/privata
2. DNS Publication: La chiave pubblica è pubblicata come record TXT
3. Message Signing: Le email in uscita sono firmate con la chiave privata
4. Verifica della situazione Ricezione del server recupera la chiave pubblica e verifica la firma
Processo di firma
Quando viene inviata una email:
1. Mail server calculates a hash of message headers and body
2. Hash is encrypted with the private key (creating the signature)
3. Signature is added as a DKIM-Signature header
4. Email is transmitted
Processo di verifica
Quando viene ricevuta una e-mail:
1. Server extracts the DKIM-Signature header
2. Finds selector and domain (s=selector; d=domain.com)
3. Queries DNS for selector._domainkey.domain.com TXT record
4. Uses public key to decrypt the signature
5. Calculates its own hash of the message
6. Compares: match = pass, mismatch = fail
Formato del record DKIM
I record DKIM sono record TXT in un sottodominio specifico:
selector._domainkey.example.com. IN TXT "v=DKIM1; k=rsa; p=MIGfMA0..."
Componenti del record
| Tag: | Descrizione | Esempio |
|---|---|---|
| V | Versione | Traduzione: |
| # | Tipo chiave | # |
| P | Chiave pubblica (base64) | p=MIGfMA0GCSqG... |
| t | Bandiere (opzionale) | t=y (modalità di prova) |
| h | Algoritmi Hash | Traduzione: |
Selettori
I selettori permettono più chiavi DKIM per dominio:
google._domainkey.example.com # Google Workspace
s1._domainkey.example.com # Sendgrid
mailchimp._domainkey.example.com # Mailchimp
Ogni servizio di posta elettronica fornisce il proprio selettore e chiave.
Intestazione della firma DKIM
Una firma DKIM sembra:
DKIM-Signature: v=1; a=rsa-sha256; d=example.com; s=google;
c=relaxed/relaxed; q=dns/txt;
h=from:to:subject:date:message-id;
bh=2jUSOH9NhtVGCQWNr9BrIAPreKQjO6Sn7XIkfJVOzv8=;
b=AuUoFEfDxTDkHlLXSZEpZj79...
Campi chiave:
- Cosa? Dominio di firma
- s=: Selector (utilizzato per trovare record DNS)
- Cosa? Intestazioni incluse nella firma
- Cosa? La firma effettiva
- Cosa? Il corpo ha
Configurazione di DKIM
Per Google Workspace
1. Vai ad Admin Console → Apps → Gmail → Autentico email
2. Generare chiave DKIM (2048-bit raccomandato)
3. Aggiungi TXT record fornito da Google
4. Attiva la firma DKIM
Per i servizi di terze parti
La maggior parte dei servizi e-mail (SendGrid, Mailchimp, ecc.) forniscono:
1. Un record CNAME da aggiungere (per la loro chiave gestita)
2. O un record TXT con la chiave pubblica
Esempio (SendGrid):
s1._domainkey.example.com CNAME s1.domainkey.sendgrid.net
Verifica di DKIM
Inviare un'email di prova ad un servizio che mostra intestazioni (Gmail mostra risultati di autenticazione). Utilizzando la riga di comando:dig google._domainkey.example.com TXT
curl "https://domscan.net/v1/health?domain=example.com"
# Reports DKIM status based on common selectors
Procedure consigliate per DKIM
Usa chiavi da 2048 bit
Le vecchie chiavi a 1024 bit sono sempre più vulnerabili. La maggior parte dei provider ora di default a 2048-bit.
Ruota periodicamente le chiavi
Ruotare le chiavi DKIM ogni anno o dopo gli incidenti di sicurezza. Pubblica una nuova chiave con il nuovo selettore prima di passare.
Firma le intestazioni importanti
Assicurarsi da, a, soggetto, data e messaggio-ID sono inclusi nelle firme.
Non modificare i messaggi firmati
Mailing list o servizi di inoltro che modificano i contenuti romperanno DKIM. Utilizzare ARC (catena autenticata ricevuta) per posta inoltrata.
Limiti di DKIM
DKIM da solo non impedisce lo spoofing, dimostra solo che un messaggio non è stato modificato. Un dominio può avere DKIM valido mentre gli aggressori inviano e-mail spoofed non firmate. DMARC si rivolge a questo specificando cosa fare con messaggi non firmati.