Il sistema DKIM serve per firmare digitalmente le email in uscita da un server ma non crittograffate, quindi se non controlli dkim, pazienza.. semplicemente non vedi che la mail e’ firmata digitalmente ma ricevi normalmente.
Il dkim funziona in questo modo: si mette la chiave pubblica su un record TXT del dns mentre la chiave privata e’ usata dal server SMTP per firmare digitalmente la mail in uscita. In questo modo si ottengono due vantaggi:
1 – Certifica che la mail in uscita arriva realmente dal server email sorgente.
2 – Certifica che la mail non ha subito modifiche durante il trasferimento.
Facciamo un esempio pratico: prendiamo una mail in arrivo da esempio@test.it che e’ firmata digitalmente da dkim,
Come vedi ci sono diverse variabili, una di queste è il ‘selector’ che e’ una stringa di caratteri ‘a caso’ che serve al server email ricevente di contattare il DNS per richiesdere la chiave pubblica. Aruba ha scelto di scrivere ‘a1’ nel selector, poteva scrivere ‘a2’ oppure ‘paperina’ o quello che gli fosse venuto in mente al sistemista in quel momento.
[..omissis..]
X-Mailer: Microsoft Office Outlook 12.0
Thread-Index: Ade8I+Jli02Jj2LVTOKCKH/OaxGujg==
Content-Language: it
Disposition-Notification-To: Mario Rossi esempio@test.it
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aruba.it; s=a1;
t=1633684055; bh=IMwliN/qHuqefSN08Vcj8iyYFidAJRE58SVHaL45adg=;
h=From:To:Subject:Date:MIME-Version:Content-Type;
b=dpmKCqeVV7NXrgXd3Kc0w40LAWyRJu66TlMQWAYrZPhs8cZBHLntByB3vQ19t+vEx
WyFjDDsrFnHN7+44dLTpIltjGgZG5fP62YMvm4Z6Hl6/E8zpej75eQtByYPjYQkX2Y
JKxz7uRozhSM58F1qJDA1OLzcuKFMtm9ZWN5pqeycyvRHA8FIMowB+3KRfp/6uF3eL
64D6vn9n1ZoH0B2RcYvEIOdyiwVKBbnhBlBSXN7jnXB771t10HrKrAVf3AqrejLOB6 [..omissis..]
Il server che riceve questa mail (e che effettua attivamente il controllo DKIM) va a estrarre il selector e poi chiede al suo dns il record TXT
corrispondente a
a1._domainkey.aruba.it
Riassumendo il selector è estratto da ‘s=’ mentre la parte “_domainkey” è una parte fissa della richiesta della chiave pubblica e il dominio, il quale è estratto dalla variabile ‘d=’ immediatamente prima del selector nella header della mail da controllare. Nota che se non hai ricevuto una mail non puoi chiedere la chiave pubblica di un dominio, perchè non sai che selector usare per richiede il record TXT.
Per chiarezza possiamo usare l’utility ‘nslookup’ per richiedere la chiave pubblica di aruba.it
Ora il server che ha ricevuto la email, attraverso una processo matematico puo’ verificare che la email non sia stata modificata nel trasporto e che sia stata firmata con la chiave privata accoppiata alla chiave pubblica, ottenendo i due vantaggi che ho scritto sopra.