Comment s'en sortir avec le Spam avec un Serveur IMAP distant, sous Mandriva Linux LE 2005 ?
Nicolas Henry - Version 2 - Fevrier 2007
1) Situation
- Vous avez un compte e-mail sur un serveur distant IMAP, qui ne filtre pas les spams pour vous. Dans mon cas, il s'agit de imap.orange.fr (UPDATE : depuis environ novembre 2006, orange filtre les spam et les stock dans un dossier "quarantaine".)
- Vous en avez marre de devoir télécharger 50 mails tous les soirs pour en filtrer 90%
- Vous êtes sous Linux Mandriva 2005 ou une autre Mandrake plus ancienne
- Vous utilisez kmail pour lire vos mails imap
- Kmail se bloque pendant 3 minutes pour appliquer les filtres Spamassassin sur vos mails entrant...
2) Objectifs
- Vous préférrez une situation idéale ou votre ordi pompe toutes les 15 minutes vos e-mails, et fait le tri tout seul des spams, et ensuite applique les changements sur le serveur IMAP (UPDATE : il est possible de programmer gkrellm pour qu'il fasse aussi cela à l'arriver de chaque nouveau mail :-))
- Quand vous rentrez le soir, vous avez une boîte IMAP propre sur le serveur, avec que du bon mail.
- Si un spam passe à travers les filtres, vous voulez la possibilité de classer manuellement et d'apprendre à vos filtres pour qu'ils deviennent plus efficaces.
3) Ressources
J'ai pas inventé la roue, les programmes et infos se trouvent sur Internet, mais de façon éparpaillée et il faut mettre en oeuvre plusieurs méthodes pour avoir une situation qui fonctionne bien :
Les programmes utilisés :
Imap Spam Begone - http://www.rogerbinns.com/isbg/ - pour pomper les mails sur le Serveur IMAP et filtrer avec SpamAssassin
SpamAssassin - http://spamassassin.apache.org/ - filtre antispam
Bogofilter - http://bogofilter.sourceforge.net/ - filtre antispam
Razor - http://razor.sourceforge.net/ - réseau P2P de filtrage de spam
cron man cron , man crontab et man 5 contrab pour l'aide - execution de commandes planifiées
GKrellm - http://www.gkrellm.net/ - Monitoring des ressources et.... surveillance de boite email
Les liens d'informations, d'où proviennent pleins d'infos utiles
Configuration de Spamassasin, kmail et clamav - http://www.gentoofr.org/docs/spamkmail-guide.html
AntiSpam, Filtres et IMAP - Tristan Beau - cdfinfo.in2p3.fr/~beau/anti_spam_imap.html
4) Installer et télécharger les scripts et programmes
Assurez vous d'avoir configuré URPMI correctement pour télécharger vos packages : EasyUrpmi : http://easyurpmi.zarb.org/
Téléchargez ISBG : http://www.rogerbinns.com/isbg/isbg.py
et stockez le dans /usr/local/bin/
Téléchargez et installez spamassassin : urpmi spamassassin
Téléchargez et installez bogofilter : urpmi bogofilter
Téléchargez et installez razor : urpmi razor
5) Configuration des programmes
Configurez Razor :
razor-admin -discover
razor-admin -create
razor-admin -register -user TOTO@TATA.COM
Configurez Spamassassin :
spamassassin </dev/null >/dev/null
dans /etc/mail/spamassassin/local.cf vérifiez que vous avez les lignes suivantes :
use_bayes 1
auto_learn 1
use razor2 1
Configurez Bogofilter : A priori la config par défaut suffit !!
Configurez Isbg : La ça se complique, il faut d'abord faire quelques manipulations sous Kmail...(voir plus bas)
6) Configuration des dossiers mails
Il faut configurer 3 dossiers :
- un dossier spamonline dans votre boîte email IMAP, sur le serveur. Ce dossier permet de stocker le courrier considérer comme spam par ISBG sur le serveur
- un dossier SPAM dans votre boîte email sur votre disque. Ce dossier permet d'archiver le SPAM dans l'objectif d'entraîner les programmes spamassassin et bogofilter
- un dossier NONSPAM dans votre boîte email sur votre disque. Ce dossier permet d'archiver les bons courriers (appelés HAM) dans l'objectif d'entraîner les programmes spamassassin et bogofilter
Pour créer spamonline, chargez Kmail, et créez un nouveau dossier sur le serveur imap, en cliquant bouton droit et nouveau dossier sur le nom de votre boîte mail IMAP.
Pour créer SPAM, toujours dans Kmail, créez un nouveau dossier en cliquant bouton droit sur Dossiers locaux et Nouveau Dossier. Choisissez bien le format de la boîte aux lettres à "mbox" sinon ça va se compliquer avec spamassassin et bogofilter.
Repétez la même opération avec le dossier NONSPAM
Déplacez manuellement des mails corrects dans NONSPAM et des spams dans le dossier SPAM. Plus vous avez d'éléments dans ces dossiers et plus vos filtres seront efficaces. Aussi d'après ce que j'ai compris, une balance de 50%/50% en spams et hams est optimale pour les résultats, mais on ne l'obtient rarement (c'est plutôt 80%/20% !!)
7) Apprentissage de SpamAssassin et Bogofilter
Maintenant que nous avons des dossiers avec quelques spams et nonspams, il faut entraîner les filtres :
Créer un batch miseajourspam dans /usr/local/bin, et copiez-y les lignes suivantes :
#!/bin/bash
echo "BOGOFILTER SPAM"
/usr/bin/bogofilter -vvv -s -M </home/nico/.Mail/SPAM
echo "BOGOFILTER NONSPAM"
/usr/bin/bogofilter -vvv -n -M </home/nico/.Mail/NONSPAM
echo "SPAMASSASSIN SPAM"
/usr/bin/sa-learn --spam --mbox /home/nico/.Mail/SPAM
echo "SPAMASSASSIN NONSPAM"
/usr/bin/sa-learn --ham --mbox /home/nico/.Mail/NONSPAM
Notez que le nom du dossier utilisateur /home/nico est à modifier en fonction du votre sur Mandriva.
Faîtes un chmod 755 miseajourspam pour rendre executable le batch et lancez le.
A partir de ce moment SpamAssassin et Bogofilter ont eu un petit peu à manger et doivent pouvoir commencer à filtrer votre boîte
8) Configuration de ISBG.PY
Sous ligne de commande, lancez :
isbg.py --imaphost MONSERVEURIMAP --delete --spaminbox spamonline --verbose --imapuser MONLOGINIMAP --savepw
l'option --delete ne supprime pas réeellement les mails, mais les déplace dans le dossier spamonline.
l'option --savepw vous demandera et stockera votre mot de passe, ensuite ne la remettez plus, comme cela le mot de passe ne sera plus demandé.
A partir de ce moment là, ISBG devrait au moins fonctionner de façon manuelle et mettre les spams vers le dossier spamonline sur le serveur imap (en considérant que les filtre sont efficaces). Ensuite il faut mettre cela dans un beau script spamonline, que vous creez aussi dans /usr/local/bin avec un chmod 755 et dans lequel vous mettez les lignes de commandes :
#!/bin/bash
/usr/local/bin/isbg.py --imaphost MONSERVEURIMAP --delete --spaminbox spamonline --verbose --imapuser MONLOGINIMAP
Notez bien l'absence de l'option --savepw et du chemin complet devant le nom du batch
9) Configuration des filtres manuels dans Kmail
Dans Kmail, allez dans le menu configuration et faîtes "configurer les filtres". Si il y a dejà des filtres présents suite à un bidouillage, n'hesitez à les supprimer pour repartir avec une situation saine.
Il faut créer 4 filtres :
- Un filtre "Verif Bogofilter". Cliquez sur l'icone nouveau en bas à gauche (c'est mal foutu), ensuite cochez qu'il doit correspondre à au moins un critère, "taille en octets" "est inférieur à" et 400000 octets. Pour les actions, mettez "executez la commande", "/usr/bin/bogofilter -ep" dans la commande. Cochez les cases "Appliquez ce filtre aux nouveaux messages et "sur filtrage manuel". Décochez le reste
- Un filtre "Deplacement Bogofilter". Cliquez sur l'icone nouveau en bas à gauche (c'est mal foutu), ensuite cochez qu'il doit correspondre à au moins un critère, "X-Bogosity" (tapez le en manuel) est "contient" "Yes, tests=bogofilter". Pour les actions, mettez "mettre dans le dossier", "SPAM". Cochez les cases "Appliquez ce filtre aux nouveaux messages et "sur filtrage manuel" et "Si ce filtre est applicable, ne pas poursuivre". Décochez le reste
- Un filtre "NONSPAM". Cliquez sur l'icone nouveau en bas à gauche (c'est mal foutu), ne mettez pas de critere. Pour les actions, mettez "mettre dans le dossier", "NONSPAM". Cochez les cases "Appliquez ce filtre sur filtrage manuel" et "Si ce filtre est applicable, ne pas poursuivre". Surtout ne cochez pas "Appliquer ce filtre aux nouveaus messages". Cochez "ajoutez ce filtre au menu Appliquer le filtre et choisissez lui un icône (j'ai pris dans le groupe Action l'icône mark_as... avec le tick vert)
- Un filtre "SPAM". Cliquez sur l'icone nouveau en bas à gauche (c'est mal foutu), ne mettez pas de critere. Pour les actions, mettez "mettre dans le dossier", "SPAM". Cochez les cases "Appliquez ce filtre sur filtrage manuel" et "Si ce filtre est applicable, ne pas poursuivre". Surtout ne cochez pas "Appliquer ce filtre aux nouveaus messages". Cochez "ajoutez ce filtre au menu Appliquer le filtre et choisissez lui un icône (j'ai pris dans le groupe Action l'icône mark_as... avec le signe recyclage vert)
Voilà maintenant vous avez bogofilter qui entre en jeux sur les nouveaux mails entrant dans Kmail, comme il est écrit en C, il est très rapide et donc intervient bien en complément de SpamAssassin. Enfin si des mails passent le spamassassin et bogofilter, vous pouvez toujours les filtrer rapidement avec les icônes/filtres que nous venons de créer.
10) Configuration de l'automatisation
Sous ligne de commande lancez :
crontab -e
et saisissez dans le fichier cron :
MAILTO=""
*/15 * * * * /usr/local/bin/spamonline
1 1 * * * /usr/local/bin/miseajourspam
Qui signifient lancement de la commande spamonline tous les 15 minutes et lancement de l'apprentissage spam toutes les nuits à 1:01 du mat et pas de rapport par mail.
11) UDPATE! Fevrier 2007 : Automatisation par gkrellm
Bon ben il est possible d'automatiser le processur de vérification et de purge des spams via gkrellm. Pour cela c'est tout bête il suffit de parametrer le monitoring de votre boîte email/imap à vérifier et entrer comme programme d'avertissement sonore notre fameux /usr/local/bin/spamonline
Et voilà à chaque nouvel email réçu par Gkrellm, le script va partir et le mail va être vérifié. TRES efficace !
12) Conclusion
Bon et bien vous voilà parés pour combattre le spam, sans y passer des heures et sans subir de ralentissement par SpamAssassin lors de l'accès à vos e-mails avec Kmail. Bon courage et n'hesitez pas à me contacter à nicolas_henry {{(!at]})] orange . fr