Table des matières

OpenDKIM

Installation

Debian

:!: postfix doit être installé

Installation des paquet requis :

apt-get update
apt-get install opendkim opendkim-tools

Configuration

Paramétrage d'opendkim

Editer le fichier de configuration :

vim /etc/opendkim.conf

Ajouter les lignes suivantes :

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:17789@localhost

Editer le fichier :

vim /etc/default/opendkim

Ajouter la ligne suivante :

SOCKET="inet:17789@localhost"

Implémentation dans Postfix

Editer le fichier :

vim /etc/postfix/main.cf

Ajouter les lignes suivantes :

# START - DKIM CONFIG
milter_protocol = 2
milter_default_action = accept
#
smtpd_milters = inet:localhost:17789
non_smtpd_milters = inet:localhost:17789
# END - DKIM CONFIG

Autorisation des hôtes

Création de la structure de fichier :

mkdir /etc/opendkim
mkdir /etc/opendkim/keys

Ajuster le hôtes de confiance :

vim /etc/opendkim/TrustedHosts

Exemple :

127.0.0.1
localhost
192.168.2.2/32
*.domaine1.com
*.domaine2.com

Définition tableau des clé

Il faut créer un tableau de correspondance : clé publique (DNS) et clé privé (serveur mail).

Créer/Editer le fichier :

vim /etc/opendkim/KeyTable

Ajouter par exemple les lignes suivantes, à modifier selon le nom de domaine :

mail._domainkey.domaine1.com. keexybox.org:mail:/etc/opendkim/keys/domaine1.com/mail.private
mail._domainkey.domaine2.com. sagstem.com:mail:/etc/opendkim/keys/sdomaine2.com/mail.private

Par exemple, la clé publique révélée par l'enregistrement DNS mail._domainkey.domaine1.com, correspondra à la clé privé localisé dans /etc/opendkim/keys/domaine1.com/mail.private.

Assignation domaine de messagerie et clé publique

L'idée est d'assigner un domaine de messagerie @domaine.com à un profil de clé public.

Editer le fichier :

vim /etc/opendkim/SigningTable

Insérer par exemple les lignes suivantes, à ajuster selon vos domaines :

Génération des clés publiques et privés

Se rendre dans le répertoire de stockage des clé :

cd /etc/opendkim/keys

Créer le répertoire pour les clé de domaine1.com et aller dans le répertoire. par exemple :

mkdir domaine1.com
cd domaine1.com

Générer la pair de clé :

openssl genrsa -out mail.private
openssl rsa -in mail.private -out mail.public -pubout -outform PEM

Appliquer les permissions :

chown opendkim:opendkim mail.private

Reproduire les étapes pour domain2.com.

Enregistrement DNS des clés publiques

Afficher l'enregistrement DNS à créer :

cat /etc/opendkim/keys/domaine1.com/mail.txt

Exemple de résultat :

#-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtXc0cuhh+8e1ZFfeVTAn
6AKzPUMenYN7YDFau/93hHBHJwsiZkxmdcW17wWy95V2oYlKQXgZn5GvcY1reetC
wczYZ6HSMLWL25k/kWXxHBefgJur8pMy3y9PbfLFr34q4Ux6BwplKwxaE8M09CGz
Ch3CVuUu9MZedoRx04pcXeGWFJRio1oyIBkf5d33spivSnphikIJHir0iMQ9AsVQ
be0aIt/7XxlkhVbCH7xovFzHEOgYN6S2wiXreT33VklvEDGqy9x+1/SGQCiwY2bY
RNOj5nqeoFV9Rgcp/iLJnQZ48aPPqeNQCLKRyDBNlFz3896suwsUlF0mXmsd3pe3
dQIDAQAB
-----END PUBLIC KEY-----

Préparer les lignes pour l'enregistrement DNS à mettre en une seul ligne :

"v=DKIM1;k=rsa;p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtXc0cuhh+8e1ZFfeVTAn6AKzPUMenYN7YDFau/93hHBHJwsiZkxmdcW17wWy95V2oYlKQXgZn5GvcY1reetCwczYZ6HSMLWL25k/kWXxHBefgJur8pMy3y9PbfLFr34q4Ux6BwplKwxaE8M09CGzCh3CVuUu9MZedoRx04pcXeGWFJRio1oyIBkf5d33spivSnphikIJHir0iMQ9AsVQbe0aIt/7XxlkhVbCH7xovFzHEOgYN6S2wiXreT33VklvEDGqy9x+1/SGQCiwY2bYRNOj5nqeoFV9Rgcp/iLJnQZ48aPPqeNQCLKRyDBNlFz3896suwsUlF0mXmsd3pe3dQIDAQAB"

Le format est :

"v=DKIM1;k=rsa;p=<chaine_en_une_ligne>"

:!: Attention, si vous faite l'enregistrement DNS via un formulaire Web : Il faut parfois laisser les guillemets dans le champs de saisie de la cible et parfois non. Cela dépendant du fournisseur.

Redémarrer les services

Relancer les services pour prendre en compte la configuration :

service postfix restart
service opendkim restart