Outils pour utilisateurs

Outils du site


admin-systeme:spamassassin-blacklist-from-automatique

Marquer comme spam automatiquement avec SpamAssassin

Obsolète

Note : C'est une astuce qui marche bien, et que m'a rendu service pendant 1 an. Mais à cette époque, je n'avais pas la connaissance de sa-learn, qui gère ça en natif et en mieux. Suivez ce lien Marquer comme spam automatiquement avec SpamAssassin (sa-learn)

Objectif

L'objectif de ce tutoriel est de blacklister automatiquement des adresses mail avec SpamAssassin lorsqu'un email est déplacé en IMAP dans un dossier spécifique.

Prérequis

  • Un serveur mail fonctionnel utilisant SpamAssassin
  • crontab installé et lancé
  • Quelques connaissance en bash scripting

Introduction

Malgré l'utilisation de SpamAssassin, un certain nombre de spammeurs parviennent à atteindre ma boîte mail. Je les déplace manuellement dans un dossier de courrier indésirable depuis ma Webmail, mais ils ont tendance à revenir, parfois plusieurs fois par jour.

Le but de l'opération est d'aller récupérer les adresses de tous les expéditeurs que vous aurez manuellement placé dans votre dossier IMAP de spam, pour vous en débarrasser définitivement.

Le fonctionnement de ce tutoriel est très spécifique à ma configuration. Il est toutefois possible de l'adapter à tous les cas de figure, à condition que vos mails soient des fichiers.

Ma configuration est la suivante :

De plus, mon script est au niveau d'un seul utilisateur, puisque un seul utilisateur gère les mails dans mon cas : moi.

Sauvegarde du fichier de préférence

Avant de faire des bêtises, on sauvegarde le fichier de préférence de SpamAssassin user_prefs. :

cp /home/<user>/.spamassassin/user_prefs /home/<user>/.spamassassin/user_prefs.base

Création du script

Maintenant, vous créez dans votre home un script qui va créer notre fameuse liste d'expéditeurs malveillants. Je vais l'appeler auto-spam.sh

#!/bin/bash
#########################################################################
#       Auto blacklist spam sender:                                     #
#       Date : 2012-11-15                                               #
#       Author : Arthur Hoaro                                           #
#########################################################################
 
# Require proper user
if [ `whoami` != "<user>" ]; then
        echo "Error : bad user."
        exit -1
fi
 
SADIR=~/.spamassassin
SPAMMAIL=~/mail/.Spam/cur
DATE=`date +"%Y%m%d%H%m%s"`
 
cp $SADIR/blacklist $SADIR/blacklist.${DATE}
rm -f $SADIR/blacklist
 
# Get email address from spam email files and previous blacklist file
for x in `grep "^From:" $SADIR/blacklist.${DATE} $SPAMMAIL/* |
        grep -o "[[:alnum:]\.\+\-\_]*@[[:alnum:]\.\-]*" |
        tr "A-Z" "a-z" |
        sort -u` ;
 
        do echo "blacklist_from $x" >> $SADIR/blacklist
done
 
cat $SADIR/user_prefs.base $SADIR/blacklist > $SADIR/user_prefs
 
# Delete old blacklist file
$SADIR/blacklist.${DATE}

Petite explication :

  • Vérification de l'utilisateur (pensez à remplacer <user>).
  • Défintion des chemin (adaptez à votre configuration).
    • SADIR : Chemin de SpamAssassin
    • SPAMMAIL : Chemin contenant les fichiers mail du dossier de spam
  • Suppression de l'ancienne liste de spam si elle existe.
  • Récupération de tous les expéditeurs et suppression des doublons. Puis ajout au fichier blacklist.
  • Le fichier blacklist est mis à la suite du fichier de préférence SpamAssassin.
  • Suppression du fichier blacklist “tampon”.

Création des crontab

Les crontabs sont des tâches planifiées qui vont vous permettre au serveur d'effectuer les sauvegardes automatiquement.

Lancez la commande avec l'utilisateur <user> :

$ crontab -e

Ajoutez la ligne suivante (et modifiez la fréquence d'exécution en fonction de vos besoins) :

# Gestion automatique du spam (toutes les heures)
0 * * * * /chemin/vers/script/auto-spam.sh

Remplacez bien sûr le chemin.

Rappel sur le fonctionnement des crontabs ici.

Evolutions

J'ai fait ce script rapidement pour répondre à un besoin ponctuel.

Mais on peut imaginer quelques évolutions à apporter pour rendre ce script pérenne :

  • Sauvegarder le fichier blacklist régulièrement. Actuellement les données pourraient être perdues en cas de problème avec le script.
admin-systeme/spamassassin-blacklist-from-automatique.txt · Dernière modification: 2013/04/28 16:28 par Arthur Hoaro