Mais qu'est ce que je raconte encore avec un titre pareil . Ne vous inquietez 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
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 biensur modier 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 repertoires 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
- */
Il suffit après de mettre en place une tâche cron .
Un peu de documentation ici