Envoyer ses emails avec DKIM, SPF, DMARC sur exim4
Les déboires
Installer DKIM sur exim4 est la croix et la bannière. Les nombreux exemples en ligne ne fonctionnent tout simplement pas.
Mon approche:
- Demander à exim4 de passer en mode multiples fichiers à travers
dpkg-reconfigure exim4-config
- lancer une première fois update-exim4.conf pour récupérer les variables DKIM à modifier dans le fichier généré
- faire un petit grep sur le fichier généré dispo sous /var/lib/exim4/config.autogenerated pour récupérer les variables DKIM utilisées
grep '^dkim_' /var/lib/exim4/config.autogenerated dkim_domain = DKIM_DOMAIN dkim_selector = DKIM_SELECTOR dkim_private_key = DKIM_PRIVATE_KEY dkim_canon = DKIM_CANON dkim_strict = DKIM_STRICT dkim_sign_headers = DKIM_SIGN_HEADERS
Ceci m’a permis de trouver que la variable DKIM_FILE utilisée dans la plupart des exemples n’a plus d’utilité aujourd’hui et est remplacée par DKIM_PRIVATE_KEY .
La config Exim4
Il faut commencer par se créer une clé privée && publique que vous allez utiliser pour signer vos mails. Le format conseillé aujourd’hui (Septembre 2017) est du RSA 2048b.
cd /etc/exim4/dkim openssl genrsa -out example.com.pem 2048 -outform PEM openssl rsa -in example.com.pem -out example.com.pub -pubout -outform PEM
On récupère la clé publique dont on va supprimer le header/footer && les retours à la ligne pour en faire une oneline pour l’enregistrement DNS.
Ensuite il faudra créer un fichier de configuration localisé au /etc/exim4/conf.d/main/00_local_macros contenant:
DKIM_CANON = relaxed DKIM_SELECTOR = 20170827 # The file is based on the outgoing domain-name in the from-header. DKIM_DOMAIN = ${sg{${lc:${domain:$h_from:}}}{^www\.}{}} DKIM_PRIVATE_KEY = /etc/exim4/dkim/$dkim_domain.pem
Le DKIM_DOMAIN est extrait depuis le champ from du mail envoyé en supprimant à la volée un éventuel ‘www.’ présent.
Le DKIM_SELECTOR est une string de votre choix, j’ai choisi la date courante pour permettre un renouvellement facile des clés à l’avenir mais ça pourrait être le nom de votre serveur si vous voulez envoyer des mails depuis != serveurs par exemple.
La DKIM_PRIVATE_KEY est le path vers le fichier de clé ici défini en fonction du $dkim_domain (cfr le lien suivant pour les variables disponibles: http://www.exim.org/exim-html-current/doc/html/spec_html/ch-support_for_dkim_domainkeys_identified_mail.html#SECDKIMSIGN)
Le DNS
DKIM
La clé publique oneline doit être enregistrée dans le DNS du nom de domaine sous un enregistrement TXT nommé du sub domaine suivant: 20170827._domainkey
le 20170827 est ici le sélecteur enregistré sous la variable DKIM_SELECTOR d’exim.
_domainkey est une constante utilisée
Le début de l’enregistrement commençant par k=rsa; p= suivi de la clé publique mise à plat
SPF
Un enregistrement du type TXT sous le domaine à protéger nommé @ contenant v=spf1 a ~all
Ici autorisée l’IP pointée par l’enregistrement A du même nom de domaine à envoyer des mails
DMARC
Indique le comportement à avoir pour les récepteurs/intermédiaires avec des mails qui n’aurait pas la bonne signature DKIM ou une ip non indiquée par le SPF.
C’est à nouveau un enregistrement TXT dans le domaine sous le subdomaine _dmarc contenant:
v=DMARC1; p=none; rua=adressemail@rapport.fdf
qui demande ici de n,e pas avoir de comportement particulier avec les mails reçus ne se conformant pas (ce qui correspondra le plus souvent au refus de transférer le mail ou au moins au greylisting) et d’envoyer des rapports de ces mails à adressemail@rapport.fdf
Pour tester que tout va bien
Il y en a sûrement d’autres mais celui là fonctionne bien et fait son taff: https://www.mail-tester.com/
Pour avoir une lecture claire des enregistrements DMARC: https://dmarcian.com/
Sans oublier swaks qui permet d’envoyer des mails très facilement sur le smtp de son choix avec le From désiré avec qques options très simples
swaks --to gg4fd5gd@mail-tester.com --from gdfgg@helpcomputer.org --server localhost
Les différentes ressources utilisées
Les mails & debian
- https://www.debian.org/releases/stable/amd64/ch08s05.html.fr
- https://debian-handbook.info/browse/fr-FR/stable/network-services.html#sect.smtp-mail-server
Exim et DKIM
- http://www.exim.org/exim-html-current/doc/html/spec_html/ch-support_for_dkim_domainkeys_identified_mail.html
- https://debian-administration.org/article/718/DKIM-signing_outgoing_mail_with_ex
- https://howto.biapy.com/fr/debian-gnu-linux/serveurs/e-mails/configurer-dkim-avec-exim-4-sur-debian
Ressources DMARC
- https://dmarc.org/wiki/FAQ
- https://dmarcian.com
- http://www.delivernow.eu/technique/dmarc-spf-dkim-nouveau-standard-pour-authentification-emails
- http://www.delivernow.eu/technique/bilan-dmarc
- https://www.guillaume-leduc.fr/quest-ce-que-dmarc-et-comment-lire-son-premier-rapport.html
[…] (Source: Journal du hacker) […]