Mais qu'est ce que je raconte encore avec un titre pareil . Ne vous inquiétez pas on est pas sur aufeminin.com . Le but ici est de permettre à Spamassassin d'apprendre du SPAM par lui même (avec notre aide également) . Donc nous allons lui donner à manger
. L'auto apprentissage du SPAM se fait par un filtre bayésien
Pour commencer il faut activer le filtre bayésien .
/*
vim /etc/spamassassin/local.cf
bayes_auto_learn 1
bayes_auto_learn_threshold_nonspam -3
bayes_auto_learn_threshold_spam 12.0
bayes_store_module Mail::SpamAssassin::BayesStore::SQL
bayes_sql_dsn DBI:mysql:spamassassin:localhost
bayes_sql_username nom_base
bayes_sql_password mot_de_passe
bayes_sql_override_username amavis
*/
- bayes_auto_learn_threshold_nonspam -3 : On lui file un peu de non-spam ou ham pour un tag inférieur à -3
- bayes_auto_learn_threshold_spam 10.0 : On lui file un peu dspam ou spam pour un tag supérieur à 12
Tu sais quand même créer une BDD et mettre les droits dessus ?
Le fichier SQL à injecter dans votre base se trouve
/*
/usr/share/doc/spamassassin/sql/bayes_mysql.sql
*/
Vous devriez avoir ceci
/*
mysql> show tables;
+------------------------+
| Tables_in_spamassassin |
+------------------------+
| bayes_expire |
| bayes_global_vars |
| bayes_seen |
| bayes_token |
| bayes_vars |
+------------------------+
*/
Dans la table "bayes_vars" les champs "spam_count | ham_count" afin de déterminer le nombre de spam et de ham appris . Par défaut l'apprentissage est fonctionnel quand le nombre de spam et ham sont supérieurs à 200.
Vous pouvez bien-sur modifier ces valeurs
- bayes_min_ham_num
- bayes_min_spam_num
Pour terminer un petit script pondu rapidement . Chaque utilisateur pourra glisser dans un répertoire (pour moi il s'agit de SPAM) les mails qu'ils déterminent comme non-sollicités.
/*
#!/bin/bash
#
# Ce script permets de faire spamassassin apprendre le spam et le mettre en base de donnee
#
usage ()
{
echo "Usage :syntaxe : $0 [options]
--spam auto apprentissage des spams qui se trouvent dans les directory .SPAM
--delete Pour la suppression des spams de plus de 7 jours
Exemple : $0 --spam
Exemple : $0 --delete "
exit 1
}
#Recherche des répertoires SPAM
directoryspam=`find /var/vmail/ -type d -name .SPAM > /tmp/directoryspam.log `
spam() {
for learn in $(cat /tmp/directoryspam.log) ;
do
sa-learn --spam --dir "$learn"/cur/ ;
done
}
#Suppression des spams de plus de 7 jours
delete() {
for delete in $(cat /tmp/directoryspam.log) ;
do
find "$delete"/cur/ -type f -mtime +7 | xargs rm ;
done
}
case "$1" in
--spam )
spam
;;
--delete )
delete
;;
*)
usage
;;
esac
*/
Quand spamassassin sera capable d'apprendre par lui même d'après les paramètres que nous avons mis plus haut on pourra voir dans les headers
/*
X-Spam-Score: 2.045
X-Spam-Level: **
X-Spam-Status: No, score=2.045 tagged_above=-9999 required=5.3
tests=[HTML_IMAGE_ONLY_16=1.048, HTML_MESSAGE=0.001,
MPART_ALT_DIFF=0.724, RCVD_IN_DNSWL_LOW=-0.7, SPF_SOFTFAIL=0.972]
autolearn=no
X-Spam-Score: -9.9
X-Spam-Level:
X-Spam-Status: No, score=-9.9 tagged_above=-9999 required=5.3
tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1,
HTML_MESSAGE=0.001, RCVD_IN_DNSWL_MED=-2.3, SPF_PASS=-0.001,
USER_IN_DEF_DKIM_WL=-7.5] autolearn=ham
*/
On peut remarquer le champs autolearn
Il suffit après de mettre en place une tâche cron .
Un peu de documentation ici
Derniers commentaires