OpenDKIM : configuration avec support multidomaines

DKIM - Domain Keys Identified Mail - est une technique d’authentification fiable du nom de domaine d’un émetteur de messages électroniques afin d’éviter le spam et le hameçonnage. Elle se base sur une clé de chiffrement asymétrique ; la clé privée est utilisée par le MTA pour chiffrer une partie de chaque message et insérer le résultat généré dans l’en-tête DKIM associée au message :
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=hbis.fr; s=default;
t=1352850858; bh=6FHfDLJhwx+aojx+pYcAnVDb+BLWaDNaO8vmZtguLiI=;
h=Message-ID:Date:From:MIME-Version:To:Content-Type:
Content-Transfer-Encoding;
b=wHB33aib+Km2FQRYuaYX8xgHnvrGsllOITWQ5HI5Pc+MGHRVogsYrRjfMJwAa1DTv
YRlLJN/GUoS/28gPymKm/yxjMEjlORWwVnb73nTU2PrLXObS0wKaiUXO43gqMBfhv3
Dn3ifsXHpx043ERQlv79CLgigcdvDSU1md4QXRGw=
La clé publique est publiée par champ TXT dans la zone DNS du domaine de l’émetteur. Celle-ci est récupérée par les différents MTA en destination afin de valider l’origine du mail par déchiffrement de l’en-tête DKIM.
;; QUESTION SECTION:
;default._domainkey.hbis.fr. IN TXT
;; ANSWER SECTION:
default._domainkey.hbis.fr. 10723 IN TXT "v=DKIM1\; g=*\; k=rsa\;
p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDtMiBUJ6Aq0VHi0N1FTCsau0iLnmptFrG1GK
+KHM1/bIcPUlD+GHKekEg9Y5jyaZ4liXQy67SG48d7Z1iKuipZnzvqizEHwFGCdw/b12Q8hi3ay
gmz1F9wJXYfklc12D2USrviO69hzKRohE7CA6LxWL905yJNXoWzFHqntaAiwQIDAQAB"
Dans le cas où le déchiffrement est impossible, le MTA peut/doit refuser la réception du message. Sinon il le délivre en ajoutant une en-tête d’authenticité :
Authentication-Results: mx.google.com; spf=pass (google.com: domain of
bhuisgen@hbis.fr designates 2001:41d0:51:1::205 as permitted sender)
smtp.mail=bhuisgen@hbis.fr; dkim=pass header.i=@hbis.fr
DKIM repose donc intégralement sur la sécurité du serveur DNS de l’émetteur, qui ne doit pas être compromis, mais elle à l’avantage d’être totalement transparente pour les utilisateurs (ce qui n’est pas le cas de PGP par exemple).
Installation
root@vks10205:~# apt-get install opendkim
Configuration
root@vks10205:~# vim /etc/opendkim.conf
Syslog yes
UMask 002
KeyTable /etc/opendkim/key-table
SigningTable /etc/opendkim/signing-table
ExternalIgnoreList /etc/opendkim/trusted-hosts
InternalHosts /etc/opendkim/trusted-hosts
root@vks10205:~# vim /etc/default/opendkim
SOCKET="inet:12345@localhost"
Les hôtes/IP autorisés à utiliser les clés de chiffrement sont à spécifier :
root@vks10205:~# mkdir /etc/opendkim/
root@vks10205:~# vim /etc/opendkim/trusted-hosts
localhost
127.0.0.1
::1
La clé asymétrique d’un domaine est générée de cette façon :
root@vks10205:~# mkdir -p /etc/opendkim/keys/hbis.fr
root@vks10205:~# cd /etc/opendkim/keys/hbis.fr
root@vks10205:~# opendkim-genkey -r -d hbis.fr
root@vks10205:~# chown -R opendkim:opendkim /etc/opendkim/keys/hbis.fr
La clé publique est à ajouter dans la zone DNS du domaine :
root@vks10205:~# cat /etc/opendkim/keys/hbis.fr/default.txt
Le domaine peut ensuite être référencé :
root@vks10205:~# cat /etc/opendkim/key-table
default._domainkey.hbis.fr hbis.fr:default:/etc/opendkim/keys/hbis.fr/default.private
root@vks10205:~# cat /etc/opendkim/signing-table
hbis.fr default._domainkey.hbis.fr
Ces opérations sont à répéter pour chaque domaine de messagerie.
Lancement
root@vks10205:~# /etc/init.d/opendkim start
Configuration de Postfix
Le MTA doit enfin se connecter au démon OpenDKIM pour effectuer la signature des messages :
root@vks10205:~# vim /etc/postfix/main.cf
milter_default_action = accept
milter_protocol = 6
smtpd_milters = inet:127.0.0.1:12345
non_smtpd_milters = inet:127.0.0.1:12345
root@vks10205:~# /etc/init.d/postfix restart
Configuration d’Amavis
Si vous utilisez Amavis pour le filtrage mail, il convient de désactiver le milter précédent suite au filtrage afin d’éviter une seconde signature DKIM :
127.0.0.1:10025 inet n - n - - smtpd
[...]
-o receive_override_options=no_address_mappings,no_header_body_checks,
no_unknown_recipient_checks,no_milters