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 !

44 réflexions au sujet de « Howto : installation Spamassassin et ClamAV avec Postfix sous Debian Etch (4.0) et Lenny (5.0) »

  1. excellent...! merci pour le howto 🙂

    plus ça va, plus je me met a publier online mes propres notes et travaux... ça me permet au moins de pouvoir les retrouver depuis n'importe où 😉

  2. Bonjour ,

    et merci pour ce travail.
    Malgrès la bonne instalation de Debain Etch avec Postfix que j'a pu installer et configurer pour mes besoins sans difficulté, c'est l'installation de clamav et spamassassin en elle même qui pose problème.
    La ligne
    apt-get install amavisd-new clamav clamav-daemon
    m'innonde de messages. Que cela ne tienne je lance apt-get update puis manuellement pour chaque package. amavisd-new fait état de dépendances non satisfaites, essentiellement des librairies perl. Le tout accompagné du message n'est pas instalable.

    J'imagine que mon installation initiale ne répond pas à tous les prérequis. Ces derniers sont difficiles à établir, la documentation sur certains packages reste quand meme très succinte, même pour un utilisateur habitué depuis longtemps à la ligne de commande et aux fichiers de configurations.
    Si vous voyez avec évidence quel est le problème, je gagnerai du temps, sinon je reprendrai les choses au début.

    Cordialement.

  3. Bonjour Claude,

    Pas facile de te dépanner comme ça ... Je te fait passer mon adresse email, si tu veux m'adresser quelques infos supplémentaires je t'indiquerais en retour si je vois quelques chose de bizarre :

    - le résultat de "apt-get install amavisd-new clamav clamav-daemon"

    - une copie de ton "/etc/apt/sources.list"

    /Xavier

  4. Je me suis posé les bonnes questions grace à cette réponse. Premier constat apt-get update ne fonctionne pas correctement donc mon fichier sources.list n'est pas correct. Je suis donc allé voir à la source et je l'ai modifié d'après les informations données ici :

    http://www.us.debian.org/doc/manuals/apt-howto/ch-basico.fr.html#s-sources.list

    Et bien sur apt-get update puis apt-get install amavisd-new clamav clamav-daemon sont maintenant opérationnels.

    Le reste dela configuration en suivant la procédure ne m' a pas posé de difficulté.

    Merci pour ce coup de pouce.

  5. Merci pour cette doc
    Je me demande tout de même s'il est possible de récupérer tous les mails passés en spam pour vérification ?

  6. Merci pour ce howto assez descriptif.

    Je pense cependant qu'il y a une redondance dans les outils utilisés. Il est bien nécessaire d'installer le paquet spamassassin, mais pas d'activer spamd. En effet amavisd-new fait usage des bibliothèques de fonctions de spamassassin en interne, sans déléguer les vérifications à spamd. Et les performances sont similaires à celles de spamd. Voir le point 6 de Performances à http://www.ijs.si/software/amavisd/#features-performance

  7. Il semblerait qu'il y ai un probleme d'accès sur mon système après avoir (scrupuleusement, ai-je oublier qq chose , probleme de droit ? ) Une idée de comment réparer ça ?

    Nov 1 20:53:29 ogs amavis[8941]: (08941-01) (!) ClamAV-clamd: Can't connect to UNIX socket /var/run/clamav/clamd.ctl: Aucun fichier ou r\351pertoire de ce type, retrying (2)
    Nov 1 20:53:35 ogs amavis[8941]: (08941-01) (!!) ClamAV-clamd av-scanner FAILED: Too many retries to talk to /var/run/clamav/clamd.ctl (Can't connect to UNIX socket /var/run/clamav/clamd.ctl: Aucun fichier ou r\351pertoire de ce type) at (eval 44) line 268.
    Nov 1 20:53:35 ogs amavis[8941]: (08941-01) (!!) WARN: all primary virus scanners failed, considering backups

  8. Bonjour,

    tout d'abord, merci pour cette documentation... J'ai un petit problème lors de l'installation de amavisd-new, lors de son installation, il me renvoie l'erreur suivante :

    addgroup: Starting amavisd: The value of variable $myhostname is "srv", but should have been
    a fully qualified domain name; perhaps uname(3) did not provide such.
    You must explicitly assign a FQDN of this host to variable $myhostname
    in amavisd.conf, or fix what uname(3) provides as a host's network name!
    (failed).
    invoke-rc.d: initscript amavis, action "start" failed.
    dpkg : erreur de traitement de amavisd-new (--configure) :
    le sous-processus post-installation script a retourné une erreur de sortie d'état 1
    Des erreurs ont été rencontrées pendant l'exécution :
    amavisd-new
    E: Sub-process /usr/bin/dpkg returned an error code (1)

    je n'arrive pas à voir d'où vient le problème...
    Si vous pouvez m'apporter un début de réponse, ce serait avec grand plaisir...
    Merci par avance

    Christophe

  9. Bonjour Christophe,

    Visiblement il semble y avoir un problème avec le nom de la machine. Il faudrait essayer, comme indiqué dans le message d'erreur, de définir la variable "$myhostname" au sein du fichier de conf d'Amavis avec un nom pleinement qualifié du type "ma_machine.mon_domaine.tld" ...

    A essayer.

    /Xavier

  10. Bonjour Xavier,

    Le problème c'est que je n'ai rien d'installé dans /etc/amavis donc pas de fichier amavisd.conf, juste un dossier conf.d... peut-être le problème vient-il de là ? J'ai essayé de désinstaller le paquet et le ré-installer mais pas mieux...
    Merci en tout cas pour ce début de réponse

    Christophe

  11. Salut,

    En fait les fichiers de conf d'Amavis doivent se trouver dans le répertoire conf.d . Par contre il ne doit plus y avoir de fichier amavis.conf mais plusieurs fichiers "éclaté". Essaye de regarder dans le fichier 05-node_id.

    @+

    /Xavier

  12. Bonjour Xavier

    Merci pour tout, c'est ok : en fait j'avais déjà testé une ancienne version d'Amavis sur une Sarge, et donc je m'obstinais à chercher le amavisd.conf, alors que cela a changé dans cette version. Donc j'ai pu paramêtré le bon hostname, dans le fichier que tu m'as indiqué, et ensuite j'ai suivi ton tudo, et tout est ok..., juste quelques décodeurs non trouvés pour certains types de fichiers compressés : rmp, lzo... Par contre, il y a dans le mail.info, des erreurs sur SQL base code : NOT Loaded, SQL: Log Code : NOT Loaded, je ne sais pas trop à quoi cela correspond...
    Merci encore en tout cas

    Christophe

  13. Christophe,

    Nickel pour le fonctionnement d'Amavis. Par contre pour tes messages dans le log "mail.info", je pense que ta version de Postfix a été compilée avec la prise en charge de MySQL (ou un truc du genre). Si tout fonctionne correctement, à mon avis tu peux ignorer ces infos.

    @+

    /Xavier

  14. Ping : Le Blog de Nicodème » Blog Archive » Sécurisation du serveur : Spamassassin et Clamav

  15. Ping : Le Blog de Nicodème » Blog Archive » Sécurisation du serveur : Spamassassin et Clamav

  16. Merci après plusieurs mois de tentative d'install infructueuse enfin une solution bien détaillé et fonctionnelle.j'ai seulement dû commenter quelques ligne de configuration de clam et d'amavis. qui me retournaient des erreurs au reload.

  17. Bonjour Xavier,

    J'ai toujours le même problème... Tu aurais une piste ?

    Merci par avance !

  18. Bonjour savez vous comment franciser les messages d'erreur (Mail Delivery System)de postfix qui utilise
    spamassassin amavis clamav.

    Merci

  19. C'est peut être un problème de droits utilisateur sur /var/run/clamav/
    Vérifier le propriètaire du dossier quel est l'utilisateur qui fait tourner clamav et amavis, puis harmoniser les utilisateurs dans les fichiers de conf de clamav amavis et fresclam.
    Penser aussi a identifier le bon utilisateur dans logrotate pour ne pas avoir d'erreur de mise à jours.

  20. Merci Laurent pour la réponse au problème de Rica ou Jmix90.

    J'ajouterai juste que pour chez moi, a la suite il a fallu faire un:

    # apt-get --purge remove amavisd-new clamav clamav-daemon spamassassin
    # apt-get install amavisd-new clamav clamav-daemon spamassassin

    au cas ou, si cela ne fonctionne toujours pas, tentez un

    # dpkg-reconfigure clamav-base

  21. Bonsoir,

    Merci à Laurent et drfazor pour leur solution de Rica.

    Néanmoins, depuis que j'ai modifie tout ca. Mon postfix intercept bien les spams mais j'ai toujours:

    Oct 18 20:41:47 server amavis[8001]: (08001-01) (!) ClamAV-clamd: Can't connect to UNIX socket /var/run/clamav/clamd.ctl: Aucun fichier ou r\351pertoire de ce type, retrying (2)
    Oct 18 20:41:47 server amavis[8001]: (08001-01) (!!) ClamAV-clamd av-scanner FAILED: Too many retries to talk to /var/run/clamav/clamd.ctl (Can't connect to UNIX socket /var/run/clamav/clamd.ctl: Aucun fichier ou r\351pertoire de ce type) at (eval 44) line 268.
    Oct 18 20:41:47 server amavis[8001]: (08001-01) (!!) WARN: all primary virus scanners failed, considering backups

    Quand j'essaie de demarrer /etc/init.d/clamav-daemon: il me dit que clamav n'est pas configuré. Qu'il faut le faire puis le demarrer.

    Une autre question, les spams considérés comme spam sont supprimé directement :

    Oct 18 20:41:59 server amavis[8001]: (08001-01) Blocked SPAM, [212.27.42.36] [82.243.158.31] -> , quarantine: spam-Y9mexZy+QFF2.gz, Message-ID: , mail_id: Y9mexZy+QFF2, Hits: 1000.127, 19915 ms
    Oct 18 20:41:59 server postfix/smtp[8067]: CB36432DA1: to=, relay=127.0.0.1[127.0.0.1]:10024, delay=20, delays=0.07/0.01/0.02/20, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=08001-01, BOUNCE)
    Oct 18 20:41:59 ks300147 postfix/qmgr[7997]: CB36432DA1: removed

    Comment peux-t-on faire pour que le mail en question se mette juste dans un dossier spam? Comme sur googlemail

    Merci,

  22. J'ai suivi votre procédure qui semble claire, mais un telnet localhost 100025 affiche:
    ****
    Trying 127.0.0.1...
    telnet: Unable to connect to remote host: Connection refused
    ****
    Mes logs affichent justement:
    ****
    warning: connect to transport smtp-amavis: No such file or directory
    ****
    et mon message de test reste indéfiniment dans la queue...

    J'ai fouillé le net en essayant pas mal de solutions... mais apparement je n'arrive pas à fixer le pb de façon convenable!

    Un coup de main serait le bienvenu.
    Merci

  23. Salut,

    Bizarre ton problème et pas évident à résoudre sans être directement sur la machine ...

    C'est bien entendu pas normal qu'un telnet sur le port 10025 (attention ce n'est pas le port 100025 - certainement une erreur de frappe de ta part) ne donne rien ...

    Il faut bien vérifier que ce paragraphe est respecté "à la lettre" :

    * 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

  24. Ca marche à merveille maintenant!

    Les lignes ci dessous avaient des espaces à gauche inutiles (utiles pour les lignes -o ):

    smtp-amavis unix - - y - 2 smtp

    127.0.0.1:10025 inet n - y - - smtpd

    Merci pour avoir attirer mon attention sur ladessus.

  25. j'ai un petit soucis qui est le suivant:

    debian postfix/qmgr[2486]: warning: connect to transport smtp-amavis: Connection refused

    quelqu'un aurait la solution miracle, je cherche mais je ne trouve pas

  26. Bonjour. Merçi beaucoup pour ce tuto Xavier, car il est très bien expliqué.

    Mais j'ai la meme question que ngoc, c'est à dire : comment peux-t-on faire pour que les mails en questions se mettent juste dans un dossier spam? Comme sur googlemail.

    Merçi

  27. salut,
    où vont les spams et les virus détectés ?
    merci pour le tuto, c impec
    ++

  28. Bonjour Kat. Merci pour l'info. C'est effectivement un beau copier/coller ... C'est quand même lamentable de pomper un billet sans même faire référence à la source. Enfin bon c'est comme ça. Il n'y a pas de licence particulière sur mon blog. Le fait que l'on reprenne certains de mes billets ne me gêne pas plus que ça tant qu'on en cite la source.

    Encore merci pour le feed-back.

    /Xavier

  29. Le repompage est limite mais effectivement tant qu'il y a citation de la source, ça me gène moins, mais là c'était flagrant. J'ai aussi touché un mot au prioritaire de l'autre blog mais mon commentaire a été modéré....
    Belle mentalité.

    En tout cas je n'ai pas encore mis en place cette solution, mais dès que ce sera fait, je ferais certainement un article. Et je vous citerai ^^

  30. Ping : Colibrix.info » Installation de Spamassassin et Clamav avec Postfix sous Debian Squeeze

  31. Ping : Colibrix.info » Installation de Spamassassin et Clamav avec Postfix sous Debian Lenny (5.0)

  32. C'est un super tuto, un travail à la finesse et précision.
    En suivant ce tuto, nous avons pu installer amavis, clamav et spamassasin sur Debian 6 Squeeze.
    Ca marche donc aussi bien sur la nouvelle version de OS Debian squeeze.

    Je signale que le test de spam n'arrive pas à bloquer:
    mail avec la chaîne EICAR dans le corps de message ni en entête.

    Merci encore.

  33. Presque fonctionnel sous Debian 8.0 Jessie. Il y a juste un message d'erreur dans les logs qui concerne le scan antivirus du message. Le soucis viens de clamav. Il suffit de changer cette configuration dans /etc/clamav/clamd.conf : AllowSupplementaryGroups false => true

  34. Ping : Colibrix.info » Installer Spamassassin sous Debian GNU/Linux Jessie

  35. Ping : Rama.ovh – Le site pour tout » Bonjour tout le monde !

  36. Ping : Colibrix.info » Bonjour tout le monde !

  37. Ping : Rama.ovh » Installation de spamassassin sous Debian GNU/Linux Wheezy ou Jessie

  38. Ping : Supweb.fr » Bonjour tout le monde !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *