Installer et configurer mailfilter pour Mac OS X


Mailfilter est un utilitaire antispam très puissant qui élimine les messages indésirables directement sur un serveur POP avant que le courrier ne soit rapatrié par le logiciel de messagerie. Comme il s'agit d'un exécutable Unix, sa configuration nécessite un minimum de savoir-faire. C'est ce que je vous explique ici. En prime, il faudra se familiariser avec les expressions régulières, qui permettent de mettre au point des filtres très efficaces. 



1. Téléchargez le package de Mailfilter pour Mac OS X. Double-cliquez sur le fichier mailfilter-0.6.2.dmg pour monter le volume et afficher le programme d'installation intitulé mailfilter.pkg.



2. Lancez ce programme et suivez les instructions. Les différents composants sont automatiquement placés dans les répertoires idoines du disque dur. Pas besoin de redémarrer après l'installation.



3. Lancez le Terminal (Dossier Applications > Utilitaires). Il va falloir créer deux fichiers. Le premier contiendra notamment vos paramètres de messagerie, le second correspondra aux instructions de filtrage. Utilisez de préférence un éditeur Unix comme pico (ou nano) et faites précéder le nom de ces fichiers d'un point pour qu'ils n'apparaissent pas dans le Finder.

4. Tapez : pico .moncompte.conf (remplacez éventuellement moncompte par un autre intitulé, par exemple popwanadoo ou autre). Dans l'éditeur qui apparaît, saisissez les coordonnées de votre compte de messagerie en vous inspirant de cet exemple :


# Configuration de mon compte #

SERVER= pop.free.fr

USER= alain.dupont

PASS= w45nf68

PROTOCOL= pop3

PORT= 110

#TEST=yes

INCLUDE=/Users/home/.moncompte.mailrc



5. Enregistrez d'abord votre fichier en appuyant sur ctrl-O puis sur ctrl-X. Tapez ensuite pico .moncompte.mailrc puis suivez bien ces explications.

Ce fichier doit contenir dans un premier temps quelques instructions de fonctionnement pour mailfilter. Il faudra donc lui indiquer notamment s'il doit distinguer, dans les règles de filtrage, les majuscules et les minuscules, ou encore s'il doit consigner ses opérations dans un fichier log. Le début de ce fichier prend alors cette forme :


# General configuration # 

REG_TYPE=extended

REG_CASE=no

DEL_DUPLICATES=yes

SHOW_HEADERS=no

LOGFILE=/Users/home/Library/Logs/mailfilter.log

VERBOSE=5


En gros, on indique à mailfilter d'utiliser des expressions régulières avancées (REG_TYPE), de ne pas distinguer majuscules et minuscules (REG_CASE), d'éliminer systématiquement les messages en (DEL_DUPLICATES), de ne pas afficher les en-têtes dans le fichier log, d'enregistrer son rapport d'activité dans le fichier mailfilter.log situé dans le répertoire Logs de votre bibliothèque personnelle (LOGFILE), et enfin de fournir plusieurs détails des opérations (VERBOSE). Vous pourrez ensuite consulter le fichier mailfilter.log à l'aide de l'utilitaire Console.


Il faut maintenant saisir les règles de filtrage. Bon, c'est un peu compliqué au premier abord, mais on s'y fait vite. Il faut savoir qu'on dispose grosso modo de deux types d'instruction : DENY, pour éliminer les messages correspondant à une règle, et ALLOW, pour au contraire autoriser les messages répondant à certains critères. Pour simplifier les choses, vous pouvez commencer à inscrire des règles élémentaires, par exemple :

DENY=^From:.*directmail\.com

L'accent circonflexe caractérise le début de ligne. Nous voulons ici éliminer les messages dont l'expéditeur (From:) utilise le serveur directmail. Pour que cette règle s'applique à n'importe quel expéditeur (info@directmail.com, news@directmail.com, etc.), nous inscrivons un point puis une étoile, ce qui signale que le nom du serveur est précédé de n'importe quelle chaîne de caractères. Enfin, comme le point a une signification spéciale, il faut le faire précéder d'un antislash si l'on veut conserver sa valeur originale, comme on le voit avant .com dans le nom du serveur.

Autre exemple simple :

DENY=^Subject:\ viagra|xanax|pills|soma|valium|codine|levitra|tabs

Cette règle éliminera tous les messages dont apparaissent, dans le sujet, l'un des mots de la liste qui suit (chaque mot est séparé par un pipe, qu'on obtient avec les touches alt-maj-L).


Plusieurs types d'expressions régulières peuvent être utilisés. Vous pouvez ainsi désigner tous les mots de quatre lettres qui commencent par "sex", comme sexy ou sexe, en utilisant la formule "sex.". Ou encore identifier n'importe quelle lettre minuscule (non-accentuée) avec l'expression "[a-z]", etc. Vous pouvez récupérer une liste de règles pour mailfilter sur ce serveur ou, mieux, vous inspirer de l'exemple ci-dessous (que j'utilise personnellement) pour mettre au point vos propres règles :


# Messages a supprimer #

DENY<>^From:.*@.* # (si l'adresse de l'expéditeur n'est pas conforme)

DENY<>^Subject:   # (s'il n'y a pas de sujet)

DENY=^Illegal-Object

DENY=^MIME-Engine:\ jumbomailer

DENY=^Subject:\ ^hi|^hey|^your\ information

DENY=^Subject: (unknown|fake|stolen|warning|something for you|read it immediately|hello)$

DENY=^Subject:\ adv[:-\/] 

DENY=^Subject:.*read\ it\ immediately

DENY=^Subject:\ adult|cock|fuck|get hard|live.{0,20}show|orgy|p.?e.?n.?i.?s|sex|orgasm

DENY=^Subject:\ horny|ejaculation|hardcore|enlargement|cum|cumshot|penis|p.?n.?s

DENY=^Subject:\ s e x|striptease|suck|v.?i.?a.?g.?r.?a|whore|XXX|you\ must\ be\ 18

DENY=^Subject:\ v.?[il1??]+.?[ao0@]+.?g.?r.?[ao0@]+|vi\-ga|viag\-a|vigra|vi@gr@

DENY=^Subject:\ unknown|unonwkn|pleasure|woman|women|wenoms|wmoen|wonmens|woemn

DENY=^Subject:\ viagra|xanax|pills|soma|valium|codine|levitra|tabs

DENY=^Subject:\ re.*\[[0-9]*\]

DENY=^Subject:\ deal|money|software|OEM|improve|increase|best deal

DENY=^Subject:\ investor|stock|casino|mortgage

DENY=^Subject:\ medicine|pharmacy|meds|drugs|phaarmacy|medication|phermacy|treatment

DENY=^Subject:\ "ph[a@e]*r*m*[ao0@]*c*y"|ph\-cy

DENY=^From:\ ".*\ [A-Z]\.\ .*"

DENY=^From:.*intermedia\.net

DENY=^To:.*<[[:alnum:]]+>

DENY=^To:.*@smtp[2]?\. 

DENY=^To:.*@yahoo\.co\...

DENY=^To:.*Undisclosed.Recipient[s]?@ 

DENY=^To:.*[a-z]+[0-9]+[a-z]+[0-9]+@(lycos|yahoo|hotmail|msn|aol)\.com

DENY=^To:.*for[\ ]?you

DENY=^To:.*undisclosed.*@mail\.

DENY=^To:.*your\.smtp\.com

DENY=^To:\ $

DENY=^To:\ @ 

DENY=^To:\ [0-9]+@(lycos|yahoo|hotmail|msn|aol)\.com

DENY_CASE=^DATE: 

DENY_CASE=^FROM:

DENY_CASE=^MiME-Version: 

DENY_CASE=^SUBJECT:

DENY_CASE=^content-type

DENY_CASE=^x-esmtp:


# Messages a conserver #

ALLOW=^From:copain@yahoo\.com

ALLOW=^From:daniel@kuvaku\.net\.st

ALLOW=^From:bruno.moulin@free\.fr

 

6. Reste maintenant à lancer périodiquement mailfilter pour qu'il fasse le ménage dans votre messagerie avant que Mail ne rapatrie le courrier. Pour cela, nous allons utiliser le programme cron, qui exécute n'importe quelle instruction selon la date et l'heure indiquée. Attention : par défaut, la liste des événements (ou crontab) se lance avec l'éditeur vi... plutôt complexe à utiliser. Pour l'ouvrir avec pico ou nano, tapez d'abord :


export EDITOR=pico (si vous utilisez bash)

ou

setenv EDITOR pico (si vous utilisez tcsh)


Ouvrez maintenant votre crontab avec la commande :

crontab -e


puis saisissez l'échéance à laquelle doit se lancer mailfilter avec vos règles (ici, nous proposons dans le premier cas toutes les 15 minutes et dans le second cas toutes les heures). Utilisez la touche tab pour séparer les étoiles et remplacez home par le nom de votre répertoire personnel :


*/15  *    *    *    *    /usr/local/bin/mailfilter -M /users/home/.moncompte.conf > /dev/null



0    *    *    *    *    /usr/local/bin/mailfilter -M /users/home/.moncompte.conf > /dev/null



Validez ensuite en enregistrant ce fichier (Ctrl-O, return, Ctrl-X).


Voilà, mailfilter est prêt à fonctionner: il va lancer toutes les 15 minutes (ou toutes les heures) votre fichier de configuration pour se connecter à votre compte de messagerie et exécuter les règles de filtrage que vous avez définies.


Activer Mailfilter avec Mail

Pour obtenir de meilleurs résultats, il serait préférable de lancer d'abord Mailfilter, lequel, après avoir vérifié le contenu de la boîte aux lettres distante (et effacé les messages indésirables), transmettra le relais à Mail qui pourra alors relever le courrier. La solution idéale passe par un petit script Shell qui permet d'assurer toutes ces opérations en tâche de fond, de manière transparente.

Créez un nouveau fichier avec pico (ou nano) dans votre répertoire personnel, que vous nommerez par exemple checkSpam :

pico checkSpam

puis saisissez ces commandes :

#!/bin/sh

runMail=$(ps -cx | grep "[M]ail")

if [ "$runMail" ] ; then

        /usr/local/bin/mailfilter -M /users/home/.moncompte.conf > /dev/null

        osascript -e 'tell application "Mail" to check for new mail'

fi

exit 0


Appuyez enfin sur ctrl-O, return, puis ctrl-X.

La première instruction sert à savoir si Mail est bien en activité. Si c'est le cas, alors le programme lance mailfilter pour vérifier le courrier puis, à l'aide d'une commande Applescript (osascript), demande à Mail de rapatrier les messages. Pensez, dans les préférences de Mail, à dérouler le menu "Relever le courrier" pour choisir "manuellement".

Enfin, modifiez votre crontab (crontab -e) pour lancer ce script au lieu de lancer directement mailfilter.


# Utiliser /bin/sh pour lancer les commandes

SHELL=/bin/sh


# Lance Mailfilter avant de relever le courrier avec Mail

*/10    *       *       *       *       /Users/home/checkSpam




Voilà. Commencez par une utilisation en mode test dans un premier temps, puis consultez le fichier de log (et votre messagerie) pour vérifier l'efficacité de vos règles. Passez ensuite en mode actif et votre courrier s'allégera allègrement de plusieurs dizaines de messages indésirables...


Didier Sanz - 2005


Retour aux pages perso de DS    

    Retour aux blog "Les nouvelles de Localhost"