Qu’est-ce que CLAMSMTP ?
CLAMSMTP est un démon qui tourne sur un serveur de mail.
Son rôle est de vérifier l’existance de virus dans les messages envoyés ou reçus par POSTFIX.
Il utilise l’antivirus libre CLAMAV pour analyser les messages.
Site du projet CLAMSMTP
[http://memberwebs.com/nielsen/software/clamsmtp/->http://memberwebs.com/nielsen/software/clamsmtp/
]
Téléchargement de clamsmtp
Utilisez ce lien pour obtenir la version que j’ai utilisé,
Sinon, utilisez la commande suivante :
wget http://www.inet.lt/clamsmtp/clamsmtp-1.6-1.src.rpm
Compilation de clamsmtp
Installez le paquet rpm-build et les paquets que pourra vous indiquer la caommande rpmbuild suivante si vous n’avez pas choisi d’installer les outils de developpement lors de l’installtion de Linux.
Compilez le RPM avec la commande suivante :
rpmbuild --rebuild clamsmtp-1.6-1.src.rpm
Déplacez le RPM créé dans votre dossier actuel :
mv /usr/src/redhat/RPMS/i386/clamsmtp-1.6-1.i386.rpm .
Installation de clamsmtp
Installez les dépendances de clamsmtp.
yum -y install clamd
Si vous n’avez pas encore postfix, installez-le et configurez votre système pour l’utiliser.
yum -y install postfix system-switch-mail
puis éxécutez « system-switch-mail »
Sélectionnez Postfix et validez.
Installez le RPM clamsmtp que vous avez obtenu et activez les services concernés.
rpm -ivh clamsmtp-1.6-1.i386.rpm
chkconfig clamd on
chkconfig clamsmtpd on
Editer le fichier /etc/clamsmtpd.conf en vous assurant que vous avez les paramètres suivants :
#
# Adresse de sortie du message si celui-ci est "propre"
# Le port 10026 sera un port d'écoute de postfix
# On le déclare dans master.cf
OutAddress: 127.0.0.1:10026
#
# clamsmtp écoute sur toutes les interfaces de la machine
# sur le port 10025
Listen: 0.0.0.0:10025
#
# Adresse par défaut du démon clamd, le scanner antivirus
ClamAddress: 127.0.0.1:3310
#
# Décommentez cette ligne si vous voulez ajouter une bannière
# de l'antivirus dans l'en tête du message.
#Header: X-Virus-Scanned: ClamAV using ClamSMTP
#
# On utilise un user nommé clamav pour clamsmtp
# Ce user est le même que celui de clamd.
# Sans celà, l'antivirus ne pourra pas traîter les messages
User: clamav
Modifiez /etc/postfix/main.cf en ajoutant ceci :
content_filter = scan:127.0.0.1:10025
receive_override_options = no_address_mappings
Le paramètre content_filter demande à Postfix d’envoyer tous les email au travers d’un service appellé ‘scan’ sur le port 10025. Nous devons paramétrer clamsmtpd pour écouter sur ce port.
Modifiez /etc/postfix/master.cf en ajoutant ce service scan :
# AV scan filter (used by content_filter)
scan unix - - n - 16 smtp
-o smtp_send_xforward_command=yes
# For injecting mail back into postfix from the filter
127.0.0.1:10026 inet n - n - 16 smtpd
-o content_filter=
-o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
-o smtpd_helo_restrictions=
-o smtpd_client_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks_style=host
-o smtpd_authorized_xforward_hosts=127.0.0.0/8
Assurez vous qu’il n’y a pas d’espaces autours des signes = et des virgules dans le texte que vous avez ajouté ci-dessus.
Les 2 premières lignes créent le service ‘scan’.
Le reste demande à postfix de démarrer un service sur le port 10026 pour renvoyer les emails traîtés par l’antivirus dans la file de distribution de Postfix.
Toutes les options à blanc permettent de ne plus appliquer de filtres sur les emails déjà traités par le démon Postfix proncipal. Cela désactive les options de main.cf.
Attention, en faisant cela, vous ouvrez en grand la porte au spam si vous ne prenez pas garde à spécifier 127.0.0.1:10026 comme indiqué ci-dessus.
Modifiez le fichier /etc/clamd.conf :
La partie ci-dessous est obligatoire pour la configuration faite avec clamsmtp.
#
# Port d'écoute de clamd
# doit correspondre a ClamAddress dans clamsmtpd.conf
TCPSocket 3310
#
# addresse tcp d'écoute.
TCPAddr 127.0.0.1
##
## Mail files
##
# Enable internal e-mail scanner.
# Default: enabled
ScanMail
La partie ci-dessous n’est pas obligatoire, mais permet d’affiner vos choix sur la façon de scanner les archives attachées aux emails.
Choisissez les options à votre convenance.
# If an email contains URLs ClamAV can download and scan them.
# WARNING: This option may open your system to a DoS attack.
# Never use it on loaded servers.
# Default: disabled
#MailFollowURLs
##
## HTML
##
# Perform HTML normalisation and decryption of MS Script Encoder code.
# Default: enabled
ScanHTML
##
## Archives
##
# ClamAV can scan within archives and compressed files.
# Default: enabled
ScanArchive
# The options below protect your system against Denial of Service attacks
# using archive bombs.
# Files in archives larger than this limit won't be scanned.
# Value of 0 disables the limit.
# Default: 10M
#ArchiveMaxFileSize 15M
ArchiveMaxFileSize 20M
# Nested archives are scanned recursively, e.g. if a Zip archive contains a RAR
# file, all files within it will also be scanned. This options specifies how
# deep the process should be continued.
# Value of 0 disables the limit.
# Default: 8
#ArchiveMaxRecursion 9
ArchiveMaxRecursion 15
# Number of files to be scanned within an archive.
# Value of 0 disables the limit.
# Default: 1000
#ArchiveMaxFiles 1500
ArchiveMaxFiles 1500
# If a file in an archive is compressed more than ArchiveMaxCompressionRatio
# times it will be marked as a virus (Oversized.ArchiveType, e.g. Oversized.Zip)
# Value of 0 disables the limit.
# Default: 250
ArchiveMaxCompressionRatio 300
Démarrez les services :
/etc/init.d/clamd start
/etc/init.d/clamsmtpd start
/etc/init.d/postfix restart
Voila, votre serveur de mail devrait maintenant vérifier la présence de virus dans vos emails.
Vérifiez avec le fichier /var/log/maillog que tout se passe bien.
Affinez les options comme ‘ArchiveMaxFileSize’ ou ‘ArchiveMaxRecursion’ en fonction des messages rejettés entrant dans cette catégorie.
Si vous avez un problème avec clamsmtp, vous pouvez essayer de passer en mode debug pour voir d’où vient le problème.
/etc/init.d/clamsmtpd stop
clamsmtpd -d 4 -f /etc/clamsmtpd.conf
Par défaut clamsmtp supprime les messages infectés de la file d’attente sans envoyer de mail de confirmation à quiconque.
Vous pouvez modifier ce comportement avec des scripts définis dans la variable ‘VirusAction’ du fichier clamsmtpd.conf.
Exemples de scripts ICI.