Différences entre versions de « Installer DKIM sur Postfix sous Debian »

De Ikoula Wiki
Jump to navigation Jump to search
(Ajout des catégories DKIM et MAIL. Modifications pour refléter le côté exemple général.)
Ligne 23 : Ligne 23 :
 
; Ouvrir le fichier
 
; Ouvrir le fichier
 
<syntaxhighlight lang="bash"> vi /etc/opendkim.conf </syntaxhighlight>
 
<syntaxhighlight lang="bash"> vi /etc/opendkim.conf </syntaxhighlight>
; Ajouter les lignes suivantes au fichier /etc/opendkim.conf
+
; Ajouter les lignes suivantes au fichier /etc/opendkim.conf, si certaines sont déjà présentes les commenter pour éviter tout problème
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
AutoRestart            Yes
 
AutoRestart            Yes
Ligne 45 : Ligne 45 :
 
UserID                  opendkim:opendkim
 
UserID                  opendkim:opendkim
  
Socket                  inet:12301@localhost
+
Socket                  inet:17789@localhost
 
</syntaxhighlight>
 
</syntaxhighlight>
 
Voici les différents paramètres:
 
Voici les différents paramètres:
Ligne 89 : Ligne 89 :
 
|-
 
|-
 
|Socket
 
|Socket
|Le port d'écoute sur lequel Postifx et '''OpenDKIM''' échangeront les messages. Pour écouter en local sur le port 12301: 12301@localhost.
+
|Le port d'écoute sur lequel Postifx et '''OpenDKIM''' échangeront les messages. Pour écouter en local sur le port 17789: 17789@localhost.
 
|}
 
|}
 
Ceci est une configuration d'exemple, vous devez faire correspondre les paramètres à votre configuration actuelle et selon les besoins. Vous trouverez plus d'informations à propos du fichier de configuration d''''OpenDKIM''' à cette [http://www.opendkim.org/opendkim.conf.5.html adresse].
 
Ceci est une configuration d'exemple, vous devez faire correspondre les paramètres à votre configuration actuelle et selon les besoins. Vous trouverez plus d'informations à propos du fichier de configuration d''''OpenDKIM''' à cette [http://www.opendkim.org/opendkim.conf.5.html adresse].
 +
<syntaxhighlight lang=bash>
 +
# Log to syslog
 +
#Syslog                  yes
 +
# Required to use local socket with MTAs that access the socket as a non-
 +
# privileged user (e.g. Postfix)
 +
#UMask                  002
 +
 +
# Sign for example.com with key in /etc/mail/dkim.key using
 +
# selector '2007' (e.g. 2007._domainkey.example.com)
 +
#Domain                example.com
 +
#KeyFile                /etc/mail/dkim.key
 +
#Selector              2007
 +
 +
# Commonly-used options; the commented-out versions show the defaults.
 +
#Canonicalization      simple
 +
#Mode                  sv
 +
#SubDomains            no
 +
#ADSPDiscard            no
 +
 +
# Always oversign From (sign using actual From and a null From to prevent
 +
# malicious signatures header fields (From and/or others) between the signer
 +
# and the verifier.  From is oversigned by default in the Debian pacakge
 +
# because it is often the identity key used by reputation systems and thus
 +
# somewhat security sensitive.
 +
OversignHeaders        From
 +
 +
# List domains to use for RFC 6541 DKIM Authorized Third-Party Signatures
 +
# (ATPS) (experimental)
 +
 +
#ATPSDomains            example.com
 +
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
 +
</syntaxhighlight>
  
 
====/etc/default/opendkim====
 
====/etc/default/opendkim====
Ligne 97 : Ligne 149 :
 
<syntaxhighlight lang="bash"> vi /etc/default/opendkim </syntaxhighlight>
 
<syntaxhighlight lang="bash"> vi /etc/default/opendkim </syntaxhighlight>
 
; Ajouter la ligne suivante
 
; Ajouter la ligne suivante
<syntaxhighlight lang="bash"> SOCKET="inet:12301@localhost" </syntaxhighlight>
+
<syntaxhighlight lang="bash"> SOCKET="inet:17789@localhost" </syntaxhighlight>
Il faut modifier le port si celui-ci est différent dans le fichier de configuration précédent.
+
Il faut modifier le port si celui-ci est différent dans le fichier de configuration précédent. Il faut être attentif sur le port défini précédemment afin de conserver le même à travers les différents fichiers de configuration.
  
 
===Configuration de Postfix===
 
===Configuration de Postfix===
Ligne 107 : Ligne 159 :
 
  milter_default_action = accept </syntaxhighlight>
 
  milter_default_action = accept </syntaxhighlight>
 
; Si des filtres anti-spam sont installés il faut ajouter '''OpenDKIM''' à la liste
 
; Si des filtres anti-spam sont installés il faut ajouter '''OpenDKIM''' à la liste
<syntaxhighlight lang="bash"> smtpd_milters = unix:/spamass/spamass.sock, inet:localhost:12301
+
<syntaxhighlight lang="bash"> smtpd_milters = unix:/spamass/spamass.sock, inet:localhost:17789
  non_smtpd_milters = unix:/spamass/spamass.sock, inet:localhost:12301 </syntaxhighlight>
+
  non_smtpd_milters = unix:/spamass/spamass.sock, inet:localhost:17789 </syntaxhighlight>
 
; Sinon ajouter '''OpenDKIM'''
 
; Sinon ajouter '''OpenDKIM'''
<syntaxhighlight lang="bash"> smtpd_milters = inet:localhost:12301
+
<syntaxhighlight lang="bash"> smtpd_milters = inet:localhost:17789
  non_smtpd_milters = inet:localhost:12301 </syntaxhighlight>
+
  non_smtpd_milters = inet:localhost:17789 </syntaxhighlight>
  
 
===Création des dossiers===
 
===Création des dossiers===
Ligne 129 : Ligne 181 :
 
192.168.0.1/24
 
192.168.0.1/24
  
*.example.com
+
*.example.tld
 
</syntaxhighlight>
 
</syntaxhighlight>
Ce fichier est un exemple de configuration pour le domaine *.example.com
+
Ce fichier est un exemple de configuration pour le domaine *.example.tld
 
; Enregistrer et fermer le fichier TrustedHosts
 
; Enregistrer et fermer le fichier TrustedHosts
  
Ligne 139 : Ligne 191 :
 
<syntaxhighlight lang="bash"> vi /etc/opendkim/KeyTable </syntaxhighlight>
 
<syntaxhighlight lang="bash"> vi /etc/opendkim/KeyTable </syntaxhighlight>
 
; Ajouter la ligne suivante
 
; Ajouter la ligne suivante
<syntaxhighlight lang="bash"> mail._domainkey.example.com example.com:mail:/etc/opendkim/keys/example.com/mail.private </syntaxhighlight>
+
<syntaxhighlight lang="bash"> mail._domainkey.example.tld example.tld:mail:/etc/opendkim/keys/example.tld/mail.private </syntaxhighlight>
Dans cet exemple le domaine example.com devra aller chercher sa clé dans /etc/opendkim/keys/example.com/mail.private<br>
+
Dans cet exemple le domaine example.tld devra aller chercher sa clé dans /etc/opendkim/keys/example.tld/mail.private<br>
 
Il est important que vous adaptiez cette configuration à votre domaine.
 
Il est important que vous adaptiez cette configuration à votre domaine.
  
Ligne 148 : Ligne 200 :
 
<syntaxhighlight lang="bash"> vi /etc/opendkim/SigningTable </syntaxhighlight>
 
<syntaxhighlight lang="bash"> vi /etc/opendkim/SigningTable </syntaxhighlight>
 
; Ajouter la ligne suivante ( l'utilisation des wildcards est autorisée )
 
; Ajouter la ligne suivante ( l'utilisation des wildcards est autorisée )
<syntaxhighlight lang="bash"> *@example.com mail._domainkey.example.com </syntaxhighlight>
+
<syntaxhighlight lang="bash"> *@example.tld mail._domainkey.example.tld </syntaxhighlight>
Dans cet exemple les adresse en @example.com devront être redirigées vers le sélecteur mail._domainkey.example.com.<br>
+
Dans cet exemple les adresse en @example.tld devront être redirigées vers le sélecteur mail._domainkey.example.tld.<br>
 
Il est important que vous adaptiez cette configuration à votre domaine.
 
Il est important que vous adaptiez cette configuration à votre domaine.
  
Ligne 156 : Ligne 208 :
 
; Se déplacer dans le dossier qui recevra les clés
 
; Se déplacer dans le dossier qui recevra les clés
 
<syntaxhighlight lang="bash"> cd /etc/opendkim/keys </syntaxhighlight>
 
<syntaxhighlight lang="bash"> cd /etc/opendkim/keys </syntaxhighlight>
: Créer un dossier pour notre nouveau domaine example.com
+
: Créer un dossier pour notre nouveau domaine example.tld
<syntaxhighlight lang="bash"> mkdir example.com </syntaxhighlight>
+
<syntaxhighlight lang="bash"> mkdir example.tld </syntaxhighlight>
 
; Se déplacer dans le dossier du domaine
 
; Se déplacer dans le dossier du domaine
<syntaxhighlight lang="bash"> cd example.com </syntaxhighlight>
+
<syntaxhighlight lang="bash"> cd example.tld </syntaxhighlight>
; Générer les clés pour notre domaine example.com
+
; Générer les clés pour notre domaine example.tld
<syntaxhighlight lang="bash"> opendkim-genkey -s mail -d example.com </syntaxhighlight>
+
<syntaxhighlight lang="bash"> opendkim-genkey -s mail -d example.tld </syntaxhighlight>
 
L'option -s permet de spécifier un sélecteur et -d le domaine. Cette commande va créer deux fichiers ''mail.private'' la clé privée et ''mail.txt'' la clé publique.
 
L'option -s permet de spécifier un sélecteur et -d le domaine. Cette commande va créer deux fichiers ''mail.private'' la clé privée et ''mail.txt'' la clé publique.
 
; Changer le propriétaire de la clé privée
 
; Changer le propriétaire de la clé privée
Ligne 169 : Ligne 221 :
 
Nous possédons à présent nos clés publiques, nous devons maintenant les ajouter dans les enregistrements DNS.
 
Nous possédons à présent nos clés publiques, nous devons maintenant les ajouter dans les enregistrements DNS.
 
; Récupérons notre clé publique
 
; Récupérons notre clé publique
<syntaxhighlight lang="bash"> vi /etc/opendkim/keys/example.com/mail.private </syntaxhighlight>
+
<syntaxhighlight lang="bash"> cat /etc/opendkim/keys/example.tld/mail.private </syntaxhighlight>
Vous devriez récupérer une ligne semblable à cette ligne d'exemple : <pre> mail._domainkey IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC5N3lnvvrYgPCRSoqn+awTpE+iGY" ; ----- DKIM key mail for example.com </pre>
+
Vous devriez récupérer une ligne semblable à cette ligne d'exemple : <pre> mail._domainkey IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC5N3lnvvrYgPCRSoqn+awTpE+iGY" ; ----- DKIM key mail for example.tld </pre>
 
; Copier la clé, la partie "v=DKIM1 ... +iGY", dans notre exemple
 
; Copier la clé, la partie "v=DKIM1 ... +iGY", dans notre exemple
 
; Ajouter un enregistrement DNS TXT contenant la clé
 
; Ajouter un enregistrement DNS TXT contenant la clé
Ligne 179 : Ligne 231 :
  
 
== Conclusion ==
 
== Conclusion ==
L'utilisation d''''OpenDKIM''' est maintenant effective pour les mails envoyés depuis les adresses du domaine @example.com<br>
+
L'utilisation d''''OpenDKIM''' est maintenant effective pour les mails envoyés depuis les adresses du domaine @example.tld<br>
 
Cet article n'est pas exhaustif sur la configuration d''''OpenDKIM''', il convient d'adapter ces exemples avec la configuration de votre serveur.
 
Cet article n'est pas exhaustif sur la configuration d''''OpenDKIM''', il convient d'adapter ces exemples avec la configuration de votre serveur.
  
 
[[Catégorie:Serveur dédié]]
 
[[Catégorie:Serveur dédié]]
 
[[Catégorie:Linux]]
 
[[Catégorie:Linux]]
 +
[[Catégorie:Mail]]
 +
[[Catégorie:DKIM]]
 
<br />
 
<br />
 
<comments />
 
<comments />

Version du 29 octobre 2015 à 19:55

en:Install DKIM on Postfix under Debian

Introduction

Afin d'éviter de voir finir ses mails dans le dossier spam il peut être intéressant de mettre en place un DKIM dans ses emails.
DKIM ou DomainKeys Identified Mail est une méthode d'authentification des mails. Cette méthode permet de signer un mail avec un identifiant de domaine émetteur, utile pour savoir qui est responsable de l'envoi en cas de réclamations. Vous trouverez plus d'informations sur le DKIM sur la page Wikipedia disponible à cette adresse

Cet article a pour but d'introduire l'installation d'OpenDKIM et sa configuration. Cet article n'est pas exhaustif sur les paramètres de configuration du service, il vous appartient de vérifier la cohérence de la configuration avec votre système.

Pré-requis

L'un des pré-requis essentiel est de conserver son système le plus à jour possible.

 apt-get update
 apt-get upgrade

Afin de conserver votre système Debian à jour, assurez-vous de posséder une liste des dépôts officiels. Vous pourrez trouver une liste des dépôts disponibles chez Ikoula et les instructions d'installation à cette adresse.

Avertissement: Avant toute modification de votre système prévoyez toujours une sauvegarde de vos fichiers en cas de mauvaise manipulation.
Sur un serveur de production, pensez à effectuer ces opérations pendant les heures creuses afin de minimiser l'impact de vos actions.

Mise en place

Installation d'OpenDKIM

Tout d'abord installations OpenDKIM
 apt-get install opendkim opendkim-tools

Configuration d'OpenDKIM

La configuration d'OpenDKIM s'effectue au travers de deux fichiers: /etc/opendkim.conf et /etc/default/opendkim.

/etc/opendkim.conf

Le fichier principal de configuration d'OpenDKIM.

Ouvrir le fichier
 vi /etc/opendkim.conf
Ajouter les lignes suivantes au fichier /etc/opendkim.conf, si certaines sont déjà présentes les commenter pour éviter tout problème
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

Voici les différents paramètres:

AutoRestart Redémarrer automatiquement le service en cas d'erreur.
AutoRestartRate Le nombre de redémarrage maximum dans un temps donné. Par exemple 10 redémarrages par heure: 10/1h.
UMAsk Accorder les permissions totales pour l'utilisateur défini par son userID, et accorder des permissions en lecture et exécution pour les autres utilisateurs.
Syslog / SyslogSuccess / LogWhy Activer les journaux détaillés pour le service.
Canonicalization La mise en forme canonique des messages de log.
ExternalIgnoreList Les hôtes externes autorisés à envoyer des mails depuis ce serveur sans authentification.
InternalHosts Les hôtes internes pour lesquels les mails sortants doivent être signés.
KeyTable Assure la liaison des noms de clés avec les fichiers de clé.
SigningTable La liste des signatures qui seront utilisées pour un message. Le choix se base sur l'adresse expéditrice.
Mode Le mode opératoire d'OpenDKIM. (s) signature et (v) vérification.
PidFile Emplacement du fichier de pid contenant l'identifiant processus du service.
SignatureAlgorithm L'algorithme de chiffrement choisi pour encoder les signatures.
UserID L'utilisateur et son groupe qui exécutera le service OpenDKIM
Socket Le port d'écoute sur lequel Postifx et OpenDKIM échangeront les messages. Pour écouter en local sur le port 17789: 17789@localhost.

Ceci est une configuration d'exemple, vous devez faire correspondre les paramètres à votre configuration actuelle et selon les besoins. Vous trouverez plus d'informations à propos du fichier de configuration d'OpenDKIM à cette adresse.

# Log to syslog
#Syslog                  yes
# Required to use local socket with MTAs that access the socket as a non-
# privileged user (e.g. Postfix)
#UMask                   002

# Sign for example.com with key in /etc/mail/dkim.key using
# selector '2007' (e.g. 2007._domainkey.example.com)
#Domain                 example.com
#KeyFile                /etc/mail/dkim.key
#Selector               2007

# Commonly-used options; the commented-out versions show the defaults.
#Canonicalization       simple
#Mode                   sv
#SubDomains             no
#ADSPDiscard            no

# Always oversign From (sign using actual From and a null From to prevent
# malicious signatures header fields (From and/or others) between the signer
# and the verifier.  From is oversigned by default in the Debian pacakge
# because it is often the identity key used by reputation systems and thus
# somewhat security sensitive.
OversignHeaders         From

# List domains to use for RFC 6541 DKIM Authorized Third-Party Signatures
# (ATPS) (experimental)

#ATPSDomains            example.com
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

/etc/default/opendkim

Ouvrir le fichier
 vi /etc/default/opendkim
Ajouter la ligne suivante
 SOCKET="inet:17789@localhost"

Il faut modifier le port si celui-ci est différent dans le fichier de configuration précédent. Il faut être attentif sur le port défini précédemment afin de conserver le même à travers les différents fichiers de configuration.

Configuration de Postfix

Editer le fichier de configuration de Postifx
 vi /etc/postfix/main.cf
Vérifier que les lignes suivantes sont présentes et dé-commentées
 milter_protocol = 2
 milter_default_action = accept
Si des filtres anti-spam sont installés il faut ajouter OpenDKIM à la liste
 smtpd_milters = unix:/spamass/spamass.sock, inet:localhost:17789
 non_smtpd_milters = unix:/spamass/spamass.sock, inet:localhost:17789
Sinon ajouter OpenDKIM
 smtpd_milters = inet:localhost:17789
 non_smtpd_milters = inet:localhost:17789

Création des dossiers

Nous allons à présent créer les dossiers qui vont contenir toutes les données d'OpenDKIM comme les hôtes, les signatures, etc...

Créer la structure
 mkdir /etc/opendkim
 mkdir /etc/opendkim/keys

Autoriser les hôtes

Nous allons maintenant spécifier les hôtes autorisés à signer les mails avec OpenDKIM.

Créer le fichier /etc/opendkim/TrustedHosts
 vi /etc/opendkim/TrustedHosts
Nous pouvons, afin de déclarer les domaines, utiliser des wildwards (*)
 #Ne pas toucher les 3 premieres lignes
127.0.0.1
localhost
192.168.0.1/24

*.example.tld

Ce fichier est un exemple de configuration pour le domaine *.example.tld

Enregistrer et fermer le fichier TrustedHosts

Dictionnaire de clés

Le fichier dictionnaire est là pour assurer la liaison de chaque domaine à sa clé correspondante.

Créer le dictionnaire de clé
 vi /etc/opendkim/KeyTable
Ajouter la ligne suivante
 mail._domainkey.example.tld example.tld:mail:/etc/opendkim/keys/example.tld/mail.private

Dans cet exemple le domaine example.tld devra aller chercher sa clé dans /etc/opendkim/keys/example.tld/mail.private
Il est important que vous adaptiez cette configuration à votre domaine.

Dictionnaire de signature

Le fichier dictionnaire de signature est là pour assurer la liaison de chaque adresse mail vers son domaine correspondant.

Créer le dictionnaire de signature
 vi /etc/opendkim/SigningTable
Ajouter la ligne suivante ( l'utilisation des wildcards est autorisée )
 *@example.tld mail._domainkey.example.tld

Dans cet exemple les adresse en @example.tld devront être redirigées vers le sélecteur mail._domainkey.example.tld.
Il est important que vous adaptiez cette configuration à votre domaine.

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

Nous allons à présent générer nos paires de clés publiques et privées.

Se déplacer dans le dossier qui recevra les clés
 cd /etc/opendkim/keys
Créer un dossier pour notre nouveau domaine example.tld
 mkdir example.tld
Se déplacer dans le dossier du domaine
 cd example.tld
Générer les clés pour notre domaine example.tld
 opendkim-genkey -s mail -d example.tld

L'option -s permet de spécifier un sélecteur et -d le domaine. Cette commande va créer deux fichiers mail.private la clé privée et mail.txt la clé publique.

Changer le propriétaire de la clé privée
 chown opendkim:opendkim mail.private

Ajout des clés publiques aux enregistrements DNS

Nous possédons à présent nos clés publiques, nous devons maintenant les ajouter dans les enregistrements DNS.

Récupérons notre clé publique
 cat /etc/opendkim/keys/example.tld/mail.private

Vous devriez récupérer une ligne semblable à cette ligne d'exemple :

 mail._domainkey IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC5N3lnvvrYgPCRSoqn+awTpE+iGY" ; ----- DKIM key mail for example.tld 
Copier la clé, la partie "v=DKIM1 ... +iGY", dans notre exemple
Ajouter un enregistrement DNS TXT contenant la clé

La propagation DNS peut prendre quelques heures pour être effective ( de 24h à 48h ).

Redémarrer les services Postfix et OpenDKIM
 service postfix restart
 service opendkim restart

Conclusion

L'utilisation d'OpenDKIM est maintenant effective pour les mails envoyés depuis les adresses du domaine @example.tld
Cet article n'est pas exhaustif sur la configuration d'OpenDKIM, il convient d'adapter ces exemples avec la configuration de votre serveur.


Vous n'êtes pas autorisé à publier de commentaire.