DKIM – Evitare lo spoofing delle email

DKIM è un sistema che ci consente di far viaggiare negli header delle nostre mail una firma che garantisce la legittimità della provenienza e l’inalterazione dei contenuti.
DKIM viene implementato per evitare lo spoofing delle mail ovvero la falsificazione d’identità e/o dei contenuti.

DKIM è uno standard di Internet che consente ad una persona o un’organizzazione di associare un nome di dominio con un messaggio di posta elettronica.
Al suo interno, DKIM è alimentato da crittografia asimmetrica. Il Mail Transfer Agent (MTA) del mittente firma ogni messaggio in uscita con una chiave privata. Il destinatario recupera la chiave pubblica dal record DNS del mittente e verifica se il corpo del messaggio e alcuni dei campi di intestazione non sono stati modificati.
Cosa importante, se il destinatario non supporta DKIM la mail verrà recapitata senza alcun problema, il sistema è retrocompatibile.

dkim

Implementazione lato server SMTP

Sul server MTA mittente dobbiamo dapprima installare il componente necessario a firmare con la chiave privata le nostre mail, nel caso utilizziate un server SMTP come Postfix ad esempio il componente da installare si chiama OpenDKIM.
Se utilizzate Microsoft Exchange potete utilizzare questo progetto su github.
Una volta installato il componente necessario dobbiamo generare una chiave privata e una pubblica che ci serviranno a firmare le mail e a verificare che siano firmate correttamente.
La chiave privata verrà utilizzata solo dal mittente per firmare e dobbiamo assicurarci di conservarla al sicuro e di non divulgarla in quanto è alla base del meccanismo di firma.
La chiave pubblica al contrario verrà resa pubblica attraverso un record TXT creato sul nostro DNS.

Implementazione lato DNS

L’unica cosa da fare è creare un record di tipo TXT che contiene i dati sulla crittografia che utilizzate lato MTA, ecco un esempio:
mail._domainkey IN TXT ( "v=DKIM1; k=rsa; t=s; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxac7Ln54w6ly82OyqSZgOfmqXG+LS5aENjeqWoqnOMZpCB8S6/6x+6x8474Tk6NQE9V5IxUzkK/u6PbqO3aIuTu99Vw0CEVz+Eb481oQ7JUOPHgAMxm7bqH1c/kH1VJDz4hn50e3HgY4eX80mDTv4CVL41uupEG8L6E+n0dksRCqQfBnQp2jfEwkVnDAzQwUoOpvu2WiL7/5uusL/jfJIY89QdFVd6an1J8lr8XXV+CMAeIk9yqi3SQNwLNgBtecpV2QnrHiEGrukVB0ljYWOAVWZH8ORYby+74h7WpBhz7U9NMA5A0w0Dx7LC4RA8Wum5OJcBxVf5K+vzriYcMu/QIDAQAB" )
Ecco anche altri parametri implementabili nel record DNS e la loro spiegazione:

  • v = versione dell’implementazione di DKIM (default DKIM1)
  • k = tipologia di chiave
  • t = se è uguale ad “s” indica che la chiave pubblica è valida solo per il dominio e non per i sottodomini
  • p = la chiave pubblica
  • a = algoritmo di firma
  • d = dominio corrispondente alla firma
  • h = lista degli header inclusi nella firma

Check dell’esito

Per il check del corretto funzionamento di DKIM potete inviare una mail all’indirizzo [email protected] e attendere in risposta un report che vi dettaglia la situazione del vostro MTA.
Oltre al DKIM verrà testato anche il record SPF, di cui parlo qui e che consiglio di implementare.

Rispondi