<?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>Le blog de Michauko &#187; spam</title>
	<atom:link href="http://michauko.org/blog/tag/spam/feed/" rel="self" type="application/rss+xml" />
	<link>http://michauko.org/blog</link>
	<description>Si tu ne comprends pas le titre de l&#039;article, passe ton chemin</description>
	<lastBuildDate>Tue, 29 Nov 2011 11:45:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>spamassassin : rulesemporium est mort</title>
		<link>http://michauko.org/blog/2011/01/25/spamassassin-rulesemporium-est-mort/</link>
		<comments>http://michauko.org/blog/2011/01/25/spamassassin-rulesemporium-est-mort/#comments</comments>
		<pubDate>Tue, 25 Jan 2011 11:05:42 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[mails]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[anti-spam]]></category>
		<category><![CDATA[rulesemporium]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[spamassassin]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=1194</guid>
		<description><![CDATA[Hop, Je n&#8217;avais pas vu le truc avant qu&#8217;une mise à jour spamassassin me remonte une alerte, mais le site RulesEmporium a fermé. Plus d&#8217;activité, soit. Mais d&#8217;avoir supprimé le contenu, c&#8217;est dommage je trouve. Bon bref, toujours est-il que j&#8217;ai de nouveau un petit bout de l&#8217;outil de détection des textes &#171;&#160;cachés&#160;&#187; dans les [...]]]></description>
			<content:encoded><![CDATA[<p>Hop,<br />
Je n&#8217;avais pas vu le truc avant qu&#8217;une mise à jour spamassassin me remonte une alerte, mais le site RulesEmporium a fermé. Plus d&#8217;activité, soit. Mais d&#8217;avoir supprimé le contenu, c&#8217;est dommage je trouve.<br />
Bon bref, toujours est-il que j&#8217;ai de nouveau un petit bout de l&#8217;outil de détection des textes &laquo;&nbsp;cachés&nbsp;&raquo; dans les images (spam viagra &#038; co) qui ne fonctionne plus.<br />
D&#8217;ici à trouver quelque chose d&#8217;autre, je laisse en plan et je supprime simplement les quelques règles de détection impactées.<span id="more-1194"></span><br />
Le symptôme est le suivant, issu d&#8217;un <code>spamassassin --lint -D</code>, on obtient :</p>
<blockquote><p>
[30926] warn: rules: failed to run CG_FUJI_JPG test, skipping:<br />
[30926] warn:  (Can&#8217;t locate object method &laquo;&nbsp;image_name_regex&nbsp;&raquo; via package &laquo;&nbsp;Mail::SpamAssassin::PerMsgStatus&nbsp;&raquo; at (eval 1466) line 856.<br />
[30926] warn: )<br />
[30926] warn: rules: failed to run CG_DOUBLEDOT_GIF test, skipping:<br />
[30926] warn:  (Can&#8217;t locate object method &laquo;&nbsp;image_name_regex&nbsp;&raquo; via package &laquo;&nbsp;Mail::SpamAssassin::PerMsgStatus&nbsp;&raquo; at (eval 1466) line 986.<br />
[30926] warn: )<br />
[30926] warn: rules: failed to run CG_SONY_JPG test, skipping:<br />
[30926] warn:  (Can&#8217;t locate object method &laquo;&nbsp;image_name_regex&nbsp;&raquo; via package &laquo;&nbsp;Mail::SpamAssassin::PerMsgStatus&nbsp;&raquo; at (eval 1466) line 1602.<br />
[30926] warn: )<br />
[30926] warn: rules: failed to run CG_CANON_JPG test, skipping:<br />
[30926] warn:  (Can&#8217;t locate object method &laquo;&nbsp;image_name_regex&nbsp;&raquo; via package &laquo;&nbsp;Mail::SpamAssassin::PerMsgStatus&nbsp;&raquo; at (eval 1466) line 2704.<br />
[30926] warn: )
</p></blockquote>
<p>Je commente l&#8217;appel à ces règles dans <code>/etc/spamassassin/imageinfo.cf</code>.<br />
Et enfin je désactive la mise à jour via <code>sa-update</code>, en commentant mes lignes <code>/etc/spamassassin/channels.txt</code>.</p>
<p>A suivre.</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2011/01/25/spamassassin-rulesemporium-est-mort/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Séquence de greylisting</title>
		<link>http://michauko.org/blog/2009/08/27/sequence-de-greylisting/</link>
		<comments>http://michauko.org/blog/2009/08/27/sequence-de-greylisting/#comments</comments>
		<pubDate>Thu, 27 Aug 2009 14:35:09 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[mails]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[amavis]]></category>
		<category><![CDATA[clamav]]></category>
		<category><![CDATA[greylisting]]></category>
		<category><![CDATA[mail.info]]></category>
		<category><![CDATA[mail.log]]></category>
		<category><![CDATA[postfix]]></category>
		<category><![CDATA[postgrey]]></category>
		<category><![CDATA[rulesemporium]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[spamassassin]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/?p=581</guid>
		<description><![CDATA[Je suis en train de préparer une doc de mise en place sauce Debian de la fameuse chaîne complète de traitement de mails : postfix + postgrey + amavisd-new + spamassassin + RulesEmporium + clamav. (j&#8217;en oublie ? ) D&#8217;ici que la doc soit prête dans sa globalité, j&#8217;en profite pour zoomer sur le greylisting [...]]]></description>
			<content:encoded><![CDATA[<p>Je suis en train de préparer une doc de mise en place sauce Debian de la fameuse chaîne complète de traitement de mails : postfix + postgrey + amavisd-new + spamassassin + RulesEmporium + clamav. (j&#8217;en oublie ? <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> )<br />
D&#8217;ici que la doc soit prête dans sa globalité, j&#8217;en profite pour zoomer sur le greylisting (qui en gros, me divise en général par 10 les spams entrants sur un serveur donnée qui ne faisait pas de greylisting).<span id="more-581"></span></p>
<p>Pour ceux qui n&#8217;utiliseraient pas encore de greylisting pour limiter le nombre de spams en entrée de ses serveurs de mails, j&#8217;explique comment mettre en place <a href="http://michauko.org/docs/debian_testing/">dans ma doc Debian</a> et dans <a href="http://michauko.org/blog/tag/spam/">plusieurs articles sur ce blog</a>.</p>
<p>Voici donc une capture d&#8217;un échange dans <code>/var/log/mail.[info|log]</code> d&#8217;un serveur envoyant un mail à cette architecture postfix/postgrey. Vous pouvez l&#8217;imprimer et l&#8217;afficher au-dessus de votre lit, c&#8217;est joli.</p>
<h1>Rappel de la théorie</h1>
<p>Le greylisting demande à l&#8217;émetteur de renvoyer le mail plus tard, disons 5 minutes. C&#8217;est un comportement normal et possible d&#8217;un serveur SMTP. Si l&#8217;expéditeur est complètement bidon (un zombie par exemple), cette réponse n&#8217;arrive jamais. Le mail &#8211; qui est un spam ou venant d&#8217;un serveur configuré avec les pieds &#8211; ne reviendra jamais et n&#8217;ira donc pas plus loin que la porte d&#8217;entrée du serveur. Pas de traitement anti-spam, rien. Economie de charge CPU etc.<br />
Au bout de quelques mails effectivement reçus de la part de tel serveur, alors on le whiteliste car il semble au moins digne de confiance (je n&#8217;ai pas dit qu&#8217;il n&#8217;envoyait pas du spam). Attention au délai de réception pendant une journée ou 2.</p>
<h1>Let&#8217;s go</h1>
<h2>Prise de contact</h2>
<pre>Aug 27 15:51:05 mon_srv postfix/smtpd[17150]: connect from le.nouvel.expediteur.fr[10.20.30.40]
Aug 27 15:51:06 mon_srv postgrey[12790]: action=greylist, reason=new, client_name=le.nouvel.expediteur.fr, client_address=10.20.30.40, sender=exped@iteur.fr, recipient=destin@mon_srv.fr
Aug 27 15:51:06 mon_srv postgrey[12790]: cleaning up old logs...
Aug 27 15:51:06 mon_srv postfix/smtpd[17150]: NOQUEUE: reject: RCPT from le.nouvel.expediteur.fr[10.20.30.40]: 450 4.2.0 <exped@iteur.fr>: Sender address rejected: Greylisted, see http://postgrey.schweikert.ch/help/mon_srv.ovh.net.html; from=<exped@iteur.fr> to=<destin@mon_srv.fr> proto=ESMTP helo=<intern.srv.fr>
Aug 27 15:51:06 mon_srv postfix/smtpd[17150]: disconnect from le.nouvel.expediteur.fr[10.20.30.40]
</pre>
<p>On voit l&#8217;action de postgrey (<code>action=greylist</code>) au motif que ce serveur n&#8217;a pas encore été whitelisté (<code>reason=new</code>)<br />
Avant dernière ligne : on informe le serveur expéditeur qu&#8217;il est greylisté, on en profite pour expliquer à l&#8217;admin d&#8217;en face qui (peut-être) lit les logs ce qu&#8217;est le greylisting.<br />
Sous-entendu, on lui dit via le code retour 450 que la boite a un problème temporaire, sous-entendu, retente plus tard. Attention, on ne dit pas code 550 qui signifierait &laquo;&nbsp;la boite est morte définitivement&nbsp;&raquo;.</p>
<p>Maintenant on attend de voir s&#8217;il nous recontacte</p>
<h2>Il revient, mais trop tôt </h2>
<p>Une minute plus tard, on a :</p>
<pre>Aug 27 15:52:06 mon_srv postfix/smtpd[17150]: connect from le.nouvel.expediteur.fr[10.20.30.40]
Aug 27 15:52:06 mon_srv postgrey[12790]: action=greylist, reason=early-retry (239s missing), client_name=le.nouvel.expediteur.fr, client_address=10.20.30.40, sender=exped@iteur.fr, recipient=destin@mon_srv.fr
Aug 27 15:52:06 mon_srv postfix/smtpd[17150]: NOQUEUE: reject: RCPT from le.nouvel.expediteur.fr[10.20.30.40]: 450 4.2.0 <exped@iteur.fr>: Sender address rejected: Greylisted, see http://postgrey.schweikert.ch/help/mon_srv.ovh.net.html; from=<exped@iteur.fr> to=<destin@mon_srv.fr> proto=ESMTP helo=<intern.srv.fr>
Aug 27 15:52:06 mon_srv postfix/smtpd[17150]: disconnect from le.nouvel.expediteur.fr[10.20.30.40]
</pre>
<p>L&#8217;action est de le greylister à nouveau au motif qu&#8217;il est trop tôt (<code>reason=early-retry (239s missing)</code>). Le temps doit être donné dans la réponse d&#8217;indisponibilité temporaire mais ça ne se voit pas au niveau des logs).<br />
Et on le renvoit dans ses pénates.<br />
Le revoilà, mais encore trop tôt.< méchanceté gratuite>C&#8217;est un serveur Exchange, il ne doit rien comprendre à ce qu&#8217;on dit< /méchanceté gratuite>.</p>
<pre>Aug 27 15:53:06 mon_srv postfix/smtpd[17150]: connect from le.nouvel.expediteur.fr[10.20.30.40]
Aug 27 15:53:08 mon_srv postgrey[12790]: action=greylist, reason=early-retry (177s missing), client_name=le.nouvel.expediteur.fr, client_address=10.20.30.40, sender=exped@iteur.fr, recipient=destin@mon_srv.fr
Aug 27 15:53:08 mon_srv postfix/smtpd[17150]: NOQUEUE: reject: RCPT from le.nouvel.expediteur.fr[10.20.30.40]: 450 4.2.0 <exped@iteur.fr>: Sender address rejected: Greylisted, see http://postgrey.schweikert.ch/help/mon_srv.ovh.net.html; from=<exped@iteur.fr> to=<destin@mon_srv.fr> proto=ESMTP helo=<intern.srv.fr>
Aug 27 15:53:08 mon_srv postfix/smtpd[17150]: disconnect from le.nouvel.expediteur.fr[10.20.30.40]
</pre>
<h2>&#777;Trop c&#8217;est trop : anvil</h2>
<p>Maintenant, c&#8217;est simplement le processus &laquo;&nbsp;anvil&nbsp;&raquo; de postfix, le &laquo;&nbsp;contrôleur de nombre de sessions et taux de bourrinage&nbsp;&raquo; qui détecte que le serveur en face est un peu trop insistant (il vient trop souvent) :</p>
<pre>
Aug 27 15:56:28 mon_srv postfix/anvil[17153]: statistics: max connection rate 1/60s for (smtp:10.20.30.40) at Aug 27 15:51:05
Aug 27 15:56:28 mon_srv postfix/anvil[17153]: statistics: max connection count 1 for (smtp:10.20.30.40) at Aug 27 15:51:05
Aug 27 15:56:28 mon_srv postfix/anvil[17153]: statistics: max cache size 1 at Aug 27 15:51:05
</pre>
<p>On ferme carrément la connexion. Reviens plus tard on te dit.</p>
<h2>Là il est calmé</h2>
<pre>Aug 27 16:03:09 mon_srv postfix/smtpd[17159]: connect from le.nouvel.expediteur.fr[10.20.30.40]
Aug 27 16:03:09 mon_srv postgrey[12790]: action=pass, reason=triplet found, delay=724, client_name=le.nouvel.expediteur.fr, client_address=10.20.30.40, sender=exped@iteur.fr, recipient=destin@mon_srv.fr
</pre>
<p>J&#8217;accepte son mail comme on voit ci-dessous (<code>action=pass</code>) au motif qu&#8217;on l&#8217;a déjà bien embêté (<code>reason=triplet found</code>). Au final, il y a aura eu pour ce mail 724 secondes de délai. Rappelez-vous que ça peut être gênant lors d&#8217;une mise en place sur un serveur déjà en prod.</p>
<p>La suite est l&#8217;enchaînement logique postfix :</p>
<pre>Aug 27 16:03:09 mon_srv postfix/smtpd[17159]: 1E6B29C4057: client=le.nouvel.expediteur.fr[10.20.30.40]
Aug 27 16:03:09 mon_srv postfix/cleanup[17164]: 1E6B29C4057: message-id=<8DDA8A0D37FFCE449E93D51188CDBE5BEDA572@intern.srv.fr>
Aug 27 16:03:09 mon_srv postfix/qmgr[15006]: 1E6B29C4057: from=<exped@iteur.fr>, size=6905, nrcpt=1 (queue active)
Aug 27 16:03:09 mon_srv postfix/smtpd[17159]: disconnect from le.nouvel.expediteur.fr[10.20.30.40]
</pre>
<p>On arrive dans amavisd-new :</p>
<pre>Aug 27 16:03:09 mon_srv amavis[17143]: (17143-01) (!!)run_av (ClamAV-clamd) FAILED - unexpected , output="/var/lib/amavis/tmp/amavis-20090827T160309-17143/parts: lstat() failed: Permission denied. ERROR\n"
Aug 27 16:03:09 mon_srv amavis[17143]: (17143-01) (!!)ClamAV-clamd av-scanner FAILED: CODE(0x90a9148) unexpected , output="/var/lib/amavis/tmp/amavis-20090827T160309-17143/parts: lstat() failed: Permission denied. ERROR\n" at (eval 86) line 527.
Aug 27 16:03:09 mon_srv amavis[17143]: (17143-01) (!!)WARN: all primary virus scanners failed, considering backups
</pre>
<p>Aaaaah, ça foire (normal j&#8217;ai juste installé clamav, il est détecté par amavis, mais je n&#8217;ai rien configuré. Je dois avoir un problème de droits/groupes, ce genre-là. On verra dans mon prochain article qui décrira toute la mise en place.</p>
<pre>
Aug 27 16:03:10 mon_srv postfix/smtpd[17169]: connect from localhost.localdomain[127.0.0.1]
Aug 27 16:03:10 mon_srv postfix/smtpd[17169]: C2A8D9C405B: client=localhost.localdomain[127.0.0.1]
Aug 27 16:03:10 mon_srv postfix/cleanup[17164]: C2A8D9C405B: message-id=<8DDA8A0D37FFCE449E93D51188CDBE5BEDA572@intern.srv.fr>
Aug 27 16:03:10 mon_srv postfix/qmgr[15006]: C2A8D9C405B: from=<exped@iteur.fr>, size=7349, nrcpt=1 (queue active)
Aug 27 16:03:10 mon_srv amavis[17143]: (17143-01) Passed CLEAN, [10.20.30.40] [10.20.30.40] <exped@iteur.fr> -> <exped@iteur.fr>, Message-ID: <8DDA8A0D37FFCE449E93D51188CDBE5BEDA572@intern.srv.fr>, mail_id: xmX0C24kDlYt, Hits: -, size: 6905, queued_as: C2A8D9C405B, 1764 ms
Aug 27 16:03:10 mon_srv postfix/smtp[17165]: 1E6B29C4057: to=<exped@iteur.fr>, orig_to=<destin@mon_srv.fr>, relay=127.0.0.1[127.0.0.1]:10024, delay=1.9, delays=0.11/0/0/1.8, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=17143-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as C2A8D9C405B)
Aug 27 16:03:10 mon_srv postfix/qmgr[15006]: 1E6B29C4057: removed
</pre>
<p>Ci-dessus on a le baratin standard d&#8217;un amavis sans clamav (avec son anti-virus interne) qui finit par accepter le mail et le délivrer.</p>
<p>Voilà, c&#8217;est beau, on dirait du Rimbaud.</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2009/08/27/sequence-de-greylisting/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>spamassassin : RulesDuJour vs sa-update</title>
		<link>http://michauko.org/blog/2008/03/20/rulesdujour-vs-spamassassin/</link>
		<comments>http://michauko.org/blog/2008/03/20/rulesdujour-vs-spamassassin/#comments</comments>
		<pubDate>Thu, 20 Mar 2008 14:07:03 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[mails]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[dostech]]></category>
		<category><![CDATA[rulesdujour]]></category>
		<category><![CDATA[sa-update]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[spamassassin]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/2008/03/20/rulesdujour-vs-spamassassin/</guid>
		<description><![CDATA[Si vous utilis[i]ez &#171;&#160;RulesDuJour&#160;&#187; pour mettre à jour les règles spamassassin de &#171;&#160;Rules Emporium&#171;&#160;&#8230;. quoi ? comment ça qu&#8217;est-ce que je raconte ? Lisez le chapitre qui va bien dans ma doc !! Vous n&#8217;utilisez pas les règles SARE ? mais vous le triez comment votre spam ?! Bon, je reprends. Depuis quelques semaines (mois [...]]]></description>
			<content:encoded><![CDATA[<p>Si vous utilis[i]ez &laquo;&nbsp;RulesDuJour&nbsp;&raquo; pour mettre à jour les règles spamassassin de &laquo;&nbsp;<a href="http://www.rulesemporium.com/" class="broken_link">Rules Emporium</a>&laquo;&nbsp;&#8230;. quoi ? comment ça qu&#8217;est-ce que je raconte ? Lisez le <a href="http://michauko.org/docs/debian_testing/">chapitre qui va bien dans ma doc</a> !! Vous n&#8217;utilisez pas les règles SARE ? mais vous le triez comment votre spam ?! <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
Bon, je reprends.</p>
<p>Depuis quelques semaines (mois ?), le programme RulesDuJour végétait. Il n&#8217;y a eu aucune communication sur le sujet à part 2/3 infos éparses dans des mailing-lists. J&#8217;ai pris le temps de chercher et poser les questions.<br />
Maintenant, je peux affirmer que RulesDuJour n&#8217;est plus supporté (mais fonctionne encore à peu près) et un type du projet spamassassin a monté un serveur permettant de mettre à jour les règles SARE depuis l&#8217;outil normal de mise à jour de spamassassin, à savoir <code>sa-update</code>.</p>
<p>Le principe pour configurer sa-update afin qu&#8217;il aille chercher vos règles SARE est le suivant :<br />
1) Vous supprimez votre &laquo;&nbsp;RulesDuJour&nbsp;&raquo; quotidien de votre crontab.<br />
2) Gardez quelque part la liste des règles que vous utilisez (noms des fichiers).<br />
3) Supprimez les règles type <code>/etc/spamassassin/7*cf</code> et le répertoire où vous stockiez RulesDuJour.<br />
4) Ensuite, créez un fichier /etc/spamassassin/channels.txt contenant :</p>
<pre>updates.spamassassin.org
70_sare_adult.cf.sare.sa-update.dostech.net
70_sare_bayes_poison_nxm.cf.sare.sa-update.dostech.net
70_sare_evilnum0.cf.sare.sa-update.dostech.net
70_sare_evilnum1.cf.sare.sa-update.dostech.net
autre.regle.de.SARE.cf.sare.sa-update.dostech.net
...</pre>
<p>et vos autres règles type blabla.cf en suffixant par <code>.sare.sa-update.dostech.net</code>. Vous comprenez le principe ? le serveur dostech s&#8217;attend à recevoir des demandes &laquo;&nbsp;au format sa-update&nbsp;&raquo; et grâce à des noms de machines bidons indiquant en fait le nom du fichier correspondant à la règle que vous cherchez, sa-update trouve son bonheur.<br />
Ne pas oublier la 1ère ligne des updates &laquo;&nbsp;normaux&nbsp;&raquo; de spamassassin.</p>
<p>Ensuite, vous planifiez une fois par jour le job suivant :</p>
<pre>sa-update --allowplugins --channelfile /etc/spamassassin/channels.txt --nogpg /usr/local/bin/sa-compile &#038;&#038; /etc/init.d/spamassassin reload</pre>
<p>Notez qu&#8217;il y a déjà dans votre <code>/etc/cron.daily</code> un update spamassassin. Faut-il le modifier ? bof, c&#8217;est de la conf standard, c&#8217;est un coup à ce que ça saute au prochain update/upgrade.<br />
La deuxième partie de la commande (<code>&#038;&#038; /etc/init.d/spamassassin reload</code>) n&#8217;est utile que si votre spamassassin tourne en tant que &laquo;&nbsp;daemon&nbsp;&raquo;.</p>
<p>Les nouvelles règles téléchargées iront s&#8217;installer dans <code>/var/lib/spamassassin/3.002003</code>.</p>
<p>Astuce of ze day pour générer sans peine (et sans faute de frappe) le fichier channels.txt. En considérant que vos règles SARE actuelles sont dans /etc/spamassassin et se nomment toutes <code>7*cf</code>, tapez donc ça :</p>
<pre>cat updates.spamassassin.org > /etc/spamassassin/channels.txt
for i in 7*cf
do
echo $i.sare.sa-update.dostech.net >> /etc/spamassassin/channels.txt
done</pre>
<p>Voilà. Forcez le premier lancement à la main et contrôlez le contenu du répertoire <code>/var/lib/spamassassin/3.002003</code> et la présence du daemon spamassassin (si vous l&#8217;utilisez en &laquo;&nbsp;daemon&nbsp;&raquo;).</p>
<p>La &laquo;&nbsp;doc&nbsp;&raquo; qui fait foi est ici : <a href="http://daryl.dostech.ca/sa-update/sare/sare-sa-update-howto.txt">http://daryl.dostech.ca/sa-update/sare/sare-sa-update-howto.txt</a></p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2008/03/20/rulesdujour-vs-spamassassin/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Statistiques de greylisting</title>
		<link>http://michauko.org/blog/2008/03/05/statistiques-de-greylisting/</link>
		<comments>http://michauko.org/blog/2008/03/05/statistiques-de-greylisting/#comments</comments>
		<pubDate>Wed, 05 Mar 2008 15:42:54 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[mails]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[backup MX]]></category>
		<category><![CDATA[blacklist]]></category>
		<category><![CDATA[greylist]]></category>
		<category><![CDATA[greylisting]]></category>
		<category><![CDATA[postfix]]></category>
		<category><![CDATA[postgrey]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[statistiques]]></category>
		<category><![CDATA[stats]]></category>
		<category><![CDATA[whitelist]]></category>
		<category><![CDATA[zombie]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/2008/03/05/statistiques-de-greylisting/</guid>
		<description><![CDATA[Pour ceux qui ne connaissent pas, le &#171;&#160;Greylisting&#160;&#187; est un mécanisme utile et extrêmement simple à mettre en oeuvre pour réduire significativement le nombre de spams en entrée des serveurs de mails, sans même avoir besoin de les analyser. En gros, vous pouvez diviser par 10 vos mails entrants et le boulot de votre spamassassin, [...]]]></description>
			<content:encoded><![CDATA[<p>Pour ceux qui ne connaissent pas, le &laquo;&nbsp;Greylisting&nbsp;&raquo; est un mécanisme utile et extrêmement simple à mettre en oeuvre pour réduire significativement le nombre de spams en entrée des serveurs de mails, sans même avoir besoin de les analyser. En gros, vous pouvez diviser par 10 vos mails entrants et le boulot de votre spamassassin, du coup.<br />
Magique ? non, logique.<br />
Je vous propose dans cet article un résultat chiffré sur une installation comptant un backup MX, un frontal (qui encaisse les tentatives d&#8217;abus etc + analyse virus) relayant enfin à un serveur final (backend) faisant tourner un bon gros spamassassin/SARE des familles avant la distribution du courrier. Le tout pour desservir 150 utilisateurs et/ou boîtes mails environ (sans compter des vieux comptent qui n&#8217;existent plus et que les spammeurs doivent avoir encore &laquo;&nbsp;en tête&nbsp;&raquo;).<br />
La mise en place du greylisting pour postfix est détaillée dans <a href="http://michauko.org/docs/debian_testing/">ma doc</a>, il ne manque qu&#8217;une indication : démarrer le service postgrey après installation <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> <span id="more-107"></span></p>
<h3>Informations en préambule</h3>
<p>Les impacts pour l&#8217;utilisateur sont minimes : délai d&#8217;environ 30 minutes (en théorie 5 minutes) lors des x (x = 5 par défaut) premiers échanges entrants avec un serveur donné. L&#8217;article <a href="http://en.wikipedia.org/wiki/Greylisting">anglais sur wikipedia</a> se veut un peu plus méfiant que sa <a href="http://fr.wikipedia.org/wiki/Greylisting">traduction minimaliste en français</a>. A vous de voir. L&#8217;autre risque serait de se retrouver face à un vieux serveur de mails tout pourri qui implémente mal le protocole&#8230; boarf, je doute que ça arrive dans la pratique. Au pire l&#8217;utilisateur verra le problème et il sera temps de whitelister ledit serveur.</p>
<h3>Principe</h3>
<p>Le principe  &#8211; je vous renvois à l&#8217;article wikipedia pour plus de détails &#8211; est d&#8217;utiliser <strong>une fonction standard du procotole SMTP</strong> pour redemander l&#8217;envoi d&#8217;un mail lorsqu&#8217;on le reçoit. On indique au serveur de renvoyer le message dans 5 minutes. Deux options : le serveur en face le fait, ou non. Au bout de x fois &#8211; si le serveur s&#8217;est bien comporté &#8211; on le &laquo;&nbsp;whiteliste&nbsp;&raquo; pour de bon et il n&#8217;y aura plus de délai pour celui-ci.</p>
<h3>Quel lien avec les spammeurs ?</h3>
<p>Imaginez une armée de PC <s>(windows)</s> zombies envoyant des mails à tout va (à l&#8217;insu de l&#8217;utilisateur, forcément). Le zombie utilise un programme le plus simple possible qui se contente d&#8217;envoyer la purée. De toute manière, un PC zombie comme de ce type n&#8217;a en général pas de lien retour possible vers lui même sur le port 25 (pensez à votre PC derrière un routeur genre freebox). Donc il ne recevra jamais votre demande standard de renvoi de mails. Et donc vous n&#8217;aurez jamais le mail, qui était un spam à coup sûr. CQFD.<br />
Lisez plus bas dans l&#8217;article quelques extraits d&#8217;adresses &laquo;&nbsp;greylistées&nbsp;&raquo;, vous comprendrez que des zombies, il y en a des millions sur la planète&#8230; que fait Buffy ???<br />
Reste ensuite les *vrais* spammeurs. Je ne sais pas dire si beaucoup d&#8217;entre eux utilisent des serveurs standard de mails. Ceux qui n&#8217;ont pas prévu le coup en tout cas, ils passent aussi à la benne. Les autres, je ne sais pas s&#8217;ils perdent du temps à renvoyer la purée alors que des gens mal protégés, il y en a tant d&#8217;autres&#8230;<br />
Alors, en attendant que les zombies prennent en charge correctement le protocole et fasse des contournements réseaux compliqués (impossible ?), le greylisting peut vous aider.</p>
<h3>Léger pré-requis sur les backups MX</h3>
<p>Dernière petite remarque en préambule : il faut que tous vos serveurs frontaux (donc les backups MX) implémentent le greylisting !!! Donc oubliez les backups gracieusement offerts par votre fournisseur/hébergeur etc. En général ils ne le font pas. Si vous avez un tel backup MX &#8211; par pseudo-sécurité &#8211; il est en général déclaré de faible priorité et c&#8217;est justement celui qui est d&#8217;abord visé par les envois de spammeurs car on n&#8217;a moins souvent la main dessus. S&#8217;il ne greyliste pas, alors il enverra tout à votre MX principal qui acceptera sans broncher. Le greylisting ne servira pas à grand chose dans ce cas.<br />
(Tiens, ça me fait penser à une technique qui consiste à utiliser un serveur inexistant comme MX de plus faible priorité. Faudra que je teste ça un jour. Si quelqu&#8217;un a un retour, je suis preneur)</p>
<h3>Graphiques après plusieurs semaines d&#8217;utilisation</h3>
<p>Plutôt qu&#8217;un long discours, quelques dessins. Je vous laisse deviner la date de mise en place&#8230;</p>
<p>Sur le frontal (MX primaire) :<br />
<a href='http://michauko.org/blog/wp-content/uploads/2008/03/grey1.png' title='Greylisting sur le frontal'><img src='http://michauko.org/blog/wp-content/uploads/2008/03/grey1.png' alt='Greylisting sur le frontal' /></a></p>
<p>Et sur le backend (qui identifie les spams une fois le mail accepté) :<br />
<a href='http://michauko.org/blog/wp-content/uploads/2008/03/grey2.png' title='Greylisting sur le backend'><img src='http://michauko.org/blog/wp-content/uploads/2008/03/grey2.png' alt='Greylisting sur le backend' /></a></p>
<h3>En chiffres</h3>
<p>Avec quelques chiffres moyens pris avant et après le greylisting (ceux sur le graphe sont pris &laquo;&nbsp;pendant&nbsp;&raquo; la mise en place, donc une moyenne d&#8217;avant/après, pas terrible), ça donne ça :<br />
- Sur le frontal, avant, on recevait environ 9,5 msg/min et on rejetait 1/3 (tentatives d&#8217;openrelay, destinataires bidon etc). Maintenant, on en reçoit 3,2 par minute, toujours 1/3 de rejet pour les mêmes motifs.<br />
- Sur le backend du coup, il y a une sacrée chute d&#8217;occupation CPU par &laquo;&nbsp;spamd&nbsp;&raquo; et on identifie 0,6 msg/min contre 6 par minute avant (même taux de faux-positifs ou d&#8217;oubli, à savoir presque nul).<br />
- En une semaine, ce ne sont pas moins de 137000 &laquo;&nbsp;serveurs&nbsp;&raquo; (zombies) qui ont été greylistés, avec des charmants noms comme :</p>
<pre>         0x50a1511f.hknxx3.adsl-dhcp.tele.dk[80.161.81.31] 2 Time(s)
         0x50a403bf.abnxx10.adsl-dhcp.tele.dk[80.164.3.191] 2 Time(s)
         103.95.119-80.rev.gaoland.net[80.119.95.103] 4 Time(s)
         12-208-209-2.client.mchsi.com[12.208.209.2] 2 Time(s)
         12-219-39-94.client.mchsi.com[12.219.39.94] 2 Time(s)
         124-171-184-145.dyn.iinet.net.au[124.171.184.145] 2 Time(s)
         129-28-235-201.fibertel.com.ar[201.235.28.129] 2 Time(s)
         131.201.218.87.dynamic.jazztel.es[87.218.201.131] 2 Time(s)
         131.206.50.60.cbj04-home.tm.net.my[60.50.206.131] 2 Time(s)
         1434933186.ip2long.net[85.135.87.194] 2 Time(s)
         149.pool85-49-8.dynamic.orange.es[85.49.8.149] 2 Time(s)
         1503021874.dhcp.dbnet.dk[89.150.75.50] 4 Time(s)
         152-60.go.evo.bg[85.217.152.60] 2 Time(s)
         156-90-99-58-T-tdtv.tinp.net.tw[58.99.90.156] 2 Time(s)
         167-68-246-201.adsl.terra.cl[201.246.68.167] 2 Time(s)
         168-226-244-166.mrse.com.ar[168.226.244.166] 2 Time(s)
...
         adsl-67-114-84-118.dsl.lsan03.pacbell.net[67.114.84.118] 2 Time(s)
         adsl-68-23-4-190.dsl.ipltin.ameritech.net[68.23.4.190] 2 Time(s)
         adsl-69-209-147-42.dsl.sfldmi.ameritech.net[69.209.147.42] 2 Time(s)
         adsl-69-209-154-96.dsl.sfldmi.ameritech.net[69.209.154.96] 2 Time(s)
...
         host234-234-static.116-81-b.business.telecomitalia.it[81.116.234.234] 2 Time(s)
         host241-167-dynamic.19-79-r.retail.telecomitalia.it[79.19.167.241] 2 Time(s)
         host246-209-dynamic.15-87-r.retail.telecomitalia.it[87.15.209.246] 2 Time(s)
         host248-13-dynamic.1-87-r.retail.telecomitalia.it[87.1.13.248] 2 Time(s)
...
         pool-71-241-246-243.washdc.fios.verizon.net[71.241.246.243] 2 Time(s)
         pool-71-244-163-181.chi01.dsl-w.verizon.net[71.244.163.181] 2 Time(s)
         pool-71-246-128-243.aubnin.fios.verizon.net[71.246.128.243] 2 Time(s)
         pool-71-251-115-130.tampfl.fios.verizon.net[71.251.115.130] 2 Time(s)
         pool-71-251-140-235.cmdnnj.east.verizon.net[71.251.140.235] 2 Time(s)
         pool-71-252-137-81.dllstx.fios.verizon.net[71.252.137.81] 2 Time(s)
         pool-71-99-87-26.tampfl.dsl-w.verizon.net[71.99.87.26] 6 Time(s)
...
         ppp83-237-30-117.pppoe.mtu-net.ru[83.237.30.117] 2 Time(s)
         ppp85-140-146-212.pppoe.mtu-net.ru[85.140.146.212] 2 Time(s)
         ppp85-140-21-109.pppoe.mtu-net.ru[85.140.21.109] 2 Time(s)
         ppp85-140-43-193.pppoe.mtu-net.ru[85.140.43.193] 2 Time(s)
         ppp85-141-174-160.pppoe.mtu-net.ru[85.141.174.160] 4 Time(s)
...
         unknown[116.22.163.196] 6 Time(s)
         unknown[116.45.106.170] 2 Time(s)
         unknown[117.12.65.40] 4 Time(s)
...

- </pre>
<h3>Conclusion</h3>
<p>N&#8217;hésitez pas, apt-get install postgrey, modif du fichier main.cf et reload de postfix. Ca prend 3 minutes et ça envoi du gros !</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2008/03/05/statistiques-de-greylisting/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Spamassassin : se créer une règle de détection spécifique</title>
		<link>http://michauko.org/blog/2008/01/25/spamassassin-se-creer-une-regle-de-detection-specifique/</link>
		<comments>http://michauko.org/blog/2008/01/25/spamassassin-se-creer-une-regle-de-detection-specifique/#comments</comments>
		<pubDate>Fri, 25 Jan 2008 16:36:40 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[mails]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[anti-spam]]></category>
		<category><![CDATA[gaoland.net]]></category>
		<category><![CDATA[règle]]></category>
		<category><![CDATA[rule]]></category>
		<category><![CDATA[rulesemporium]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[spamassassin]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/2008/01/25/spamassassin-se-creer-une-regle-de-detection-specifique/</guid>
		<description><![CDATA[Malgré des règles assez sympathiques (voyez ma doc Debian (encore ? oui oui) pour les mettre en place), il arrive que certains spams ne soient pas reconnus. Si vous avez envie d&#8217;écrire une règle hyper compliquée ou simplement une petite règle car vous avez détecté qu&#8217;un serveur relai bien moisi était à l&#8217;origine de cela, [...]]]></description>
			<content:encoded><![CDATA[<p>Malgré des règles <a href="http://www.rulesemporium.com" class="broken_link">assez sympathiques</a> (voyez <a href="http://michauko.org/docs/debian_testing/">ma doc Debian</a> (encore ? oui oui) pour les mettre en place), il arrive que certains spams ne soient pas reconnus. Si vous avez envie d&#8217;écrire une règle hyper compliquée ou simplement une petite règle car vous avez détecté qu&#8217;un serveur relai bien moisi était à l&#8217;origine de cela, voici une mini-introduction pour le faire.<span id="more-103"></span></p>
<p>Tout d&#8217;abord, lisez la doc officielle de <a href="http://wiki.apache.org/spamassassin/WritingRules">SpamAssassin sur le sujet</a>, c&#8217;est la bible. Ensuite, voici un cas simple, concret, basé sur un <em>header</em> particulier, le champ <code>"Received"</code>. Je cherche à voir si le mail spammeux non détecté est passé par le serveur &laquo;&nbsp;gaoland.net&nbsp;&raquo;, apparement un &laquo;&nbsp;problème connu&nbsp;&raquo; (voyez sur Google).</p>
<p>J&#8217;ai donc créé un fichier <code>/etc/spamassassin/mes_regles.cf</code> contenant :</p>
<pre>header   PERSO_GAOLAND Received =~ /gaoland\.net/i
describe PERSO_GAOLAND Relaye par gaoland.net, on soupçonne fortement
score    PERSO_GAOLAND 4.0</pre>
<p>J&#8217;ai simplement fait ajouter 4 points car ce spam non reconnu marquait déjà 4.5 ou 4.9 &#8211; je ne sais plus &#8211; pour motif &laquo;&nbsp;Bayesian spam probability is 99 to 100%&nbsp;&raquo;, mon seuil de détection étant à 5.</p>
<p>Pour faire un test de votre configuration, vous pouvez vous créer une règle de ce genre :</p>
<pre>body     MESREGLES_TEST   /je teste mon spam/
score    MESREGLES_TEST   5.1</pre>
<p>&#8230;et vous envoyer un e-mail depuis une adresse non <em>whitelistée</em> (oui oui j&#8217;ai fait cette erreur <img src='http://michauko.org/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  contenant dans le corps du message (BODY) la phrase &laquo;&nbsp;je teste mon spam&nbsp;&raquo;. Vous devriez alors voir un joli :</p>
<pre>Spam detection software, running on the system "monserveur.com", has
identified this incoming email as possible spam.  The original message
has been attached to this so you can view it (if it isn't spam) or label
similar future email.  If you have any questions, see
the administrator of that system for details.

Content preview:  bliblablo je teste mon spam blabslqj [...] 

Content analysis details:   (5.1 points, 5.0 required)

 pts rule name              description
---- ---------------------- --------------------------------------------------
 5.1 MESREGLES_TEST             BODY: MESREGLES_TEST
 0.0 BAYES_50               BODY: Bayesian spam probability is 40 to 60%
                            [score: 0.4978]
 0.0 AWL                    AWL: From: address is in the auto white-list</pre>
<p>Et voilou</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2008/01/25/spamassassin-se-creer-une-regle-de-detection-specifique/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>spamassassin 3.2 et ImageInfo</title>
		<link>http://michauko.org/blog/2007/12/18/spamassassin-32-et-imageinfo/</link>
		<comments>http://michauko.org/blog/2007/12/18/spamassassin-32-et-imageinfo/#comments</comments>
		<pubDate>Tue, 18 Dec 2007 14:13:06 +0000</pubDate>
		<dc:creator>michauko</dc:creator>
				<category><![CDATA[bugs]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[mails]]></category>
		<category><![CDATA[planet-libre.org]]></category>
		<category><![CDATA[anti-spam]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[rulesemporium]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[spamassassin]]></category>

		<guid isPermaLink="false">http://michauko.org/blog/2007/12/18/spamassassin-32-et-imageinfo/</guid>
		<description><![CDATA[Récemment, je suis passé d&#8217;un spamassassin 3.1 (issu d&#8217;une stable) à une version 3.2 (mixé depuis une testing). J&#8217;avais déjà installé le plug-in &#171;&#160;ImageInfo&#160;&#187; pour la détection des images &#171;&#160;spammeuses&#160;&#187; dans les mails. L&#8217;upgrade en spamassassin 3.2 a posé problème. Il y a un peu de littérature sur le sujet. Je consigne ici les symptomes [...]]]></description>
			<content:encoded><![CDATA[<p>Récemment, je suis passé d&#8217;un spamassassin 3.1 (issu d&#8217;une stable) à une version 3.2 (mixé depuis une testing). J&#8217;avais déjà installé le plug-in &laquo;&nbsp;ImageInfo&nbsp;&raquo; pour la détection des images &laquo;&nbsp;spammeuses&nbsp;&raquo; dans les mails. L&#8217;upgrade en spamassassin 3.2 a posé problème. Il y a un peu de <a href="http://www.google.fr/search?q=imageinfo+spamassassin+image_name_regex&#038;ie=utf-8&#038;oe=utf-8&#038;aq=t&#038;rls=org.mozilla:en-US:official&#038;client=firefox-a">littérature sur le sujet</a>. Je consigne ici les symptomes de ce problème et la sa résolution<span id="more-91"></span></p>
<p>En fait, spamassassin 3.2 est packagé avec un mauvais module Perl ImageInfo, faisant appel à une méthode qui fait tout vautrer, l&#8217;erreur typique en lançant <code>spamassassin --lint -D</code> est ça :</p>
<pre>[16752] warn: rules: failed to run CG_FUJI_JPG test, skipping:
[16752] warn:  (Can't locate object method "image_name_regex" via package "Mail::SpamAssassin::PerMsgStatus" at (eval 1274) line 819.
[16752] warn: )
[16752] warn: rules: failed to run CG_DOUBLEDOT_GIF test, skipping:
[16752] warn:  (Can't locate object method "image_name_regex" via package "Mail::SpamAssassin::PerMsgStatus" at (eval 1274) line 964.
[16752] warn: )
[16752] warn: rules: failed to run CG_SONY_JPG test, skipping:
[16752] warn:  (Can't locate object method "image_name_regex" via package "Mail::SpamAssassin::PerMsgStatus" at (eval 1274) line 1534.
[16752] warn: )
[16752] warn: rules: failed to run CG_CANON_JPG test, skipping:
[16752] warn:  (Can't locate object method "image_name_regex" via package "Mail::SpamAssassin::PerMsgStatus" at (eval 1274) line 2554.
[16752] warn: )</pre>
<p>Il faut donc simplement redescendre le bon <a href="http://www.rulesemporium.com/plugins.htm" class="broken_link">ImageInfo.pm et imageinfo.cf</a> respectivement dans <code>/usr/share/perl5/Mail/SpamAssassin/Plugin</code> et dans <code>/etc/spamassassin</code>. Hop, c&#8217;est réglé.</p>
<p>Note : si vous avez installé les règles de <a href="http://www.rulesemporium.com/" class="broken_link">SARE</a> après SpamAssassin 3.2, vous n&#8217;avez pas constaté le bug, forcément.</p>
]]></content:encoded>
			<wfw:commentRss>http://michauko.org/blog/2007/12/18/spamassassin-32-et-imageinfo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

