Fetchmail + SpamAssassin + Procmail

Miguel Moquillon

Il est commun d'utiliser son client mail pour rapatrier son courriel de diverses boites émails, les répartir dans des dossiers différents selon des règles de filtrage, les lire, répondre ou écrire de nouvelles lettres et les envoyer à leur destinataire. Certains clients proposent même des fonctionnalités avancées comme par exemple un anti-spam. Pourtant, à côté de ce processus usuel, sur les systèmes de type Unix, il existe une autre façon d'appréhender les émails : utiliser une chaîne d'agents mails, chacun dédié à une tâche particulière et s'exécutant en arrière plan. L'avantage d'utiliser de tels agents est, qu'étant spécialisés sur une et une seule tâche, ils l'accomplissent de façon optimale, avec un support d'options avancées, et mieux qu'aucun autre outil tout-en-un. L'avantage principale d'une telle chaîne réside dans l'automatisation du processus de récupération des courriels pour l'ensemble des utilisateurs et ceci de façon transparente.

Cet article propose d'expliquer la mise en place d'une telle chaîne d'agents ayant pour tâches de récupérer les courriels de plusieurs boites émail, de les traiter par un anti-spam et de les filtrer selon des règles propre à chaque utilisateur. Les programmes mis en oeuvre sont respectivement Fetchmail, SpamAssassin et Procmail.

1. Introduction

Une des philosophies d'Unix est que chaque outil fasse qu'une et une seule chose, et qu'il le fasse bien, le système offrant alors des mécanismes de communication inter-outil permettant d'accomplir des fonctions plus complexes. D'ailleurs, le langage C, qui a été élaboré en vue de l'écriture du système Unix, s'acquitte très bien de cette tâche ; ses avantages et son efficacité disparaient avec l'augmentation en complexité de l'application à coder.

Un agent émail est un petit outil qui accomplit une tâche très précise dans un processus d'envoie ou de réception de courriels, conformément à la philosophie Unix. Une fois sa tâche accomplie, le courriel traité est passé à autre agent ; le tout forme une chaîne. Quitte à utiliser un système Unix, pourquoi ne pas mettre en oeuvre une telle chaîne dans le rapatriement de courriels pour l'ensemble des utilisateurs ? Une chaîne qui permettra de :

Les outils qui composent cette chaîne ont l'avantage indéniable d'être plus efficaces et flexibles que ne sauraient l'être un client mail tout-en-un. Leur désavantage principal reste que la configuration se fait par l'édition d'un fichier texte et non par une interface graphique ; ceci pouvant rebuter plus d'un.

Dans cet article, nous utiliserons le programme Fetchmail pour le rapatriement des courriels, SpamAssassin comme outil anti-spam, et Procmail pour leur filtrage.

Avec un tel processus, il n'est vraiment plus nécessaire de laisser ouvrir continuellement son client mail et nous pouvons même prendre le luxe d'en choisir un plus léger et qui soit efficace dans la lecture et l'écriture de courriels ; bref, un client qui soit tout simplement un MUA (Mail User Agent). L'avertissement de l'arrivé de nouveaux mails peuvent être laissés à la discrétion d'une appliquette dédiée. Finalement, nous pouvons ainsi économiser les ressources de la machine pour des choses plus utiles.

2. Fetchmail

Fetchmail est un programme qui a pour tâche de rapatrier les mails des utilisateurs et de les passer à un MDA (Mail Delivery Agent) afin que celui-ci les distribue dans la boite à mails des différents utilisateurs (généralement /var/spool/mail/<identifiant utilisateur>). Si vous disposez déjà d'un agent SMTP (Simple Mail Transfert Protocol) comme Exim ou Postfix pour l'envoie de mails, c'est, par défaut, à lui que Fetchmail communiquera via le port 25 les mails rapatriés. Toutefois, transférer les mails récupérés à un tel agent est consommatrice de ressources et, parce qu'il utilise une connexion TCP/IP sur le port 25, est un mécanisme lourd.

Dans notre chaîne d'agents mails, il est prévu d'utiliser les services d'un agent dédié au filtrage du courriel, Procmail. Or, ce dernier peut aussi être utilisé comme MDA en lieu et place du serveur SMTP ; ainsi, au lieu de passer par un tel serveur pour finalement être traités par Procmail, les courriels seront directement transférés par Fetchmail à ce programme. Il est donc nécessaire d'informer Fetchmail, via son fichier de configuration, de passer les courriels à Procmail.

Pour assurer son bon fonctionnement, Fetchmail utilise un fichier de configuration pour identifier les boites mails, avec leur identifiant et mot de passe, desquelles devront être récupérés tout le courrier. Pour chacune, un MDA différent peut être déclaré. Il existe deux manières de configurer l'agent Fetchmail :

Dans le premier cas, le mot de passe de la boite à mails chez le FAI (Fournisseur d'Accès à Internet) n'est connu que par l'utilisateur. Toutefois cette solution a le désavantage que l'utilisateur ait à positionner correctement les droits sur le fichier (600) , à connaître la syntaxe de Fetchmail et à informer correctement ce dernier d'utiliser Procmail comme distributeur de courriels. Pour contourner ceci, l'administrateur pourra toujours proposer un squelette de fichier .fetchmailrc à l'utilisateur. Celui-ci n'aura plus qu'à remplir certains champs (mot de passe, serveur POP (Post Office Protocol) ou IMAP (Internet Message Access Protocol) du FAI, etc.)

Dans le second cas, la configuration, et donc le système de distribution des courriels des utilisateurs reste transparents pour eux. Il a le désavantage que l'administrateur a la connaissance des adresses ou des noms des serveurs des FAI de chaque utilisateur, ainsi que de leur mot de passe pour accéder aux boites mails de ces serveurs.

Ci-dessous, un exemple de fichier de configuration globale :

# L'utilisateur 'postmaster' reçoit en dernier ressort les courriels en cas de
# problèmes de distribution
set postmaster "postmaster"

# Les erreurs doivent être envoyés au postmaster au lieu d'être retournés à l'expéditeur
set bouncemail

# Ne pas informer l'expéditeur éventuel d'un spam qu'il est indésirable
set no spambounce

# Fetchmail s'exécutera en arrière plan et récupérera toutes les 300s le courrier
set daemon 300

# Le journal des événements de Fetchmail
set logfile /var/log/fetchmail.log

# Récupérer les mails du serveur pop.free.fr selon le protocole POP3
poll pop.free.fr with proto pop3

# Récupérer la totalité des mails de l'utilisateur toto,
# d'identifiant toto.chez-les-papoos sur le serveur POP3 avec
# pour mot de passe PASSWORD1. Les passer à Procmail.
user toto.chez-les-papoos there with password PASSWORD1 is toto here options fetchall
mda "/usr/bin/procmail -Y -d toto"

# Récupérer la totalité des mails de l'utilisateur tata, d'identifiant
# tata.a-la-plage sur le serveur POP3 avec pour mot de passe
# PASSWORD2. Les passer à Procmail.
user tata.a-la-plage there with password PASSWORD2 is tata here options fetchall
mda "/usr/bin/procmail -Y -d tata"

# Récupérer les mails du serveur pop.wanadoo.fr selon le protocole POP3
poll pop.wanadoo.fr with proto pop3

# Récupérer la totalité des mails de l'utilisateur titi, d'identifiant titi.et-gros-minet
# sur le serveur POP3 avec pour mot de passe PASSWORD3. Les passer à Procmail.
user titi.et-gros-minet there with password PASSWORD3 is titi here options fetchall
mda "/usr/bin/procmail -Y -d titi"

Par défaut, Fetchmail récupère seulement les mails qui n'ont pas été marqués comme lus par le serveur. Avec l'option fetchall, le programme récupère l'ensemble des mails disponibles dans la boite mail distante. Les autres options sont keep pour laisser les mails récupérés sur le serveur et nokeep pour forcer la suppression de l'ensemble des mails sur le serveur une fois rapatriés. Les options nokeep et fetchall peuvent être combinées.

L'instruction mda permet de spécifier un MDA en lieu et place d'une éventuel serveur SMTP. Celui qui est précisé est Procmail et nous donnons la ligne de commande à exécuter pour chaque mail rapatrié. La mise en oeuvre de Procmail est décrite dans la section suivante.

Comme la plupart des options de rapatriement des mails sont identiques entre les utilisateurs, le tout peut être rassemblé sur une ligne avec l'instruction default. Dans ce cas, toute déclaration d'option dans une instruction de récupération de mails surcharge celle par défaut.

# L'utilisateur 'postmaster' reçoit en dernier ressort les courriels en cas de problèmes de distribution set postmaster "postmaster"

# Les erreurs doivent être envoyés au postmaster au lieu d'être retournés à l'expéditeur
set bouncemail

# Ne pas informer l'expéditeur éventuel d'un spam qu'il est indésirable
set no spambounce

# Fetchmail s'exécutera en arrière plan et récupérera toutes les 300s le courrier
set daemon 300

# Le journal des événements de Fetchmail
set logfile /var/log/fetchmail.log

# Options par défaut dans la récupération des mails
defaults protocol pop3 timeout 300 nokeep fetchall

poll pop.free.fr
user toto.chez-les-papoos there with password PASSWORD1 is toto here
mda "/usr/bin/procmail -Y -d toto"
user tata.a-la-plage there with password PASSWORD2 is tata here
mda "/usr/bin/procmail -Y -d tata"

poll pop.wanadoo.fr
user titi.et-gros-minet there with password PASSWORD3 is titi here
mda "/usr/bin/procmail -Y -d titi"

Un petit mot sur l'option spambounce. Cette option n'est utile que dans le rapatriement des mails à partir d'un serveur IMAP. Si cette option est activée, alors pour chaque mail, Fetchmail vérifie dans l'entête la présence de drapeaux pouvant le marquer comme 'spam'. Ces drapeaux ont été éventuellement rajoutés par un outil anti-spam sur le serveur IMAP. Si un tel mail est identifié, alors il n'est pas récupéré, économisant ainsi de la bande passante, et une réponse est renvoyé à l'expéditeur comme quoi son mail est refusé. Cette option a été désactivée dans notre cas puisque nous allons mettre en oeuvre notre propre outil anti-spam.

3. Procmail

Procmail est un outil puissant qui a pour tâche de filtrer les mails entrants selon des règles précises définies par l'utilisateur. Ces règles permettent de répartir les mails dans des dossiers différents selon des critères précis, d'en supprimer certains, de les transférer vers une adresse mail ou encore de les passer à un programme (comme SpamAssassin par exemple). Les règles de filtrage sont définies dans un fichier le configuration .procmailrc sur le compte de l'utilisateur. Toutefois, il faut bien faire attention à correctement écrire ces règles sous peine de perdre des mails ! Si ce fichier utilisateur n'est pas défini, Procmail utilise alors en dernier ressort le fichier /etc/procmail qui est commun à tout le monde. Ce dernier cas est évidemment à éviter.

Procmail peut-être appelé soit par le serveur SMTP, soit directement par fetchmail. Dans le premier cas, il suffit d'écrire un fichier .forward qui est utilisé par tout outil SMTP pour transférer un courriel entrant vers une destination donnée, une adresse émail ou un programme comme Procmail par exemple. Voici un exemple de fichier .forward :

|/usr/bin/procmail

Un tel fichier n'est pas nécessaire avec fetchmail si celui-ci appelle Procmail directement pour chaque mail entrant (voir la section précédente).

Dans ce qui suit est présenté quelques règles usuelles pour filtrer les mails entrants avec Procmail. Elles font usage d'expressions régulières et il est donc nécessaire d'acquérir un minimum de connaissances dans ce domaine ; d'autant plus que les expressions régulières sont monnaies courantes dans le monde Unix.

Le fichier .procmailrc est composé d'une suite d'assignation de variables et de règles de filtrage.

Les variables permettent de donner à Procmail diverses informations utiles tel que par exemple le répertoire où doivent être stocké les mails ou encore la boite à mail à utiliser en dernier ressort lorsque Procmail n'arrive pas à délivrer un courriel. L'exemple ci-dessous illustre l'utilisation des variables les plus communes :

# chemin des répertoires contenant les exécutables utiles pour Procmail
# (ceux utilisés dans les règles de filtrage)
PATH=/usr/local/bin:/usr/bin:/bin

# le répertoire où sont sotckés les mails entrants de l'utilisateur
MAILDIR=$HOME/Mail

# le dossier par défaut des mails entrants non filtrés
DEFAULT=$MAILDIR/inbox

# le dossier par défaut à utiliser lorsque Procmail n'arrive pas à délivrer
# un mail filtré (echec de l'action)
ORGMAIL=$MAILDIR/inbox

# le fichier des événements de Procmail
LOGFILE=$MAILDIR/log/procmail.log

Les règles de filtrage sont traitées par Procmail dans l'ordre d'apparition dans le fichier. Elles peuvent être de deux types distinctes :

Quelque soit son type, une règle est toujours découpée en trois parties :

  1. un annonceur d'une règle (toujours :0) suivi éventuellement de propriétés et d'un indicateur de vérrou,
  2. des expressions régulières sur l'entête ou le corps du courriel qui permettent de sélectionner le type de mails à filtrer,
  3. une action à effectuer sur le courriel filtré.

telle que définie par le schéma suivant :

:0 [PROPRIETES] [: [VERROU_LOCAL] ]
* EXPRESSIONS_REGULIERES
ACTION

Les propriétés sont exprimées par des symboles dont voici les plus usitées :

La présence d'un double-point à la suite des propriétés indique à procmail de vérrouiller, pour cette règle, l'utilisation de la ressource (par exemple un fichier) utilisée dans l'action. En effet, une même action peut être appliquée simultanément sur plusieurs mails et il est donc nécessaire de protéger la ressource d'une écriture simultanée. Un nom de vérrou (le nom de fichier qui servira de vérrou) peut être précisé à la suite du double-point. Je recommande fortement d'utiliser le vérrouillage dès qu'il s'agit d'une règle de livraison.

Les expressions régulières dans une règle sont toujours précédées par une étoile «*» qui est un marqueur de condition. Les expressions régulières définissent le filtre proprement dit et tout mail qui respecte la condition du filtre est alors traité par l'action de la règle.

Avec les expressions, des conditionnelles peuvent être associées :

Voici ci-dessous quelques règles :

# L'entête de tout mail (pas de filtre ici) est envoyé en entrée du programme formail.
# Cette règle permet de ne garder qu'une version d'un mail dans l'éventualité où elle
# est reçue plus d'une fois
:0 Wh: msgid.lock
| formail -D 8192 msgid.cache

# Filtrer les mails provenant de Christophe est les déposer dans la boite à mails christophe
:0:
* ^From.*christophe.*
christophe

# Filtrer les mails à destination de la mailing list mailinglist.fr et les déposer dans la boite
# à mails ma-mailinglist
:0:
* ^To.*mailinglist.fr
ma-mailinglist

# Filtrer les mails en fonction du sujet. Dans le cadre du travail, permet de séparer les mails
# personnels (ici marqué par [personnel]) de ceux professionnels
:0:
* ^Subject.*\[personnel\]
perso/inbox

# Permet de filtrer en un seul coup tous les mails provenant de mailing lists similaires en
# s'appuyant sur le champs d'entête X-Mailing-List. La seconde expression est utilisée pour
# récupérer la partie de l'adresse avant l'@. La variable MATCH (une variable de procmail)
# est valorisée avec le résultat de la dernière expression et sert ici d'action : le mail est
# déposé dans la boite à mails dont le nom est celui de l'adresse mail avant l'arobas.
:0 H
* ^X-Mailing-List:.*[<].*guilde.*\.fr[>]
* ^X-Mailing-List:.*[<] *\/[^ ][^@]*
$MATCH

Ce sont les règles les plus courantes qui sont présentées et peuvent servir de point de départ pour en élaborer de plus compliqué.

4. SpamAssasin

SpamAssassin est un outil Perl écrit par la fondation Apache pour détecter des spams éventuels en utilisant un ensemble d'heuristiques sur les entêtes et le corps des mails entrants, des listes blanches automatiques, des listes noires, des catalogues de spams, etc.

SpamAssassin fournit deux programmes pour détecter un spam :

A chaque mail entrant, SpamAssassin applique un certain nombre de tests afin d'y mesurer son degrès d'indésirabilité. A chacun des tests est associé un certain nombre de points ; cette association est définie dans le fichier /usr/share/spamassassin/50_scores.cf. Lorsqu'un test réussi, le nombre de points associé est ajouté au total du mail. C'est ce total qui définit au mail son degrès d'indésirabilité : au dessus de 5 points (limite par défaut), le mail est marqué comme spam.

La personnalisation de SpamAssassin peut être réalisé de façon globale avec le fichier /etc/spamassassin/local.cf ou au niveau utilisateur avec le fichier $HOME/.spamassassin/user_prefs. C'est par exemple dans ces fichiers de configuration qu'est défini le score à partir duquel un mail est considéré comme étant un spam. Ces fichiers de configurations valorisent un certain nombre de paramètres qui sont utilisés par l'ensemble de la configuration de SpamAssassin dans /usr/share/spamassassin/ ; la plupart des paramètres ont des valeurs par défaut. Par exemple, la classification bayesien est activé par défaut avec l'auto-apprentissage.

Sauf exception particulière, la configuration par défaut de SpamAssassin suffit à elle seule et ne nécessite pas de modification. Et si une modification est toutefois nécessaire, il est plus opportun de l'appliquer au niveau utilisateur. Dans ce cas, il vaut mieux se tourner vers la documentation du programme.

Avec les progrès des spammeurs à rendre indétectable leurs spams, les outils anti-spam ne suffisent plus généralement à eux seuls. C'est pourquoi l'usage de listes blanches, de listes noires et de catalogues de spams sont un support indéniable dans le combat contre les pourriels. Les listes blanches contiennent les adresses des expéditeurs de courriers valides (les hams) tandis que les listes noires contiennent les adresses des expéditeurs indésirables. Quant aux catalogues de spams, ils répértorient tous les types de spams existants ... ils sont donc condamnés à grossir en volume ! Il est indéniable que les listes blanches ont un impact plus important que celles noires dans la détéction anti-spam. En effet, les spams sont souvent envoyés à partir de fausses adresses ou d'adresses emails spoliées.

Pour répertorier les adresses des expéditeurs valides, il suffit de valoriser dans son fichier $HOME/.spamassassin/user_prefs ou dans /etc/spamassassin/local.cf la variable whitelist_from avec un filtre d'adresse :

whitelist_from *guilde*
whitelist_from toto@chez-les-papoos.fr

Mais il existe aussi des commandes qui permettent de mettre à jour dynamiquement les adresses des expéditeurs valides et ceux indésirables :

sa-learn --showdots --mbox --ham mail1 mail2 ...
sa-learn --showdots --mbox --spam mail1 mail2 ...

ou encore :

sa-learn --showdots --ham répertoire-avec-les-désirables
sa-learn --showdots --spam répertoire-avec-les-indésirables

A la réception des mails, nous pouvons donc aider SpamAssassin à améliorer sa détection de spams en lui «apprenant» les mails qui sont indésirables et ceux qui ne le sont pas. La commande sa-learn alimente SpamAssassin de données qu'il enregistre et qui ensuite sont utilisées dans sa détection de spam. Voici quelques arguments de la commange sa-learn :

Par défaut, sa-learn interprête les courriels d'entrée comme étant au format MAILDIR. Donc, avec des formats mbox ou mbx, ne pas oublier de le spécifier.

Pour améliorer la détection des spams, SpamAssassin peut-être couplé avec des sites de base de données de spams connues (les catalogues de spams), les plus connus étant Razor (http://razor.sourceforge.net/) et Pyzor (http://pyzor.sourceforge.net/). Razor offre un accès aux bases de données de la société commerciale Cloudmark aux clients Unix, tandis que Pyzor est une base de données libre. Tous deux sont des systèmes de Hash-Sharing : le principe repose sur la participation des utilisateurs qui recoivent des spams par la mise à jour des bases de données avec le checksum des spams reçus ; évidemment, ceci se fait automatiquement via des outils dédiés et fournis par Razor et Pyzor. Avec Razor, il est toutefois nécessaire de s'enregistrer auprès du site avant de l'utiliser.

Pour activer le support de ces bases de données de spams, il suffit de positionner les variables suivantes dans le fichier de configuration v310.pre ou v320.pre selon la version de SpamAssassin (dans /etc/mail/spamassassin/ ou /etc/spamassassin/) :

loadplugin Mail::SpamAssassin::Plugin::Pyzor
loadplugin Mail::SpamAssassin::Plugin::Razor2

Puis, dans le fichier de configuration local.cf de SpamAssassin, vérifiez que les lignes suivantes sont présentes :

use_razor2 1
razor_config /etc/mail/spamassassin/razor/razor-agent.conf

pyzor_options --homedir /etc/mail/spamassassin

Le fichier razor-agent.conf est créé lors de l'initialisation de Razor. Le répertoire razor/ contiendra aussi tout un tas de données qui auront été générées par Razor lui-même. Pour initialiser Razor, il est nécessaire de s'enregistrer d'abord auprès de lui, puis de créer le fichier ci-dessus avant de lancer la découverte des différentes bases de données de spams :

$ razor-admin -home=/etc/mail/spamassassin/razor -register
$ razor-admin -home=/etc/mail/spamassassin/razor -create
$ razor-admin -home=/etc/mail/spamassassin/razor -discover

(Vérifiez les permissions d'accès au répertoire razor.) Vérifiez que la variable razorhome dans le fichier de configuration razor-agent.conf est correctement valorisée :

razorhome = /etc/mail/spamassassin/razor/

Pour alimenter les bases de données accessibles via Razor, il suffit alors d'utiliser la commande :

$ spamassassin -x -C /etc/mail/spamassassin -r < pourriel

Cette commande peut-être configurée dans le client mail utilisé et lancée via un racourcis clavier.

Pour Pyzor, la configuration est plus simple. Il suffit d'abord de renseigner le fichier local.cf avec l'instruction suivante :

pyzor_options --homedir /etc/mail/spamassassin

par exemple, puis de demander à Pyzor d'indiquer la bases de données de spams que doit questionner et populer SpamAssassin :

$ pyzor --homedir /etc/mail/spamassassin discover

Un fichier server est alors créé dans le répertoire maison de Pyzor avec l'adresse de la base de données.

De même qu'avec Razor, on peut alimenter en spams la base de données de Pyzor via la même commande :

$ spamassassin -x -C /etc/mail/spamassassin -r < pourriel

Mais Pyzor fournit aussi une commande dédiée pour ceci :

pyzor report --mbox < pourriel

Pour accentuer l'efficacité de détection de spams par SpamAssassin, vous pouvez aussi préciser les langues par défaut des mails que vous recevez habituellement. Les autres mails se verront alors attribués un score plus élevé. Ceci se fait toujours dans le fichier local.cf avec les instructions ok_languages et ok_locales :

# Mail using languages used in these country codes will not be marked
# as being possibly spam in a foreign language.
ok_languages fr en

# Mail using locales used in these country codes will not be marked
# as being possibly spam in a foreign language.
ok_locales en

L'instruction ok_locales ci-dessus indique que vous ne recevez que des mails dans les locales occidentales (donc pas de mails en japonais ou chinois).

Maintenant, si vous utilisez SpamAssassin comme un service tournant en arrière-plan (un démon dans le jargon Unix), il suffit de relancer celui-ci pour que vos modifications soient prises en compte :

$ /etc/init.d/spamd restart

SpamAssassin peut-être utilisé de deux façons différentes : soit en exécutant explicitement la commande spamassassin, qui alors traite le mail passé en argument, soit en exécutant le démon spamd qui alors est en attente de mails entrants de la part du client spamc. Ces commandes peuvent être configurer dans votre client mail, toutefois, pour rester dans le sujet de cet article, ce sera Procmail qui exécutera la détéction anti-spam pour chaque mail entrant. L'utilisation de la commande spamassassin peut-être lourde lorsqu'il s'agit de traiter un certain nombre de mails (surtoût lorsque les mails de plusieurs utilisateurs doivent être vérifiés !), aussi le démon spamd est ici préféré. Nous utilisons donc spamc pour lancer la détéction anti-spam. Pour ce faire, il suffit de rajouter cette règle comme toute première règle dans son fichier .procmail afin que SpamAssassin puisse traiter les mails avant tout autre filtrage potentiel :

:0fw: spamassassin.lock
* < 256000
| spamc

La seconde ligne spécifie que seuls les courriels de taille inférieur à 256Ko (250 * 1024 = 256000 octets) seront traités par SpamAssassin ; en effet la majorité des spam ne sont pas plus gros que quelques kilo-octets et vérifier de très gros mails peut mettre à mal SpamAssassin.

Puis, une fois le mail vérifié, il est alors nécessaire de traiter le spam éventuel avec une autre règles de filtrage Procmail. Cette dernière doit-être en seconde ligne afin d'éviter que les autres règles puissent s'appliquer sur le spam éventuel (en effet, Procmail traite les règles dans leur ordre d'apparition) :

:0: * ^X-Spam-Status: Yes.* /dev/null

Ceci supprime les spams une fois pour toute. Pour les garder dans une boite à mails dédiées (spam par exemple), il faut alors préférer cette règle :

:0: * ^X-Spam-Status: Yes.* spams

5. Conclusion rapide

Voilà, maintenant toute votre chaîne de réception de courriels est prêt et ceci pour l'ensemble des utilisateurs de votre machine ou de votre petit réseau local. Et ceci de façon transparente pour les utilisateurs, si ce n'est les règles de filtrage Procmail qu'ils devront écrire (avec votre aide bien sûr ;-) ). Mais là, plus besoin d'activer l'anti-spam du client mail, et de s'embêter avec pour lui apprendre les spams ou les hams ; en général, avec SpamAssassin couplé avec Razor et Pyzor, l'efficacité de détection des spams est redoutable, d'autant plus si, avant son déploiement pour l'ensemble du système, vous avez lancé une campagne d'apprentissage des hams à SpamAssassins pour chacun des utilisateurs.


Valid XHTML 1.0! Valid CSS!
Me contacter