ClamAv / SpamAssassin

Intégration d’un Antivirus : ClamAv

Il existe de nombreux antivirus mais beaucoup sont distribués sous des licences propriétaires. Dans le monde libre, il existe ClamAv qui fait très bien sont boulot. Pour que Amavis puisse faire du filtrage antivirus, il faut donc installer ClamAv ainsi que quelques librairies de compression (pour analyser les archives) :

Installation des packages nécessaires

Afin d'avoir une version plus récente que celle de votre distribution de base, il faut ajouter la ligne suivante dans les sources APT :

# vi /etc/apt/sources.list
deb http://volatile.debian.org/debian-volatile etch/volatile main contrib non-free

Puis faite une mise à jour avec :

# apt-get update

Maintenant installez ClamAv :

# apt-get install clamav clamav-daemon clamav-freshclam gzip bzip2 unzip unrar zoo arj

Pour que tout ce passe correctement, il faut maintenant s’assurer que l’utilisateur utilisé par "clamav" fasse partie du groupe "amavis".

# adduser clamav amavis

Activation du support antivirus pour Amavis

# vi /etc/amavis/conf.d/15-content_filter_mode
@bypass_virus_checks_maps = ( 
    \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);

Configuration de Amavis

# vi /etc/amavis/conf.d/20-debian_defaults
$final_virus_destiny      = D_BOUNCE;

Redémarrage des services

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

Pour vérifier le bon fonctionnement de l’antivirus, on peut utiliser des sites prévus a cet effet comme GFI Email Security Test [10]. Ces sites permettent d’envoyer des mails infectés avec un virus de test (non dangereux) vers votre serveur. En fonction des paramètres de notification qui ont été choisit, la réception de ce mail devrai, ou non, déclencher une alerte a l’administrateur du serveur. On peut par ailleurs consulter le contenu détaillé des headers des mails reçus pour s’assurer qu’ils contiennent une ligne du type :

X-Virus-Scanned: Debian amavisd-new at example.org
Intégration d’un AntiSpam : SpamAssassin

Installation de Spamassassin et des outils anti-spam

# apt-get install spamassassin libnet-dns-perl razor pyzor

Activation du démon spamd

# vi /etc/default/spamassassin
CRON=1

MAJ des règles Spamassassin

# sa-update

Configuration de Spamassassin

# vi /etc/spamassassin/local.cf
report_safe 0 
lock_method flock 
 
# Bayes-related operations 
use_bayes 1 
use_bayes_rules 1 
bayes_auto_learn 1 
bayes_auto_expire 1 
bayes_path /var/lib/amavis/.spamassassin/bayes 
 
# External network tests 
 
dns_available yes 
skip_rbl_checks 0 
use_razor2 1 
use_pyzor 1 
 
# Use URIBL (http://www.uribl.com/about.shtml) 
urirhssub       URIBL_BLACK  multi.uribl.com.        A   2 
body            URIBL_BLACK  eval:check_uridnsbl(’URIBL_BLACK’) 
describe        URIBL_BLACK  Contains an URL listed in the URIBL blacklist 
tflags          URIBL_BLACK  net 
score           URIBL_BLACK  3.0 
 
urirhssub       URIBL_GREY  multi.uribl.com.        A   4 
body            URIBL_GREY  eval:check_uridnsbl(’URIBL_GREY’) 
describe        URIBL_GREY  Contains an URL listed in the URIBL greylist 
tflags          URIBL_GREY  net 
score           URIBL_GREY  0.25 
 
# Use SURBL (http://www.surbl.org/) 
urirhssub       URIBL_JP_SURBL  multi.surbl.org.        A   64 
body            URIBL_JP_SURBL  eval:check_uridnsbl(’URIBL_JP_SURBL’) 
describe        URIBL_JP_SURBL  Has URI in JP at http://www.surbl.org/lists.html 
tflags          URIBL_JP_SURBL  net 
score           URIBL_JP_SURBL  3.0

Configuration de razor en utilisant l’utilisateur amavis

# su - amavis 
$ razor-admin -d --create 
$ razor-admin -register 
$ razor-admin -discover

Configuration de pyzor en utilisant l’utilisateur amavis

# su - amavis 
$ pyzor discover

Activation du support anti-spam pour amavis

# vi /etc/amavis/conf.d/15-content_filter_mode
@bypass_spam_checks_maps = ( 
    \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

Il faut maintenant définir le comportement de Amavis lorsque Spamassassin a analysé le message. Comme indiqué précédemment, Spamassassin affecte un score au message. Amavis va maintenant comparé ce score au seuil défini par la variable "FIXME". Si le score est supérieur à cette valeur, Amavis va appliquer les règles destinées aux messages indésirables. Le score affecté par Spamassassin n’étant jamais fiable à cent pour cent, il faire prendre beaucoup de précautions lors de la définition des règles d’Amavis. Par exemple :

Il ne vaut mieux pas modifier le sujet du message en ajoutant "*SPAM*" : si le message est marqué par erreur, l’utilisateur final aura un message désirable dont le sujet commencera par *SPAM*. Il est fortement recommandé de NE PAS SUPPRIMER directement les messages marqués comme SPAM. La méthode la plus sûr, est sans doute d’inscrire le score dans les en-têtes et de ne pas toucher au reste du message. Il suffit ensuite d’utiliser les différentes méthodes de filtrage pour que les SPAMs soient délivrés dans un dossier spécifique.

Toute cette configuration ce fait dans le fichier /etc/amavis/conf.d/20-debian_defaults :

# vi /etc/amavis/conf.d/20-debian_defaults
# $sa_spam_subject_tag    = ’***SPAM*** ’; 
$sa_tag_level_deflt       = -999; 
$final_banned_destiny     = D_BOUNCE; 
$final_spam_destiny       = D_PASS; 
$final_bad_header_destiny = D_PASS;

Redémarrage des services

# /etc/init.d/amavis restart

Pour vérifier le bon fonctionnement de l’anti-SPAM, on peut par s’envoyer un mail (depuis l’extérieur) content la chaine de test suivante (GTUBE) :

XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Cette chaine de test est reconnue par la plupart des anti-SPAM et doit forcement être reconnue par SpamAssassin. Si le mail contenant cette chaine n’est pas identifiée comme SPAM, il faut revoir la configuration de Amavis et de SpamAssassin : elle n’est surement pas correcte.