J'aimerais fournir du jambon de qualité (HAM) à spamassassin pour l'éduquer avec sa-learn.
Tout mon mail passe par procmail pour finir sous forme Maildir (pour courier-imap). Mon .procmailrc est constitué comme ça:
----------------
1a. envoyer les virus (clamav) vers /dev/null
:0 HB :
* !? clamscan --quiet --unzip -
/dev/null
# Virus bagleb
:0 :
* ^Subject:.*ID .*thanks
/dev/null #.Viruses/
# Attachements indésirables
:0 HB:
* .*name=.*\.(scr|vba|vb|bat|cmd|pif)
/dev/null #.Viruses/
:0 B
* ^Content-Type: .*/.*;$?.*name=.*\.(scr|vba|vb|bat|cmd|pif)
/dev/null #.Viruses/
2 envoyer les mails de chaque gens connus vers son propre dossier (des centaines de règles que j'ai pas envie de modifier (une personne = un dossier))
3a. tout mail qui n'est ni un virus, ni whitelisté est confronté à spamc qui le tague.
:0 fw
* < 256000
| spamc
4. Si c'est un spam, direction Maildir/.SPAM/
:0 a:
*(^X-SpamProbe: SPAM|^X-Spam-Status: Yes)
.SPAM/
5. sinon Maildir/
:0 :
$DEFAULT
----------------
A la main, j'envoie tous les spam non reconnus vers Maildir/.SPAM.MissedSpam/
Chaque nuit, un script (educate_sa) éduque spamassassin:
8<-------------------------
#!/bin/sh
# educate SpamAssassin
maildir=/home/djax/Maildir
salearn=/usr/local/bin/sa-learn
rm=/bin/rm
empty_folder(){
if [[ $(ls -a $1 | wc -w) -gt 2 ]] ;then
$rm $1/*
echo "$1 has been cleaned."
else
echo "$1 is an empty folder"
fi
}
$salearn --spam --dir $maildir/.SPAM.MissedSpam/new/;
empty_folder $maildir/.SPAM.MissedSpam/new
$salearn --spam --dir $maildir/.SPAM.MissedSpam/cur/;
empty_folder $maildir/.SPAM.MissedSpam/cur
$salearn --ham --dir $maildir/.SPAM.NotSpam/cur/ ;
empty_folder $maildir/.SPAM.NotSpam/cur
$salearn --ham --dir $maildir/.SPAM.NotSpam/new/ ;
empty_folder $maildir/.SPAM.NotSpam/new
---------------------------->8
Ce que j'aimerais faire, c'est faire une règle 1b, qui copie tous les messages non vérolés vers un dossier .SPAM/NotSpam/ genre:
:0 c:
.SPAM.NotSpam/
Puis faire une règle3b: si c'est du SPAM détruire le fichier mis dans le dossier .HAM/ , je vois pas trop comment, vu que je ne sais pas le nom du fichier de la règle 1b et si le nom sera le même. Procéder avec un md5sum ne sert à rien car le message est modifié par spamc. Peut-être un ajoutant un header genre X-my_mailid: 00000000000000001, mais je trouve ça un peu lourd.
Un autre problème sera de supprimer les messages présent dans .SPAM.MissedSPAM/(cur|new)/ du répertoire .SPAM.NotSpam/.
Si les nom des fichiers de mails sont les mêmes, un
-------------------------
cd ~/Maildir/.SPAM/
for i in $(ls -p cur new | grep ^1 );
do
if [ -f ~/Maildir/.SPAM.MissedSpam/new/$i ];then
rm ~/Maildir/.SPAM.MissedSpam/new/$i
else if [ -f ~/Maildir/.SPAM.MissedSpam/cur/$i ];then
rm ~/Maildir/.SPAM.MissedSpam/cur/$i
fi
--------------------------
pourrait suffire, idem pour le NotSpam (bien que pouvoir voir tout les messages viable du jour pourrait être aussi sympa)
Merci pour toute l'aide que vous pour m'apporter.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.