Papa papa donne moi du SPAM

Publié le 10 août 2011 par Lmns972 @guestblog

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 . L'auto apprentisage du SPAM se fait par un filtre bayésien

Pour commencer il faut activer le filtre bayésien .

  1. /*
  2. vim /etc/spamassassin/local.cf
  3. bayes_auto_learn 1
  4. bayes_auto_learn_threshold_nonspam -3
  5. bayes_auto_learn_threshold_spam 12.0
  6. bayes_store_module Mail::SpamAssassin::BayesStore::SQL
  7. bayes_sql_dsn DBI:mysql:spamassassin:localhost
  8. bayes_sql_username nom_base
  9. bayes_sql_password mot_de_passe
  10. bayes_sql_override_username amavis
  11. */

- 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

  1. /*
  2. /usr/share/doc/spamassassin/sql/bayes_mysql.sql
  3. */

Vous devriez avoir ceci

  1. /*
  2. mysql> show tables;
  3. +------------------------+
  4. | Tables_in_spamassassin |
  5. +------------------------+
  6. | bayes_expire |
  7. | bayes_global_vars |
  8. | bayes_seen |
  9. | bayes_token |
  10. | bayes_vars |
  11. +------------------------+
  12. */

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

  1. bayes_min_ham_num
  2. 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.

  1. /*
  2. #!/bin/bash
  3. #
  4. # Ce script permets de faire spamassassin apprendre le spam et le mettre en base de donnee
  5. #
  6. usage ()
  7. {
  8. echo "Usage :syntaxe : $0 [options]
  9. --spam auto apprentissage des spams qui se trouvent dans les directory .SPAM
  10. --delete Pour la suppression des spams de plus de 7 jours
  11. Exemple : $0 --spam
  12. Exemple : $0 --delete "
  13. exit 1
  14. }
  15. #Recherche des repertoires SPAM
  16. directoryspam=`find /var/vmail/ -type d -name .SPAM > /tmp/directoryspam.log `
  17. spam() {
  18. for learn in $(cat /tmp/directoryspam.log) ;
  19. do
  20. sa-learn --spam --dir "$learn"/cur/ ;
  21. done
  22. }
  23. #Suppression des spams de plus de 7 jours
  24. delete() {
  25. for delete in $(cat /tmp/directoryspam.log) ;
  26. do
  27. find "$delete"/cur/ -type f -mtime +7 | xargs rm ;
  28. done
  29. }
  30. case "$1" in
  31. --spam )
  32. spam
  33. ;;
  34. --delete )
  35. delete
  36. ;;
  37. *)
  38. usage
  39. ;;
  40. esac
  41. */

Il suffit après de mettre en place une tâche cron .
Un peu de documentation ici