Connecter SpamAssassin à Postfix
Le 28 mars 2006, à 12:54 par Ulhume...

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.

Tout d'abord il faut installer les paquets suivants :

  1. urpmi spamassassin
  2. urpmi spamassassin-spamc
  3. urpmi spamassassin-spamd
  4. urpmi dcc

spamc est un filtre d'email client/server qui fonctionne avec le démon spamd.

Paramétrage de spamd/spamassasin

Spamassassin a ses fichiers de paramétrages placés en /etc/mail/spamassasin. Ce dossier contient entre autre /etc/mail/spamassasin/local.cf qui définit le paramétrage de spamassassin. Vous pouvez le modifier comme suit

  1. dns_available                   yes
  2.  
  3. # Activation du systeme Bayes
  4. use_bayes                       1
  5. bayes_auto_learn                1
  6. bayes_learn_to_journal          1
  7. bayes_journal_max_size          0
  8. bayes_path                      /storage/databases/spamassassin/bayes
  9.  
  10. # Activation de l'auto whitelist
  11. use_auto_whitelist              1
  12. auto_whitelist_path             /storage/databases/spamassassin/auto-whitelist
  13. auto_whitelist_file_mode        0666
  14.  
  15. # Activation de DCC
  16. use_dcc                         1
  17. dcc_timeout                     8
  18. dcc_home                        /storage/databases/spamassassin/dcc
  19.  
  20. # Activation de Pyzor
  21. use_pyzor                       1
  22.  
  23. # Activatin de Razor
  24. use_razor2                      1
  25. razor_timeout                   8
  26.  
  27. # Optimisation des scores
  28. score DCC_CHECK 4.500
  29. score SPF_FAIL 10.000
  30. score SPF_HELO_FAIL 10.000
  31. score RAZOR2_CHECK 2.500
  32. score RAZOR2_CF_RANGE_51_100 3.500
  33. score BAYES_99 5.300
  34. score BAYES_95 4.500
  35. score BAYES_80 3.500
  36. score BAYES_60 2.500
  37. score BAYES_50 2.000
  38.  
  39. # Langages
  40. ok_languages                    en fr vi
  41. ok_locales                      en
  42.  
  43. #required_hits                          5
  44.  
  45. #add_header all Report _REPORT_
  46. header Subject          /SPAM/
  47. report_safe                     1

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 /etc/mail/spamassassin/v310.pre pour décommenter les deux lignes suivante :

  1. loadplugin Mail::SpamAssassin::Plugin::DCC
  2.  
  3. (...)
  4. loadplugin Mail::SpamAssassin::Plugin::TextCat    

Nous allons créer un utilisateur spamassasin qui va avoir comme dossier home /var/spool/spamassassin. Ce dossier contiendra tout le paramétrage et les mise à jours de spamassassin :

  1. mkdir /var/spool/spamassassin
  2. useradd -d /var/spool/spamassassin -s /bin/false spamassin
  3. chown spamassassin:spamassassin /var/spool/spamassassin -Rc

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 spamd est contrôlé par le fichier /etc/sysconfig/spamd. Les valeurs par défaut sont correctes mais on peut aussi rajouter -D pour des traces de debuggage.

  1. SPAMDOPTIONS="-d -c -m5 -H"
  2. USE_SA_UPDATE=1

Il suffit maintenant de lancer spamd et de vérifier dans les logs que tout s'est bien passé:

  1. service spamd start
  2. tail -f /var/log/syslog

Si aucune erreur n'apparaît dans les logs, le démon spamassassin est en route. Reste maintenant à paramétrer postfix.

Paramétrage de postfix

Nous allons indiquer à postfix qu'il doit inserer notre scripte dans la chaîne smtp. Pour cela, modifier le fichier /etc/postfix/master.cf comme suit :
smtp inet n - n - - smtpd   -o content_filter=spamassassin:

et rajouter à la fin du fichier :

spamassassin unix - n n - - pipe flags=Rq user=spamassassin argv=/usr/bin/spamassassin.sh -f ${sender} -- ${recipient}

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.

Le script est à placer (par exemple) dans le fichier /usr/bin/spamassassin.sh :

  1. #!/bin/bash
  2. /usr/bin/spamc | /usr/sbin/sendmail -i "$@"
  3. exit $?

Ceci fait, nous allons il faut juste rendre ce script exécutable et opérer un petit redemarrage de postfix :

service postfix restart

Voilà c'est gini. Vous pouvez auditer les logs par un tail -f /var/log/mail/* 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 Smiling

Commentaires

Poster un nouveau commentaire

Le contenu de ce champ est gardé secret et ne sera pas montré publiquement.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • To highlight piece of code, just surround them with <code type="language"> Your code &tl;/code>>. Language can be java,c++,bash,etc... Everything Geshi support.
  • Les lignes et les paragraphes vont à la ligne automatiquement.
  • Textual smileys will be replaced with graphical ones.
  • Les adresses de pages web et de messagerie électronique sont transformées en liens automatiquement.

Plus d'informations sur les options de formatage

Connexion utilisateur
Sommaire
Commentaires récents