GNU/Linux >> Tutoriels Linux >  >> Cent OS

Partie 4 :Configurer SPF et DKIM avec Postfix sur le serveur de messagerie CentOS 8/RHEL 8

Après avoir terminé les parties 1 et 2, nous avons un serveur SMTP Postfix et un serveur IMAP Dovecot fonctionnels. Nous pouvons envoyer et recevoir des e-mails à l'aide d'un client de messagerie de bureau. Bien que j'aie créé le bon MX , A et PTR record, mes e-mails ont été signalés comme spam par Gmail et Outlook. Donc, dans cette partie, nous allons voir comment améliorer la livraison des e-mails dans la boîte de réception du destinataire en configurant SPF et DKIM sur le serveur CentOS/RHEL.

Que sont les enregistrements SPF et DKIM ?

SPF et DKIM sont deux types d'enregistrements TXT dans DNS qui peuvent aider à empêcher l'usurpation d'e-mails et à envoyer des e-mails légitimes dans la boîte de réception du destinataire au lieu du dossier spam. Si votre domaine est victime d'une usurpation d'e-mails, vos e-mails sont susceptibles d'atterrir dans le dossier spam du destinataire si celui-ci ne vous a pas ajouté dans son carnet d'adresses.

FPS (Sender Policy Framework) spécifie quels hôtes ou adresses IP sont autorisés à envoyer des e-mails au nom d'un domaine . Vous ne devez autoriser que votre propre serveur de messagerie ou le serveur de votre FAI à envoyer des e-mails pour votre domaine.

DKIM (DomainKeys Identified Mail) utilise une clé privée pour ajouter une signature aux e-mails envoyés depuis votre domaine . Les serveurs SMTP de réception vérifient la signature à l'aide de la clé publique correspondante, qui est publiée dans les enregistrements DNS de votre domaine.

Créer un enregistrement SPF dans DNS

Dans votre interface de gestion DNS, créez un nouvel enregistrement TXT comme ci-dessous.

TXT  @   v=spf1 mx ~all

Où :

  • TXT indique qu'il s'agit d'un enregistrement TXT.
  • Entrez @ dans le champ du nom pour représenter le nom de domaine apex.
  • v=spf1 indique qu'il s'agit d'un enregistrement SPF et que la version de l'enregistrement SPF est SPF1.
  • mx signifie que tous les hôtes répertoriés dans les enregistrements MX sont autorisés à envoyer des e-mails pour votre domaine et que tous les autres hôtes sont interdits.
  • ~tous indique que les e-mails de votre domaine ne doivent provenir que des hôtes spécifiés dans l'enregistrement SPF. Les e-mails envoyés par d'autres hôtes seront signalés comme non fiables. Les alternatives possibles sont +all , -all , ?all , mais ils sont rarement utilisés.

-all signifie que les e-mails envoyés par des hôtes non autorisés doivent être rejetés, pour ne jamais atterrir dans la boîte de réception ou le dossier spam du destinataire. Je l'ai vu utilisé par facebook.com, mais nous n'avons généralement pas besoin d'une politique aussi stricte.

Certaines personnes pourraient penser que -all sera mieux car il rejettera les e-mails provenant d'hôtes non fiables. Eh bien, en utilisant -all dans votre politique SPF peut entraîner le rejet de vos propres e-mails lorsque le destinataire dispose de deux serveurs SMTP et que le serveur SMTP principal se déconnecte, vos e-mails seront temporairement stockés sur le serveur SMTP de secours. Lorsque le serveur SMTP principal revient en ligne, l'e-mail est relayé du serveur SMTP de secours vers le serveur SMTP principal. Étant donné que vous n'avez pas répertorié le serveur SMTP de secours du destinataire dans votre politique SPF, l'e-mail sera rejeté par le serveur SMTP principal du destinataire. Vous devez donc utiliser ~all dans votre politique SPF.

Notez que certains gestionnaires DNS vous demandent d'envelopper l'enregistrement SPF avec des guillemets comme ci-dessous.

TXT  @   "v=spf1 mx ~all"

Pour vérifier si votre enregistrement SPF est propagé sur l'Internet public, vous pouvez utiliser le dig utilitaire sur votre machine Linux comme ci-dessous. (Sur CentOS/RHEL, vous devez installer le bind-utils package afin d'utiliser le dig commande :sudo dnf install bind-utils .)

dig your-domain.com txt

Le txt l'option indique dig que nous voulons uniquement interroger les enregistrements TXT.

Vous pouvez également utiliser le validateur SPF en ligne comme spf.myisp.ch pour voir quels hôtes sont autorisés à envoyer des e-mails pour votre domaine et déboguer votre enregistrement SPF en cas d'erreur. L'inspecteur SPF dmarcian peut vous aider à tester la syntaxe de votre enregistrement SPF.

Configuration de l'agent de stratégie SPF

Nous devons également indiquer à notre serveur SMTP Postfix de vérifier l'enregistrement SPF des e-mails entrants pour détecter les e-mails falsifiés. Installez d'abord les packages requis :

sudo dnf install epel-release

sudo dnf install pypolicyd-spf

Ajoutez ensuite un utilisateur pour policyd-spf.

sudo adduser policyd-spf --user-group --no-create-home -s /bin/false

Modifiez le fichier de configuration du processus maître Postfix.

sudo nano /etc/postfix/master.cf

Ajoutez les lignes suivantes à la fin du fichier, qui indiquent à Postfix de démarrer le démon de stratégie SPF lorsqu'il démarre lui-même. Policyd-spf s'exécutera en tant que policyd-spf utilisateur.

policyd-spf  unix  -       n       n       -       0       spawn
    user=policyd-spf argv=/usr/libexec/postfix/policyd-spf

Remarque  :Vous ne devez pas exécuter policyd-spf dans un environnement chroot.

Enregistrez et fermez le fichier. Ensuite, modifiez le fichier de configuration principal de Postfix.

sudo nano /etc/postfix/main.cf

Ajoutez les lignes suivantes à la fin du fichier. La première ligne spécifie le paramètre de délai d'expiration de l'agent de stratégie Postfix (pour interroger le DNS). Les lignes suivantes imposeront des restrictions sur les e-mails entrants en vérifiant l'enregistrement SPF.

policyd-spf_time_limit = 3600
smtpd_recipient_restrictions =
   permit_mynetworks,
   permit_sasl_authenticated,
   reject_unauth_destination,
   check_policy_service unix:private/policyd-spf

Enregistrez et fermez le fichier. Redémarrez ensuite Postfix.

sudo systemctl restart postfix

La prochaine fois que vous recevrez un e-mail d'un domaine disposant d'un enregistrement SPF, vous pourrez voir les résultats de la vérification SPF dans l'en-tête brut de l'e-mail. L'en-tête suivant indique que l'expéditeur a envoyé l'e-mail depuis un hôte autorisé.

Received-SPF: Pass (mailfrom) identity=mailfrom;

Configuration de DKIM

OpenDKIM et Amavis sont deux logiciels courants capables de signer et de vérifier DKIM sous Linux. Nous utiliserons OpenDKIM car il est léger et OpenDMARC ne fonctionne pas avec Amavis.

Installer et configurer OpenDKIM sur CentOS 8/RHEL8

Installez OpenDKIM à partir du référentiel EPEL (Extra Packages for Enterprise Linux).

sudo dnf install epel-release

sudo dnf install opendkim perl-Getopt-Long

Modifier le fichier de configuration principal d'OpenDKIM.

sudo nano /etc/opendkim.conf

Trouvez la ligne suivante.

Mode     v

Par défaut, OpenDKIM s'exécute en mode de vérification (v), qui vérifiera la signature DKIM des e-mails entrants. Nous devons signer les e-mails sortants. Remplacez donc cette ligne par la suivante pour activer le mode de signature.

Mode           sv

Trouvez ensuite les lignes suivantes.

## Specifies whether or not the filter should generate report mail back
## to senders when verification fails and an address for such a purpose
## is provided. See opendkim.conf(5) for details.
SendReports yes

## Specifies the sending address to be used on From: headers of outgoing
## failure reports. By default, the e-mail address of the user executing
## the filter is used ([email protected]).
# ReportAddress "Example.com Postmaster" <[email protected]>

Lorsqu'une vérification de signature échoue et que la signature incluait une demande de rapport ("r=y") et que le domaine de signature annonce une adresse de rapport (c'est-à-dire ra=utilisateur) dans un enregistrement de rapport dans le DNS, OpenDKIM enverra un rapport structuré à cette adresse contenant les détails nécessaires pour reproduire le problème. Vous pouvez utiliser une adresse e-mail d'expéditeur particulière pour envoyer le rapport. Décommentez le ReportAddress paramètre et modifier l'adresse e-mail. Notez que cela ne créera pas de problème de rétrodiffusion, car les e-mails de rapport seront envoyés à une adresse e-mail spécifiée dans l'enregistrement DNS du domaine de l'expéditeur.

Trouvez la ligne suivante et commentez-la, car nous utiliserons des clés distinctes pour chaque nom de domaine.

KeyFile   /etc/opendkim/keys/default.private

Ensuite, trouvez les 4 lignes suivantes et décommentez-les.

# KeyTable            /etc/opendkim/KeyTable

# SigningTable        refile:/etc/opendkim/SigningTable

# ExternalIgnoreList  refile:/etc/opendkim/TrustedHosts

# InternalHosts       refile:/etc/opendkim/TrustedHosts

Enregistrez et fermez le fichier.

Créer une table de signature, une table de clés et un fichier d'hôtes de confiance

Modifier la table de signature fichier.

sudo nano /etc/opendkim/SigningTable

Ajoutez la ligne suivante à la fin de ce fichier. Cela indique à OpenDKIM que si un expéditeur sur votre serveur utilise un @your-domain.com adresse, alors elle doit être signée avec la clé privée identifiée par 20200308._domainkey.your-domain.com .

*@your-domain.com    20200308._domainkey.your-domain.com

20200308 est le sélecteur DKIM. Un nom de domaine peut avoir plusieurs clés DKIM. Le sélecteur DKIM vous permet de choisir une clé DKIM particulière. Vous pouvez utiliser n'importe quel nom pour le sélecteur DKIM, mais j'ai trouvé pratique d'utiliser la date actuelle (8 mars 2020) comme sélecteur DKIM. Enregistrez et fermez le fichier. Modifiez ensuite la table de clés fichier.

sudo nano /etc/opendkim/KeyTable

Ajoutez la ligne suivante, qui spécifie l'emplacement de la clé privée DKIM.

20200308._domainkey.your-domain.com     your-domain.com:20200308:/etc/opendkim/keys/your-domain.com/20200308.private

Enregistrez et fermez le fichier. Ensuite, modifiez le fichier des hôtes de confiance.

sudo nano /etc/opendkim/TrustedHosts

127.0.0.0.1 et ::1 sont inclus dans ce fichier par défaut. Ajoutez maintenant la ligne suivante. Cela indique à OpenDKIM que si un e-mail provient de votre propre nom de domaine, OpenDKIM ne doit pas effectuer de vérification DKIM sur l'e-mail.

*.your-domain.com

Enregistrez et fermez le fichier.

Générer une paire de clés privée/publique

Étant donné que DKIM est utilisé pour signer les messages sortants et vérifier les messages entrants, vous devez générer une clé privée pour signer les e-mails sortants et une clé publique pour recevoir les serveurs SMTP afin de vérifier la signature DKIM de votre e-mail. La clé publique sera publiée dans le DNS.

Créez un dossier séparé pour le domaine.

sudo mkdir /etc/opendkim/keys/your-domain.com

Générer des clés en utilisant opendkim-genkey outil.

sudo opendkim-genkey -b 2048 -d your-domain.com -D /etc/opendkim/keys/your-domain.com -s 20200308 -v

La commande ci-dessus créera des clés de 2048 bits. -d (domain) spécifie le domaine. -D (directory) spécifie le répertoire où les clés seront stockées. J'utilise 20200308 comme sélecteur DKIM. Une fois la commande exécutée, la clé privée sera écrite dans 20200308.private fichier et la clé publique seront écrites dans 20200308.txt fichier.

Par défaut, seul root peut lire et écrire dans les fichiers de clé. Faire opendkim en tant que propriétaire de la clé privée.

sudo chown opendkim:opendkim /etc/opendkim/keys/ -R

Publier votre clé publique dans les enregistrements DNS

Afficher la clé publique

sudo cat /etc/opendkim/keys/your-domain.com/20200308.txt

La chaîne après le p paramètre est la clé publique.

Dans votre gestionnaire DNS, créez un enregistrement TXT, entrez 20200308._domainkey dans le champ du nom. (Vous devez remplacer 20200308 par votre propre sélecteur DKIM.) Revenez ensuite à la fenêtre du terminal, copiez tout entre parenthèses et collez-le dans le champ de valeur de l'enregistrement DNS. Vous devez supprimer tous les guillemets doubles et les sauts de ligne dans le champ de valeur. Si vous ne les supprimez pas, le test de clé à l'étape suivante échouera probablement.

Tester la clé DKIM

Entrez la commande suivante sur votre serveur CentOS 8/RHEL 8 pour tester votre clé.

sudo opendkim-testkey -d your-domain.com -s 20200308 -vvv

Si tout est OK, vous verrez la key OK message.

opendkim-testkey: using default configfile /etc/opendkim.conf
opendkim-testkey: checking key '20200308._domainkey.linuxbabe.com'
opendkim-testkey: key OK

Notez que votre enregistrement DKIM peut avoir besoin d'un certain temps pour se propager sur Internet. Selon le bureau d'enregistrement de domaine que vous utilisez, votre enregistrement DNS peut être propagé instantanément, ou sa propagation peut prendre jusqu'à 24 heures. Vous pouvez aller sur https://www.dmarcanalyzer.com/dkim/dkim-check/, entrez 20200308 en tant que sélecteur et entrez votre nom de domaine pour vérifier la propagation des enregistrements DKIM.

Si vous voyez "Clé non sécurisée", ne paniquez pas. C'est parce que DNSSEC n'est pas activé sur votre nom de domaine. DNSSEC est une norme de sécurité pour les requêtes DNS sécurisées. La plupart des noms de domaine n'ont pas activé DNSSEC. Vous pouvez continuer à suivre ce guide.

Nous pouvons maintenant démarrer le service opendkim.

sudo systemctl start opendkim

Et activez le démarrage automatique au démarrage.

sudo systemctl enable opendkim

OpenDKIM écoute sur 127.0.0.1:8891 .

Connecter Postfix à OpenDKIM

Modifier le fichier de configuration principal de Postfix.

sudo nano /etc/postfix/main.cf

Ajoutez les lignes suivantes à la fin de ce fichier, afin que Postfix puisse appeler OpenDKIM via le protocole milter. Notez que vous devez utiliser 127.0.0.1 comme adresse. N'utilisez pas localhost .

# Milter configuration
milter_default_action = accept
milter_protocol = 6
smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = $smtpd_milters

Enregistrez et fermez le fichier. Ajoutez ensuite postfix utilisateur à opendkim groupe.

sudo gpasswd -a postfix opendkim

Redémarrez postfix services.

sudo systemctl restart postfix

Vérification SPF et DKIM

Vous pouvez maintenant envoyer un e-mail de test depuis votre serveur de messagerie vers votre compte Gmail pour voir si les contrôles SPF et DKIM sont réussis. Sur le côté droit d'un e-mail ouvert dans Gmail, si vous cliquez sur show original dans le menu déroulant, vous pouvez voir les résultats de l'authentification.

Si votre message n'est pas signé et que la vérification DKIM a échoué, vous pouvez vérifier le journal postfix (/var/log/maillog ) pour voir ce qui ne va pas dans votre configuration. Votre serveur de messagerie effectuera également une vérification SPF et DKIM sur le domaine de l'expéditeur. Vous pouvez voir les résultats dans les en-têtes des e-mails. Voici la vérification SPF et DKIM d'un expéditeur utilisant Gmail.

Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=2607:f8b0:4864:20::c2d; helo=mail-yw1-xc2d.google.com; [email protected]; receiver=<UNKNOWN> 
Authentication-Results: mail.linuxbabe.com;
	dkim=pass (2048-bit key; unprotected) header.d=gmail.com [email protected] header.b="XWMRd2co";
	dkim-atps=neutral

Tester le score et l'emplacement des e-mails

Vous pouvez maintenant vous rendre sur https://www.mail-tester.com. Vous verrez une adresse e-mail unique. Envoyez un e-mail depuis votre domaine à cette adresse, puis vérifiez votre score. Comme vous pouvez le voir, j'ai obtenu un score parfait.

Mail-tester.com ne peut vous montrer qu'un score d'expéditeur. Il existe un autre service appelé GlockApps qui vous permet de vérifier si votre e-mail est placé dans la boîte de réception ou le dossier spam du destinataire, ou s'il est carrément rejeté. Il prend en charge de nombreux fournisseurs de messagerie populaires tels que Gmail, Outlook, Hotmail, YahooMail, iCloud mail, etc.

Boîtes aux lettres Microsoft (Hotmail.com, Outlook.com)

Microsoft semble utiliser une liste noire interne qui bloque de nombreuses adresses IP légitimes. Si vos e-mails sont rejetés par Outlook ou Hotmail, vous devez soumettre le formulaire d'informations sur l'expéditeur. Après cela, votre e-mail sera accepté par Outlook/hotmail, mais pourra toujours être étiqueté comme spam. Lors de mon test, l'e-mail a atterri dans ma boîte de réception Gmail. Cependant, il est toujours étiqueté comme spam dans mon e-mail Outlook.com bien que SPF et DKIM soient passés.

Que se passe-t-il si vos e-mails sont toujours marqués comme spam ?

J'ai d'autres conseils pour vous dans cet article :Comment empêcher que vos e-mails soient marqués comme spam.

Étape suivante

Dans la partie 5, nous verrons comment créer un enregistrement DMARC pour protéger votre domaine contre l'usurpation d'e-mails. Comme toujours, si vous avez trouvé cet article utile, abonnez-vous à notre newsletter gratuite pour recevoir des articles plus utiles, ou suivez-nous sur Twitter ou aimez notre page Facebook.


Cent OS
  1. Comment installer le serveur de messagerie postfix sur RHEL 8 / CentOS 8

  2. Comment installer et configurer Postfix Mail Server sur CentOS 8

  3. Comment installer et intégrer DKIM avec OpenDKIM et Postfix sur un VPS CentOS 6

  4. Configurer un serveur de messagerie avec PostfixAdmin et MariaDB sur CentOS 7

  5. Comment configurer un serveur de messagerie avec PostfixAdmin sur CentOS 7

Configurer le serveur d'impression CUPS sur CentOS 8/RHEL 8 (Bonjour, IPP, Samba, AirPrint)

Configurer le serveur Samba sur CentOS 8/RHEL 8 pour le partage de fichiers

Configurer OpenDMARC avec Postfix sur CentOS/RHEL pour bloquer l'usurpation d'e-mails

Installer et configurer OpenDKIM sur le serveur de messagerie CentOS 8/RHEL 8

Partie 3 :PostfixAdmin - Créer des boîtes aux lettres virtuelles sur le serveur de messagerie CentOS 8/RHEL 8

Comment configurer un serveur de messagerie complet avec Postfix, Dovecot et Roundcube sur Ubuntu 18.04