Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[SCRIPT] script de filtrage
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index French
View previous topic :: View next topic  
Author Message
22decembre
Guru
Guru


Joined: 08 May 2010
Posts: 308
Location: Paris, banlieue sud (Massy et alentours)

PostPosted: Sat Jul 17, 2010 8:06 pm    Post subject: [SCRIPT] script de filtrage Reply with quote

bonjour

Je voudrais créer un script pour entrainer mon filtre à spam.

J'aimerais lire un par un les mails dans le dossier ~/.mail/.inbox.spam/ et si le mot "spam" est absent (c'est qu'il est faux négatif) du mail, je passe le fichier dans bogofilter avec l'option "-u -Ns".

Pareil, si, dans les dossier .inbox.facebook/ .inbox.gentoo/ ... si le mot "spam" est présent (c'est qu'il est faux négatif), alors il faut passer le fichier dans bogofilter avec "-u -Sn".

Comment puis-je faire cela ? (Moi et le bash...)
_________________
Portable Gentoo installé depuis ~fevrier 2010, kde4 ( doc : http://www.22decembre.eu/gentoo-portable/)
Serveur Maison Gentoo depuis ~avril 2010 (doc : http://www.22decembre.eu/gentoo-serveur/)
http://www.22decembre.eu
Back to top
View user's profile Send private message
truc
Advocate
Advocate


Joined: 25 Jul 2005
Posts: 3199

PostPosted: Sun Jul 18, 2010 11:10 am    Post subject: Reply with quote

Tiens, bizarre, je pensais avoir déjà répondu!?

Bref, il nous manque ta première tentative pour pouvoir gloser autour!

(tu peux commencer à regarder du côté de grep - notamment 'grep -q'- pour savoir si un fichier contient un mot ou pas)
_________________
The End of the Internet!
Back to top
View user's profile Send private message
22decembre
Guru
Guru


Joined: 08 May 2010
Posts: 308
Location: Paris, banlieue sud (Massy et alentours)

PostPosted: Mon Jul 19, 2010 6:39 pm    Post subject: Reply with quote

donc dans le dossier de spam je fais :

grep -L "spam" * (recherche tous ceux qui ne contiennent pas l'entente "spam" posée par bogofilter ou spamassassin, s'ils sont dans le dossier spam, c'est que l'utilisateur l'y a mis, c'est donc un faux négatif)

mais comment envoyer cette liste de fichier à bogofilter (pour réapprentissage) ?
_________________
Portable Gentoo installé depuis ~fevrier 2010, kde4 ( doc : http://www.22decembre.eu/gentoo-portable/)
Serveur Maison Gentoo depuis ~avril 2010 (doc : http://www.22decembre.eu/gentoo-serveur/)
http://www.22decembre.eu
Back to top
View user's profile Send private message
truc
Advocate
Advocate


Joined: 25 Jul 2005
Posts: 3199

PostPosted: Mon Jul 19, 2010 8:33 pm    Post subject: Reply with quote

maiis bogofilter fonctionne comment? C'est une commande? qui prend un fichier en entrée? C'est une page web? C'est un utilisateur à qui il faut envoyer des messages?
_________________
The End of the Internet!
Back to top
View user's profile Send private message
22decembre
Guru
Guru


Joined: 08 May 2010
Posts: 308
Location: Paris, banlieue sud (Massy et alentours)

PostPosted: Tue Jul 20, 2010 4:54 am    Post subject: Reply with quote

c'est une commande.

En l'occurrence, elle doit ressembler à :

Code:
bogofilter -d /var/lib/bogofilter -Ns nom_du_fichier

_________________
Portable Gentoo installé depuis ~fevrier 2010, kde4 ( doc : http://www.22decembre.eu/gentoo-portable/)
Serveur Maison Gentoo depuis ~avril 2010 (doc : http://www.22decembre.eu/gentoo-serveur/)
http://www.22decembre.eu
Back to top
View user's profile Send private message
22decembre
Guru
Guru


Joined: 08 May 2010
Posts: 308
Location: Paris, banlieue sud (Massy et alentours)

PostPosted: Tue Jul 20, 2010 5:01 am    Post subject: Reply with quote

j'ai l'impression que c'est :

Code:
grep -L "SPAM" *|bogofilter -Ns -d /var/lib/bogofilter"


"cherche ceux qui contienne pas SPAM (pas classé par le premier filtre à l'entrée), et dis à bogofilter que c'est pas du ham (N) mais du spam (s) dans la base de données dans /var/lib/bogofilter"
_________________
Portable Gentoo installé depuis ~fevrier 2010, kde4 ( doc : http://www.22decembre.eu/gentoo-portable/)
Serveur Maison Gentoo depuis ~avril 2010 (doc : http://www.22decembre.eu/gentoo-serveur/)
http://www.22decembre.eu
Back to top
View user's profile Send private message
truc
Advocate
Advocate


Joined: 25 Jul 2005
Posts: 3199

PostPosted: Tue Jul 20, 2010 5:26 am    Post subject: Reply with quote

si bogofilter est capable de lire la liste de fichier en entrée(à la sortie d'un pipe) au lieu de en argument, il semblerait que tu aies répondu toi même à ta question:)

Du coup, pour les faux négatifs, si j'ai bien compris, tu ferais:
Code:
for box in ~/.mail/.inbox.*; do
   [ -d "$box" ] || continue;
   echo "Entering $box"
   if [ "${box##*.}" = "spam" ] ; then
      cd "$box" && grep -L "SPAM" * | bogofilter -Ns -d /var/lib/bogofilter
   else
      cd "$box" && grep -l "SPAM" * | bogofilter -u -Sn -d /var/lib/bogofilter
   fi
   # nous jouons avec des chemins absolus, pas besoin normalement de revenir
   # où nous étions avant
done



Bon, par contre, es-tu bien sûr que c'est suffisant comme test pour savoir si c'est du spam ou non?

Par exemple, je ne sais pas comment cela fonctionne chez toi, mais, ne cherches-tu pas à savoir, par exemple, si le sujet du message contient SPAM plutôt que tout le message? La recherche doit-elle se restreindre à SPAM en majuscule?

Dans tous les cas, nous devrions pouvoir modifier le code ci-dessus pour l'améliorer
_________________
The End of the Internet!
Back to top
View user's profile Send private message
22decembre
Guru
Guru


Joined: 08 May 2010
Posts: 308
Location: Paris, banlieue sud (Massy et alentours)

PostPosted: Tue Jul 20, 2010 5:40 pm    Post subject: Reply with quote

je recherche en fait le motif "___SPAM___" qui est strictement l'entete de marquage réglé par moi-même dans bogofilter.

grep doit donc rechercher celui-ci exactement !

t'es sur(e) pour les déplacement dans les dossiers ? En l'occurrence, pour les maildir il s'agit de :

~/.mail/cur => boite de reception par défaut
~/.mail/.inbox.spam/cur => spam
~/.mail/.inbox.facebook/cur => facebook

et ainsi de suite.
~/.mail est un choix, le reste, non, c'est le format des dossier maildir (serveur imap)
_________________
Portable Gentoo installé depuis ~fevrier 2010, kde4 ( doc : http://www.22decembre.eu/gentoo-portable/)
Serveur Maison Gentoo depuis ~avril 2010 (doc : http://www.22decembre.eu/gentoo-serveur/)
http://www.22decembre.eu
Back to top
View user's profile Send private message
truc
Advocate
Advocate


Joined: 25 Jul 2005
Posts: 3199

PostPosted: Tue Jul 20, 2010 9:42 pm    Post subject: Reply with quote

22decembre wrote:
t'es sur(e) pour les déplacement dans les dossiers ?

Non, pas du tout, je ne me base que sur les informations que tu as données jusqu'ici:

fais ce test (qui ne modifie rien nul part)
Code:
for box in ~/.mail/cur ~/.mail/.inbox.*/cur; do
   cd "$box" || continue
   if [ "${PWD}" = "$HOME/.mail/.inbox.spam/cur" ]; then
      echo "$box: this is the spam box"
      # grep -L "___SPAM___" * | bogofilter -Ns -d /var/lib/bogofilter
   else
      echo "$box"
      # grep -l "___SPAM___" * | bogofilter -u -Sn -d /var/lib/bogofilter
   fi
done


Ça va te permettre de vérifier si ce sont bien les répertoires que tu veux etc

Après, si c'est bon, tu pourras probablement juste décommenter les lignes qui effectuent le traitement et ce sera bon.

Mais avant, encore deux trois questions pour être bien sûr:
  • Comment au juste les messages taggués avec ___SPAM___ arrivent quand même dans les dossiers autre que celui du spam?
  • Ton 'antispam' ne les déplace pas tout seul? (attention, je ne connais pas du tout le produit que tu utilises, n'aies pas peur de dire des évidences!)
  • Quasi même question mais sur les mails n'étant pas du spam mais arrivant quand même dans le dossier spam, pourquoi?

_________________
The End of the Internet!
Back to top
View user's profile Send private message
22decembre
Guru
Guru


Joined: 08 May 2010
Posts: 308
Location: Paris, banlieue sud (Massy et alentours)

PostPosted: Wed Jul 21, 2010 5:48 am    Post subject: Reply with quote

encore une fois, bogofilter est le filtre de spam, il faut lui apprendre à le reconnaître ! Ok ?

J'ai un dossier "spam" dans mon client courriel qui correspond au dossier .inbx.spam. Tous les messages que j'y mets sont donc du spam.
J'ai passé ce dossier à bogofilter, et les autres dossiers, en disant que c'était du spam.

Maintenant, bogofilter a appris et peut donc classer les messages arrivant comme spam, et marque "___spam___" dans le header du courriel. Il pourrait aussi faire plein d'autres choses (un autre motif...).
Il passe le message à postfix, qui le mets dans ma boîte aux lettres. C'est le dernier intervenant, le deliver de dovecot qui pose le message dans le bon dossier. Ça s'appelle sieve, c'est un langage de filtres. J'ai ainsi un filtre sur facebook, un autre sur gentoo, et un sur le spam.
C'est donc bien un élément du serveur mail (deliver de dovecot, missionné par postfix) qui a mis le spam dans le dossier en suivant mes indications inscrites dans le filtre sieve.

Jusqu'ici, aucune intervention de ma part, sauf en tant qu'administrateur du serveur...

Si je veux faire ce script de filtrage, c'est parce que bogofilter a besoin d'un entrainement permanent, qu'il fait des erreurs et que c'est moi qui les corrige.

Il arrive donc qu'il pose un message non-sollicité dans une boîte "classique", auquel cas, je le rebalance dans la boîte "spam" et il doit apprendre que je trouve ce message "spam" => d'où la recherche d'absence du motif dans les messages du dossier "spam".

Inversement, il peut classer des messages "sollicités" comme du spam. Auquel cas, je les récupère de la boîte spam et les rebalance dans la boîte où ils devraient être. Bogofilter doit donc apprendre que ces messages taggués spam n'en sont pas !

Voila pour l'explication en full-HD... Le disque Blu-Ray viendra plus tard ;-)

Je te remercie de m'aider. C'est juste que tu as l'air de maîtriser le bash avec les "||continue;"...
_________________
Portable Gentoo installé depuis ~fevrier 2010, kde4 ( doc : http://www.22decembre.eu/gentoo-portable/)
Serveur Maison Gentoo depuis ~avril 2010 (doc : http://www.22decembre.eu/gentoo-serveur/)
http://www.22decembre.eu
Back to top
View user's profile Send private message
truc
Advocate
Advocate


Joined: 25 Jul 2005
Posts: 3199

PostPosted: Wed Jul 21, 2010 10:19 am    Post subject: Reply with quote

Cool, un échange d'information bidirectionnel!

Bon, ce qui me manquait et qui maintenant me semble évident :oops: est que c'est toi qui manuellement a redéplacé les mails dans la boite kivabien pour relancer l'apprentissage...


Oui, bon... Mais avec tout ça, la solution semble te convenir, ou a t'elle encore un peu besoin d'amour?
:wink:
_________________
The End of the Internet!


Last edited by truc on Wed Jul 21, 2010 7:18 pm; edited 1 time in total
Back to top
View user's profile Send private message
22decembre
Guru
Guru


Joined: 08 May 2010
Posts: 308
Location: Paris, banlieue sud (Massy et alentours)

PostPosted: Wed Jul 21, 2010 6:12 pm    Post subject: Reply with quote

on verra bien si c'est bon...

l'interêt c'est d'écrire un script, et tous les matins 2h45, tache cron... C'est ça qu'est cool avec les serveurs : ils font le boulot tout seul !
_________________
Portable Gentoo installé depuis ~fevrier 2010, kde4 ( doc : http://www.22decembre.eu/gentoo-portable/)
Serveur Maison Gentoo depuis ~avril 2010 (doc : http://www.22decembre.eu/gentoo-serveur/)
http://www.22decembre.eu
Back to top
View user's profile Send private message
22decembre
Guru
Guru


Joined: 08 May 2010
Posts: 308
Location: Paris, banlieue sud (Massy et alentours)

PostPosted: Wed Jul 21, 2010 9:01 pm    Post subject: Reply with quote

on dirait que ça marche...

j'ai légerement modifié le truc :

Code:
#!/bin/bash

for box in ~/.mail/cur ~/.mail/.INBOX.*/cur; do
   cd "$box" || continue
   if [[ "$box" == *spam* ]]
   then
      echo "$box: this is the spam box"
      grep -L "___SPAM___" * | bogofilter -Ns -d /var/lib/bogofilter
   else
      echo "$box"
      grep -l "___SPAM___" * | bogofilter -Sn -d /var/lib/bogofilter
   fi
done


grep contient il une option sur l'age du fichier (du message) ? Parce que plus mes boîtes mail vont vieillir, plus elles vont grossir et rendre le traitement long et inutile puisque le même message ne peut être "appris" qu'une seule fois !
_________________
Portable Gentoo installé depuis ~fevrier 2010, kde4 ( doc : http://www.22decembre.eu/gentoo-portable/)
Serveur Maison Gentoo depuis ~avril 2010 (doc : http://www.22decembre.eu/gentoo-serveur/)
http://www.22decembre.eu
Back to top
View user's profile Send private message
truc
Advocate
Advocate


Joined: 25 Jul 2005
Posts: 3199

PostPosted: Wed Jul 21, 2010 9:52 pm    Post subject: Reply with quote

Pas que je sache, par contre, tu peux probablement t'en sortir avec 'find'

si ton script est executé tous les jours, tu peux probablement juste chercher les fichiers ayant été modifiés pendant cet interval de temps:
Code:
# dans un repertoire donné
find -mtime -1 -exec grep -l spam '{}' + | bogofilter -machin


Bon, et puisque certains vont probablement bondir, si tu ne reçois pas des milliers de mail en l'espace d'une journée, cela est suffisant, mais si c'est le cas, tu regarderas de plus près la commande et les options de xargs que tu utiliseras au lieu du -exec de find
_________________
The End of the Internet!
Back to top
View user's profile Send private message
22decembre
Guru
Guru


Joined: 08 May 2010
Posts: 308
Location: Paris, banlieue sud (Massy et alentours)

PostPosted: Thu Jul 22, 2010 6:50 pm    Post subject: Reply with quote

je pensais lire les mails pas plus de 5 jours... en 5 jours, si il est pas passé c'est qu'il est un fantome !

Tu t'y connais bien en scripts on dirait ! T'aurais pas un truc aussi pour gerer le repertoire de portage par ex ? (je comptais lancer le sujet alors ...)
_________________
Portable Gentoo installé depuis ~fevrier 2010, kde4 ( doc : http://www.22decembre.eu/gentoo-portable/)
Serveur Maison Gentoo depuis ~avril 2010 (doc : http://www.22decembre.eu/gentoo-serveur/)
http://www.22decembre.eu
Back to top
View user's profile Send private message
truc
Advocate
Advocate


Joined: 25 Jul 2005
Posts: 3199

PostPosted: Thu Jul 22, 2010 8:21 pm    Post subject: Reply with quote

Un ch'ti résolu et un autre thread si tu veux remettre le couvert!

Merci;)

EDIT: par contre, dans tes demandes faut vraiment que tu sois plus précis, j'suis vraiment allé à la pêche aux infos ici. On ne prendra pas forcément toujours le temps de faire ainsi et ton message risque de rester sans réponse...
_________________
The End of the Internet!
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index French All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum