<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Artisan Numérique</title>
  <link rel="alternate" type="text/html" href="http://artisan.karma-lab.net/node/79"/>
  <link rel="self" type="application/atom+xml" href="http://artisan.karma-lab.net/node/79/atom/feed"/>
  <id>http://artisan.karma-lab.net/node/79/atom/feed</id>
  <updated>2007-10-14T17:52:30+02:00</updated>
  <entry>
    <title>Connecter SpamAssassin à Postfix</title>
    <link rel="alternate" type="text/html" href="http://artisan.karma-lab.net/node/79" />
    <id>http://artisan.karma-lab.net/node/79</id>
    <published>2006-03-28T12:54:45+02:00</published>
    <updated>2007-10-14T17:52:30+02:00</updated>
    <author>
      <name>Ulhume</name>
    </author>
    <category term="Serveurs" />
    <category term="Aucun" />
    <category term="OK" />
    <category term="Tutoriel" />
    <summary type="html"><![CDATA[<p>Dans ce petit tutorial nous allons chercher à installer et paramétrer spamassassin en mode démon (spamd). Ensuite nous allons le connecter à postfix pour tagger automatiquement les pourriels.</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>Dans ce petit tutorial nous allons chercher à installer et paramétrer spamassassin en mode démon (spamd). Ensuite nous allons le connecter à postfix pour tagger automatiquement les pourriels.</p>
<!--break-->

<p>
  Tout d'abord il faut installer les paquets suivants :
  
  <div class='code-block code-block-fragment'>
  <div class='container'>
  urpmi spamassassin<br />
urpmi spamassassin-spamc<br />
urpmi spamassassin-spamd<br />
urpmi dcc
  </div>
  
  </div>
</p>
<p>
  <kbd>spamc</kbd> est un filtre d'email client/server qui fonctionne avec le démon <kbd>spamd</kbd>. 
</p>


	<a name='chapter_1'></a>
  <h2>Paramétrage de spamd/spamassasin</h2>
	
<p>
  Spamassassin a ses fichiers de paramétrages placés en <kbd>/etc/mail/spamassasin</kbd>. Ce dossier contient entre autre <kbd>/etc/mail/spamassasin/local.cf</kbd> qui définit le paramétrage de spamassassin. Vous pouvez le modifier comme suit
  
  <div class='code-block code-block-fragment'>
  <div class='container'>
  dns_available &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a target="blank" href="http://pwet.fr/man/linux/commandes/yes"><span class="kw2">yes</span></a><br />
<br />
<span class="co0"># Activation du systeme Bayes</span><br />
use_bayes &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="nu0">1</span><br />
bayes_auto_learn &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="nu0">1</span><br />
bayes_learn_to_journal &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="nu0">1</span><br />
bayes_journal_max_size &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="nu0">0</span><br />
bayes_path &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">/</span>storage<span class="sy0">/</span>databases<span class="sy0">/</span>spamassassin<span class="sy0">/</span>bayes<br />
<br />
<span class="co0"># Activation de l'auto whitelist</span><br />
use_auto_whitelist &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="nu0">1</span><br />
auto_whitelist_path &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">/</span>storage<span class="sy0">/</span>databases<span class="sy0">/</span>spamassassin<span class="sy0">/</span>auto-whitelist<br />
auto_whitelist_file_mode &nbsp; &nbsp; &nbsp; &nbsp;<span class="nu0">0666</span><br />
<br />
<span class="co0"># Activation de DCC</span><br />
use_dcc &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="nu0">1</span><br />
dcc_timeout &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="nu0">8</span><br />
dcc_home &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">/</span>storage<span class="sy0">/</span>databases<span class="sy0">/</span>spamassassin<span class="sy0">/</span>dcc<br />
<br />
<span class="co0"># Activation de Pyzor</span><br />
use_pyzor &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="nu0">1</span><br />
<br />
<span class="co0"># Activatin de Razor</span><br />
use_razor2 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="nu0">1</span><br />
razor_timeout &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="nu0">8</span><br />
<br />
<span class="co0"># Optimisation des scores</span><br />
score DCC_CHECK <span class="nu0">4.500</span><br />
score SPF_FAIL <span class="nu0">10.000</span><br />
score SPF_HELO_FAIL <span class="nu0">10.000</span><br />
score RAZOR2_CHECK <span class="nu0">2.500</span><br />
score RAZOR2_CF_RANGE_51_100 <span class="nu0">3.500</span><br />
score BAYES_99 <span class="nu0">5.300</span><br />
score BAYES_95 <span class="nu0">4.500</span><br />
score BAYES_80 <span class="nu0">3.500</span><br />
score BAYES_60 <span class="nu0">2.500</span><br />
score BAYES_50 <span class="nu0">2.000</span><br />
<br />
<span class="co0"># Langages</span><br />
ok_languages &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;en fr vi<br />
ok_locales &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;en<br />
<br />
<span class="co0">#required_hits &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;5</span><br />
<br />
<span class="co0">#add_header all Report _REPORT_</span><br />
header Subject &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">/</span>SPAM<span class="sy0">/</span><br />
report_safe &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="nu0">1</span>
  </div>
  
  </div>
</p>

<p>
  La version 3 de spamassassin fonctionne par plugins. Il y en a deux qui nous intéresse d'activer par rapport à notre configuration : dcc et textcat. Le premier va utiliser une base de données de spam, le second permet de deviner le langage d'un spam. Pour cela nous devons éditer le fichier <kbd>/etc/mail/spamassassin/v310.pre</kbd> pour décommenter les deux lignes suivante :
  
  <div class='code-block code-block-fragment'>
  <div class='container'>
  loadplugin Mail::SpamAssassin::Plugin::DCC<br />
<br />
<span class="br0">&#40;</span>...<span class="br0">&#41;</span><br />
loadplugin Mail::SpamAssassin::Plugin::TextCat &nbsp; &nbsp;
  </div>
  
  </div>
</p>
<p>
  Nous allons créer un utilisateur <kbd>spamassasin</kbd> qui va avoir comme dossier home <kbd>/var/spool/spamassassin</kbd>. Ce dossier contiendra tout le paramétrage et les mise à jours de spamassassin :
  
  <div class='code-block code-block-fragment'>
  <div class='container'>
  <a target="blank" href="http://pwet.fr/man/linux/commandes/mkdir"><span class="kw2">mkdir</span></a> <span class="sy0">/</span>var<span class="sy0">/</span>spool<span class="sy0">/</span>spamassassin<br />
useradd -d <span class="sy0">/</span>var<span class="sy0">/</span>spool<span class="sy0">/</span>spamassassin -s <span class="sy0">/</span>bin<span class="sy0">/</span><a target="blank" href="http://pwet.fr/man/linux/commandes/false"><span class="kw2">false</span></a> spamassin<br />
<a target="blank" href="http://pwet.fr/man/linux/commandes/chown"><span class="kw2">chown</span></a> spamassassin:spamassassin <span class="sy0">/</span>var<span class="sy0">/</span>spool<span class="sy0">/</span>spamassassin -Rc
  </div>
  
  </div>
</p>

<p>
  Maintenant que spamassassin est paramétré, il nous reste à vérifier que son démon, spamd, fonctionne. Sous Mandriva, le paramétrage du lancement de <kbd>spamd</kbd> est contrôlé par le fichier <kbd>/etc/sysconfig/spamd</kbd>. Les valeurs par défaut sont correctes mais on peut aussi rajouter -D pour des traces de debuggage. 
  
  <div class='code-block code-block-fragment'>
  <div class='container'>
  SPAMDOPTIONS=&quot;-d -c -m5 -H&quot;<br />
USE_SA_UPDATE=1
  </div>
  
  </div>
</p>
<p>
  Il suffit maintenant de lancer <kbd>spamd</kbd> et de vérifier dans les logs que tout s'est bien passé:
  
  <div class='code-block code-block-fragment'>
  <div class='container'>
  service spamd start<br />
tail -f /var/log/syslog
  </div>
  
  </div>
</p>
<p>
  Si aucune erreur n'apparaît dans les logs, le démon spamassassin est en route. Reste maintenant à paramétrer postfix. 
</p>


	<a name='chapter_2'></a>
  <h2>Paramétrage de postfix</h2>
	
</p>
  Nous allons indiquer à postfix qu'il doit inserer notre scripte dans la chaîne smtp. Pour cela, modifier le fichier <kbd>/etc/postfix/master.cf</kbd> comme suit :
  
  <div class='code-block code-block-fragment'>
  <div class='container'>
  smtp inet n - n - - smtpd &nbsp; -o content_filter=spamassassin:
  </div>
  
  </div>
</p>

<p>
  et rajouter à la fin du fichier :
  
  <div class='code-block code-block-fragment'>
  <div class='container'>
  spamassassin unix - n n - - pipe flags=Rq user=spamassassin argv=/usr/bin/spamassassin.sh -f ${sender} -- ${recipient}
  </div>
  
  </div>
</p>

<p>
  Tout est en place, il faut maintenant fabriquer le script de filtrage dont le but est de recevoir le courrier entrant (postfix), de le traiter avec spamassassin via spamc/spamd, puis de le ré-expédier sur la chaîne suivante. 
</p>
<p>
  Le script est à placer (par exemple) dans le fichier <kbd>/usr/bin/spamassassin.sh</kbd>  :
  
  <div class='code-block code-block-fragment'>
  <div class='container'>
  <span class="co0">#!/bin/bash</span><br />
<span class="sy0">/</span>usr<span class="sy0">/</span>bin<span class="sy0">/</span>spamc <span class="sy0">|</span> <span class="sy0">/</span>usr<span class="sy0">/</span>sbin<span class="sy0">/</span>sendmail -i <span class="st0">&quot;$@&quot;</span><br />
<span class="kw3">exit</span> <span class="re4">$?</span>
  </div>
  
  </div>
</p>
<p>
  Ceci fait, nous allons il faut juste rendre ce script exécutable et opérer un petit redemarrage de postfix :
  
  <div class='code-block code-block-fragment'>
  <div class='container'>
  service postfix restart
  </div>
  
  </div>
</p>

<p>
  Voilà c'est gini. Vous pouvez auditer les logs par un <kbd>tail -f /var/log/mail/*</kbd> pour vérifier que tout ce passe correctement. Et si tout marche, il ne reste plus qu'à attendre 10 secondes qu'un pouriel se présente <img src="http://artisan.karma-lab.net/sites/all/modules/contrib/smileys/packs/crystal/smile.gif" title="Smiling" alt="Smiling" class="smiley-content"/>
</p>

    ]]></content>
  </entry>
</feed>
