Howto : installation Spamassassin et ClamAV avec Postfix sous Debian Etch (4.0) et Lenny (5.0)


logo_debian.png

J'ai eu à installer récemment une solution de filtrage anti-virus et anti-spam et comme à chaque installation de ce type de dispositif, bien que ça ne soit pas la première fois, je me suis replongé dans la documentation ... J'ai donc décidé de rédiger ce petit Howto afin de faciliter le travail de ceux qui auraient à accomplir la même opération.

Ce document est basé sur la dernière version Debian (4.0 / Etch), ce qui devrait lui assurer une bonne durée de vie ;-). Toutes les applications utilisées sont disponibles sous forme de packages officiels (c'est plus simple pour les mises à jour).

UPDATE du 15/4/2009 : je viens de tester cette procédure sur la dernière version de Debian (Lenny / 5.0) et tout fonctionne correctement !

Les pré-requis sont les suivants :

  • Une distribution Linux Debian 4.0 fonctionnelle ;
  • Un serveur Postfix en état de fonctionnement et configuré selon vos besoins (ce document ne traitera pas de la configuration de Postfix - mais si vous avez des questions je pourrais peut être vous aider ...).

Petit rappel sur les différents éléments utilisés :

  • ClamAV : anti-virus Open Source (plus d'infos ICI)
  • SpamAssassin : anti-spam Open Source (plus d'infos ICI)
  • Amavisd-New : module réalisant l'interface entre Postfix les modules de filtrage SpamAssassin et ClamAV (plus d'infos ICI)

C'est parti ...

  • installation Amavisd-New et ClamAV

apt-get install amavisd-new clamav clamav-daemon

L'installeur va vous poser des questions, normalement les réponses par défaut devraient convenir.

  • il faut ajouter l'utilisateur clamav au groupe amavis

addgroup clamav amavis

  • il faut modifier le fichier /etc/amavis/conf.d/15-content_filter_mode
  • décommentez les deux lignes suivantes (pour autoriser le filtrage anti-virus) :

@bypass_virus_checks_maps = (
\%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);

  • et celles-ci (pour autoriser le filtrage anti-spam) :

@bypass_spam_checks_maps = (
\%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

  • téléchargez et installez "spamassassin"

apt-get install spamassassin

  • dans "/etc/default/spamassassin"

modifiez "ENABLED=1"
modifiez "OPTIONS="--max-children 5 --helper-home-dir" (remplacez 5 par le nombre de process de "spamd" devant fonctionner simultanéement)

  • ajoutez la ligne suivante dans le fichier "/etc/postfix/main.cf"

content_filter = smtp-amavis:[127.0.0.1]:10024

  • ajoutez les lignes suivantes dans le fichier "/etc/postfix/master.cf"

(attention à bien conserver un espace avant chaque "-o")

smtp-amavis unix - - y - 2 smtp
-o smtp_data_done_timeout=1200
-o disable_dns_lookups=yes

127.0.0.1:10025 inet n - y - - smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o strict_rfc821_envelopes=yes

  • et enfin pour bénéficier de toutes les fonctionnalités d'Amavis, il faut lui indiquer le (ou les) domaines gérés sur ce serveur (en terme de courrier bien sûr)
  • Ajouter dans le fichier "/etc/amavis/conf.d/05-domain_id" :

@local_domains_maps = ( [ '.domain1.com', '.domain2.com', '.domain3.com' ] );

  • on relance tout le bazar :

/etc/init.d/spamassassin restart
/etc/init.d/clamav-daemon restart
/etc/init.d/amavis restart
postfix reload

  • pour s'assurer qu'Amavis prenne bien en charge ClamAV et Spamassassin, aprés avoir relancé Amavis (étape précédente) on doit retrouver les lignes suivantes dans les logs du serveur de mail (normalement /var/log/mail.info)

May 9 11:44:37 hostname amavis[26709]: ANTI-VIRUS code loaded
May 9 11:44:37 hostname amavis[26709]: ANTI-SPAM-SA code loaded
May 9 11:44:37 hostname amavis[26709]: Using internal av scanner code for (primary) ClamAV-clamd
May 9 11:44:37 hostname amavis[26709]: Found secondary av scanner ClamAV-clamscan at /usr/bin/clamscan

  • Il est également plus prudent de tester un envoi de mail avec la chaîne de test "EICAR" (allez faire un tour sur www.eicar.com), puis allez jeter un oeil sur les logs de Postfix :

May 9 14:02:41 hostname amavis[13251]: (13251-01) Blocked INFECTED (Eicar-Test-Signature), [192.168.0.1] <nom@domaine.fr> -> <test@testmail.fr>, quarantine: virus-lFDtkSo0b4vz, Message-ID: <20070509120235.D8AF02AA74@hostname>, mail_id: lFDtkSo0b4vz, Hits: -, 125 ms

  • On peut également tester l'anti-spam avec l'envoi d'un message contenant la chaine de test suivante : XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

On doit retrouver un truc comme ça dans les logs de Postfix :

May 9 14:24:45 hostname amavis[6446]: (06446-02) Blocked SPAM, [192.168.0.1] <nom@domaine.fr> -> <test@testmail.fr>, quarantine: spam-atCf69YINh+q.gz, Message-ID: <20070509122435.87ED32AA74@hostname>, mail_id: atCf69YINh+q, Hits: 1004.184, 2128 ms

Vous disposez désormais d'une solution de filtrage anti-virus et anti-spam fonctionnelle !

Normalement tout devrait fonctionner correctement, néanmoins si vous constatez quelques anomalies n'hésitez pas à me contacter afin que je puisse mettre à jour ce document !