ReLoad

Thierry Jaouen ~ WikiBlog
"Rien à foutre d'être lu, tant que je peux me relire."

Outils pour utilisateurs

Outils du site


blog:2013:07:30:retrain_spamassassin_rectificatif

ReTrain SpamAssassin : Rectificatif

Un petit rectificatif sur la première méthode d'apprentissage de SpamAssassin .

Bien que fonctionnelle, elle est un peu lourde, d'autant plus que j'ai omis le mode “forget” , le pendant de spam et ham pour la commande sa-learn.

En apportant ce complément, on va aussi simplifier la création des mails et ré-écrire (un peu) les scripts…

~~READMORE~~

Comptes locaux

Il n'est plus question de créer un compte par type de mail…

On va créer simplement un seul compte par frontal: c'est au moment de l'analyse des mails qu'ils seront classés “spam” “ham” ou “forget”.

Pour que cela fonctionne, il faut que l'e-mail du “recipient” s'appelle “spam” ou “ham” ou “forget”. (on ne tient pas compte ce qu'il y a après le “@” )

Création

Création d'un compte de mail local par frontal:

# adduser mx0
# adduser mx1

Aliases

Dans le fichier /etc/aliases :

spam : mx0,mx1
ham : mx0,mx1
forget : mx0,mx1
nospam: ham

Le reste a déjà été expliqué .

Recipient

Petit rappel sur les limites a appliqués aux comptes virtuels. Pour nous, dans /etc/postfix/recipient_access.regexp :

/^spam(\+?.*)?@/i       permit_mynetworks,reject
/^nospam(\+?.*)?@/i     permit_mynetworks,reject
/^ham(\+?.*)?@/i        permit_mynetworks,reject
/^forget(\+?.*)?@/i     permit_mynetworks,reject

( Voir détails par ).

Un bilan

Après:

# newaliases
# postfix reload

On peut envoyer des mails a “spam” ou “ham” ou “forget” , et ils seront dupliqués dans les comptes “mx0” et “mx1”.

Les frontaux

Sur chaque frontal…

Scripts

"split-rfc822-attachment.pl"

Le script Perl qui va extraire les pièces jointes est là:

Il est inspiré de ce script: http://jmason.org/software/scripts/extract-rfc822-attachment.txt

A copier dans: /usr/local/bin/

"sa-retrain-fake-mda"

Ce script va livrer les mails directement dans le répertoire “~/sa-retrain/inbox”.
Contrairement à la version précédente, il ne fait aucun autre traitement.

Téléchargement:

A copier dans: /usr/local/bin/

"sa-retrain-spamham"

Ce script fait les choses suivantes:

  • parcourt le répertoire ~/sa-retrain/inbox/
  • détermine le type d'apprentissage: “spam” ou “ham” ou “forget”
  • extrait toutes les pièces jointes
  • retire les marquages de spamassassin
  • exécute sa-learn selon le type de d'apprentissage pour chaque pièce jointe.

Téléchargement:

A copier dans: /usr/local/bin/

Ce qui ce passe est envoyé dans les LOGs.

En passant:

  • un répertoire ~/sa-retrain/tmp est créé.
  • les mails erronés sont déplacés dans ~/sa-retrain/error/
  • les mails correctements traités sont déplacés dans ~/sa-retrain/learn/
:!: il faudra nettoyer “learn/” et “error/” de temps en temps!

fetchmail

La configuration de fetchmail devient (Exemple pour mx0 ):

# ----------------------

set postmaster root
set no bouncemail
#set syslog

poll pop.local.eez.fr protocol POP3 
  timeout 20
  auth password
  user mx0 there with password '<PASSWORD>' is debian-spamd here options ssl
  and wants mda "/usr/local/bin/sa-retrain-fake-mda %F %T"
  sslcertck sslcertpath "/var/lib/spamassassin/fetchmail/ssl"
  sslcommonname "pop.thierry-jaouen.fr"

# ----------------------
# EOF

( la configuration a déjà été expliquée )

Finaliser

Tester

$ fetchmail
$ sa-retrain-spamham

CRON

MAILTO=root
*/10 * * * * fetchmail >/dev/null ; sleep 1 ; /usr/local/bin/sa-retrain-spamham >/dev/null

Et aussi:

0 12 * * sun find ~/sa-retrain/learn ~/sa-retrain/error -type f -mtime +10 -delete >/dev/null

… qui va permettre d'effacer les fichiers de plus de 10 jours dans “~/sa-retrain/learn” et “~/sa-retrain/error” .

blog/2013/07/30/retrain_spamassassin_rectificatif.txt · Dernière modification : 2013/07/30 16:13 de thierry