E-mail sans spam avec SpamAssassin
Si vous utilisez votre propre boîte aux lettres sur un serveur utilisant Postfix et Dovecot, il est impératif d'installer un logiciel anti-spam pour protéger votre boîte aux lettres contre les bombardements de spams entrants.
Et pour cela, SpamAssassin est l'une des meilleures solutions disponibles. C'est assez efficace et l'un des plus populaires.
Dans cet article, nous verrons comment configurer spamassassin avec postfix et dovecot pour la protection anti-spam.
Nous supposons que vous avez déjà configuré Postfix et Dovecot sur votre serveur pour gérer les e-mails entrants.
Et que vous utilisez Dovecot LMTP pour envoyer des e-mails aux comptes d'utilisateurs. Le processus avait été décrit dans un post précédent ici -
Configurer un serveur de messagerie avec Postfix et Dovecot sur Ubuntu / DebianSpamassassin analyse les e-mails entrants pour identifier les spams et s'il s'avère qu'un e-mail est potentiellement un spam, Spamassassin ajoute des en-têtes à cet e-mail pour le marquer comme spam.
La vérification des spams se fait au niveau de Postfix. Postfix est configuré pour parler à Spamassassin en tant que content_filter.
Dans l'étape suivante, Dovecot analyse ces en-têtes pour identifier les spams et les place dans un dossier Spam séparé, tout comme Gmail.
1. Installer SpamAssassin
La première chose serait d'installer les packages spamassassin.
$ apt-get install spamassassin spamc
2. Configurer un compte utilisateur et un groupe pour le service spamd
# groupadd spamd# useradd -g spamd -s /bin/false -d /var/log/spamassassin spamd# mkdir /var/log/spamassassin# chown spamd:spamd /var/log/spamassassin
3. Configurer Spamassassin
Modifiez /etc/default/spamassassin afin que ces options soient définies :
# Changez pour un pour activer le spamdENABLED=1SAHOME="/var/log/spamassassin/"# Options# Voir man spamd pour les options possibles. L'option -d est automatiquement ajoutée.# SpamAssassin utilise un modèle de préforkage, alors soyez prudent ! Vous devez # vous assurer que --max-children n'est pas supérieur à 5,# à moins que vous ne sachiez ce que vous faites.OPTIONS="--create-prefs --max-children 5 --helper-home- dir --username spamd \-H ${SAHOME} -s ${SAHOME}spamd.log"
Trouvez également l'option appelée CRON en bas et changez-la en 1. Cela permettra la mise à jour automatique des règles de spamassassin au fur et à mesure de leur publication.
# Cronjob# Défini sur autre chose que 0 pour permettre à la tâche cron de mettre à jour automatiquement# les règles de spamassassin chaque nuitCRON=1
4. Démarrer le démon Spamassassin (spamd)
# service spamassassin startStarting SpamAssassin Mail Filter Daemon :[email protected]:/etc/default#[email protected]:/etc/default# service spamassassin status * spamd est en cours d'exé[email protected]:/etc /default#
Spamassassin démarre un service en arrière-plan, utilisez donc la commande netstat pour vous assurer que spamassassin fonctionne correctement ou non.
# netstat -nlp4 | grep spamtcp 0 0 127.0.0.1:783 0.0.0.0:* ECOUTEZ 1123/spamd.pid
4. Configurez Postfix pour utiliser Spamassassin comme filtre
Postfix doit être configuré pour utiliser le service spamassassin afin de filtrer tous les e-mails entrants
Le fichier de configuration de postfix master.cf doit être modifié pour ajouter le filtre spamassassin. Ouvrez le fichier.
# chat /etc/postfix/master.cf
Ajoutez ce qui suit à la fin du fichier
spamassassin unix - n n - - pipe user=spamd argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${expéditeur} ${destinataire}
Après avoir ajouté les lignes ci-dessus à master.cf, la tâche suivante consiste à redémarrer postfix et à s'assurer qu'il fonctionne correctement.
redémarrage du suffixe du service $
5. Configurer Spamassassin pour marquer les messages de spam
Après avoir configuré Postfix pour utiliser Spamassassin, il est temps de configurer Spamassassin pour modifier les e-mails en fonction des vérifications anti-spam. Le fichier de configuration est - /etc/spamassassin/local.cf
$ nano /etc/spamassassin/local.cf
Décommentez la ligne rewrite_header pour modifier les lignes d'objet des e-mails identifiés comme spam.
# Ajouter *****SPAM***** à l'en-tête Objet des spams## rewrite_header Objet *****SPAM*****rewrite_header Objet [***** SPAM _SCORE_ *****]
La ligne ci-dessus ajouterait le score de spam avec les astérisques pour indiquer que le message ressemble à du spam. Des scores plus élevés indiquent une probabilité plus élevée que le message soit un spam.
Score de spam
Le score minimum requis pour marquer le message comme spam. La valeur par défaut est 5,0, mais de nos jours, vous pourriez avoir besoin d'un niveau de score plus strict. Donc 4.0 fonctionne bien.
# Définir le seuil à partir duquel un message est considéré comme spam (par défaut :5.0)#required_score 4.0
Vérifiez les autres options du fichier et modifiez-les si nécessaire.
Redémarrer Spamassassin - Après avoir configuré tous les paramètres du fichier, enregistrez le fichier et redémarrez spamassassin.
# service spamassassin restartRedémarrage du démon du filtre de messagerie SpamAssassin :spamd.
6. Vérifier le journal de Spamassassin
Si à un moment quelconque vous avez besoin de déboguer quelque chose ou de voir ce qui se passe en arrière-plan de spamassassin, n'hésitez pas à consulter son fichier look.
# tail -f /var/log/spamassassin/spamd.logFri Feb 5 20:11:43 2016 [1123] info :prefork:child states :IIFri Feb 5 20:23:02 2016 [1123] info :spamd :serveur tué par SIGTERM, arrêtVen 5 février 20:23:02 2016 [1404] info:logger:suppression de la méthode stderrVen 5 février 20:23:03 2016 [1406] info:zoom:capable d'utiliser 360/360 'body_0' règles compilées (100%)Ven 5 février 20:23:03 2016 [1406] info:spamd:serveur démarré sur IO::Socket::INET6 [127.0.0.1]:783, IO::Socket::INET6 [::1]:783 (version 3.4.0 en cours d'exécution)Ven 5 février 20:23:03 2016 [1406] info :spamd :pid du serveur :1406Ven 5 février 20:23:03 2016 [1406] info :spamd :le serveur a généré avec succès l'enfant process, pid 1407Fri Feb 5 20:23:03 2016 [1406] info:spamd:le serveur a généré avec succès un processus enfant, pid 1408Fri Feb 5 20:23:03 2016 [1406] info:prefork:child states:ISFri Feb 5 20:23:03 2016 [1406] info :prefork :états de l'enfant :II
7. Tester un spam
Envoyez un e-mail à votre système de messagerie depuis l'extérieur. Inclure le texte suivant dans le corps de l'e-mail
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
Il s'appelle GTUBE - Test générique pour les e-mails en masse non sollicités. C'est un moyen simple de tester si votre serveur de messagerie utilise spamassassin pour filtrer les e-mails ou non.
Apprenez-en plus ici -
http://spamassassin.apache.org/gtube/
SpamAssassin ajoute des en-têtes à tous les e-mails avec des scores de spam> 0
Courrier avec un score de spam de 12,9 Ceci est considéré comme un spam selon notre configuration de score minimum de 3
X-Spam-Checker-Version :SpamAssassin 3.4.0 (2014-02-07) sur localhostX-Spam-Flag :YESX-Spam-Level :************X-Spam -Status:Yes, score=12.9 required=3.0 tests=FROM_LOCAL_NOVOWEL, HTML_FONT_LOW_CONTRAST,HTML_FONT_SIZE_LARGE,HTML_MESSAGE,HTML_OBFUSCATE_05_10, MIME_HTML_ONLY,MISSING_MID,RCVD_IN_BL_SPAMCOP_NET,RCVD_IN_BRBL_LASTEXT, RCVD_IN_PBL,RCVD_IN_PSBL,RCVD_IN_XBL,RDNS_NONE autolearn=no autolearn_force=no version=3.4.0Spam Score 1.7, Non considéré comme spam
X-Spam-Checker-Version :SpamAssassin 3.4.0 (2014-02-07) sur localhostX-Spam-Level :*X-Spam-Status :Non, score=1.7 required=3.0 tests=DEAR_SOMETHING,FREEMAIL_FROM, HTML_MESSAGE,RCVD_IN_MSPIKE_H2,URIBL_BLOCKED autolearn=non autolearn_force=non version=3.4.0Ces en-têtes seront utilisés pour envoyer des e-mails dans un dossier Spam séparé via le transport Dovecot LMTP.
Configurer Dovecot avec un dossier Spam séparé
Dovecot est le système de lecture et de gestion du courrier, serveur POP3 et IMAP. C'est Dovecot qui organise les mails dans des dossiers séparés selon des critères.
Dovecot peut être configuré pour lire les en-têtes de courrier et déplacer les courriers indésirables dans un dossier séparé appelé Spam. Un peu comme vous le voyez avec les services de messagerie gratuits comme Gmail et Outlook.
Installer et configurer le plug-in Sieve
Dovecot a besoin du plugin d'interpréteur Sieve pour utiliser Sieve pour lire les mails. Installez les packages Sieve
# apt-get install dovecot-sieve dovecot-managesievedModifier
/etc/dovecot/conf.d/20-lmtp.confConfigurez dovecot pour activer le plugin sieve
protocol lmtp { # Liste séparée par des espaces des plugins à charger (la valeur par défaut est global mail_plugins). mail_plugins =$mail_plugins tamis}Il est enfin temps de redémarrer le pigeonnier
# redémarrage du colombier du serviceVérifiez maintenant si le serveur sieve s'exécute sur le port 4190. Utilisez la commande netstat. Le service sera nommé colombier.
# netstat -nltp | grep 4190tcp 0 0 0.0.0.0:4190 0.0.0.0:* ECOUTEZ 9843/dovecottcp6 0 0 :::4190 :::* ECOUTEZ 9843/dovecotConfigurer le filtrage par tamis
Pour en savoir plus sur les filtres à tamis, consultez la page suivante - http://wiki2.dovecot.org/Pigeonhole/Sieve/Examples
# mkdir /var/lib/dovecot/sieve/Créez un fichier appelé default.sieve et remplissez-le avec les ensembles de règles suivants
require ["fileinto", "mailbox"];if header :contains "X-Spam-Flag" "YES" { fileinto :create "Spam";}Compilez maintenant le fichier de script .sieve à l'aide de la commande sievec.
# sievec default.sieveSi vous avez plusieurs fichiers .sieve dans le répertoire, vous pouvez tous les compiler en une seule fois comme ceci -
# sievec sieve/Modifiez maintenant la propriété des fichiers sieve à l'utilisateur spécifique de Dovecot afin que Dovecot puisse les lire. Dans ce cas, le nom d'utilisateur est vmail.
/var/lib/dovecot# chown -R vmail:vmail sieve/*Redémarrez Dovecot à nouveau.
# redémarrage du colombier du serviceVérifiez les journaux du pigeonnier
Les fichiers journaux de Dovecot vous aideront à diagnostiquer les problèmes qui pourraient survenir en cours de route.
Trouvez l'emplacement des fichiers journaux dovecot avec la commande suivante
# doveadm log findDebug :/var/log/dovecot.logInfo :/var/log/dovecot.logWarning :/var/log/dovecot.logError :/var/log/dovecot.logFatal :/var/log/dovecot .logOuvrez ensuite le fichier à l'aide de la commande tail
# tail -f /var/log/dovecot.logFeb 06 11:17:16 imap-login :Info :Connexion :user=, method=PLAIN, rip=122.163.23.27, lip=173.255.230.5, mpid=10370, TLS, session= Feb 06 11:17:37 lmtp(10379) :Info :Se connecter à partir de localFeb 06 11:17:37 lmtp(10379, [email protected]) :Erreur :uMMvHPmItVaLKAAA0J78UA:sieve:main script:failed to script stat sieve :stat(/var/lib/dovecot/sieve/default.sieve) a échoué :autorisation refusée (euid=5000(vmail) egid=5000(vmail) manquant +x perm :/var/lib/dovecot, propriété du répertoire par 0:0 mode=0750)Fév 06 11:17:37 lmtp(10379, [email protected]) :Erreur :uMMvHPmItVaLKAAA0J78UA :tamis :échec de l'accès au script utilisateur par défaut /var/lib/dovecot/sieve/default.sieveFeb 06 11:17:37 lmtp(10379, [email protected]) :Info :uMMvHPmItVaLKAAA0J78UA :msgid= :courrier enregistré dans INBOXFeb 06 11:17:37 lmtp(10379) :Info :Déconnectez-vous de local :QuitFeb 06 réussi 11:18:31 lmtp(10379) :Info :Connexion depuis localFeb 06 11:18:31 lmtp(10379, example@unix linux.online) :Erreur :vMMvHPmItVaLKAAA0J78UA :sieve :msgid= :échec du stockage dans la boîte aux lettres 'Spam' :la boîte aux lettres n'existe pas :SpamFeb 06 11:18:31 lmtp(10379, example@unixlinux .online) :Info :vMMvHPmItVaLKAAA0J78UA :sieve :msgid= :courrier stocké dans la boîte aux lettres 'INBOX'Feb 06 11:18:31 lmtp(10379, [email protected]) :Erreur :vMMvHPmItVaLKAAA0J78UA :sieve :l'exécution du script /var/lib/dovecot/sieve/default.sieve;name=main script a échoué, mais la conservation implicite a réussiFeb 06 11:18:31 lmtp(10379) : Info :Déconnexion du local :QuitFeb 06 11 :26:27 lmtp(10479) :Info :Se connecter à partir de localFeb 06 11:26:27 lmtp(10479, [email protected]) :Info :3h4eBwuLtVbvKAAA0J78UA :sieve :msgid= :courrier stocké dans la boîte aux lettres 'Spam'Fév 06 11:26:27 lmtp(10479):Info :Déconnexion de local :Quit réussiFév 06 11:26:57 imap-login :Info :Connexion :user= , method=PLAIN , déchirure=122.163.23.27, lèvre=173.255.230 .5, mpid=10483, TLS, session= Feb 06 11:26:58 imap-login :Info :Connexion :user= , method=PLAIN, rip=122.163.23.27, lip =173.255.230.5, mpid=10484, TLS, session= Feb 06 11:28:30 imap-login :Info :Connexion :user= , method=PLAIN, rip=122.163 .23.27, lèvre=173.255.230.5, mpid=10499, TLS, session= Modifier les permissions du répertoire dovecot
/var/lib/dovecot# chmod a+x .Améliorez le filtrage anti-spam de Spamassassin avec Pyzor
Pyzor agira comme les autres règles.
https://wiki.apache.org/spamassassin/Rules/PYZOR_CHECKIl ajoutera un score de spam supplémentaire d'environ 1,985 selon le tableau des tests trouvé sur - http://spamassassin.apache.org/tests_3_3_x.html
# sudo apt-get install pyzorDécouvrir les serveurs Pyzor
# pyzor --homedir /etc/mail/spamassassin/pyzor découvreRendre le fichier des serveurs lisible par tous
/etc/spamassassin/pyzor# serveurs chmod a+rEffectuer une vérification -
# echo "tester" | spamassassin -D pyzor 2>&1 | moinsVous devriez voir une sortie comme celle-ci
9 février 16:24:58.824 [23979] dbg :pyzor :tests réseau activés, tentative de Pyzor9 février 16:24:59.787 [23979] dbg :pyzor :pyzor est disponible :/usr/bin/pyzor9 février 16:24 :59.788 [23979] dbg:pyzor:ouverture du canal :/usr/bin/pyzor checkAjoutez les lignes suivantes à la fin de /etc/spamassassin/local.cf
pyzor_options --homedir /etc/mail/spamassassin/pyzorEt redémarrez le démon spamassassin
# redémarrage du service spamassassinInstaller Razor
sudo apt-get install razor/etc/spamassassin# rasoir mkdirExécutez maintenant les commandes suivantes pour vous inscrire au réseau distribué Razor.
# razor-admin -home=/etc/spamassassin/razor -registerEnregistrement réussi. Identité stockée dans /etc/mail/spamassassin/razor/identity-rudkVFCIxs# razor-admin -home=/etc/spamassassin/razor -create# razor-admin -home=/etc/spamassassin/razor -discoverAjoutez la ligne suivante à la fin du fichier /etc/spamassassin/local.cf
razor_config /etc/spamassassin/razor/razor-agent.confRedémarrez enfin spamassassin
vérifier que le rasoir fonctionne avec cette commande
# echo "tester" | spamassassin -D rasoir2 2>&1 | moinsquelque chose comme ça devrait apparaître
9 février 17:11:34.701 [26028] dbg :razor2 :razor2 est disponible, version 2.84 Razor-Log :read_file :15 éléments lus depuis /etc/mail/spamassassin/razor/razor-agent.confDes scores personnalisés pour des scores plus élevés
C'est un moyen un peu avancé d'augmenter la précision de spamassassin pour mieux attraper le spam. Cela implique d'augmenter les niveaux de score pour certains tests de spam à l'intérieur de spamassassin. Ce sont les tests anti-spam connus pour avoir un très haut niveau de précision dans la détection des spams.
Donc, si certains de ces tests de haute précision indiquent qu'un e-mail est un spam, nous devrions nous concentrer davantage dessus.
http://toao.net/566-improving-spamassassin-accuracy-with-statisticsConclusion
C'était le processus de configuration de SpamAssassin sur votre serveur de messagerie pour détecter les spams et garder votre boîte aux lettres propre.
Le processus est un peu long mais il fonctionne très bien si vous avez besoin de votre propre serveur de messagerie avec un système anti-spam en place.Si vous avez des commentaires ou des questions, veuillez nous en informer dans les commentaires ci-dessous.
Références et ressources
Configuration simple de Spamassassin avec Postfix et Dovecot sur Ubuntu Breezy
http://www.townx.org/index.php?q=blog/elliot/simple_spamassassin_setup_with_postfix_and_dovecot_on_ubuntu_breezyComment installer et configurer Spamassassin sur Ubuntu 12.04
https://www.digitalocean.com/community/tutorials/how-to-install-and-setup-spamassassin-on-ubuntu-12-04Instructions pour installer Pyzor et Razor avec Spamassassin
https://kura.io/2011/09/22/spamassassin-razor-pyzor/Configuration du filtrage Sieve avec Dovecot
https://easyengine.io/tutorials/mail/server/sieve-filtering/Astuces Spamassassin :Guide de configuration ultime
http://www.spamtips.org/p/ultimate-setup-guide.htmlComment améliorer la précision de SpamAssassin
https://wiki.apache.org/spamassassin/ImproveAccuracySur les effets de l'abaissement de votre seuil SpamAssassin
http://taint.org/2008/02/29/155648a.htmlAméliorer la précision de SpamAssassin sur les serveurs de messagerie cPanel (ou tout autre) - avec des statistiques
http://toao.net/566-improving-spamassassin-accuracy-with-statisticsCet article décrit des hacks simples que vous pouvez utiliser pour modifier les niveaux de score de certains des tests de spamassassin, améliorant ainsi le filtrage des spams.
Conseils avancés pour utiliser SpamAssassin
https://www.andrewferrier.com/oldpages/spamassassin_tips.html