2002-12-16 07:21:00 +01:00
|
|
|
|
<?xml version="1.0" encoding="ISO-8859-1"?>
|
|
|
|
|
<!DOCTYPE html
|
|
|
|
|
PUBLIC "-//ENS/Tuteurs//DTD TML 1//EN"
|
|
|
|
|
"tuteurs://DTD/tml.dtd">
|
|
|
|
|
<html>
|
|
|
|
|
<head>
|
|
|
|
|
<title>Procmail</title>
|
|
|
|
|
</head>
|
|
|
|
|
<body>
|
|
|
|
|
|
|
|
|
|
<h1>Filtrer son courrier <20>lectronique avec procmail</h1>
|
|
|
|
|
|
|
|
|
|
<h2><3E> quoi sert procmail ?</h2>
|
|
|
|
|
|
|
|
|
|
<p> Procmail est un programme qui sert <20> filtrer les courriers
|
|
|
|
|
<EFBFBD>lectroniques. Gr<47>ce <20> lui, vous pouvez rediriger votre mail, le trier
|
|
|
|
|
ou vous prot<6F>ger contre le spam. Vous pouvez configurer votre mail
|
|
|
|
|
avec un <code>.procmailrc</code>.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<h2>Ce que doit contenir un <code>.procmailrc</code></h2>
|
|
|
|
|
|
|
|
|
|
<p>Un <code>.procmailrc</code> commence par les lignes
|
|
|
|
|
suivantes :</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
PATH=/bin:/usr/bin
|
|
|
|
|
MAILDIR=$HOME/Mail
|
|
|
|
|
LOGFILE=$MAILDIR/procmail.log
|
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
<dl>
|
|
|
|
|
<dt><code>PATH=/bin:/usr/bin</code></dt>
|
|
|
|
|
<dd>On indique <20> procmail le chemin des programmes qu'il va
|
|
|
|
|
utiliser.</dd>
|
|
|
|
|
<dt><code>MAILDIR=$HOME/Mail</code></dt>
|
|
|
|
|
<dd>On indique <20> procmail o<> se trouve votre r<>pertoire de mail.</dd>
|
|
|
|
|
<dt><code>LOGFILE=$MAILDIR/procmail.log</code></dt>
|
|
|
|
|
<dd>On indique <20> procmail le nom d'un fichier o<> il mettra tous ses
|
|
|
|
|
rapports d'activit<69> et ses messages d'erreur (les <em>logs</em>). Les
|
|
|
|
|
logs sont pr<70>cieux pour faire des tests.</dd>
|
|
|
|
|
</dl>
|
|
|
|
|
|
|
|
|
|
<h2>Comment <20>a marche ?</h2>
|
|
|
|
|
|
|
|
|
|
<h3>Les recettes</h3>
|
|
|
|
|
|
|
|
|
|
<p> Les <20><>recettes<65><73> (<em lang="en">recipes</em>) sont les <20>l<EFBFBD>ments de
|
|
|
|
|
base du <code>.procmailrc</code>. Leur principe est le suivant :
|
|
|
|
|
on commence par sp<73>cifier des conditions (une condition dit <20> procmail
|
|
|
|
|
ce qu'il doit regarder dans le courrier, par exemple l'adresse de
|
|
|
|
|
l'exp<78>diteur, ou encore le champ <20><>Sujet<65><74>) puis on indique l'action <20>
|
|
|
|
|
accomplir si les conditions sont remplies (par exemple, rediriger le
|
|
|
|
|
courrier, ou l'envoyer <20> la poubelle).</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Une recette a toujours le format suivant (le # introduit un
|
|
|
|
|
commentaire pour expliquer le code, vous n'avez pas <20> recopier la
|
|
|
|
|
partie apr<70>s le #) :</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
:0 [<a href="#flag">drapeau(x)</a>] [: [<a href="#lock">fichier verrou</a>] ]
|
|
|
|
|
* condition(s) # Les conditions commencent chacune par *
|
|
|
|
|
action <20> accomplir
|
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
<h3>Expressions r<>guli<6C>res</h3>
|
|
|
|
|
|
|
|
|
|
<p> Pour sp<73>cifier les conditions, on se sert d'expressions
|
|
|
|
|
r<EFBFBD>guli<EFBFBD>res. Une expression r<>guli<6C>re est une notation permettant de
|
|
|
|
|
d<EFBFBD>finir des sch<63>mas de recherche. Pour cela, on se sert de
|
|
|
|
|
m<EFBFBD>tacaract<EFBFBD>res, aussi appel<65>s jokers.</p>
|
|
|
|
|
|
|
|
|
|
<table cellspacing="5" cellpadding="5" border="5">
|
|
|
|
|
<tr>
|
|
|
|
|
<th>Joker</th>
|
|
|
|
|
<th>Signification</th>
|
|
|
|
|
</tr><tr>
|
|
|
|
|
<td>^</td>
|
|
|
|
|
<td>D<>but de ligne</td>
|
|
|
|
|
</tr><tr>
|
|
|
|
|
<td>$</td>
|
|
|
|
|
<td>Fin de ligne</td>
|
|
|
|
|
</tr><tr>
|
|
|
|
|
<td>.</td>
|
|
|
|
|
<td>Un caract<63>re quelconque</td>
|
|
|
|
|
</tr><tr>
|
|
|
|
|
<td>[xy]</td>
|
|
|
|
|
<td>N'importe quel caract<63>re dans l'ensemble sp<73>cifi<66></td>
|
|
|
|
|
</tr><tr>
|
|
|
|
|
<td>[^xy]</td>
|
|
|
|
|
<td>N'importe quel caract<63>re hors de l'ensemble sp<73>cifi<66></td>
|
|
|
|
|
</tr><tr>
|
|
|
|
|
<td>foo|bar</td>
|
|
|
|
|
<td>foo ou bar</td>
|
|
|
|
|
</tr><tr>
|
|
|
|
|
<td>c*</td>
|
|
|
|
|
<td>Un nombre quelconque (m<>me 0) de r<>p<EFBFBD>titions du caract<63>re c</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</table>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Quelques exemples :</p>
|
|
|
|
|
|
|
|
|
|
<ul>
|
|
|
|
|
<li><code>^From:</code> : cette condition vise toutes les cha<68>nes
|
|
|
|
|
de caract<63>re <code>From:</code> au d<>but d'une ligne. On dirait une
|
|
|
|
|
en-t<>te de courrier <20>lectronique, non ? :-)</li>
|
|
|
|
|
<li><code>^From:.*choupi.*</code> : cette condition vise toutes
|
|
|
|
|
les cha<68>nes de caract<63>re <code>From:</code> au d<>but d'une ligne,
|
|
|
|
|
suivies d'un ou plusieurs caract<63>res, puis de choupi, puis d'un ou
|
|
|
|
|
plusieurs autres caract<63>res. Cette fois, on a d<>fini l'ensemble des
|
|
|
|
|
mails provenant d'une adresse contenant l'expression choupi : de
|
|
|
|
|
cette fa<66>on, on vise tous les mails provenant de Choupi, votre
|
|
|
|
|
meilleur ami.</li>
|
|
|
|
|
<li><code>^(From|Cc|To).*choupi.*</code> cette fois, on vise
|
|
|
|
|
tous les mails qui viennent de Choupi, ceux o<> Choupi est en Cc:, et
|
|
|
|
|
ceux adress<73>s <20> Choupi.</li>
|
|
|
|
|
</ul>
|
|
|
|
|
|
|
|
|
|
<h3>Rediriger certains mails vers une autre adresse <20>lectronique</h3>
|
|
|
|
|
|
|
|
|
|
<h4>Redirection de base</h4>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Pour rediriger votre courrier <20>lectronique vers une autre adresse,
|
|
|
|
|
c'est simple :</p>
|
|
|
|
|
|
|
|
|
|
<pre>:0
|
|
|
|
|
# il n'y a pas de condition : tous les courriers sont concern<72>s
|
|
|
|
|
! toto@northpole.foo # le "!" demande le forward vers l'adresse sp<73>cifi<66>e
|
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
<h4>Redirection avec conditions</h4>
|
|
|
|
|
|
|
|
|
|
<p> Toujours plus fort, maintenant . Imaginons que vous soyiez un
|
|
|
|
|
fan de Scoubidou. Votre page web porte sur Scoubidou. Choupi (votre
|
|
|
|
|
meilleur ami, souvenez-vous), vous a aid<69> <20> le r<>aliser. Vous
|
|
|
|
|
souhaitez relayer les courriers qui vous arrivent et qui parlent de
|
|
|
|
|
Scoubidou <20> Choupi. Avec procmail, vous pouvez le faire.</p>
|
|
|
|
|
|
|
|
|
|
<pre>:0
|
|
|
|
|
* ^Subject:.*Scoubidou.* # Concern<72>s : tous les mails dont le sujet contient <20><>Scoubidou<6F><75>
|
|
|
|
|
! choupi@scoubidou-fan.com # On forwarde <20> Choupi
|
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
<p> Comme vous pourrez le constater, les conditions peuvent porter sur
|
|
|
|
|
tous les champs d'un courrier <20>lectronique : From, To, CC, Bcc,
|
|
|
|
|
etc.</p>
|
|
|
|
|
|
|
|
|
|
<p> Ajoutons que dans cet exemple, vous souhaiteriez sans doute vous
|
|
|
|
|
aussi lire les courriers <20><>Scoubidou.<2E><> Avec la recette ci-dessus, ces
|
|
|
|
|
courriers sont simplement reexp<78>di<64>s vers Choupi, et vous ne les avez
|
|
|
|
|
jamais dans votre bo<62>te aux lettres. Nous allors utiliser un <a
|
|
|
|
|
name="flag">drapeau</a> (<em lang="en">flag</em>) qui est une sorte
|
|
|
|
|
d'option, qui modifie le comportement standard de procmail. Il suffit
|
|
|
|
|
d'ajouter c apr<70>s le :0, ce qui demande <20> procmail de copier dans le
|
|
|
|
|
r<EFBFBD>pertoire de mail les courriers qui arrivent. L'exemple complet est
|
|
|
|
|
donc le suivant :</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
:0 c
|
|
|
|
|
* ^Subject:.*Scoubidou.* # Concern<72>s : tous les mails dont le sujet contient <20><>Scoubidou<6F><75>
|
|
|
|
|
! choupi@scoubidou-fan.com # On forwarde <20> Choupi
|
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
<h3>Filtrer le spam</h3>
|
|
|
|
|
|
|
|
|
|
<h4>Filtrer suivant le sujet</h4>
|
|
|
|
|
|
|
|
|
|
<p> La plupart des spams sont des mails provenant d'exp<78>diteurs bidons
|
|
|
|
|
et diff<66>rents <20> chaque fois, et qui ont pour point commun de vous
|
|
|
|
|
promettre de l'argent, de vous proposer du Viagra, des dipl<70>mes par
|
|
|
|
|
cher, et autres joyeuset<65>s. Procmail vous permet d'identifier plus ou
|
|
|
|
|
moins ces mails en fonction de leur sujet, et de les envoyer
|
|
|
|
|
directement <20> la poubelle. De m<>me, le filtrage par sujet permet de
|
|
|
|
|
filtrer les mails pyramidaux (cha<68>nes de l'amiti<74>, fausses alertes de
|
|
|
|
|
virus, etc.), que vous pouvez <20>tre amen<65> <20> recevoir plusieurs fois.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Dans l'exemple suivant, vous allez filtrer tous les mails dont le
|
|
|
|
|
sujet contient le mot <20><>Viagra.<2E><>
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre>:0
|
|
|
|
|
* ^Subject:.*Viagra.*
|
|
|
|
|
/dev/null
|
|
|
|
|
</pre>
|
|
|
|
|
|
2003-03-07 16:08:59 +01:00
|
|
|
|
<div class="attention">La pr<70>sence d'un <code>/dev/null</code> dans
|
|
|
|
|
votre <code>.procmailrc</code> est virtuellement dangerese : la
|
|
|
|
|
moindre erreur de syntaxe, la moindre coquille est susceptible
|
|
|
|
|
d'envoyer tout votre mail dans <code>/dev/null</code>, soit le vide
|
|
|
|
|
intersid<EFBFBD>ral d'o<> vous ne pouvez r<>cup<75>rer aucun courrier. En cas
|
|
|
|
|
d'accident, vous pouvez vous adresser au SPI, mais faites
|
|
|
|
|
particuli<EFBFBD>rement attention en <20>ditant votre
|
|
|
|
|
<code>.procmailrc</code>.</div>
|
|
|
|
|
|
2002-12-16 07:21:00 +01:00
|
|
|
|
<p>
|
|
|
|
|
Vous pouvez <20>galement utiliser la syntaxe suivante :
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
:0
|
|
|
|
|
* ^Subject:.*Viagra.*
|
|
|
|
|
{
|
|
|
|
|
EXITCODE=67 HOST
|
|
|
|
|
}
|
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
<p> Pourquoi cet EXITCODE et pas /dev/null (la poubelle) ? Ce
|
|
|
|
|
code renvoie une <20><>address unknown<77><6E> <20> l'exp<78>diteur du courrier
|
|
|
|
|
<EFBFBD>lectronique (pour avoir la liste de tous ces codes, lire
|
|
|
|
|
<code>/usr/include/sysexits.h</code>). </p>
|
|
|
|
|
|
2003-03-07 14:59:35 +01:00
|
|
|
|
<p>Attention, utiliser un <code>exitcode</code> n'est pas toujours une
|
|
|
|
|
bonne id<69>e. Certes, il vous procure la satisfaction de renvoyer au
|
|
|
|
|
spammeur ses spams. Mais cela ne sert pas <20> grand chose : bien
|
|
|
|
|
souvent, le spammeur filtre les messages d'erreur qui lui sont
|
|
|
|
|
renvoy<EFBFBD>s. Que vous fassiez le mort (en reroutant les spams vers
|
|
|
|
|
<code>/dev/null</code>) ou que vous lui renvoyez 150 messages d'erreur
|
|
|
|
|
ne l'emp<6D>chera pas de continuer <20> vous spammer s'il y tient. D'autre
|
|
|
|
|
part, mettre des exitcodes dans son <code>.procmailrc</code> peut <20>tre
|
|
|
|
|
g<EFBFBD>nant pour vous si vous faites partie d'unemailing-list : le
|
|
|
|
|
message d'erreur risque d'<27>tre r<>percut<75> <20> toute la liste.</p>
|
2002-12-16 07:21:00 +01:00
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Vous est-il d<>j<EFBFBD> arriv<69> de recevoir, apr<70>s avoir envoy<6F> un mail <20> un
|
|
|
|
|
camarade de l'Ecole, un courrier avec le sujet <code>"Returned mail:
|
|
|
|
|
Can't create output"</code>, et contenant le message cryptique
|
|
|
|
|
suivant ?</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
----- The following address had permanent fatal errors -----
|
|
|
|
|
<pikachu@clipper.ens.fr>
|
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Cela est certainement d<> <20> un exitcode dans un
|
|
|
|
|
<code>.procmailrc</code>...</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<h4>Filtrer suivant l'exp<78>diteur</h4>
|
|
|
|
|
|
|
|
|
|
<p> Dans d'autres cas, vous pouvez tr<74>s bien conna<6E>tre l'adresse
|
|
|
|
|
<EFBFBD>lectronique de ceux qui vous spamment. Ce peut <20>tre une liste de
|
|
|
|
|
diffusion <20> laquelle vous avez <20>t<EFBFBD> abonn<6E>, volontairement ou non, et <20>
|
|
|
|
|
laquelle les administrateurs de la liste ne vous d<>sabonnent pas. La
|
|
|
|
|
recette qu'il vous faut est la suivante : tous les courriers
|
|
|
|
|
provenant de l'adresse spam@foo.bar seront impitoyablement envoy<6F>s <20>
|
|
|
|
|
la poubelle (dans /dev/null, en fait).</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
:0
|
|
|
|
|
* ^From.*spam@foo.bar
|
|
|
|
|
/dev/null
|
|
|
|
|
</pre>
|
|
|
|
|
|
2003-03-07 14:59:35 +01:00
|
|
|
|
<h4>Filtrer suivant l'encodage</h4>
|
|
|
|
|
|
|
|
|
|
<p>Vous recevez beaucoup de mails en provenance de Cor<6F>e, qui sont un
|
|
|
|
|
charabia illisible. Vous voudriez les filtrer. On rappelle que
|
|
|
|
|
procmail peut filtrer sur n'importe quel en-t<>te de message. Si vous
|
|
|
|
|
regardez les en-t<>tes d'un spam cor<6F>en (appuyez sur <code>H</code>,
|
|
|
|
|
que vous utilisiez mutt ou pine, pour y avoir acc<63>s), vous verrez un
|
|
|
|
|
champ appel<65> <code>Content-type</code>. Dans ce champ est d<>clar<61>
|
|
|
|
|
<code>charset="ks_c_5601-1987"</code> ou encore
|
|
|
|
|
<code>charset="koi8-r"</code>. Il vous suffit de filtrer ces encodages
|
|
|
|
|
pour <20>tre d<>barrass<73> de la plupart des spams cor<6F>ens :</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
:0
|
|
|
|
|
* ^Content-Type: .*charset="koi8-r"*
|
|
|
|
|
/dev/null
|
|
|
|
|
|
|
|
|
|
:0
|
|
|
|
|
* ^Content-Type: .*charset="ks_c_5601-1987"*
|
|
|
|
|
/dev/null
|
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
<p>De mani<6E>re plus perverse, certains spams cor<6F>ens ne d<>clarent pas
|
|
|
|
|
leur encodage au bon endroit, pour <20>viter justement ce genre de
|
|
|
|
|
filtres. L'encodage est alors annonc<6E> dans le sujet. Pour y rem<65>dier,
|
|
|
|
|
ajoutez simplement :</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
:0
|
|
|
|
|
* ^Subject: .*EUC-KR.*
|
|
|
|
|
/dev/null
|
|
|
|
|
|
|
|
|
|
:0
|
|
|
|
|
* ^Subject: .*ks_c_5601-1987.*
|
|
|
|
|
/dev/null
|
|
|
|
|
</pre>
|
|
|
|
|
|
2003-03-07 16:08:59 +01:00
|
|
|
|
<h4>Trop de filtres nuit</h4>
|
|
|
|
|
|
|
|
|
|
<div class="attention">Attention en installant des filtres
|
|
|
|
|
anti-spam : vous prenez le risque d'<27>carter des courriers qui en
|
|
|
|
|
fait n'en sont pas, mais qui r<>pondent tout de m<>me <20> vos r<>gles. Ce
|
|
|
|
|
sera le cas d'un prof cor<6F>en qui vous <20>crit si vous filtrez les
|
|
|
|
|
encodages cor<6F>ens, d'un courrier parlant de FreeBSD si vous filtrez le
|
|
|
|
|
mot «<3B>free<65>», etc. Plus vos r<>gles sont strictes, moins vous
|
|
|
|
|
recevrez de spam, mais plus vous aurez de chances de perdre du
|
|
|
|
|
courrier.</div>
|
|
|
|
|
|
|
|
|
|
<p>Pour cette raison, il vaut parfois mieux envoyer les courriers
|
|
|
|
|
suspects dans un dossier sp<73>cial, appel<65> « spam », par
|
|
|
|
|
exemple. Voir ci-dessous comment faire.</p>
|
|
|
|
|
|
2002-12-16 07:21:00 +01:00
|
|
|
|
<h3>Envoyer directement certains mails dans un dossier
|
|
|
|
|
particulier</h3>
|
|
|
|
|
|
|
|
|
|
<p> Cette recette est particuli<6C>rement utile pour les listes de
|
|
|
|
|
diffusion (<em lang="en">mailing-lists</em>) : vous pouvez envoyer
|
|
|
|
|
tous les courriers provenant de la liste directement dans un dossier
|
|
|
|
|
sp<EFBFBD>cial, qui contiendra seulement les courriers de ce genre.</p>
|
|
|
|
|
|
|
|
|
|
<p> Admettons que vous apparteniez <20> la liste des amis de
|
|
|
|
|
Scoubidou. Cette liste a pour adresse
|
|
|
|
|
<code>scoubidou@zoinx.foo</code>, et tous les courriers de la liste
|
|
|
|
|
ont pour champ exp<78>diteur :</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
To: Les Amis de Scoubidou <scoubidou@zoinx.foo>
|
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
<p>Vous voulez regrouper les courriers de la liste dans un dossier
|
|
|
|
|
appel<EFBFBD> <20><>scoubidou.<2E><> La recette qu'il vous faut est la
|
|
|
|
|
suivant :</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
:0: # Le dernier ":" demande l'utilisation d'un fichier verrou
|
|
|
|
|
* ^To.*scoubidou@zoinx.foo # La condition : tous les fichiers
|
|
|
|
|
# contenant 'scoubidou@zoinx.foo'
|
|
|
|
|
# dans le champ 'To: '
|
|
|
|
|
$HOME/Mail/scoubidou # Action : placer tous ces mails dans le dossier
|
|
|
|
|
# <20><>Scoubidou<6F><75>
|
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
<p><3E> quoi sert le <a name="lock">fichier verrou</a> ? Imaginons
|
|
|
|
|
que deux courriers de la liste arrivent en m<>me temps : deux
|
|
|
|
|
procmails essaieront d'envoyer les deux messages dans le dossier en
|
|
|
|
|
m<EFBFBD>me temps. Si vous utilisez un fichier verrou, le premier procmail
|
|
|
|
|
verrouillera le dossier pendant qu'il <20>crira son message dans le
|
|
|
|
|
dossier, emp<6D>chant ainsi le second message d'y acc<63>der. Une fois que
|
|
|
|
|
le premier procmail aura fait son travail, le second prendra le relais
|
|
|
|
|
en toute s<>curit<69>. </p>
|
|
|
|
|
|
|
|
|
|
<div class="attention">Attention ! Si vous classez ainsi vos
|
|
|
|
|
mails, vous perdrez les avertissements <20> You have new
|
|
|
|
|
mail. <3B> Pour rem<65>dier <20> ce probl<62>me, il va falloir
|
|
|
|
|
bidouiller...</div>
|
|
|
|
|
|
|
|
|
|
<p> Il faut tout d'abord ajouter dans votre .zshrc les lignes
|
|
|
|
|
suivantes :</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
MAILPATH="$MAIL:$HOME/mail/Scoubidou?You have new mail in Scoubidou."
|
|
|
|
|
export MAILPATH
|
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
<p>Ensuite, dans votre <code>.procmailrc</code>,</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
:0
|
|
|
|
|
* ^(To:|Cc:).*scoubidou@zoinx.foo.*
|
|
|
|
|
{
|
|
|
|
|
:0c
|
|
|
|
|
| touch $HOME/mail/Scoubidou
|
|
|
|
|
|
|
|
|
|
:0
|
|
|
|
|
mail/Scoubidou
|
|
|
|
|
}
|
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
<p>Cette recette se substitue bien <20>videmment <20> la pr<70>c<EFBFBD>dente.</p>
|
|
|
|
|
|
2003-03-07 16:08:59 +01:00
|
|
|
|
<h4>Un dossier sp<73>cial spam</h4>
|
|
|
|
|
|
|
|
|
|
<p>Une application int<6E>ressante de classement concerne le spam Pour
|
|
|
|
|
dea raisons <20>voqu<71>es plus haut, il n'est parfois pas prudent d'envoyer
|
|
|
|
|
le courrier suspect directement vers <code>/dev/null/</code> :
|
|
|
|
|
vous risquez de perdre du vrai courrier. Il vaut mieux parfois
|
|
|
|
|
rerouter le courrier vers un dossier sp<73>cial que vous consulterez
|
|
|
|
|
seulement de temps <20> autres.</p>
|
|
|
|
|
|
|
|
|
|
<p>Prenons un exemple. Beaucoup de spams ont un
|
|
|
|
|
<code>Content-type</code> en <code>text/html</code>, c'est-<2D>-dire du
|
|
|
|
|
HTML seulement sans copie texte. Inversement, il n'y a gu<67>re que les
|
|
|
|
|
spams pour <20>tre en <code>text/html</code> : les gens normaux avec
|
|
|
|
|
un logiciel mal configur<75> n'envoient gu<67>re que du HTML+ texte (donc un
|
|
|
|
|
<code>Content-type</code> en <code>multipart/alternative</code>). Vous
|
|
|
|
|
voulez donc filtrer le <code>text/html</code>. Mais l'exp<78>rience
|
|
|
|
|
prouve que certains logiciels particuli<6C>rement malfaisants envoient
|
|
|
|
|
des courriers parfaitement normaux en
|
|
|
|
|
<code>text/html</code>. Solution : envoyer tous ces mails dans un
|
|
|
|
|
dossier sp<73>cial.</p>
|
|
|
|
|
|
|
|
|
|
<p>Application :</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
:0
|
|
|
|
|
* ^Content-Type: text/html.*
|
|
|
|
|
$HOME/Mail/spam
|
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
<h4>Recettes imbriqu<71>es</h4>
|
|
|
|
|
|
2002-12-16 07:21:00 +01:00
|
|
|
|
<p>
|
|
|
|
|
Un dernier exemple pour la route ! Encore plus fort,
|
|
|
|
|
maintenant ! Nous allons reprendre l'exemple du courrier <20>
|
|
|
|
|
relayer <20> votre ami Choupi. Dans l'<27>tat o<> nous vous avions laiss<73>,
|
|
|
|
|
vous saviez lui relayer le courrier contenant <20><>Scoubidou<6F><75> dans le
|
|
|
|
|
sujet et en garder une copie chez vous. Maintenant nous allons vous
|
|
|
|
|
montrer comment faire ceci, mais en envoyant vos copies <20> vous dans le
|
|
|
|
|
dossier <20><>Scoubi.<2E><> Il s'agit donc d'une recette constitu<74>e de deux
|
|
|
|
|
recettes imbriqu<71>es (chaque recette commence par un :0,
|
|
|
|
|
souvenez-vous) :</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
:0:
|
|
|
|
|
* ^Subject:.*Scoubidou.* # Cf. ci-dessus
|
|
|
|
|
{
|
|
|
|
|
:0 c
|
|
|
|
|
! choupi@scoubidou-fan.com # On fait suivre vers Choupi
|
|
|
|
|
|
|
|
|
|
:0 # et en plus de <20>a...
|
|
|
|
|
$HOME/Mail/scoubi # ... on d<>pose la copie dans le dossier <20><>Scoubi<62><69>
|
|
|
|
|
}
|
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
<h2>Conclusion</h2>
|
|
|
|
|
|
|
|
|
|
<p> Ceci ne montre qu'une partie des possibilit<69>s de procmail. Vous
|
|
|
|
|
pouvez faire beaucoup de choses plus compliqu<71>es mais tout aussi
|
|
|
|
|
utiles : ajouter syst<73>matiquement un champ (Reply-To, par
|
|
|
|
|
exemple), <20>viter les boucles... Pour davantage de renseignements,
|
|
|
|
|
consultez les pages de man. <code>man procmail</code> est une
|
|
|
|
|
description de procmail lui-m<>me. Vous y trouverez les options de
|
|
|
|
|
procmail, <code>man procmailrc</code> est tr<74>s complet mais
|
|
|
|
|
indubitablement compliqu<71>. <code>man procmailsc</code> est <20> r<>server
|
|
|
|
|
aux experts de procmail. <code>man procmailex</code> propose des
|
|
|
|
|
exemples pr<70>ts <20> utilisation. C'est sans doute la page de man la plus
|
|
|
|
|
utile pour celui qui veut se familiariser davantage avec procmail.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<div class="metainformation">
|
|
|
|
|
Auteur Marie-Lan Nguyen. Derni<6E>re modification :
|
2003-03-07 14:59:35 +01:00
|
|
|
|
2003-03-07</div>
|
2002-12-16 07:21:00 +01:00
|
|
|
|
|
|
|
|
|
</body>
|
|
|
|
|
</html>
|