Sécurité Email · 6 min read · Sep 24, 2025

Utiliser amavisd-new pour le filtrage des spams et des virus

Intégration d’amavisd-new dans Postfix pour le filtrage des spams et des virus

Version 1.0
Auteur : Falko Timme

Cet article montre comment intégrer amavisd-new dans un serveur de messagerie Postfix pour le filtrage des spams et des virus. amavisd-new est une interface haute performance entre les MTA tels que Postfix et les vérificateurs de contenu : les antivirus et/ou SpamAssassin. Nous utiliserons ClamAV pour le filtrage des virus et SpamAssassin pour le filtrage des spams dans ce tutoriel.

Je tiens à dire d’abord que ce n’est pas la seule façon de configurer un tel système. Il existe de nombreuses façons d’atteindre cet objectif, mais c’est la méthode que je choisis. Je ne garantis pas que cela fonctionnera pour vous !

1 Remarque préliminaire

Dans ce tutoriel, je vais décrire comment installer/configurer amavisd-new sur Debian Etch/Ubuntu 6.10 Edgy Eft (les étapes sont identiques pour les deux distributions) et sur Debian Sarge. La configuration d’amavisd-new est adaptée aux systèmes où des utilisateurs système sont utilisés pour les comptes de messagerie ; si vous utilisez des utilisateurs virtuels, quelques modifications de la configuration d’amavisd-new pourraient être nécessaires (mais cela dépend de la configuration réelle). Si vous utilisez des utilisateurs de messagerie virtuels, jetez un œil à ces deux tutoriels :

  • Utilisateurs et domaines virtuels avec Postfix, Courier et MySQL (Fedora Core 5)
  • Utilisateurs et domaines virtuels avec Postfix, Courier et MySQL (Debian Sarge)

amavisd-new fonctionne comme suit : Postfix reçoit un e-mail sur le port 25, le transmet à amavisd-new sur le port 10024 qui invoque ensuite ClamAV et SpamAssassin, et ensuite amavisd-new réinjecte le mail dans Postfix sur le port 10025 qui livre finalement le mail (s’il est propre). Voici un petit schéma du processus :

                                      [SpamAssassin]  
                                             ^  
                                             |  
 Email --> [(Port 25) Postfix] --> [(10024) amavisd-new] --> [(10025) Postfix] --> Mailbox  
                                             |  
                                             v  
                                          [ClamAV]

Je suppose que Postfix et vos comptes de messagerie sont déjà configurés et fonctionnent car je ne couvre pas l’installation/configuration de Postfix ici.

Toutes les étapes de ce tutoriel sont effectuées en tant que root, donc assurez-vous d’être connecté en tant que root.

2 Debian Etch/Ubuntu 6.10 Edgy Eft

Tout d’abord, nous installons amavisd-new, SpamAssassin et ClamAV avec quelques autres programmes (principalement des programmes dont amavisd-new a besoin pour décompresser des archives, car les e-mails peuvent contenir des archives en tant que pièces jointes) :

apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 unzoo libnet-ph-perl libnet-snpp-perl libnet-telnet-perl nomarch lzop

Ensuite, nous devons configurer amavisd-new. La configuration est divisée en plusieurs fichiers qui se trouvent dans le répertoire /etc/amavis/conf.d. Jetez un œil à chacun d’eux pour vous familiariser avec la configuration. La plupart des paramètres sont corrects, cependant, nous devons modifier deux fichiers :

Tout d’abord, nous devons activer ClamAV et SpamAssassin dans /etc/amavis/conf.d/15-content_filter_mode en décommentant les lignes @bypass_virus_checks_maps et @bypass_spam_checks_maps :

vi /etc/amavis/conf.d/15-content_filter_mode

Le fichier devrait ressembler à ceci :

| use strict; # Vous pouvez modifier ce fichier pour réactiver le filtrage des SPAM via spamassassin # et pour réactiver le filtrage antivirus. # # Mode de filtrage antivirus par défaut # Décommentez les deux lignes ci-dessous pour le réactiver # @bypass_virus_checks_maps = ( \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re); # # Mode de filtrage SPAM par défaut # Décommentez les deux lignes ci-dessous pour le réactiver # @bypass_spam_checks_maps = ( \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re); 1; # assurez un retour défini |

Et ensuite, vous devriez jeter un œil aux paramètres de spam et aux actions pour les e-mails de spam/virus dans /etc/amavis/conf.d/20-debian_defaults. Il n’est pas nécessaire de changer quoi que ce soit si les paramètres par défaut vous conviennent. Le fichier contient de nombreuses explications, donc il n’est pas nécessaire d’expliquer les paramètres ici :

vi /etc/amavis/conf.d/20-debian_defaults

| $QUARANTINEDIR = "$MYHOME/virusmails"; $log_recip_templ = undef; # désactiver les entrées de journal de niveau-0 par destinataire $DO_SYSLOG = 1; # journaliser via syslogd (préféré) $syslog_ident = 'amavis'; # balise d'identification syslog, préfixée à tous les messages $syslog_facility = 'mail'; $syslog_priority = 'debug'; # passez à info pour supprimer la sortie de débogage, etc $enable_db = 1; # activer l'utilisation de BerkeleyDB/libdb (SNMP et nanny) $enable_global_cache = 1; # activer l'utilisation du cache basé sur libdb si $enable_db=1 $inet_socket_port = 10024; # socket d'écoute par défaut $sa_spam_subject_tag = '*SPAM* '; $sa_tag_level_deflt = 2.0; # ajouter des en-têtes d'information sur le spam si à, ou au-dessus de ce niveau $sa_tag2_level_deflt = 6.31; # ajouter des en-têtes 'spam détecté' à ce niveau $sa_kill_level_deflt = 6.31; # déclenche des actions d'évasion de spam $sa_dsn_cutoff_level = 10; # niveau de spam au-delà duquel un DSN n'est pas envoyé $sa_mail_body_size_limit = 200*1024; # ne perdez pas de temps sur SA si le mail est plus grand $sa_local_tests_only = 0; # seulement des tests qui ne nécessitent pas d'accès à Internet ? [...] $final_virus_destiny = D_DISCARD; # (données non perdues, voir quarantaine des virus) $final_banned_destiny = D_BOUNCE; # D_REJECT lorsque MTA frontal $final_spam_destiny = D_BOUNCE; $final_bad_header_destiny = D_PASS; # Prone aux faux positifs (pour le spam) [...] |

Ensuite, exécutez ces commandes pour ajouter l’utilisateur clamav au groupe amavis et redémarrer amavisd-new et ClamAV :

adduser clamav amavis  
 /etc/init.d/amavis restart  
 /etc/init.d/clamav-daemon restart

Ensuite, nous devons éditer le fichier de configuration du démon Freshclam (c’est le démon qui récupère régulièrement et automatiquement les dernières signatures de virus depuis un miroir ClamAV) car il contient un petit bug. Ouvrez /etc/clamav/freshclam.conf et modifiez la ligne NotifyClamd comme indiqué ci-dessous :

vi /etc/clamav/freshclam.conf

| [...] NotifyClamd /etc/clamav/clamd.conf [...] |

Puis redémarrez Freshclam (assurez-vous qu’aucun autre processus Freshclam (peut-être d’une autre installation de ClamAV) ne fonctionne car sinon notre Freshclam échouera à démarrer) :

/etc/init.d/clamav-freshclam restart

Maintenant, nous devons configurer Postfix pour rediriger les e-mails entrants via amavisd-new :

postconf -e 'content_filter = amavis:[127.0.0.1]:10024'  
 postconf -e 'receive_override_options = no_address_mappings'

Ensuite, ajoutez les lignes suivantes à /etc/postfix/master.cf :

vi /etc/postfix/master.cf

| [...] amavis unix - - - - 2 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes 127.0.0.1:10025 inet n - - - - 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 -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks -o smtpd_bind_address=127.0.0.1 |

Puis redémarrez Postfix :

/etc/init.d/postfix restart

Maintenant, exécutez

netstat -tap

et vous devriez voir Postfix (master) à l’écoute sur le port 25 (smtp) et 10025, et amavisd-new sur le port 10024 :

server1:~# netstat -tap  
 Connexions Internet actives (serveurs et établies)  
 Proto Recv-Q Send-Q Adresse locale           Adresse étrangère         État       PID/Nom du programme  
 tcp        0      0 *:4069                  *:*                     LISTEN     3457/rpc.statd  
 tcp        0      0 localhost.localdo:10024 *:*                     LISTEN     6886/amavisd (maste  
 tcp        0      0 localhost.localdo:10025 *:*                     LISTEN     7268/master  
 tcp        0      0 *:sunrpc                *:*                     LISTEN     3083/portmap  
 tcp        0      0 *:auth                  *:*                     LISTEN     3417/inetd  
 tcp        0      0 *:smtp                  *:*                     LISTEN     7268/master  
 tcp6       0      0 *:imaps                 *:*                     LISTEN     4952/couriertcpd  
 tcp6       0      0 *:pop3s                 *:*                     LISTEN     4872/couriertcpd  
 tcp6       0      0 *:pop3                  *:*                     LISTEN     4815/couriertcpd  
 tcp6       0      0 *:imap2                 *:*                     LISTEN     4905/couriertcpd  
 tcp6       0      0 *:ssh                   *:*                     LISTEN     3438/sshd  
 tcp6       0      0 *:smtp                  *:*                     LISTEN     7268/master  
 tcp6       0    148 server1.example.com:ssh localhost:3117          ESTABLISHED3519/0

Si vous le souhaitez, vous pouvez maintenant ajouter Razor, Pyzor et DCC à SpamAssassin pour améliorer ses performances de filtrage. Razor, Pyzor et DCC sont des filtres anti-spam qui utilisent un réseau de filtrage collaboratif. Pour les installer, exécutez

apt-get install razor pyzor dcc-client

Maintenant, nous devons dire à SpamAssassin d’utiliser ces trois programmes. Éditez /etc/spamassassin/local.cf et ajoutez les lignes suivantes :

vi /etc/spamassassin/local.cf

| [...] # dcc use_dcc 1 dcc_path /usr/bin/dccproc dcc_add_header 1 dcc_dccifd_path /usr/sbin/dccifd #pyzor use_pyzor 1 pyzor_path /usr/bin/pyzor pyzor_add_header 1 #razor use_razor2 1 razor_config /etc/razor/razor-agent.conf #bayes use_bayes 1 use_bayes_rules 1 bayes_auto_learn 1 |

Redémarrez amavisd-new ensuite :

/etc/init.d/amavis restart

C’est déjà tout. Maintenant, surveillez votre journal de messagerie (/var/log/mail.log) pour voir si amavisd-new fonctionne correctement. amavisd-new enregistrera chaque fois qu’il trouve un e-mail de spam ou de virus. Lorsque vous (re)démarrez amavisd-new, il devrait également enregistrer qu’il charge son code de filtrage de spam et de virus (sinon, vous avez probablement fait quelque chose de mal).

Pour jeter un coup d’œil en direct à votre journal de messagerie, vous pouvez utiliser cette commande :

tail -f /var/log/mail.log

(Appuyez sur CTRL + c pour quitter le journal.)

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.