[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [Résolu] spamassassin et dovecot



Bonsoir à tous,

Un petit update du fil pour la résolution du "problème".
Voici donc ce que j'ai mis en place, cela intéressera peut-être d'autres personnes:
Postfix + Amavis + Spamassassin.

Amavis est configuré comme suit (dans /etc/amavis/conf.d/20-debian_defaults):
...
$final_virus_destiny = D_DISCARD; # (data not lost, see virus quarantine)
$final_banned_destiny     = D_BOUNCE;   # D_REJECT when front-end MTA
$final_spam_destiny       = D_PASS;
$final_bad_header_destiny = D_PASS;     # False-positive prone (for spam)
...
Ce qui fait que les mails marqués comme spam sont tout de même remis à Postfix pour être délivré dans les boîtes mail, plus exactement, dans le répertoire "Junk" de chaque utilisateur, grâce à la règle SIEVE (fichier globalsieverc à la racine des mails ):
require ["fileinto"];
if header :contains ["X-SPAM-Flag"] ["YES"] {
   fileinto "Junk";
   stop;
}

Puis, pour chaque boîte, création des 2 répertoires Yes et NO-Junk pour les faux positifs et faux négatifs. À la suggestion de Mouss, les utilisateurs doivent déplacer les faux-positifs dans YES-Junk et *copier* les faux-négatifs dans NO-Junk.

Ces 2 répertoires sont analysés toutes les heure par un cron:
0  */1  * * *   root    /usr/local/sbin/sa_trainer.sh

Ce script recherche les mails dans les 2 répertoires sus-cités pour apprentissage par SpamAssassin en appelant le script spam_learn.sh qui se chargera de supprimer le mail (de façon un peu brutale, mais ça marche). Tout ça est encore un peu "brut de fonderie", notamment pour le filtrage des paramètres, mais cela fonctionne et le nombre de faux-positif diminue chaque jour. Quant aux faux-négatifs, pas encore vu.

Merci à tous de vos conseils,
Cordialement,
JB


sa_trainer.sh
*************
#!/bin/bash

MAILDIRS="/home/vmail/"

LEARN_SPAM_CMD="/usr/local/sbin/spam_learn.sh NO "
LEARN_HAM_CMD="/usr/local/sbin/spam_learn.sh YES "

find $MAILDIRS -iregex '.*/\.YES-Junk\(/.*\)?\/\(cur\|new\)/.*' -type f -exec $LEARN_SPAM_CMD {} \; find $MAILDIRS -iregex '.*/\.NO-Junk\(/.*\)?\/\(cur\|new\)/.*' -type f -exec $LEARN_HAM_CMD {} \;

spam_learn.sh
***************
#!/bin/bash

SPAMDIR="YES-Junk"
NOSPAMDIR="NO-Junk"

MAILDIRS="/home/vmail/"
DB_PATH="/var/lib/amavis/.spamassassin/"
DB_USER="amavis"
DB_GROUP="amavis"
SA_LEARN="`which sa-learn`"
LEARN_SPAM_CMD="$SA_LEARN --spam --no-sync --dbpath $DB_PATH"
LEARN_HAM_CMD="$SA_LEARN --ham --no-sync --dbpath $DB_PATH"

if [ $1="YES" ];
then
   $LEARN_SPAM_CMD "$2"
   chown -R $DB_USER:$DB_GROUP $DB_PATH
   rm -f "$2"
fi
if [ $1="NO" ];
then
   $LEARN_HAM_CMD "$2"
   chown -R $DB_USER:$DB_GROUP $DB_PATH
   rm -f "$2"
fi


mouss a écrit :
rvenne a écrit :
Daniel Caillibaud a écrit :
Le 27/11/08 à 19:09, Debian User French
<jean-baptiste.favre@wanadoo.fr> a écrit :
je n'arrive pas à déplacer le mail dans la boîte de réception car je
ne sais pas dans quel répertoire je suis (multi-utilisateur)
Une solution pourrait être de "renvoyer" le mail dans dovecot ou
postfix (je ne sais pas lequel des 2), mais je ne trouve pas la
commande adéquate.

Une piste ?
J'ai écrit un script qui fait ça, si ça peut t'aider :
http://ll.lairdutemps.org/linux/scripts_bash/checkspam
(pour déplacer le ham dans les mails de invox, c'est la fin qui
devrait t'intéresser, le "while read ham")

Le mv peut sembler un peu "barbare", mais dovecot s'en accomode bien.

et enfin, la soluce des admins feignants, sachant pas programmer,

dans ~/.procmailrc

PATH=/bin:/usr/bin
SHELL=/bin/bash
MAILDIR=$HOME/Maildir
DEFAULT=$MAILDIR/

:0:
* ^Subject: \*\*\*SPAM\*\*\*.*
$MAILDIR/.spams/


et pour les autres fainéants qui ont installé dovecot-sieve,

if header :contains "X-Spam-Flag" "YES" {
        fileinto "Junk";
        stop;
}

mais ça ne règle pas le problème (2), c'est-à-dire lancer sa-learn suite
aux actions de l'utilisateur.

a adapter bien sur. ensuite, il faut bien sur que les end users
s'abonnent au répertoire spams. n'importe quel mail clients graphiques (
ou pas) le fait très bien.


on peut aussi le forcer sur le serveur.

bien sur, il faut bien créer le répertoire .spams avant dans Maildir.


le dossier, pas le répertoire. faut que ce soit un maildir. si dovecot
est lancé sans l'option -n, il le créera automatiquement.

mais on peut aussi vouloir le mode: si l'utilisateur n'a pas créé (ou a
supprimé) le dossier en questoin, c'est qu'il n'en veut pas et on livre
alors dans sa "Inbox normale". (et là, ça résoud les problèmes (1) et
(2), du moins pour l'admin;-p)

en ce qui concerne baysian, vaut mieux NE JAMAIS faire autolearn. laisse
faire les end users, car chacun a ses notions du spam. ce qui impose que
chacun doit avoir une base baysian dans son ~ .

pas d'accord. autolearn est l'un des avantages de l'implémentation
bayesienne de spamassassin. et c'est assez robuste puisque les critères
de déclenchement sont assez stricts (il ne suffit pas qu'un mail soit
classé comme spam pour qu'il y aiat autolearn...).

De plus, les "end users" sont en général mal implémentés :)
- ils se trompent ("euh... mais c'est quoi ce PC. c'est pas ce message
la que je te disais de mettre là où je ne sais plus où tu l'as mis...")
- ils s'en moquent ("oais. c'est pas à moi d'entrainer leur spamatatin.
de toute façon, j'aime pas les tartes renversées", ... )
- ils oublient ("mais non, me suis jamais inscrit à ce truc")
- ils confondent tout ("c'est pas très interessant, alors je le marque
comme spam. ça leur apprendra. comme ça le No suivant sera mieux")
- ils confondent "effacer" et "marquer comme spam" (je l'ai vu dans les
deux sens, par la même personne. c'est une question d'humeur, je suppose)
- ils ont peur ("allo, j'ai un mail, je sais pas si je dois le marquer
comme spam car j'ai peur que ça fasse tout peter. alors je vous le
fort-ouarde")

et contrairement à une fameuse légende, l'homme n'est pas meilleur qu'un
filtre automatique. d'accord, pour 1 ou 2 mails, c'est facile. mais au
bout d'un moment, la fatigue et l'envie d'en finir prennent le dessus et
le rendement baisse.


ps: n'oublie pas l'antivirus avant l'antispam. mais je suis sur que tu y
as déjà pensé.


vaut mieux. et à ce sujet, pour ceux qui utilisent clamav, les
signatures de chez sanesecurity sont pas mal.
	http://sanesecurity.com/clamav/



Reply to: