Installer et configurer DKIM avec Postfix sur Debian

La frustration d'être faussement signalé comme spammeur n'est pas étrangère à la plupart des administrateurs de serveurs de messagerie. En excluant la possibilité d'un serveur compromis, un faux drapeau est généralement causé par l'un des éléments suivants :

  • le serveur est un relais de messagerie ouvert
  • l'adresse IP de l'expéditeur ou du serveur est sur liste noire
  • le serveur n'a pas de nom de domaine complet (FQDN) ni d'enregistrement PTR
  • l'enregistrement DNS Sender Policy Framework (SPF) est manquant ou mal configuré
  • l'implémentation DomainKeys Identified Mail (DKIM) est manquante ou n'est pas correctement configurée

Ce sont quelques-unes des propriétés de base qui sont vérifiées par la majorité des filtres anti-spam propriétaires et open source (y compris SpamAssassin). La réussite de ces tests est extrêmement importante pour un serveur de messagerie bien configuré.

Ce didacticiel se concentrera sur l'installation et la configuration d'OpenDKIM] : une implémentation open source du système d'authentification de l'expéditeur DKIM.

On suppose que le lecteur sait comment accéder au serveur via SSH, Postfix et Dovecot est déjà installé et configuré (tutoriel).

À propos de DKIM

DKIM est une norme Internet qui permet à une personne ou à une organisation d'associer un nom de domaine à un message électronique. Ceci, en effet, sert de méthode pour revendiquer la responsabilité d'un message. À la base, DKIM est alimenté par la cryptographie asymétrique. L'agent de transfert de courrier (MTA) de l'expéditeur signe chaque message sortant avec une clé privée. Le destinataire récupère la clé publique à partir des enregistrements DNS de l'expéditeur et vérifie si le corps du message et certains des champs d'en-tête n'ont pas été modifiés depuis la signature du message.

Installer OpenDKIM

Avant de commencer l'installation, une mise à jour du système est recommandée :

apt update
apt dist-upgrade

Installez OpenDKIM et ses dépendances :

apt install opendkim opendkim-tools

Des packages supplémentaires seront répertoriés en tant que dépendances, tapez yes et appuyez sur Entrée pour continuer.

Configurer OpenDKIM

Quelques fichiers doivent être créés et modifiés afin de configurer OpenDKIM.

Important : remplacez chaque instance de example.com par votre propre domaine dans toutes les commandes et tous les fichiers de configuration. N'oubliez pas de sauvegarder vos fichiers après modification.

Commençons par le fichier de configuration principal :

nano /etc/opendkim.conf

Ajoutez les lignes suivantes à la fin du fichier conf (chaque paramètre est expliqué ci-dessous).

En option, vous pouvez choisir un numéro de port personnalisé pour le Socket.

Assurez-vous qu'il n'est pas utilisé par une autre application.

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
  • AutoRestart : redémarrage automatique du filtre en cas d'échec
  • AutoRestartRate : spécifie le taux de redémarrage maximal du filtre, si les redémarrages commencent à se produire plus rapidement que ce taux, le filtre se terminera ; 10/1h - 10 redémarrages/heure sont autorisés au maximum
  • UMask : donne toutes les autorisations d'accès au groupe d'utilisateurs défini par UserID et permet aux autres utilisateurs de lire et d'exécuter des fichiers, dans ce cas, il permettra la création et la modification d'un fichier Pid.
  • Syslog, SyslogSuccess, *LogWhy : ces paramètres permettent une journalisation détaillée via des appels à syslog
  • Canonicalisation : définit les méthodes de canonisation utilisées lors de la signature des messages, la méthode simple ne permet presque aucune modification tandis que la méthode assouplie tolère des modifications mineures telles que remplacement des espaces blancs ; relaxed/simple - l'en-tête du message sera traité avec l'algorithme relaxed et le corps avec l'algorithme simple
  • ExternalIgnoreList : spécifie les hôtes externes qui peuvent envoyer du courrier via le serveur comme l'un des domaines de signature sans informations d'identification
  • InternalHosts : définit une liste d'hôtes internes dont le courrier ne doit pas être vérifié mais signé à la place
  • KeyTable : mappe les noms de clés aux clés de signature
  • SigningTable : liste les signatures à appliquer à un message en fonction de l'adresse trouvée dans le champ d'en-tête De :
  • Mode : déclare les modes de fonctionnement ; dans ce cas le milter agit comme un signataire (s) et un vérificateur (v)
  • PidFile : le chemin vers le fichier Pid qui contient le numéro d'identification du processus
  • SignatureAlgorithm : sélectionne l'algorithme de signature à utiliser lors de la création de signatures
  • UserID : le processus opendkim s'exécute sous cet utilisateur et ce groupe
  • Socket : le milter écoutera sur le socket spécifié ici, Posfix enverra des messages à opendkim pour signature et vérification via ce socket ; 12301@localhost définit un socket TCP qui écoute sur localhost, port 12301

Cette configuration simple est destinée à permettre la signature de messages pour un ou plusieurs domaines, pour en savoir plus sur les autres options, veuillez vous rendre ici.

Connectez le milter à Postfix :

nano /etc/default/opendkim

Ajoutez la ligne suivante, modifiez le numéro de port uniquement si un numéro personnalisé est utilisé :

SOCKET="inet:12301@localhost"

Configurez postfix pour utiliser ce milter :

nano /etc/postfix/main.cf

Assurez-vous que ces deux lignes sont présentes dans le fichier de configuration de Postfix et ne sont pas commentées (sinon les ajouter):

milter_protocol = 2
milter_default_action = accept

Il est probable qu'un filtre (SpamAssasin, Clamav etc.) soit déjà utilisé par Postfix ; si les paramètres suivants sont présents, ajoutez-leur simplement le milter opendkim (les milters sont séparés par une virgule), le numéro de port doit être le même que dans opendkim.conf :

smtpd_milters = unix:/spamass/spamass.sock, inet:localhost:12301
non_smtpd_milters = unix:/spamass/spamass.sock, inet:localhost:12301

Créez une structure de répertoires qui contiendra les hôtes de confiance, les tables de clés, les tables de signature et les clés de chiffrement :

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

Spécifiez les hôtes de confiance :

nano /etc/opendkim/TrustedHosts

Nous utiliserons ce fichier pour définir à la fois ExternalIgnoreList et InternalHosts, les messages provenant de ces hôtes, domaines et adresses IP seront approuvés et signés.

Parce que notre fichier de configuration principal déclare TrustedHosts comme un fichier d'expression régulière (refile), nous pouvons utiliser des caractères génériques, *.example.com signifie que les messages provenant des sous-domaines de example.com seront également approuvés, pas seulement ceux envoyés depuis le domaine racine.

Personnalisez et ajoutez les lignes suivantes au fichier nouvellement créé. Plusieurs domaines peuvent être spécifiés, ne modifiez pas les trois premières lignes :

127.0.0.1
localhost
192.168.0.1/24

*.example.com

#*.example.net
#*.example.org

Créez une table de clés :

nano /etc/opendkim/KeyTable

Une table de clés contient chaque paire sélecteur/domaine et le chemin vers leur clé privée. N'importe quelle chaîne alphanumérique peut être utilisée comme sélecteur, dans cet exemple mail est utilisé et il n'est pas nécessaire de le changer.

mail._domainkey.example.com example.com:mail:/etc/opendkim/keys/example.com/mail.private

Créez une table de signature :

nano /etc/opendkim/SigningTable

Ce fichier est utilisé pour déclarer les domaines/adresses e-mail et leurs sélecteurs.

*@example.com mail._domainkey.example.com

Générer les clés publiques et privées

Accédez au répertoire des clés :

cd /etc/opendkim/keys

Créez un dossier séparé pour le domaine afin de conserver les clés :

mkdir example.com
cd example.com

Générez les clés :

opendkim-genkey -s mail -d example.com

-s spécifie le sélecteur et -d le domaine, cette commande créera deux fichiers, mail.private est notre clé privée et mail.txt contient la clé publique.

Remplacez le propriétaire de la clé privée par opendkim :

chown opendkim:opendkim mail.private

Ajouter la clé publique aux enregistrements DNS du domaine

Ouvrez mail.txt :

nano -$ mail.txt

La clé publique est définie sous le paramètre p. N'utilisez pas l'exemple de clé ci-dessous, ce n'est qu'une illustration et ne fonctionnera pas sur votre serveur.

mail._domainkey IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC5N3lnvvrYgPCRSoqn+awTpE+iGYcKBPpo8HHbcFfCIIV10Hwo4PhCoGZSaKVHOjDm4yefKXhQjM7iKzEPuBatE7O47hAx1CJpNuIdLxhILSbEmbMxJrJAG0HZVn8z6EAoOHZNaPHmK2h4UUrjOG8zA5BHfzJf7tGwI+K619fFUwIDAQAB" ; ----- DKIM key mail for example.com

Copiez cette clé et ajoutez un enregistrement TXT aux entrées DNS de votre domaine :

Name: mail._domainkey.example.com.
Text: "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC5N3lnvvrYgPCRSoqn+awTpE+iGYcKBPpo8HHbcFfCIIV10Hwo4PhCoGZSaKVHOjDm4yefKXhQjM7iKzEPuBatE7O47hAx1CJpNuIdLxhILSbEmbMxJrJAG0HZVn8z6EAoOHZNaPHmK2h4UUrjOG8zA5BHfzJf7tGwI+K619fFUwIDAQAB"

Veuillez noter que les modifications DNS peuvent prendre quelques heures pour se propager.

Redémarrez Postfix et OpenDKIM :

service postfix restart
service opendkim restart

outes nos félicitations! Vous avez configuré avec succès DKIM pour votre serveur de messagerie !

La configuration peut être testée en envoyant un e-mail vide à check-auth@verifier.port25.com et une réponse sera reçue. Si tout fonctionne correctement, vous devriez voir DKIM check : pass sous Résumé des résultats.

==========================================================
Summary of Results
==========================================================
SPF check:          pass
DomainKeys check:   neutral
DKIM check:         pass
Sender-ID check:    pass
SpamAssassin check: ham

Alternativement, vous pouvez envoyer un message à une adresse Gmail que vous contrôlez, afficher les en-têtes des e-mails reçus dans votre boîte de réception Gmail, dkim=pass doit être présent dans les Authentication-Results champ d'en-tête.

Authentication-Results: mx.google.com;
       spf=pass (google.com: domain of contact@example.com designates --- as permitted sender) smtp.mail=contact@example.com;
       dkim=pass header.i=@example.com;

 

Source = https://fr.linux-console.net/?p=5590

Écrire un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec une *

Quelle est le quatrième caractère du mot yvhx3bw ? :