Developpez.com - Sécurité
X

Choisissez d'abord la catégorieensuite la rubrique :


Un filtre anti-spam bayésien : Bogofilter

Date de publication : 09/12/07

Par Raphael Marichez
 


I. Un aperçu de la théorie bayésienne
II. Bogofilter à Polytechnique.org
III. Généralisations et limites


I. Un aperçu de la théorie bayésienne

Processus d'apprentissage

Tableaux de mots (tokens ou words) rencontrés associés à :

s(w) taux d'occurrence dans les spams :

nombre de spams contenant w / nombre total de spams

h(w) taux d'occurrence dans les hams :

nombre de hams contenant w / nombre total de hams

“Un email constitué uniquement de 'w' est-il un spam ?”

p(w) = s(w) / ( s(w) + h(w) )

Optimisation de l'algorithme :

Mots rares ou encore inconnus

x : probabilité pour un mot nouveau d'apparaître dans un spam

( = connaissance générale)

s : pondération de la connaissance générale

p(w) : probabilité pour un mot connu d'apparaître dans un spam

n : nombre de mails référençant le mot w

Agrégation des scores

Cf.

Paul Graham :


Gary Robinson :


Wikipedia (en)


II. Bogofilter à Polytechnique.org

Bogofilter :

langage C

nombreuses plates-formes :

Linux, BSD, Solaris, Mac OS X, HP-UX, AIX, ...

S'interface sur Postfix, Sendmail, ...

Postfix :

/etc/postfix/master.cf :

-o content_filter=bogofilter:

bogofilter: unix - n n - 10 pipe

flags=R user=bogofilter argv=/etc/postfix/bin/script_shell.sh -f \

${sender} -- ${recipient}

Attention aux codes de retour d'erreur

/usr/bin/bogofilter -p -e -O msg.$$ || exit $EX_TEMPFAIL

ou : Proxy SMTP (clamsmtp, proxsmtp...)

/etc/bogofilter.cf

  • Ajout d'un entête
  • .X-Spam-Flag: {No|Unsure|Yes} scores (spamicité) :
0 -> 0.40 ; 0.40 -> 0.75 ; 0.75 -> 1

  • Format de l'entête :
header_format = %h: %c, tests=bogofilter, spamicity=%p,\

queueID=%Q, IP=%A

Fonction de répartition

Fonction de répartition

Fonction de répartition


III. Généralisations et limites

Erreurs rapportées par les utilisateurs (0.4% de rapporteurs réguliers)

Boîtes spam@ et nonspam@

Sur 100 messages rapportés en ~10 jours :

spam@ (faux-négatifs) :

contient 85 messages (dont 45 “Unsure”; 40 “No”)

Taux global d'erreur (non détection) : 4%

nonspam@ (faux-positifs) :

contient 15 messages (dont 14 “Unsure”; 1 “Yes”)

Taux global d'erreur (fausse détection) : 0,05 %

Mots rares ou encore inconnus

note de w :

Bogofilter (compile-time par défaut ou run-time) :

s=0.0178 et x=0.520 actuellement

s=0.0100 et x=0.415 anciennes versions

Conditions particulières :

+ : Rapidité

+ : Ensemble homogène d'utilisateurs

- : Langues étrangères

- : Contournements

- : Peu de configuration possible

Une base par utilisateur ?

Couplage à d'autres méthodes ?



Valid XHTML 1.1!Valid CSS!

Ce document est issu de http://www.developpez.com et reste la propriété exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise à l'obtention préalable de l'autorisation de l'auteur.
Contacter le responsable de la rubrique Sécurité