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éthodeassouplie
tolère des modifications mineures telles que remplacement des espaces blancs ;relaxed/simple
- l'en-tête du message sera traité avec l'algorithmerelaxed
et le corps avec l'algorithmesimple
- 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 surlocalhost
, port12301
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