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

7 conseils efficaces pour bloquer le spam par e-mail avec Postfix sur CentOS/RHEL

Dans ce tutoriel, j'aimerais partager avec vous mes 7 conseils pour bloquer les spams par e-mail avec le serveur SMTP de Postfix sur CentOS/RHEL. Au cours des quatre dernières années d'exploitation de mon propre serveur de messagerie, j'ai reçu beaucoup de spam, c'est-à-dire des e-mails commerciaux non sollicités. Le spam existe parce qu'il est si bon marché d'envoyer un grand volume d'e-mails sur Internet. Postfix vous permet de bloquer les spams avant qu'ils n'arrivent dans votre boîte aux lettres, ce qui vous permet d'économiser de la bande passante et de l'espace disque.

Remarque :Si vous envisagez d'utiliser votre propre serveur de messagerie, je vous recommande d'utiliser iRedmail, qui simplifie vraiment le processus de configuration d'un serveur de messagerie. Il est également livré avec des règles anti-spam. Si vous préférez configurer un serveur de messagerie à partir de rien, consultez ma série de didacticiels sur les serveurs de messagerie.

Caractéristiques des spams

Voici ce que j'ai trouvé sur le spam par e-mail. Ces spams sont faciles à bloquer.

  1. Leurs adresses IP n'ont pas d'enregistrements PTR.
  2. Le spammeur ne fournit pas de nom d'hôte valide dans la clause HELO/EHLO.
  3. Ils usurpent l'adresse MAIL FROM.
  4. Généralement, ils ne renvoient pas d'e-mail après un échec de livraison.

Les serveurs de messagerie légitimes ne devraient jamais avoir ces caractéristiques. Voici donc mes 7 astuces, qui bloqueront 90% des spams.

Réalité :Environ 93 % à 95 % des e-mails dans le monde sont rejetés au niveau de la passerelle SMTP, n'atterrissent jamais dans la boîte de réception ou le dossier spam.

Astuce n° 1 :rejeter l'e-mail si le client SMTP n'a pas d'enregistrement PTR

L'enregistrement PTR mappe une adresse IP à un nom de domaine. C'est le pendant du disque A. Sur CentOS/RHEL, vous pouvez interroger le nom de domaine associé à une adresse IP en exécutant la commande suivante :

host <IP address>

Si host la commande est introuvable, alors vous devez installer le bind-utils paquet.

sudo dnf install bind-utils

Par exemple, la commande suivante renvoie le nom d'hôte de mon serveur de messagerie.

host 23.254.225.226

Sortie :

226.225.254.23.in-addr.arpa domain name pointer mail.linuxbabe.com.

En raison de la prévalence du spam, de nombreux serveurs de messagerie (tels que Gmail, gmx.com, gmx.net, facebook.com) exigent que les clients SMTP aient des enregistrements PTR valides associés à leurs adresses IP. Chaque administrateur de serveur de messagerie doit définir un enregistrement PTR pour ses serveurs SMTP. Si le client SMTP a un enregistrement PTR, vous pouvez trouver une ligne dans le journal de Postfix (/var/log/maillog) comme ci-dessous.

connect from mail.linuxbabe.com[23.254.225.226]

Si le client SMTP n'a pas d'enregistrement PTR, le nom d'hôte sera identifié comme unknown dans le journal de Postfix.

connect from unknown[120.41.196.220]

Pour filtrer les e-mails sans enregistrements PTR, ouvrez le fichier de configuration principal de Postfix.

sudo nano /etc/postfix/main.cf

Ajoutez la ligne suivante dans smtpd_sender_restrictions . Cette directive rejette un e-mail si l'adresse IP du client n'a pas d'enregistrement PTR.

reject_unknown_reverse_client_hostname

Exemple :

smtpd_sender_restrictions =
   permit_mynetworks
   permit_sasl_authenticated
   reject_unknown_reverse_client_hostname

Enregistrez et fermez le fichier. Redémarrez ensuite Postfix pour que le changement prenne effet.

sudo systemctl restart postfix

Astuce n° 2 :Activez les restrictions de nom d'hôte HELO/EHLO dans Postfix

Certains spammeurs ne fournissent pas de nom d'hôte HELO/EHLO valide dans la boîte de dialogue SMTP. Il peut s'agir d'un nom de domaine non complet, ou un nom de domaine n'existe pas ou uniquement pour le réseau interne. Par exemple, un spammeur utilisant une instance Amazon EC2 pour envoyer du spam est connecté sur mon serveur comme suit :

Aug 16 04:21:13 email postfix/smtpd[7070]: connect from ec2-54-237-201-103.compute-1.amazonaws.com[54.237.201.103]
Aug 16 04:21:13 email policyd-spf[7074]: prepend Received-SPF: None (mailfrom) identity=mailfrom; client-ip=54.237.201.103; helo=ip-172-30-0-149.ec2.internal; [email protected]; receiver=<UNKNOWN>

Comme vous pouvez le voir, le nom d'hôte HELO est ip-172-30-0-149.ec2.internal , qui n'est valide que sur le réseau interne AWS. Il n'a pas d'enregistrement A valide ni d'enregistrement MX.

Pour activer la restriction du nom d'hôte HELO/EHLO, modifiez le fichier de configuration principal de Postfix.

sudo nano /etc/postfix/main.cf

Tout d'abord, ajoutez la ligne suivante pour demander au client de fournir un nom d'hôte HELO/EHLO.

smtpd_helo_required = yes

Ajoutez ensuite les 3 lignes suivantes pour activer smtpd_helo_restrictions .

smtpd_helo_restrictions = 
    permit_mynetworks
    permit_sasl_authenticated

Utilisez la ligne suivante pour rejeter les clients qui fournissent un nom d'hôte HELO/EHLO mal formé.

reject_invalid_helo_hostname

Utilisez la ligne suivante pour rejeter le nom d'hôte HELO/EHLO non qualifié.

reject_non_fqdn_helo_hostname

Pour rejeter un e-mail lorsque le nom d'hôte HELO/EHLO n'a ni enregistrement DNS A ni enregistrement MX, utilisez

reject_unknown_helo_hostname

Comme ceci :

smtpd_helo_required = yes
smtpd_helo_restrictions =
    permit_mynetworks
    permit_sasl_authenticated
    reject_invalid_helo_hostname
    reject_non_fqdn_helo_hostname
    reject_unknown_helo_hostname

Enregistrez et fermez le fichier. Puis rechargez Postfix.

sudo systemctl reload postfix

Notez que bien que la plupart des serveurs de messagerie légitimes aient un enregistrement A valide pour le nom d'hôte HELO/EHLO, il arrive parfois qu'un serveur de messagerie légitime ne réponde pas à cette exigence. Vous devez les ajouter à la liste blanche avec check_helo_access .

smtpd_helo_required = yes
smtpd_helo_restrictions =
    permit_mynetworks
    permit_sasl_authenticated
    check_helo_access hash:/etc/postfix/helo_access
    reject_invalid_helo_hostname
    reject_non_fqdn_helo_hostname
    reject_unknown_helo_hostname

Ensuite, vous devez créer le /etc/postfix/helo_access fichier.

sudo nano /etc/postfix/helo_access

Mettez sur liste blanche le nom d'hôte HELO/EHLO du serveur de messagerie légitime comme ci-dessous.

optimus-webapi-prod-2.localdomain      OK
va-massmail-02.rakutenmarketing.com    OK

Il est probable que vous ne sachiez pas quels noms d'hôtes ajouter à la liste blanche, puis copiez simplement les deux lignes ci-dessus, qui sont les seules lignes de mon helo_access dossier. Vous pouvez toujours ajouter d'autres noms d'hôtes ultérieurement. Enregistrez et fermez le fichier. Exécutez ensuite la commande suivante pour créer le fichier /etc/postfix/helo_access.db.

sudo postmap /etc/postfix/helo_access

Et rechargez Postfix.

sudo systemctl reload postfix

Astuce n° 3 :rejeter l'e-mail si le nom d'hôte du client SMTP n'a pas d'enregistrement A valide

Un serveur de messagerie légitime doit également avoir un enregistrement A valide pour son nom d'hôte. L'adresse IP renvoyée par l'enregistrement A doit correspondre à l'adresse IP du serveur de messagerie. Pour filtrer les e-mails des hôtes qui n'ont pas d'enregistrement A valide, modifiez le fichier de configuration principal de Postfix.

sudo nano /etc/postfix/main.cf

Ajoutez les deux lignes suivantes dans smtpd_sender_restrictions .

reject_unknown_reverse_client_hostname
reject_unknown_client_hostname

Exemple :

smtpd_sender_restrictions =
   permit_mynetworks
   permit_sasl_authenticated
   reject_unknown_reverse_client_hostname
   reject_unknown_client_hostname

Enregistrez et fermez le fichier. Redémarrez ensuite Postfix pour que le changement prenne effet.

sudo systemctl restart postfix
Notez que reject_unknown_client_hostname ne nécessite pas HELO du client SMTP. Il récupérera le nom d'hôte à partir de l'enregistrement PTR, puis vérifiera l'enregistrement A.

Astuce n° 4 :rejeter l'e-mail si le domaine MAIL FROM n'a ni enregistrement MX ni enregistrement

Le MAIL FROM l'adresse est également appelée envelope from adresse. Certains spammeurs utilisent un domaine inexistant dans le MAIL FROM adresse. Si un nom de domaine n'a pas d'enregistrement MX, Postfix trouvera l'enregistrement A du domaine principal et enverra un e-mail à cet hôte. Si le domaine de l'expéditeur n'a ni enregistrement MX ni enregistrement A, Postfix ne peut pas envoyer d'e-mails à ce domaine. Alors pourquoi ne pas rejeter les e-mails auxquels vous ne pouvez pas répondre ?

Pour filtrer ce type de spam, modifiez le fichier de configuration principal de Postfix.

sudo nano /etc/postfix/main.cf

Ajoutez la ligne suivante dans smtpd_sender_restrictions . Il rejettera les e-mails si le nom de domaine de l'adresse fournie avec la commande MAIL FROM n'a ni enregistrement MX ni enregistrement A.

reject_unknown_sender_domain

Exemple :

smtpd_sender_restrictions =
   permit_mynetworks
   permit_sasl_authenticated
   reject_unknown_sender_domain
   reject_unknown_reverse_client_hostname
   reject_unknown_client_hostname

Enregistrez et fermez le fichier. Redémarrez ensuite Postfix pour que le changement prenne effet.

sudo systemctl restart postfix

Notez que j'ai placé cette restriction au-dessus des autres reject restrictions. D'après mon expérience, si c'est en dessous d'autres reject restrictions, cela ne fonctionnera pas. (Peut-être que cela ne se produit que sur mon serveur de messagerie.)

Astuce n° 5 :Activez la liste grise dans Postfix

Comme l'exige le protocole SMTP, tout client SMTP légitime doit être en mesure de renvoyer des e-mails en cas d'échec de la livraison. (Par défaut, Postfix est configuré pour renvoyer les e-mails ayant échoué pendant 4 à 5 jours avant d'informer l'expéditeur que le message n'a pas pu être livré.) De nombreux spammeurs n'envoient généralement qu'une seule fois et ne réessayent pas.

Postgrey est un serveur de politique de liste grise pour Postfix. Les utilisateurs de CentOS/RHEL peuvent l'installer à partir du référentiel EPEL.

sudo dnf install epel-release
sudo dnf install postgrey

Une fois installé, démarrez-le avec systemctl.

sudo systemctl start postgrey

Activer le démarrage automatique au démarrage.

sudo systemctl enable postgrey

Sur CentOS/RHEL, Postgrey écoute sur un socket Unix (/var/spool/postfix/postgrey/socket ).

Ensuite, nous devons modifier le fichier de configuration principal de Postfix pour qu'il utilise le serveur de politique de liste grise.

sudo nano /etc/postfix/main.cf

Ajoutez la ligne suivante dans smtpd_recipient_restrictions .

check_policy_service unix:postgrey/socket

Au cas où vous ne le sauriez pas, la directive check_policy_service unix:private/policyd-spf dans la capture d'écran ci-dessus obligera Postfix à vérifier l'enregistrement SPF sur le domaine de l'expéditeur. Cette directive nécessite que vous installiez et configuriez le package pypolicyd-spf.

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

sudo systemctl restart postfix

Désormais, Postgrey rejettera un e-mail si le triplet de l'expéditeur (adresse IP de l'expéditeur, adresse e-mail de l'expéditeur, adresse e-mail du destinataire) est nouveau. Le message de journal suivant dans /var/log/maillog affiche un nouveau triplet d'expéditeur. L'action "greylist ” signifie que cet e-mail a été rejeté.

postgrey[1016]: action=greylist, reason=new, client_name=unknown, client_address=117.90.24.148/32, [email protected], [email protected]

D'après mon expérience, les spammeurs de messagerie chinois aiment utiliser une adresse d'expéditeur fausse, étrange et générée de manière aléatoire pour chaque e-mail, donc l'ajout de ces fausses adresses e-mail à la liste noire ne les arrêtera pas. D'autre part, ils n'essaient jamais de renvoyer un e-mail rejeté avec la même adresse d'expéditeur, ce qui signifie que la liste grise peut être très efficace pour arrêter ce type de spam.

Comment minimiser la mauvaise expérience utilisateur

La liste grise peut entraîner une mauvaise expérience pour l'utilisateur final, car l'utilisateur doit attendre encore plusieurs minutes avant que l'e-mail n'arrive. Pour minimiser cette mauvaise expérience, vous pouvez créer une liste blanche et utiliser un deuxième enregistrement MX qui pointe vers le même hôte.

Liste blanche

Postgrey est livré avec deux fichiers de liste blanche (/etc/postfix/postgrey_whitelist_clients et /etc/postfix/postgrey_whitelist_recipients ). Le premier contient une liste de noms d'hôtes et le second contient une liste d'adresses de destinataires.

Par défaut, les serveurs de messagerie de Google sont sur liste blanche. Peu importe que l'expéditeur utilise une adresse @gmail.com ou une autre adresse, tant que l'expéditeur utilise le serveur de messagerie de Google, Postgrey ne rejettera pas l'e-mail. La ligne suivante dans mon /var/log/maillog le fichier le montre.

postgrey[1032]: action=pass, reason=client whitelist, client_name=mail-yb0-f190.google.com

Remarque  :Vous pouvez également voir les journaux postgrey avec cette commande sudo journalctl -u postgrey .

Vous pouvez ajouter d'autres noms d'hôte dans /etc/postfix/postgrey_whitelist_clients fichier, comme

facebook.com
bounce.twitter.com
blogger.com
email.medium.com

Vous pouvez obtenir ces noms d'hôte avec un outil appelé pflogsumm , dont je parlerai plus tard dans cet article. Enregistrez et fermez le fichier, puis redémarrez Postgrey.

sudo systemctl restart postgrey

Créer un autre nom d'hôte MX avec la même adresse IP

Vous pouvez spécifier plus d'un enregistrement MX pour votre nom de domaine comme ci-dessous.

Record Type    Name      Mail Server            Priority

MX             @         mail.yourdomain.com     0
MX             @         mail2.yourdomain.com    5

L'expéditeur essaiera le premier serveur de messagerie (avec la priorité 0). Si mail.votredomaine.com rejette les e-mails en les mettant sur liste grise, l'expéditeur essaiera immédiatement le deuxième serveur de messagerie (avec la priorité 5).

Si les deux noms d'hôte de serveur de messagerie ont la même adresse IP, lorsque l'expéditeur essaie le deuxième nom d'hôte de serveur de messagerie, l'e-mail sera accepté immédiatement (si toutes les autres vérifications réussissent) et les utilisateurs finaux ne remarqueront pas le retard d'e-mail causé par la liste grise.

Notez que cela vous oblige à définir un très petit délai comme 1 seconde dans /etc/sysconfig/postgrey fichier comme ci-dessous. Le délai indique au client SMTP le nombre de secondes à attendre avant de l'envoyer à nouveau. Si le délai n'est pas suffisamment court, la deuxième livraison d'e-mail sera toujours rejetée.

POSTGREY_DELAY="--delay=1"

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

sudo systemctl restart postgrey

Attention, tous les serveurs de messagerie n'essaieront pas immédiatement le deuxième hôte MX.

Conseil n° 6 : Utiliser des listes noires publiques en temps réel

Certains spams sont envoyés à partir de serveurs qui ont un nom d'hôte valide, un enregistrement PTR valide et peuvent passer par la liste grise. Dans ce cas, vous pouvez utiliser la liste noire pour rejeter le spam. Il existe de nombreuses listes noires publiques en temps réel (RBL), également appelées DNSBL (listes basées sur DNS). Par temps réel, cela signifie que la liste change constamment. Une adresse IP ou un nom de domaine peut figurer sur la liste aujourd'hui et en sortir demain, vous pouvez donc obtenir des résultats différents selon le moment où vous interrogez la liste.

Vous pouvez utiliser plusieurs listes noires pour bloquer le spam. Allez sur https://www.debouncer.com et mxtoolbox.com , entrez le domaine et l'adresse IP du spammeur pour voir quelles listes noires les bloquent, puis vous pouvez utiliser ces listes noires. Par exemple, j'ai constaté que les spammeurs sont mis sur liste noire par l'une des listes noires suivantes :

  • dbl.spamhaus.org
  • zen.spamhaus.org
  • multi.uribl.com
  • ivmURI
  • InvaluementURI

Je peux donc ajouter les configurations suivantes dans /etc/postfix/main.cf dossier. Certains services publics de mise sur liste noire nécessitent des frais mensuels. Pour l'instant, j'utilise le service gratuit de spamhaus.org.

smtpd_recipient_restrictions =
   permit_mynetworks
   permit_sasl_authenticated
   check_policy_service unix:private/policyd-spf
   check_policy_service unix:postgrey/socket
   reject_rhsbl_helo dbl.spamhaus.org
   reject_rhsbl_reverse_client dbl.spamhaus.org
   reject_rhsbl_sender dbl.spamhaus.org
   reject_rbl_client zen.spamhaus.org

Où :

  • rhs représente le côté droit, c'est-à-dire le nom de domaine.
  • reject_rhsbl_helo oblige Postfix à rejeter les e-mails lorsque le nom d'hôte HELO ou EHLO du client est sur liste noire.
  • reject_rhsbl_reverse_client :rejeter l'e-mail lorsque le nom d'hôte du client inversé non vérifié est sur la liste noire. Postfix récupérera le nom d'hôte du client à partir de l'enregistrement PTR. Si le nom d'hôte est sur liste noire, rejetez l'e-mail.
  • reject_rhsbl_sender oblige Postfix à rejeter les e-mails lorsque le domaine MAIL FROM est sur liste noire.
  • reject_rbl_client :Il s'agit d'une liste noire basée sur IP. Lorsque l'adresse IP du client est sur liste noire, rejetez l'e-mail.

Certains spammeurs utilisent le serveur de messagerie de Google, donc reject_rhsbl_helo est inefficace, mais la plupart d'entre eux utilisent leurs propres noms de domaine dans l'en-tête MAIL FROM, donc reject_rhsbl_sender sera efficace.

Créer une liste blanche

Parfois, des serveurs de messagerie légitimes sont mis sur liste noire. Vous pouvez créer une liste blanche afin qu'ils ne soient pas bloqués. Créez le fichier suivant.

sudo nano /etc/postfix/rbl_override

Dans ce fichier, ajoutez les noms de domaine à la liste blanche comme ci-dessous.

dripemail2.com  OK           //This domain belongs to drip.com

mlsend.com      OK           //This domain belongs to mailerlite email marketing service

Enregistrez et fermez le fichier. Exécutez ensuite la commande suivante pour créer le rbl_override.db fichier.

sudo postmap /etc/postfix/rbl_override

Modifier le fichier de configuration principal de Postfix.

sudo nano /etc/postfix/main.cf

Dans smtpd_recipient_restrictions , ajoutez la ligne suivante.

check_client_access hash:/etc/postfix/rbl_override

Comme ci-dessous. Il doit être placé au-dessus des autres contrôles RBL.

smtpd_recipient_restrictions =
   permit_mynetworks
   permit_sasl_authenticated
   check_policy_service unix:private/policyd-spf
   check_policy_service unix:postgrey/socket
   check_client_access hash:/etc/postfix/rbl_override
   reject_rhsbl_helo dbl.spamhaus.org
   reject_rhsbl_reverse_client dbl.spamhaus.org
   reject_rhsbl_sender dbl.spamhaus.org
   reject_rbl_client zen.spamhaus.org

Rechargez Postfix pour que les modifications prennent effet.

sudo systemctl reload postfix

Utilisation de la liste blanche publique pour réduire les faux positifs

Maintenir une liste blanche privée est parfois nécessaire, mais vous pouvez également utiliser des listes blanches publiques, dont la plus célèbre est dnswl.org. Actuellement, il n'y a qu'une liste blanche pour l'adresse IP. La liste blanche des noms de domaine est en version bêta. Pour l'utiliser, mettez la ligne suivante dans smtpd_recipient_restrictions .

permit_dnswl_client list.dnswl.org=127.0.[0..255].[1..3]

Comme ci-dessous. Il doit être placé au-dessus du reject_rbl_client vérifier.

smtpd_recipient_restrictions =
   permit_mynetworks
   permit_sasl_authenticated
   check_policy_service unix:private/policyd-spf
   check_policy_service unix:postgrey/socket
   check_client_access hash:/etc/postfix/rbl_override
   reject_rhsbl_helo dbl.spamhaus.org
   reject_rhsbl_reverse_client dbl.spamhaus.org
   reject_rhsbl_sender dbl.spamhaus.org
   permit_dnswl_client list.dnswl.org=127.0.[0..255].[1..3]
   reject_rbl_client zen.spamhaus.org

Une autre liste blanche bien connue est swl.spamhaus.org , vous pouvez donc également l'ajouter à votre configuration.

permit_dnswl_client swl.spamhaus.org

Il est impossible qu'une adresse IP soit répertoriée dans la liste blanche et la liste noire de Spamhaus en même temps, donc si vous utilisez uniquement la liste noire de Spamhaus dans Postfix, il n'est pas nécessaire de vérifier la liste blanche de Spamhaus.

Mes filtres anti-spam Postfix

Voici une capture d'écran de mes filtres anti-spam Postfix.

Rapport de journal Postfix

Pflogsumm est un excellent outil pour créer un résumé des logs de Postfix. Sur CentOS/RHEL, pflogsumm est fourni par les postfix-perl-scripts paquet.

sudo dnf install postfix-perl-scripts

Utilisez la commande suivante pour générer un rapport pour aujourd'hui.

sudo pflogsumm -d today /var/log/maillog

Générez un rapport pour hier.

sudo pflogsumm -d yesterday /var/log/maillog

Si vous souhaitez générer un rapport pour cette semaine.

sudo pflogsumm /var/log/maillog

Pour émettre des rapports de "problèmes" (rebonds, reports, avertissements, rejets) avant les statistiques "normales", utilisez --problems-first drapeau.

sudo pflogsumm -d today /var/log/maillog --problems-first

Pour ajouter l'adresse e-mail de l'expéditeur à chaque annonce dans le rapport de rejet, utilisez --rej-add-from drapeau.

sudo pflogsumm -d today /var/log/maillog --rej-add-from

Pour afficher la raison complète dans les résumés de rejet, utilisez --verbose-msg-detail drapeau.

sudo pflogsumm -d today /var/log/maillog --rej-add-from --verbose-msg-detail

Vous pouvez ajouter une tâche cron pour que pflogsumm envoie un rapport à votre adresse e-mail tous les jours.

sudo crontab -e

Ajoutez la ligne suivante, qui générera un rapport tous les jours à 4h00.

0 4 * * * /usr/sbin/pflogsumm -d yesterday /var/log/maillog --problems-first --rej-add-from --verbose-msg-detail -q

Pour recevoir le rapport par e-mail, ajoutez la ligne suivante au-dessus de toutes les tâches cron.

MAILTO="your-email-address"

Vous devez faire attention au message reject detail section, où vous pouvez voir pour quelle raison ces e-mails sont rejetés et s'il y a des faux positifs. Les rejets de la liste grise peuvent être ignorés en toute sécurité.

Si la variable MAILTO a déjà été définie mais que vous souhaitez que le résumé du journal Postfix soit envoyé à une adresse e-mail différente, vous pouvez mettre la ligne suivante dans votre tâche Cron.

0 4 * * * /usr/sbin/pflogsumm -d yesterday /var/log/maillog --problems-first --rej-add-from --verbose-msg-detail -q | mutt -s "Postfix log summary"  your-email-address

La sortie de pflogsumm la commande est redirigée vers mutt , un agent utilisateur de messagerie en ligne de commande, qui utilisera la sortie comme corps de l'e-mail et l'enverra à l'adresse e-mail que vous spécifiez à la fin. Bien sûr, vous devez installer mutt sur votre serveur CentOS/RHEL.

sudo dnf install mutt

Conseil n° 7 :Configurez OpenDMARC pour rejeter les e-mails qui échouent à la vérification DMARC

DMARC (Domain-based Message Authentication, Reporting, and Conformance) est une norme Internet qui permet aux propriétaires de domaines d'empêcher que leurs noms de domaine soient utilisés par des usurpateurs de messagerie. Veuillez lire l'un des guides suivants pour configurer OpenDMARC.

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

Exécuter Local DNS Resolver pour accélérer les recherches DNS

Comme vous pouvez le voir, Postfix devra rechercher les enregistrements DNS afin d'analyser chaque dialogue SMTP. Pour accélérer les recherches DNS, vous pouvez exécuter un résolveur DNS local. Et la plupart des listes noires DNS ont une limite de requête. L'exécution de votre propre résolveur DNS local pour mettre en cache les enregistrements DNS peut vous aider à rester sous la limite de requêtes.

Nous pouvons installer le serveur DNS bind9.

sudo dnf install bind

Démarrez BIND 9 avec :

sudo systemctl start named

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

sudo systemctl enable named

Vous pouvez vérifier son statut avec :

systemctl status named

Exemple de sortie :

● named.service - Berkeley Internet Name Domain (DNS)
   Loaded: loaded (/usr/lib/systemd/system/named.service; enabled; vendor preset: disable>
   Active: active (running) since Sun 2020-05-17 11:07:34 EDT; 9s ago
  Process: 7203 ExecStop=/bin/sh -c /usr/sbin/rndc stop > /dev/null 2>&1 || /bin/kill -TE>
  Process: 7218 ExecStart=/usr/sbin/named -u named -c ${NAMEDCONF} $OPTIONS (code=exited,>
  Process: 7215 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; the>
 Main PID: 7220 (named)
    Tasks: 4 (limit: 5045)
   Memory: 55.5M
   CGroup: /system.slice/named.service
           └─7220 /usr/sbin/named -u named -c /etc/named.conf -4

Astuce :si la commande ci-dessus ne se ferme pas immédiatement, appuyez sur Q.

Configuration du résolveur DNS par défaut sur le serveur de messagerie CentOS/RHEL

Nous devons définir 127.0.0.1 comme résolveur DNS par défaut. Vous pouvez vérifier le résolveur DNS actuel sur CentOS/RHEL avec la commande suivante.

cat /etc/resolv.conf

Exemple de sortie :

# Generated by NetworkManager
nameserver 192.168.0.1
nameserver 8.8.8.8

Pour définir BIND comme résolveur par défaut, vous devez d'abord trouver le nom de votre interface réseau principale avec la commande suivante.

ip addr

Le mien est ens3 . Ensuite, exécutez la commande suivante pour modifier le fichier de configuration de l'interface réseau. Remplacer ens3 avec votre propre nom d'interface.

sudo nano /etc/sysconfig/network-scripts/ifcfg-ens3

Trouver le DNS1 paramètre et changez sa valeur en 127.0.0.1 . Notez que si les valeurs d'autres paramètres de ce fichier sont entourées de guillemets doubles, vous devez également envelopper 127.0.0.1 avec des guillemets doubles.

DNS1="127.0.0.1"

Si vous ne trouvez pas le DNS1 paramètre, puis ajoutez la ligne ci-dessus au bas de ce fichier. Il est recommandé de spécifier un résolveur DNS secondaire en ajoutant la ligne suivante dans ce fichier, afin de réduire le risque d'échec DNS.

DNS2="8.8.8.8"

Enregistrez et fermez le fichier. Redémarrez ensuite NetworkManager pour que la modification prenne effet.

sudo systemctl restart NetworkManager

Vous pouvez maintenant vérifier le contenu de /etc/resolv.conf de nouveau. Comme vous pouvez le voir, 127.0.0.1 (BIND) est maintenant le résolveur DNS par défaut sur CentOS/RHEL.

Comment désactiver IPv6 dans BIND

Si votre serveur de messagerie n'a pas d'adresse IPv6 publique, c'est une bonne idée de désactiver IPv6 dans BIND, sinon il y aura beaucoup d'erreurs concernant IPv6 dans le journal BIND comme ci-dessous.

network unreachable resolving 'mirrors.fedoraproject.org/A/IN': 2001:4178:2:1269:dead:beef:cafe:fed5#53
network unreachable resolving 'mirrors.fedoraproject.org/AAAA/IN': 2001:4178:2:1269:dead:beef:cafe:fed5#53
network unreachable resolving 'mirrors.fedoraproject.org/A/IN': 2610:28:3090:3001:dead:beef:cafe:fed5#53
network unreachable resolving 'mirrors.fedoraproject.org/AAAA/IN': 2610:28:3090:3001:dead:beef:cafe:fed5#53

Pour désactiver IPv6 dans BIND sur CentOS/RHEL, ouvrez simplement le fichier /etc/sysconfig/named fichier

sudo nano /etc/sysconfig/named

Et ajoutez la ligne suivante à la fin du fichier.

OPTIONS="-4"

Enregistrez et fermez le fichier. Ensuite, redémarrez named et vous avez terminé.

sudo systemctl restart named

Exécutez maintenant la commande suivante. Vous pouvez voir que BIND n'écoute plus sur l'adresse IPv6.

sudo netstat -lnptu | grep named

Erreur de recherche DNS inversée Postfix

Si votre serveur SMTP Postfix s'exécute dans un environnement chroot, il se peut qu'il ne soit pas en mesure d'effectuer une recherche DNS inversée. Dans ce cas, une adresse IP qui a un enregistrement PTR sera toujours identifiée comme unknown .

postfix/smtpd[14734]: connect from unknown[23.254.225.226]

Pour résoudre ce problème, nous devons copier les bibliothèques nécessaires à la recherche DNS inversée dans l'environnement chroot.

sudo mkdir /var/spool/postfix/lib64

sudo cp -vl /usr/lib64/libnss_* /var/spool/postfix/lib64

Redémarrez ensuite Postfix.

sudo systemctl restart postfix

Étape suivante

J'espère que ces 7 mesures anti-spam de Postfix vous ont aidé à bloquer les spams. Vous pouvez également déployer un filtre de contenu tel que SpamAssassin pour mieux détecter les spams.

  • Configurer SpamAssassin sur CentOS/RHEL pour bloquer le spam par e-mail

Comme toujours, si vous avez trouvé cet article utile, abonnez-vous à notre newsletter gratuite pour obtenir plus de trucs et astuces. Prenez soin de vous 🙂


Cent OS
  1. Top 7 des conseils de renforcement de la sécurité pour le serveur CentOS 8 / RHEL 8

  2. Blocage des botnets de spam internationaux avec un plugin Postfix

  3. Comment installer phpMyAdmin avec Nginx sur CentOS 7 / RHEL 7

  4. CentOS / RHEL :Comment activer SSL pour Apache

  5. Impossible de se connecter avec l'interface graphique sur CentOS/RHEL 7

Comment installer phpMyAdmin avec Apache sur CentOS 8 / RHEL 8

Comment sécuriser le serveur de messagerie contre le piratage avec VPN (CentOS/RHEL)

Configurer SpamAssassin sur CentOS/RHEL pour bloquer le spam par e-mail

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

7 conseils efficaces pour bloquer le spam par e-mail avec Postfix sur CentOS/RHEL

Installez Ruby sur CentOS/RHEL 8 avec 3 méthodes différentes