Auparavant, nous avons discuté de 7 méthodes efficaces pour bloquer les spams par e-mail avec Postfix sur CentOS/RHEL. Dans ce tutoriel, nous allons apprendre à utiliser SpamAssassin (SA) pour détecter le spam sur le serveur de messagerie CentOS/RHEL. SpamAssassin est un outil de lutte contre le spam gratuit, open source, flexible et puissant.
SpamAssassin est un système basé sur le score. Il vérifiera le message électronique par rapport à un large ensemble de règles. Chaque règle ajoute ou supprime des points dans le score du message. Si le score est suffisamment élevé (par défaut 5,0), le message est considéré comme un spam.
Installer SpamAssassin sur CentOS/RHEL
Exécutez la commande suivante pour installer SpamAssassin à partir du référentiel de logiciels CentOS/RHEL par défaut.
sudo dnf install spamassassin
Le binaire du serveur installé par le spamassassin
le paquet s'appelle spamd
, qui écoutera sur le port TCP 783 sur localhost. Spamc
est le client du démon de filtrage de spam SpamAssassin. Par défaut, le spamassassin
Le service systemd est désactivé, vous pouvez activer le démarrage automatique au démarrage avec :
sudo systemctl enable spamassassin
Puis lancez SpamAssassin.
sudo systemctl start spamassassin
Intégrer SpamAssassin avec le serveur SMTP de Postfix en tant que Milter
Il existe plusieurs façons d'intégrer SpamAssassin à Postfix. Je préfère utiliser SpamAssassin via l'interface sendmail milter, car cela me permet de rejeter un e-mail lorsqu'il obtient un score très élevé tel que 8, il ne sera donc jamais vu par le destinataire.
Installez le spamass-filter
packages sur CentOS/RHEL à partir du référentiel de logiciels EPEL.
sudo dnf install epel-release sudo dnf install spamass-milter
Démarrez le service.
sudo systemctl start spamass-milter
Activer le démarrage automatique au démarrage.
sudo systemctl enable spamass-milter
Ensuite, modifiez /etc/postfix/main.cf
fichier et ajoutez les lignes suivantes à la fin du fichier.
# Milter configuration milter_default_action = accept milter_protocol = 6 smtpd_milters = unix:/run/spamass-milter/spamass-milter.sock non_smtpd_milters = $smtpd_milters
Si vous avez configuré OpenDKIM et OpenDMARC sur CentOS/RHEL, ces lignes devraient ressembler à celles ci-dessous. L'ordre du milter compte.
# Milter configuration milter_default_action = accept milter_protocol = 6 smtpd_milters = inet:127.0.0.1:8891,inet:127.0.0.1:8893,unix:/run/spamass-milter/spamass-milter.sock non_smtpd_milters = $smtpd_milters
Si vous n'avez pas configuré OpenDMARC, vous devez supprimer local:opendmarc/opendmarc.sock,
de smtpd_milters
.
Enregistrez et fermez le fichier. Ouvrez maintenant le /etc/sysconfig/spamass-milter
fichier et recherchez la ligne suivante.
#EXTRA_FLAGS="-m -r 15"
Décommentez cette ligne et remplacez 15 par votre score de rejet préféré, par exemple 8.
EXTRA_FLAGS="-m -r 8"
Si le score d'un e-mail particulier est supérieur à 8, Spamassassin le rejettera et vous trouverez un message comme ci-dessous dans le /var/log/maillog
fichier, indiquant qu'il est rejeté.
milter-reject: END-OF-MESSAGE 5.7.1 Blocked by SpamAssassin
Si vous souhaitez que l'expéditeur voie un texte de rejet différent, ajoutez le -R
(rejeter le texte) comme ci-dessous.
EXTRA_FLAGS="-m -r 8 -R SPAM_ARE_NOT_ALLOWED_HERE"
C'est une bonne pratique d'ignorer les e-mails provenant de localhost en ajoutant le -i 127.0.0.1
option.
EXTRA_FLAGS="-m -r 8 -R SPAM_ARE_NOT_ALLOWED_HERE -i 127.0.0.1"
Nous devons également ajouter le -g sa-milt
option pour rendre le socket spamass-milter accessible en écriture par le groupe sa-milt.
EXTRA_FLAGS="-m -r 8 -R SPAM_ARE_NOT_ALLOWED_HERE -i 127.0.0.1 -g sa-milt"
Enregistrez et fermez le fichier. Ajoutez ensuite postfix
utilisateur au sa-milt
groupe, afin que Postfix puisse communiquer avec spamass-milter.
sudo gpasswd -a postfix sa-milt
Redémarrez Postfix et Spamass Milter pour que les modifications prennent effet.
sudo systemctl restart postfix spamass-milter
Vérifiez l'état et assurez-vous qu'ils sont en cours d'exécution.
sudo systemctl status postfix spamass-milter
Vérification de l'en-tête et du corps des e-mails avec SpamAssassin
SpamAssassin est livré avec de nombreuses règles de détection de spam dans /usr/share/spamassassin/ annuaire. Permettez-moi d'expliquer certaines des règles.
Dans /usr/share/spamassassin/20_head_tests.cf fichier, vous pouvez trouver les deux lignes suivantes.
header MISSING_HEADERS eval:check_for_missing_to_header() describe MISSING_HEADERS Missing To: header
La première ligne teste si le To : l'en-tête existe dans un message électronique. La deuxième ligne, qui est facultative, explique ce que fait la première ligne. Les lettres majuscules sont le nom de ce test.
Les 3 lignes suivantes servent à tester s'il y a une Date : en-tête dans le message électronique.
header __HAS_DATE exists:Date meta MISSING_DATE !__HAS_DATE describe MISSING_DATE Missing Date: header
Et ces 3 lignes sont pour tester s'il y a un De : en-tête dans le message électronique.
header __HAS_FROM exists:From meta MISSING_FROM !__HAS_FROM describe MISSING_FROM Missing From: header
Définir un score personnalisé pour les règles existantes
Dans le 50_scores.cf
et 72_scores.cf
fichier, vous pouvez voir les scores par défaut pour divers tests. Si vous pensez que le score par défaut est trop faible ou trop élevé pour un certain test, vous pouvez définir un score personnalisé dans /etc/mail/spamassassin/local.cf
fichier.
sudo nano /etc/mail/spamassassin/local.cf
Par exemple, la RFC 5322 exige que chaque e-mail contienne De : et Date : champs d'en-tête, afin que je puisse définir un score très élevé si l'un d'eux est manquant dans un message électronique en ajoutant les deux lignes suivantes dans local.cf
fichier.
score MISSING_FROM 5.0 score MISSING_DATE 5.0
Bien que le À : le champ d'en-tête n'est pas obligatoire dans la RFC 5322, je préfère définir un score élevé s'il manque dans un e-mail car je n'ai jamais vu un e-mail légitime manquer ce champ d'en-tête.
score MISSING_HEADERS 3.0
Certains spammeurs utilisent deux adresses e-mail dans le champ De : champ d'en-tête comme ci-dessous.
From: "[email protected]" <[email protected]>
Je pense que le score par défaut pour ce type d'email est faible, je préfère le mettre à 3.0.
score PDS_FROM_2_EMAILS 3.0
Il y a des spammeurs qui envoient des messages vides sans sujet et sans parties textuelles dans le corps. J'ai défini le score pour ce type d'e-mail sur 5,0, il sera donc placé dans le dossier spam. Pourquoi le lire s'il est vide ?
score EMPTY_MESSAGE 5.0
Et d'autres spammeurs vous demandent souvent d'envoyer une confirmation de lecture, j'ai mis la note à 2.0 pour ce genre d'email.
score FREEMAIL_DISPTO 2.0
Certains spammeurs utilisent des noms de domaine différents dans De : et Répondre à : en-tête, je leur donne une note de 3,5.
score FREEMAIL_FORGED_REPLYTO 3.5
J'ai également vu des spammeurs utiliser un nom de domaine inexistant dans le De : champ d'en-tête. J'ai défini un score de 5,0 pour ce type d'e-mail.
score DKIM_ADSP_NXDOMAIN 5.0
Enfin, de nombreux spammeurs usurpent gmail.com
domaine dans De : champ d'en-tête. J'ai défini une note de 2,5 pour ce type d'e-mail.
score FORGED_GMAIL_RCVD 2.5
Ajouter vos propres règles
Vous pouvez ajouter des règles SpamAssassin personnalisées dans /etc/mail/spamassassin/local.cf fichier.
sudo nano /etc/mail/spamassassin/local.cf
Règles d'en-tête
Par exemple, certains spammeurs utilisent la même adresse e-mail dans le champ De : et À : entête. vous pouvez ajouter les lignes suivantes à la fin du fichier pour ajouter des scores à ces e-mails.
header FROM_SAME_AS_TO ALL=~/\nFrom: ([^\n]+)\nTo: \1/sm describe FROM_SAME_AS_TO From address is the same as To address. score FROM_SAME_AS_TO 2.0
Certains spammeurs utilisent une adresse vide pour l'adresse Envelope From (alias l'en-tête Return Path). Bien que cela soit légitime pour envoyer des messages de rebond, je préfère donner une note à ce type d'e-mail.
header EMPTY_RETURN_PATH ALL =~ /<>/i describe EMPTY_RETURN_PATH empty address in the Return Path header. score EMPTY_RETURN_PATH 3.0
Si vous avez configuré OpenDMARC sur votre serveur de messagerie, vous pouvez maintenant ajouter les lignes suivantes pour ajouter des scores aux e-mails qui échouent à la vérification DMARC.
header CUSTOM_DMARC_FAIL Authentication-Results =~ /dmarc=fail/ describe CUSTOM_DMARC_FAIL This email failed DMARC check score CUSTOM_DMARC_FAIL 3.0
Le code ci-dessus indique à SpamAssassin de vérifier si les Authentication-Results l'en-tête contient la chaîne "dmarc=fail". Si trouvé, augmentez le score de 3,0.
Règles du corps
Vous pouvez dire à SpamAssassin d'augmenter le score d'un e-mail si une certaine phrase se trouve dans le corps. Par exemple, de nombreux spammeurs utilisent l'adresse e-mail du destinataire dans la première ligne du corps, comme ci-dessous.
Hi [email protected] Hello [email protected] Dear [email protected]
Je ne veux pas parler avec des gens qui ne prennent pas la peine d'écrire mon nom dans la première ligne de l'e-mail. J'ai donc créé une règle dans SpamAssassin pour filtrer ce genre d'email.
body BE_POLITE /(hi|hello|dear) xiao\@linuxbabe\.com/i describe BE_POLITE This email doesn't use a proper name for the recipient score BE_POLITE 5.0
L'expression régulière dans SpamAssassin est sensible à la casse par défaut, vous pouvez ajouter le i
option à la fin pour le rendre insensible à la casse.
Ajouter des scores négatifs
Vous pouvez également ajouter un score négatif aux bons e-mails, afin qu'il y ait moins de faux positifs. Par exemple, beaucoup de lecteurs de mon blog me posent des questions sur Linux et je ne pense pas que les spammeurs incluraient des mots comme Debian
, Ubuntu
, Linux Mint
dans le corps de l'e-mail, j'ai donc créé la règle suivante.
body GOOD_EMAIL /(debian|ubuntu|linux mint|centos|red hat|RHEL|OpenSUSE|Fedora|Arch Linux|Raspberry Pi|Kali Linux)/i describe GOOD_EMAIL I don't think spammer would include these words in the email body. score GOOD_EMAIL -4.0
Si le corps de l'e-mail contient le nom d'une distribution Linux, ajoutez un score négatif (-4.0).
Certaines phrases courantes sont incluses dans les messages de rebond légitimes. Je peux donc ajouter des scores négatifs à ces e-mails.
body BOUNCE_MSG /(Undelivered Mail Returned to Sender|Undeliverable|Auto-Reply|Automatic reply)/i describe BOUNCE_MSG Undelivered mail notifications or auto-reply messages score BOUNCE_MSG -1.5
Notez que les règles du corps incluent également le sujet comme première ligne du contenu du corps.
Méta-règles
En plus des règles d'en-tête et de corps, il existe également des méta-règles. Les méta-règles sont des combinaisons d'autres règles. Vous pouvez créer une méta-règle qui se déclenche lorsque deux ou plusieurs autres règles sont vraies. Par exemple, je reçois occasionnellement des e-mails indiquant que l'expéditeur souhaite postuler à un emploi et qu'un CV est joint. Je n'ai jamais dit sur mon site Web que j'avais besoin d'embaucher des gens. La pièce jointe est utilisée pour propager le virus. J'ai créé la méta-règle suivante pour filtrer ce type d'e-mail.
body __RESUME /(C.V|Resume)/i meta RESUME_VIRUS (__RESUME && __MIME_BASE64) describe RESUME_VIRUS The attachment contains virus. score RESUME_VIRUS 5.5
La première sous-règle __RESUME
teste si le corps de l'email contient le mot C.V.
ou resume
. La deuxième sous-règle __MIME_BASE64
est déjà défini dans /usr/share/spamassassin/20_body_tests.cf
fichier, comme suit, donc je n'ai pas besoin de le redéfinir dans le fichier local.cf. Cette règle teste si le message électronique inclut une pièce jointe base64.
rawbody __MIME_BASE64 eval:check_for_mime('mime_base64_count') describe __MIME_BASE64 Includes a base64 attachment
Ma méta-règle RESUME_VIRUS
se déclenchera lorsque les deux sous-règles sont vraies, ajoutant un score de 5,5 au message électronique. Notez que la sous-règle commence souvent par un double trait de soulignement, elle n'a donc pas de score à part entière.
Vous avez maintenant appris à ajouter un score si une chaîne est trouvée. Que faire si vous souhaitez ajouter un score lorsqu'une chaîne n'existe pas dans les en-têtes d'e-mail ? Eh bien, vous pouvez utiliser le !
opérateur. Par exemple, j'ai vu des spammeurs utiliser un seul mot dans l'adresse De :. J'ai ajouté les lignes suivantes pour noter ce type d'e-mail.
header __AT_IN_FROM From =~ /\@/ meta NO_AT_IN_FROM !__AT_IN_FROM score NO_AT_IN_FROM 4.0
La première ligne vérifie si le @
signe existe dans l'en-tête De :. La deuxième ligne définit une méta-règle, qui se déclenche lorsque !__AT_IN_FROM
est vrai. !__AT_IN_FROM
la règle est l'opposé de la première règle d'en-tête, ce qui signifie qu'il n'y a pas de @
connectez-vous à l'adresse De :, la méta-règle se déclenche.
Vous pouvez également ajouter les lignes suivantes pour vérifier si un point existe dans l'adresse De :.
header __DOT_IN_FROM From =~ /\./ meta NO_DOT_IN_FROM !__DOT_IN_FROM score NO_DOT_IN_FROM 4.0
Liste blanche
Vous pouvez utiliser la whitelist_from
paramètre pour ajouter une adresse e-mail ou un domaine particulier à votre liste blanche Spamassassin. Par exemple, ajoutez les deux lignes suivantes à la fin de local.cf
fichier.
whitelist_from [email protected] whitelist_from *@canonical.com
Un expéditeur sur liste blanche a un -100
note par défaut. Ils seront toujours testés par les règles de SpamAssassin, mais il leur est très difficile d'atteindre un score de 5,0.
Liste noire
Pour mettre un expéditeur sur liste noire, utilisez le blacklist_from
paramètre, qui a le même format que whitelist_from
.
blacklist_from [email protected] blacklist_from *@example.org
Vérification de la syntaxe et redémarrage
Après avoir enregistré le local.cf
dossier. Vous devriez exécuter le spamassassin
commande en mode peluche pour vérifier s'il y a des erreurs de syntaxe.
sudo spamassassin --lint
Redémarrez ensuite SpamAssassin pour que les modifications prennent effet.
sudo systemctl restart spamassassin
Liste blanche intégrée de SpamAssassin
Il convient de mentionner que SpamAssassin est livré avec sa propre liste blanche. Il y a plusieurs fichiers sous /usr/share/spamassassin/
répertoire qui inclut 60_whitelist
dans le nom du fichier. Ces fichiers contiennent la liste blanche intégrée de SpamAssassin. Par exemple, le 60_whitelist_spf.cf
contient une liste d'adresses qui envoient du courrier souvent marqué (incorrectement) comme spam.
Déplacer les spams dans le dossier de courrier indésirable
Je vais vous montrer comment déplacer le spam vers le dossier Junk avec le serveur Dovecot IMAP et le plugin sieve. Cette méthode nécessite que les e-mails entrants soient livrés au magasin de messages via le Dovecot "deliver" LDA (agent de livraison local). Si vous pouvez trouver le texte suivant dans /var/log/maillog
fichier, alors cette exigence est satisfaite.
postfix/lmtp
ou
delivered via dovecot service
Exécutez la commande suivante pour installer dovecot-pigeonhole package du référentiel de logiciels CentOS/RHEL.
sudo dnf install dovecot-pigeonhole
Ce paquet installe deux fichiers de configuration sous /etc/dovecot/conf.d/
répertoire :90-sieve.conf
et 90-sieve-extprograms.conf
. Ouvrez le 15-lda.conf
fichier.
sudo nano /etc/dovecot/conf.d/15-lda.conf
Ajoutez le plugin sieve à l'agent de livraison local (LDA).
protocol lda { # Space separated list of plugins to load (default is global mail_plugins). mail_plugins = $mail_plugins sieve }
Enregistrez et fermez le fichier. Si vous pouvez trouver le 20-lmtp.conf
fichier sous /etc/dovecot/conf.d/
répertoire, alors vous devez également activer le plugin sieve dans ce fichier comme ci-dessous.
protocol lmtp { mail_plugins = quota sieve }
Ouvrez ensuite le 90-sieve.conf
fichier.
sudo nano /etc/dovecot/conf.d/90-sieve.conf
Allez à la ligne 79 et ajoutez la ligne suivante, qui indique à Sieve de toujours exécuter le SpamToJunk.sieve script avant tout script spécifique à l'utilisateur.
sieve_before = /var/mail/SpamToJunk.sieve
Enregistrez et fermez le fichier. Créez ensuite le script de tamis.
sudo nano /var/mail/SpamToJunk.sieve
Ajoutez les lignes suivantes, qui indiquent à Dovecot de déplacer tous les e-mails avec le X-Spam-Flag: YES
en-tête dans le dossier Junk.
require "fileinto"; if header :contains "X-Spam-Flag" "YES" { fileinto "Junk"; stop; }
Enregistrez et fermez le fichier. Nous pouvons compiler ce script afin qu'il s'exécute plus rapidement.
sudo sievec /var/mail/SpamToJunk.sieve
Il existe maintenant un fichier binaire enregistré sous /var/mail/SpamToJunk.svbin . Modifiez le fichier 10-mail.conf.
/etc/dovecot/conf.d/10-mail.conf
Ajoutez la ligne suivante dans le fichier, afin que les scripts sieve de chaque utilisateur puissent être stockés dans son répertoire personnel.
mail_home = /var/vmail/%d/%n
Enfin, redémarrez Dovecot pour que les modifications prennent effet.
sudo systemctl restart dovecot
Définir la taille maximale des messages
Par défaut, SpamAssassin ne vérifie pas les messages avec des pièces jointes supérieures à 500 Ko, comme indiqué par la ligne suivante dans le /var/log/mail.log
fichier.
spamc[18922]: skipped message, greater than max message size (512000 bytes)
La valeur par défaut max-size
est défini sur 512000 (octets). Une valeur élevée pourrait augmenter la charge du serveur, mais je pense que la taille par défaut est un peu petite. Pour augmenter la taille maximale, modifiez /etc/sysconfig/spamass-milter
fichier et recherchez la ligne suivante.
EXTRA_FLAGS="-m -r 8 -R SPAM_ARE_NOT_ALLOWED_HERE -i 127.0.0.1 -g sa-milt"
Ajoutez le -- --max-size=5120000
option à la fin.
EXTRA_FLAGS="-m -r 8 -R SPAM_ARE_NOT_ALLOWED_HERE -i 127.0.0.1 -g sa-milt -- --max-size=5120000"
Le --
vide l'option indique à spamass-milter pour transmettre toutes les options restantes à spamc , qui comprend le --max-size
option. J'ai augmenté la taille à 5000 Ko. Enregistrez et fermez le fichier. Redémarrez ensuite spamass-milter.
sudo systemctl restart spamass-milter
Comment configurer les préférences utilisateur individuelles
Vous pouvez définir des règles personnalisées pour les e-mails envoyés à une adresse spécifique sur le serveur de messagerie. J'aime beaucoup cette fonctionnalité. J'ai une adresse e-mail de contact pour ce blog, qui n'est utilisée que pour garder le contact avec les lecteurs. Je n'utilise pas l'adresse e-mail de contact ailleurs , afin que je puisse créer des règles spéciales de filtrage des spams qui s'appliquent uniquement à cette adresse e-mail de contact.
Commencez par modifier le fichier de configuration principal de SpamAssassin.
sudo nano /etc/mail/spamassassin/local.cf
Ajoutez la ligne suivante pour autoriser les règles utilisateur.
allow_user_rules 1
Enregistrez et fermez le fichier. Ensuite, modifiez le fichier d'environnement SpamAssassin.
sudo nano /etc/sysconfig/spamassassin
Trouvez la ligne suivante.
SPAMDOPTIONS="-c -m5 -H --razor-home-dir='/var/lib/razor/' --razor-log-file='sys-syslog'"
Nous devons ajouter plusieurs options supplémentaires.
SPAMDOPTIONS="-c -m5 -H --razor-home-dir='/var/lib/razor/' --razor-log-file='sys-syslog' --nouser-config --virtual-config-dir=/var/vmail/%d/%l/spamassassin --username=vmail"
Où :
--nouser-config
:désactiver le fichier de configuration par utilisateur pour les utilisateurs Unix locaux.--virtual-config-dir
:spécifiez le répertoire de configuration par utilisateur pour les utilisateurs virtuels. Le%d
l'espace réservé représente la partie domaine de l'adresse e-mail et%l
représente la partie locale de l'adresse e-mail.--username
:exécutez spamd en tant qu'utilisateur vmail.
Enregistrez et fermez le fichier. Redémarrez ensuite SpamAssassin.
sudo systemctl restart spamassassin
Par défaut, spamass-milter ne transmet pas l'adresse du destinataire à SpamAssassin. Nous devons lui faire envoyer l'adresse e-mail complète à SpamAssassin. Modifiez le fichier de configuration de spamass-milter.
sudo nano /etc/sysconfig/spamass-milter
Ajoutez l'option suivante.
-e yourdomain.com -u sa-milt
Comme ceci :
EXTRA_FLAGS="-e yourdomain.com -u sa-milt -m -r 8 -R SPAM_ARE_NOT_ALLOWED_HERE -i 127.0.0.1 -g sa-milt -- --max-size=5120000"
Le -e
l'option obligera spamass-milter à transmettre l'adresse e-mail complète à SpamAssassin. Remplacez votredomaine.com par votre vrai nom de domaine. Enregistrez et fermez le fichier. Redémarrez ensuite spamass-milter.
sudo systemctl restart spamass-milter
Envoyez maintenant un e-mail depuis Gmail, Hotmail, etc. à l'adresse e-mail de votre domaine. Vous constaterez que le répertoire spamassassin est automatiquement créé sous /var/vmail/yourdomain.com/username/
répertoire.
cd /var/vmail/yourdomain.com/username/spamassassin/
Vous pouvez utiliser un éditeur de texte en ligne de commande pour créer ici le fichier de préférences par utilisateur. Ce fichier doit être nommé user_prefs
.
sudo nano user_prefs
Vous pouvez ajouter des règles personnalisées dans ce fichier comme vous le feriez dans le /etc/spamassassin/local.cf
fichier.
Par exemple, j'ai constaté que de nombreux spammeurs terminent le corps de leur e-mail avec un lien de désabonnement pour vous permettre de supprimer un futur contact. Je ne me suis pas abonné à leur spam et je ne pense pas que le lien de désabonnement supprimera mon adresse e-mail de leur base de données de contacts. J'utilise donc SpamAssassin pour marquer ce genre d'email. La règle suivante ajoute un score de 3,0 aux e-mails contenant le mot "désabonnement" ou ses variantes dans le corps. (Je n'utilise pas l'adresse e-mail de contact de ce blog pour m'abonner à quoi que ce soit en ligne.)
body SUBSCRIPTION_SPAM /(unsubscribe|u n s u b s c r i b e|Un-subscribe)/i describe SUBSCRIPTION_SPAM I didn't subscribe to your spam. score SUBSCRIPTION_SPAM 3.0
Parfois, le corps de l'e-mail ne contient pas le mot "se désinscrire", mais il y a un List-Unsubscribe
header, ce qui signifie que le spammeur a ajouté mon adresse e-mail de contact à sa liste de diffusion sans mon consentement. Je peux également noter ce type d'e-mail, avec la règle suivante.
header LIST_UNSUBSCRIBE ALL =~ /List-Unsubscribe/i describe LIST_UNSUBSCRIBE I didn't join your mailing list. score LIST_UNSUBSCRIBE 2.0
J'ai créé un compte Mailjet avec une adresse email différente. Certains spammeurs supposent que j'ai utilisé mon adresse e-mail de contact pour créer un compte Mailjet, ils essaient donc d'usurper l'identité du service client Mailjet pour m'inciter à taper mon mot de passe sur une fausse page de connexion Mailjet. Je peux noter ce type d'e-mail comme ci-dessous.
header MAILJET_IMPOSTER From =~ /mailjet/i describe MAILJET_IMPOSTER I don't have a mailjet account for this email address. score MAILJET_IMPOSTER 2.5
Les lignes ci-dessus vérifient si le From:
l'en-tête contient le mot mailjet
. Si trouvé, donnez-lui une note de 2,5.
Je reçois occasionnellement des e-mails de spammeurs chinois dont le From:
nom de domaine n'a pas de voyelles (a, e, i, o, u). Le spammeur a utilisé le cdjcbzclyxgs.xyz
nom de domaine. Il est presque impossible pour une personne/entité normale d'utiliser des noms de domaine sans voyelle, étant donné que de nombreux domaines de premier niveau ont déjà inclus des voyelles (.com, .net, .org, .co, .io, .shop, .dev , etc.), je donne donc à ce type d'e-mail un score très élevé comme ci-dessous. Le score par défaut est de 0,5.
score FROM_DOMAIN_NOVOWEL 4.0
Certains spams utilisent de nombreuses images dans le corps mais contiennent très peu de texte. Le score par défaut pour ce type d'e-mail est de 1,9, mais je préfère définir un score élevé pour mon adresse e-mail de contact.
score HTML_IMAGE_RATIO_02 4.0
J'ai également reçu un spam avec mon adresse e-mail dans le sujet, afin que je puisse y ajouter un score élevé.
header SUBJECT_SPAM Subject =~ /xiao\@linuxbabe.com/i describe SUBJECT_SPAM Subject contains my email address. score SUBJECT_SPAM 4.0
Certains spammeurs utilisent BCC (Blind Carbon Copy) pour masquer d'autres destinataires. Je ne veux pas recevoir un tel e-mail. J'ai donc établi la règle suivante. Si mon nom de domaine ne figure pas dans l'en-tête À :, ajoutez 3.0 à l'e-mail.
header __DOMAIN_IN_TO To =~ /linuxbabe.com/ meta DOMAIN_NOT_IN_TO !__DOMAIN_IN_TO score DOMAIN_NOT_IN_TO 3.0
Après avoir ajouté des règles personnalisées, fermez le fichier et exécutez la commande suivante pour vérifier la syntaxe. Une sortie silencieuse signifie qu'il n'y a pas d'erreur de syntaxe.
sudo spamassassin --lint
Enfin, redémarrez SpamAssassin pour que les modifications prennent effet.
sudo systemctl restart spamassassin
Vous pouvez désormais tester les préférences de l'utilisateur en envoyant des e-mails de test à partir d'autres services de messagerie à votre propre adresse e-mail de domaine.
Rejeter ou rejeter
Si un serveur SMTP récepteur détermine au cours de la conversation SMTP qu'il n'acceptera pas le message, il rejette le message. Parfois, le serveur SMTP accepte un message et découvre plus tard qu'il ne peut pas être livré, peut-être que le destinataire prévu n'existe pas ou qu'il y a un problème dans la livraison finale. Dans ce cas, le serveur SMTP qui a accepté le message le renvoie à l'expéditeur d'origine en envoyant un rapport d'erreur, incluant généralement la raison pour laquelle le message d'origine n'a pas pu être livré.
Vous ne devez pas renvoyer le spam, car l'adresse e-mail dans le Return-path:
en-tête ou From:
header n'existe probablement pas ou est l'adresse e-mail d'une personne innocente, donc le message de rebond ira probablement à l'adresse e-mail d'une personne innocente, créant le problème de rétrodiffusion. Au lieu de rejeter le spam, vous devez rejeter le spam pendant la boîte de dialogue SMTP, avant que l'e-mail ne soit accepté. Cet article ne vous a pas montré rebondir un message de spam. Vous devez vous souvenir de cette règle au cas où vous voudriez créer vous-même des règles de filtrage des spams. En cas de doute, testez vos règles de filtrage anti-spam pour voir si cela va créer des messages de rebond.
URIBL_BLOQUÉ
Par défaut, SpamAssassin active la règle URIBL, qui vérifie si un e-mail contient des liens identifiés comme spam par URIBL. Il s'agit d'une mesure anti-spam très efficace. Cependant, il se peut que vous ne puissiez pas interroger URIBL. Vérifiez les en-têtes d'e-mail bruts d'un e-mail entrant, trouvez le X-Spam-Status
en-tête.
X-Spam-Status: No, score=-92.2 required=5.0 tests=DATING_SPAM,DKIM_SIGNED, DKIM_VALID,HTML_FONT_LOW_CONTRAST,HTML_MESSAGE,SPF_PASS, SUBSCRIPTION_SPAM,UNPARSEABLE_RELAY,URIBL_BLOCKED,USER_IN_WHITELIST autolearn=no autolearn_force=no version=3.4.2
Si vous pouvez trouver URIBL_BLOCKED dans cet en-tête, cela signifie que vous ne pouvez pas interroger URIBL. La plupart du temps, c'est parce que vous n'utilisez pas votre propre résolveur DNS local. Vous pouvez exécuter la commande suivante sur votre serveur de messagerie pour tester le serveur DNS que vous utilisez pour interroger URIBL.
host -tTXT 2.0.0.127.multi.uribl.com
Exemple de sortie :
2.0.0.127.multi.uribl.com descriptive text "127.0.0.1 -> Query Refused. See http://uribl.com/refused.shtml for more information [Your DNS IP: xx.xx.xx.xx]"
Pour corriger cette erreur, vous devez exécuter votre propre résolveur DNS local sur votre serveur de messagerie.
- Exécutez votre propre résolveur DNS BIND sur CentOS/RHEL
Une fois que votre résolveur DNS local est opérationnel, testez à nouveau URIBL.
host -tTXT 2.0.0.127.multi.uribl.com
Si vous voyez la sortie suivante, cela signifie que vous êtes maintenant autorisé à interroger URIBL.
2.0.0.127.multi.uribl.com descriptive text "permanent testpoint"
À partir de maintenant, les e-mails entrants n'auront plus la balise URIBL_BLOCKED dans le X-Spam-Status
en-tête.
Autres informations
SpamAssassin 4.0 inclut un plugin HashBL, qui peut vérifier si une adresse Bitcoin dans le corps de l'e-mail a été utilisée par des escrocs. Et il existe également un nouveau plugin appelé "Ole Macro" qui peut vérifier si un e-mail contient une pièce jointe Office avec une macro. Ce plugin essaierait de détecter si la macro attachée est malveillante ou non.