Mettre en place une signature DKIM sur son serveur email

Une signature DKIM va augmenter les chances pour que vos emails ne soit pas considérés comme SPAM.

sudo apt-get update && sudo apt upgrade
sudo apt-get install opendkim opendkim-tools
sudo rm /etc/opendkim.conf
sudo nano /etc/opendkim.conf

Coller à l’intérieur la configuration suivante:

AutoRestart             Yes
AutoRestartRate         10/1h
UMask                   002
Syslog                  yes
SyslogSuccess           Yes
LogWhy                  Yes

Canonicalization        relaxed/simple

ExternalIgnoreList      refile:/etc/opendkim/TrustedHosts
InternalHosts           refile:/etc/opendkim/TrustedHosts
KeyTable                refile:/etc/opendkim/KeyTable
SigningTable            refile:/etc/opendkim/SigningTable

Mode                    sv
PidFile                 /var/run/opendkim/opendkim.pid
SignatureAlgorithm      rsa-sha256

UserID                  opendkim:opendkim

Socket                  inet:12301@localhost
ATTENTION: Si vous avez un pare-feu il va falloir l’adapter de la façon suivante.
sudo nano /etc/init.d/firewall

Ajoutez le bloc DKIM:

# Autoriser DKIM
iptables -t filter -A INPUT -p tcp --dport 12301 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 12301 -j ACCEPT

Et on le redémarre:

sudo /etc/init.d/firewall stop
sudo /etc/init.d/firewall start

Ensuite on ajoute le SOCKET d’opendkim:

sudo nano /etc/default/opendkim

Ajouter à la fin du fichier:

SOCKET="inet:12301@localhost"

On configure Postfix:

sudo nano /etc/postfix/main.cf

Et on ajoute à la fin:

milter_protocol = 2
milter_default_action = accept
smtpd_milters = inet:localhost:12301
non_smtpd_milters = inet:localhost:12301

On créer les dossier qui contiendrons les KEYS d’opendkim:

ATTENTION: Remplacez $NOM.DE.DOMAINE par votre propre nom de domaine.
sudo mkdir /etc/opendkim
sudo mkdir /etc/opendkim/keys
sudo mkdir /etc/opendkim/keys/$NomDeDomaine

On ajoute les TrustedHosts :

sudo nano /etc/opendkim/TrustedHosts
ATTENTION: Remplacez $NOM.DE.DOMAINE par votre propre nom de domaine.
127.0.0.1
localhost
192.168.0.1/24

*.$NomDeDomaine

On ajoute la KeyTable:

sudo nano /etc/opendkim/KeyTable
ATTENTION: Remplacez $NOM.DE.DOMAINE par votre propre nom de domaine.
mail._domainkey.$NomDeDomaine $NomDeDomaine:mail:/etc/opendkim/keys/$NomDeDomaine/mail.private

On créer SigningTable:

sudo nano /etc/opendkim/SigningTable
ATTENTION: Remplacez $NOM.DE.DOMAINE par votre propre nom de domaine.
*@$NomDeDomaine mail._domainkey.$NomDeDomaine

On va créer la fameuse private key:

ATTENTION: Remplacez $NOM.DE.DOMAINE par votre propre nom de domaine.
cd /etc/opendkim/keys/$NomDeDomaine
sudo opendkim-genkey -s mail -d $NomDeDomaine
On récupère la private.key que l’on ajoute dans nos DNS, ATTENTION à bien récupérer la Key complète (toutes les lignes) sans les guillemets!!!
sudo nano -$ mail.txt
dkim

Sur le site ou vous avez acheter votre nom de domaine, créez un nouvelle entrée dans les DNS sous la forme:

ATTENTION: Remplacez $NomDeDomaine par votre propre nom de domaine. Et $PRIVATE.KEY par la Key que vous venez de copier (sans les guillemets).
Name: mail._domainkey.$NomDeDomaine

Text: "v=DKIM1; k=rsa; p=$PRIVATE.KEY"

Ensuite on établie les droits:

ATTENTION: Remplacez $NOM.DE.DOMAINE par votre propre nom de domaine.
sudo chown opendkim:opendkim /etc/opendkim/keys/$NomDeDomaine/mail.private
sudo chmod 600 /etc/opendkim/keys/$NomDeDomaine/mail.private
sudo chown -R opendkim:opendkim /etc/opendkim/
sudo chmod -R 750 /etc/opendkim/

On redémarre les services:

sudo service postfix restart
sudo service opendkim restart
Patientez le temps que les DNS se propagent (1 à 2 heures max).

En fin on test si le DKIM est correct:

ATTENTION: Remplacez $NomDeDomaine par votre propre nom de domaine.
sudo opendkim-testkey -d $NomDeDomaine -s mail -k /etc/opendkim/keys/$NomDeDomaine/mail.private -vvv

Si le résultat affiche: opendkim-testkey: key OK tout est bon!

Vous pouvez tester votre mail sur: https://www.mail-tester.com/