<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Lolo's blog &#187; Procmail</title>
	<atom:link href="http://blog.unix-scripts.info/category/mail/procmail/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.unix-scripts.info</link>
	<description></description>
	<lastBuildDate>Sun, 31 Jan 2010 19:13:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Tips procmail</title>
		<link>http://blog.unix-scripts.info/2006/04/18/tips-procmail/</link>
		<comments>http://blog.unix-scripts.info/2006/04/18/tips-procmail/#comments</comments>
		<pubDate>Tue, 18 Apr 2006 14:28:33 +0000</pubDate>
		<dc:creator>blog</dc:creator>
				<category><![CDATA[Procmail]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://blog.unix-scripts.info/2006/04/18/tips-procmail/</guid>
		<description><![CDATA[Comment préfixer certains mails par une chaine de caracteres arbitraire: Je souhaite par exemple ajouter la date du jour au format JJ-MM-AAAA HH:MM devant tous les sujets de mes nouveaux mails: dans mon ~/.procmailrc j&#8217;ajoute: :0 * { SUBJECT=`formail -zxSubject:` &#8230; <a href="http://blog.unix-scripts.info/2006/04/18/tips-procmail/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Comment préfixer certains mails par une chaine de caracteres arbitraire:</p>
<p>Je souhaite par exemple ajouter la date du jour au format JJ-MM-AAAA HH:MM devant tous les sujets de mes nouveaux mails:</p>
<p>dans mon ~/.procmailrc j&#8217;ajoute:</p>
<p>:0<br />
*<br />
{<br />
SUBJECT=`formail -zxSubject:`<br />
SUBDATE=`date +%d-%m-%Y\ %H:%M`<br />
:0fhw<br />
| formail -I&#8221;Subject: [$SUBDATE] $SUBJECT&#8221;<br />
}</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.unix-scripts.info/2006/04/18/tips-procmail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>De l&#8217;utilisation de /etc/procmailrc ou ~/.procmailrc</title>
		<link>http://blog.unix-scripts.info/2006/04/17/de-lutilisation-de-etcprocmailrc-ou-procmailrc/</link>
		<comments>http://blog.unix-scripts.info/2006/04/17/de-lutilisation-de-etcprocmailrc-ou-procmailrc/#comments</comments>
		<pubDate>Mon, 17 Apr 2006 19:11:04 +0000</pubDate>
		<dc:creator>blog</dc:creator>
				<category><![CDATA[Anti Spam]]></category>
		<category><![CDATA[Procmail]]></category>

		<guid isPermaLink="false">http://blog.unix-scripts.info/?p=5</guid>
		<description><![CDATA[L&#8217;idée de ce post est de présenter un ~/.procmailrc commenté: #BOF #Constantes DATE=`date +%Y-%m` #Emplacement du dossier ou les mails seront délivrés MAILDIR=$HOME/Maildir #Emplacement ou le mail est sauvegardé en dernier ressort en cas de problème ORGMAIL=$HOME/Maildir #Mails sans importance &#8230; <a href="http://blog.unix-scripts.info/2006/04/17/de-lutilisation-de-etcprocmailrc-ou-procmailrc/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>L&#8217;idée de ce post est de présenter un ~/.procmailrc commenté:</p>
<p>#BOF<br />
#Constantes<br />
DATE=`date +%Y-%m`<br />
#Emplacement du dossier ou les mails seront délivrés<br />
MAILDIR=$HOME/Maildir<br />
#Emplacement ou le mail est sauvegardé en dernier ressort en cas de problème<br />
ORGMAIL=$HOME/Maildir<br />
#Mails sans importance (publicités&#8230;)<br />
JUNKMAIL=.Junk/<br />
#Répertoire dans lequel on stocke les .lock de formail, procmail&#8230;<br />
HOMEMAIL=$HOME/Mail<br />
#Log de procmail<br />
LOGFILE=/tmp/$LOGNAME-procmail.log<br />
#Mode volubile<br />
VERBOSE=on<br />
#Fichiers de white/black list permettant de whitelister/blacklister un domaine/expéditeur<br />
WHITE_LIST=$HOME/.white-list<br />
BLACK_LIST=$HOME/.black-list<br />
#Fichier inclus (comme un include en PHP par exemple)<br />
INCLUDERC=$HOME/.procmailinclude<br />
#Permet de stopper le traitement si la machine ne s&#8217;appelle pas gw (utile en cas de montage de $HOME à travers NFS)<br />
HOST=gw</p>
<p>########## Traitements procmail #########</p>
<p>#On déplace les mails ayant des &#8220;charset&#8221; très peu utilisés en europe de l&#8217;ouest dans le dossier Spam</p>
<p>UNREADABLE=&#8217;[^?"]*big5|iso-2022-jp|ISO-2022-KR|euc-kr|gb2312|ks_c_5601-1987&#8242;<br />
:0:<br />
* 10 $ ^Subject:.*=\?($UNREADABLE)<br />
* 10 $ ^Content-Type:.*charset=&#8221;?($UNREADABLE)<br />
.Spam/</p>
<p>:0:<br />
* ^Content-Type:.*multipart<br />
* B?? $ ^Content-Type:.*^?.*charset=&#8221;?($UNREADABLE)<br />
.Spam/</p>
<p>#Si l&#8217;expéditeur est dans la whitelist, on ajoute un entete X-Whitelist positionné à Yes</p>
<p>:0<br />
* ? formail -x&#8221;From&#8221; -x&#8221;From:&#8221; -x&#8221;Sender:&#8221; | egrep -is -f $WHITE_LIST<br />
{<br />
:0 fwh<br />
| formail -a&#8221;X-Whitelist: Yes&#8221;<br />
}</p>
<p>#Tag des mails grâce à bogofilter &#038; Razor (On ne traite que les mails de moins de 128ko)<br />
:0fw<br />
* < 128000<br />
| bogofilter -upelv</p>
<p>:0e<br />
{ EXITCODE=75 HOST }</p>
<p>:0Wc<br />
* < 128000<br />
* ^X-Bogosity: Unsure.*<br />
| razor-check<br />
#On marque les spams reconnus par razor par un header X-Razor-Spam<br />
:0af<br />
| formail -A &#8220;X-Razor-Spam: YES&#8221;</p>
<p>#Tag des spams reconnus par razor par un sujet ****SPAM****<br />
:0<br />
* ^X-Razor-Spam: YES<br />
{<br />
SUBJECT=`formail -zxSubject:`</p>
<p>:0fhw<br />
| formail -I&#8221;Subject: ****SPAM**** $SUBJECT&#8221;<br />
}</p>
<p>#Si un mail a été détecté comme spam et que l&#8217;expéditeur est dans la liste blanche, alors le faire réapprendre comme courrier sollicité (Ham)</p>
<p>:0c<br />
* ^X-Bogosity: Yes<br />
* ^X-Whitelist: Yes<br />
| bogofilter -Nl</p>
<p>#Si le mail a été détecté comme spam alors le déplacer dans le dossier adéquat.<br />
:0<br />
* ^X-Bogosity.*spamicity=1\.0<br />
$JUNKMAIL<br />
:0<br />
* ^X-Bogosity.*spamicity=0\.9[56789]<br />
$JUNKMAIL<br />
:0<br />
* ^X-(Spam-Flag|Razor-Spam): YES<br />
$JUNKMAIL</p>
<p>#Emettre un bip si le mail est destiné à la boite principale<br />
BEEP=`/usr/bin/beep -f 1000 -n -f 2000 -n -f 1500`</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.unix-scripts.info/2006/04/17/de-lutilisation-de-etcprocmailrc-ou-procmailrc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Se protéger du spam grâce à razor</title>
		<link>http://blog.unix-scripts.info/2006/04/17/se-proteger-du-spam-grace-a-razor/</link>
		<comments>http://blog.unix-scripts.info/2006/04/17/se-proteger-du-spam-grace-a-razor/#comments</comments>
		<pubDate>Mon, 17 Apr 2006 18:23:09 +0000</pubDate>
		<dc:creator>blog</dc:creator>
				<category><![CDATA[Anti Spam]]></category>
		<category><![CDATA[Procmail]]></category>

		<guid isPermaLink="false">http://blog.unix-scripts.info/?p=4</guid>
		<description><![CDATA[Dans le précédent article (bogofilter), nous avions vu comment tagguer les Spams après une phase d&#8217;apprentissage.Nous allons voir comment aller plus loin grâce à Razor (http://razor.sourceforge.net/), un réseau collaboratif de &#8220;détection de spams&#8221;. Comment cela fonctionne? Un utilisateur rapporte un &#8230; <a href="http://blog.unix-scripts.info/2006/04/17/se-proteger-du-spam-grace-a-razor/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Dans le précédent article (bogofilter), nous avions vu comment tagguer les Spams après une phase d&#8217;apprentissage.Nous allons voir comment aller plus loin grâce à Razor (http://razor.sourceforge.net/), un réseau collaboratif de &#8220;détection de spams&#8221;.</p>
<p>Comment cela fonctionne?</p>
<p>Un utilisateur rapporte un spam. Une empreinte est alors générée (comme une empreinte digitale). Tout futur mail dont l&#8217;empreinte correspond à une empreinte de spam connue sera à 100% un SPAM. Il est donc possible, étant donné que les apsmmeurs envoient en masse des centaines de milliers de fois le même mail, de s&#8217;en protéger efficacement.<br />
J&#8217;utilise cette solution conjointement à bogofilter.</p>
<p>Bogofilter fonctionne dans un mode à trois etats:</p>
<p>Ham, Unsure, et Spam.</p>
<p>Ham: Le mail est un mail souhaité</p>
<p>Unsure: Bogofilter est &#8220;indécis&#8221; sur la nature du mail (cas épineux)</p>
<p>Spam: Bogofilter a de grandes présomptions d&#8217;avoir découvert un spam.</p>
<p>Afin de limiter les traitements inutiles, j&#8217;ai décidé de n&#8217;utiliser razor que dans les cas ou bogofilter marque un mail comme unsure.</p>
<p>Comment faire techniquement?</p>
<p>Après avoir installé razor:</p>
<p>razor-admin -create &#038;&#038; razor-admin -discover</p>
<p>Passons à l&#8217;édition du ~/.procmailrc</p>
<p>## Razor<br />
:0Wc<br />
* < 128000<br />
* ^X-Bogosity: Unsure.*<br />
| razor-check</p>
<p>#Ce bloc passe à razor les mails de taille inférieurs à 128ko pour lesquels bogofilter à renvoyé un etat incertain<br />
:0af<br />
| formail -A &#8220;X-Razor-Spam: YES&#8221;</p>
<p>#Si razor détecte un spam, alors on ajoute une entete X-Razor-Spam dans le mail</p>
<p>:0<br />
* ^X-Razor-Spam: YES<br />
{<br />
SUBJECT=`formail -zxSubject:`</p>
<p>:0fhw<br />
| formail -I&#8221;Subject: ****SPAM**** $SUBJECT&#8221;<br />
}</p>
<p>#Razor n&#8217;ajoutant pas de chaine spécifique au sujet, nous l&#8217;ajoutons</p>
<p>:0<br />
* ^X-Razor-Spam: YES<br />
.Spam/</p>
<p>#Si le mail est marqué comme spam par razor, on le déplace dans le dossier Spam</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.unix-scripts.info/2006/04/17/se-proteger-du-spam-grace-a-razor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bogofilter</title>
		<link>http://blog.unix-scripts.info/2006/04/17/bogofilter/</link>
		<comments>http://blog.unix-scripts.info/2006/04/17/bogofilter/#comments</comments>
		<pubDate>Mon, 17 Apr 2006 18:09:29 +0000</pubDate>
		<dc:creator>blog</dc:creator>
				<category><![CDATA[Anti Spam]]></category>
		<category><![CDATA[Procmail]]></category>

		<guid isPermaLink="false">http://blog.unix-scripts.info/?p=3</guid>
		<description><![CDATA[Kezako? Bogofilter est un puissant filtre bayésien permettant de tagguer le spam afin de pouvoir le repérer, trier, effacer&#8230; très facilement. Quel intérêt? Remplacer SpamAssassin qui est, lui aussi très afficace, mais très consommateur de ressources (600 Mo en permanence &#8230; <a href="http://blog.unix-scripts.info/2006/04/17/bogofilter/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Kezako?</p>
<p>Bogofilter est un puissant filtre bayésien permettant de tagguer le spam afin de pouvoir le repérer, trier, effacer&#8230; très facilement.</p>
<p>Quel intérêt? Remplacer SpamAssassin qui est, lui aussi très afficace, mais très consommateur de ressources (600 Mo en permanence sur mon modeste serveur mail).</p>
<p>Comment le mettre en place:</p>
<p>Il faut déja dans un premier temps &#8220;apprendre&#8221; au filtre ce que l&#8217;on considère comme courrier non sollicité (SPAM), et comme courrier souhaité (HAM).</p>
<p>Mes mails étant stockés au format maildir, nous nous rendons dans mon dossier de spams:</p>
<p>% cd ~/Maildir/.Spam/cur</p>
<p>for i in *; do bogofilter -s -I $i; done</p>
<p>Idem pour les mails sollicités (HAM)</p>
<p>% cd ~/Maildir/cur</p>
<p>for i in *; do bogofilter -n -I $i; done</p>
<p>Maintenant que bogofilter est &#8220;entrainé&#8221;, il faut modifier le ~/.procmailrc afin de filtrer les mails:</p>
<p>## BogoFilter<br />
:0fw<br />
* < 128000<br />
| bogofilter -upelv</p>
<p>:0e<br />
{ EXITCODE=75 HOST }<br />
## BogoFilter</p>
<p>:0<br />
* ^X-Bogosity.*spamicity=1\.0<br />
.Spam/</p>
<p>:0<br />
* ^X-Bogosity.*spamicity=0\.9[56789]<br />
.Spam/</p>
<p>Ce code nous permet de  déplacer dans un dossier Spam tous les mails considérés comme spam.</p>
<p>Que faire cas de détection d&#8217;un faux positif, ou d&#8217;un faux négatif?</p>
<p>Nous allons créer les dossiers Ham, Spam ainsi qu&#8217;un sous dossier Old pour chacun de ces dossiers dans notre boite mail nous permettant de faire réapprendre à bogofilter les mails concernés.</p>
<p>Le script suivant lancé périodiquement nous permettra de faire apprendre à bogofilter le Spam</p>
<p>#!/bin/sh</p>
<p>if [ $UID -eq 0 ]; then<br />
echo &#8220;Lancement par les utilisateurs uniquement !&#8221; ;<br />
exit<br />
fi</p>
<p>if [ ! -d $1 ] || [ ! -d $2 ]<br />
then<br />
echo &#8220;Dossier manquant !&#8221; ;<br />
exit 1<br />
fi</p>
<p>SPAM=$1<br />
OLDSPAM=$2<br />
bogofilter=/usr/bin/bogofilter</p>
<p># Reconnaissance du spam<br />
echo &#8220;ANALYSE DU SPAM&#8221;<br />
for f in $SPAM/*,S ; do<br />
if [ -f $f ] ; then<br />
echo $f ;<br />
$bogofilter -s -I $f<br />
fi<br />
done<br />
mv $SPAM/*,S $OLDSPAM/<br />
echo &#8220;Done.&#8221;</p>
<p>Le script suivant lancé périodiquement nous permettra de faire apprendre à bogofilter le  Ham</p>
<p>#!/bin/sh</p>
<p>if [ $UID -eq 0 ]; then<br />
echo &#8220;Lancement par les utilisateurs uniquement !&#8221; ;<br />
exit<br />
fi</p>
<p>if [ ! -d $1 ] || [ ! -d $2 ]<br />
then<br />
echo &#8220;Dossier manquant !&#8221; ;<br />
exit<br />
fi</p>
<p>HAM=$1<br />
OLDHAM=$2<br />
bogofilter=/usr/bin/bogofilter</p>
<p># Reconnaissance du ham<br />
echo &#8220;ANALYSE DU FAUX SPAM&#8221;<br />
for f in $HAM/* ; do<br />
if [ -f $f ] ; then<br />
echo $f;<br />
$bogofilter -n -I $f<br />
fi<br />
done<br />
mv $HAM/* $OLDHAM/<br />
echo &#8220;Done.&#8221;<br />
Ces scripts seront lancés par votre crontab grace aux lignes suivantes:</p>
<p>@daily  /usr/local/bin/bogoaddspam.sh ~/Maildir/.Spam/cur ~/Maildir/.Spam.Old/cur<br />
@daily /usr/local/bin/bogoaddham.sh ~/Maildir/.Ham/cur ~/Maildir/.Ham.Old/cur</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.unix-scripts.info/2006/04/17/bogofilter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
