Présentation Curriculum Contact Technologie Réalisation Liens

Mise en oeuvre d'une solution anti-spam

Introduction

Actuellement, on assiste à une très forte progression du nombre de courriel non sollicités (SPAM) reçus.

Une étude publiée par Spam Filter Review indique que sur 31 billions de courriel envoyés chaque jour de part le monde, 12,4 billions (40 %) correspondent à du Spam (www.spamfilterreview.com/spam-statistics.html).

Il existe plusieurs solutions logicielles pour lutter contre ce fléau. Certaines sont dédiées aux entreprises, d'autres ciblent l'utilisateur final.

Ce document à pour objet la description de la solution retenue pour mon propre usage. Cette dernière, installée sur mon poste personnel élimine plus de 95% des Spams reçus sans pour autant éliminer des courriels normaux (faux positifs).

Solution retenue

La solution retenue est basée sur l'utilisation du logiciel anti-spam Spamihilator (www.spamihilator.com) développé par Michel Krämer. Ce logiciel, gratuit, présente plusieurs avantages :

  • Il s'installe de manière très simple (installeur) sur toutes les plates-formes Windows (95 ou supérieures).
  • Il dispose d'un assistant pour configurer le client mail (testé avec Microsoft Outlook Express/2000/XP/2003, Opera, Eudora, Pegasus Mail, Phoenix Mail, Netscape/Mozilla et IncrediMail) et supporte tout client mail utilisant le protocole Pop3.
  • L'interface utilisateur peut être configuré en différentes langues (21 langues disponibles, l'Anglais qui est la langue par défaut a été choisie).
  • Il gère les listes d'amis et d'ennemis avec la possibilité d'importer son carnet d'adresse pour remplir la liste d'amis.
  • La détection des Spams est effectuée selon diverses méthodes exécutées de manières séquentielles (il est possible de déterminer soi même l'ordre d'exécution). Parmi celles-ci, il dispose d'un filtre Bayésien avec possibilité d'apprentissage.
  • Une API est disponible pour développer de nouvelles méthodes de détection et les installer dans le logiciel (sous forme de plugins). Le logiciel est fourni en standard avec plusieurs plugins et de nombreux autres sont téléchargables à partir du site internet.

Dans la suite de ce document, vous trouverez une description des différents filtres retenus.

Paramétrage des filtres

Pour accéder aux paramètres de configuration de Spamihilator, il faut afficher la boîte de dialogue "Settings" (voir figure 1).

Il est possible d'indiquer l'ordre d'exécution des filtres sélectionnés.

Dans le cas présent, l'ordre est le suivant :

  • Newsletter Plugin,
  • Emty Mail Filter,
  • Domain Filter,
  • Substring Filter,
  • No Comment Filter,
  • AlphabetSoup Filter,
  • Learning Filter,
  • Spam Word Filter,
  • Attachment Filter,
  • Image Filter.
ecran de configuration des filtres

 La description des différents filtres ainsi que leur paramétrage est indiqué ci-après.

Newsletter plugin

Ce filtre a pour fonction d'identifier les "newsletter" auxquelles l'utilisateur est inscrit. Il évitera ainsi que les messages correspondant ne soient bloqués durant les étapes suivantes de filtrage. On peut indiquer l'adresse du destinataire du message (les "newsletter" utilisent généralement une adresse unique) et/ou la signature du message qui est généralement indiquée dans le sujet du message.

Empty Mail Filter

Il arrive que des Spams ne contiennent pas de texte (ni de sujet). Ce filtre a pour but d'identifier de tels messages. On peut paramétrer le nombre de mots en-deçà duquel, le message sera identifié comme étant un Spam.

La configuration actuelle est paramétrée à 2 mots.

paramétrage (suite)

Domain Filter

Ce filtre est basé sur l'observation suivante : Les Spams comportent presque toujours des liens vers des sites Web. Ces liens pointent souvent vers des noms de domaines inhabituels.

J'ai ainsi développé un filtre spécifique qui extrait les noms de domaines contenus dans les messages et utilise des règles pour identifier des noms de domaines "anormaux". Ce filtre élimine une bonne proportion (plus de 40%) de Spams que je reçois actuellement et il n'a pas encore généré de faux positif.

Il n'y a pas de configuration dans la version actuelle. Vous pouvez télécharger la dernière version de ce filtre (installeur windows, 82 Ko).

Substring Filter

Ce filtre recherche des chaînes de caractères dans le source du message et marque ce dernier comme Spam si il trouve une des chaînes. Il faut le paramétrer avec précaution pour ne pas générer de faux positifs. Il peut être utilisé pour supprimer des Spams qui ne sont pas détectés par les autres modules.

No Comment Filter

Ce filtre dénombre les commentaires HTML présent dans le texte du message. Si ce nombre est supérieur à un seuil que l'on peut définir, le message est marqué comme étant un Spam. Ce filtre est basé sur le fait que certains spammeurs utilisent des commentaires pour parer les modules basés sur la détection de mots clefs. Ainsi, par exemple, ils remplacent le mot viagra par vi<!-- texte -->a<!-- texte -->g<!-- texte -->ra.

Il faut néanmoins être prudent car certains courriels tels que, par exemple, des informations sur des produits, peuvent contenir des commentaires.

Après une étude effectuée sur mon corpus de courriels et de Spam, j'ai indiqué la limite comme étant 50.

paramétrage (suite)

AlphabetSoup Filter

Ce filtre recherche certaines chaînes de caractères inusuelles que l'on peut rencontrer dans les Spams. Un coefficient est calculé en fonction du nombre de chaînes trouvées. Si ce coefficient dépasse un certain seuil, le message est marqué comme Spam.

Aucun paramétrage n'est nécessaire.

Learning Filter

Ce module, directement intégré dans Spamihilator, est en fait un filtre Bayésien qui après une phase d'apprentissage peut calculer la probabilité qu'un courriel soit un Spam ou non à partir des mots qu'il contient. Au départ, ce filtre ne dispose pas d'éléments pour différencier un courriel d'un Spam. Il faut utiliser régulièrement la zone d'apprentissage de Spamihilator pour améliorer les performances. L'auteur indique qu'il a obtenu un taux de détection supérieur à 98%.

Il est important de ne pas placer ce filtre au début de la chaîne de détection car les spammeurs utilisent souvent des mots au hasard dans leurs messages pour contrer ce type de filtre.

Spam Word Filter

Ce filtre, intégré à Spamihilator, recherche une série de mots dits "Spam Words" dans les messages. A chaque mot est associé un coefficient d'apparition dans un Spam. Le programme calcul la somme des coefficients en fonction des "Spam Words" trouvés. Si cette valeur dépasse un certain seuil, ajustable, le message est classé comme étant un Spam.

Le programme comporte un dictionnaire de "Spam Words" au moment de son installation. Il est possible d'enrichir ce dernier à partir d'un écran de configuration.

paramétrage (suite)

Attachment Filter

Ce filtre permet de bloquer des messages qui comportent des pièces attachées suspectes. Il recherche des pièces jointes qui comportent les extensions suivantes : .com, .scr, .pif, .bat, .exe, .vbs, .bas, .cmd, .cpl, .lnk, .reg, .vb, .vbe and .wsh.

On peut paramétrer la liste d'extensions recherchées.

Image Filter

Ce filtre recherche des liens vers des images situés sur des serveurs externes. Les spammeurs utilisent souvent cette technique pour voir si le message envoyé a été lu et ainsi valider l'adresse email du destinataire.