Table des matières
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 là ).
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:
- Brut: sa-retrain-fake-mda (v2)
- Zippé: sa-retrain-fake-mda.zip (v2)
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:
- Brut: sa-retrain-spamham (v2)
- Zippé: sa-retrain-spamham.zip (v2)
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
” .