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

Exim et DKIM

Ressources DMARC

 

Posted in AdminSys by El Gnap at September 2nd, 2017.
Tags: , , , , , , , , ,

One Response to “Envoyer ses emails avec DKIM, SPF, DMARC sur exim4”