Kezako?
Bogofilter est un puissant filtre bayésien permettant de tagguer le spam afin de pouvoir le repérer, trier, effacer… très facilement.
Quel intérêt? Remplacer SpamAssassin qui est, lui aussi très afficace, mais très consommateur de ressources (600 Mo en permanence sur mon modeste serveur mail).
Comment le mettre en place:
Il faut déja dans un premier temps “apprendre” au filtre ce que l’on considère comme courrier non sollicité (SPAM), et comme courrier souhaité (HAM).
Mes mails étant stockés au format maildir, nous nous rendons dans mon dossier de spams:
% cd ~/Maildir/.Spam/cur
for i in *; do bogofilter -s -I $i; done
Idem pour les mails sollicités (HAM)
% cd ~/Maildir/cur
for i in *; do bogofilter -n -I $i; done
Maintenant que bogofilter est “entrainé”, il faut modifier le ~/.procmailrc afin de filtrer les mails:
## BogoFilter
:0fw
* < 128000
| bogofilter -upelv
:0e
{ EXITCODE=75 HOST }
## BogoFilter
:0
* ^X-Bogosity.*spamicity=1\.0
.Spam/
:0
* ^X-Bogosity.*spamicity=0\.9[56789]
.Spam/
Ce code nous permet de déplacer dans un dossier Spam tous les mails considérés comme spam.
Que faire cas de détection d’un faux positif, ou d’un faux négatif?
Nous allons créer les dossiers Ham, Spam ainsi qu’un sous dossier Old pour chacun de ces dossiers dans notre boite mail nous permettant de faire réapprendre à bogofilter les mails concernés.
Le script suivant lancé périodiquement nous permettra de faire apprendre à bogofilter le Spam
#!/bin/sh
if [ $UID -eq 0 ]; then
echo “Lancement par les utilisateurs uniquement !” ;
exit
fi
if [ ! -d $1 ] || [ ! -d $2 ]
then
echo “Dossier manquant !” ;
exit 1
fi
SPAM=$1
OLDSPAM=$2
bogofilter=/usr/bin/bogofilter
# Reconnaissance du spam
echo “ANALYSE DU SPAM”
for f in $SPAM/*,S ; do
if [ -f $f ] ; then
echo $f ;
$bogofilter -s -I $f
fi
done
mv $SPAM/*,S $OLDSPAM/
echo “Done.”
Le script suivant lancé périodiquement nous permettra de faire apprendre à bogofilter le Ham
#!/bin/sh
if [ $UID -eq 0 ]; then
echo “Lancement par les utilisateurs uniquement !” ;
exit
fi
if [ ! -d $1 ] || [ ! -d $2 ]
then
echo “Dossier manquant !” ;
exit
fi
HAM=$1
OLDHAM=$2
bogofilter=/usr/bin/bogofilter
# Reconnaissance du ham
echo “ANALYSE DU FAUX SPAM”
for f in $HAM/* ; do
if [ -f $f ] ; then
echo $f;
$bogofilter -n -I $f
fi
done
mv $HAM/* $OLDHAM/
echo “Done.”
Ces scripts seront lancés par votre crontab grace aux lignes suivantes:
@daily /usr/local/bin/bogoaddspam.sh ~/Maildir/.Spam/cur ~/Maildir/.Spam.Old/cur
@daily /usr/local/bin/bogoaddham.sh ~/Maildir/.Ham/cur ~/Maildir/.Ham.Old/cur