Ceci est une ancienne révision du document !
Amavis c'est pas mal, mais il est maintenant plus simple d'utiliser un outil nommé «Clamsmtp». Il est écrit pour être utilisé comme un filtre de contenu dans Postfix.
Comme «Spamassassin» peut également être utilisé comme un filtre de contenu, avec un peu d'astuce, il est possible de se passer d'Amavis, à moins de vouloir profiter de toutes ses subtilités.
Nous utilisons ici une Debian Jessie, Postfix est en version 2.11.3 qui n'est certes pas la plus récente (au 22/05/2016).
Postfix propose deux manières d'implémenter un filtre de contenu sur les messages entrants et nous en avons vu une au chapitre précédent pour exploiter amavis
. Ici nous allons utiliser ces deux manières, l'une pour exploiter spamassassin
et l'autre pour clamav
sous sa forme clamsmtp
.
Voici une nouvelle manière d'insérer un filtre de contenu après la file d'attente des messages entrants.
Le client spamc
est normalement installé étant recommandé par le paquet spamassassin
. Il fait appel au service spamd
qui, lui, est installé avec spamassassin
. Vérifier que les paquets spamassassin
et spamc
sont bien installés.
Nous pouvons vérifier le fonctionnement correct du filtre en créant un fichier texte nommé par exemple spam.txt
contenant juste ceci:
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
Il faut alors injecter ce fichier dans le filtre via spamc
:
clamc < spam.txt
et observer le résultat:
Received: from localhost by ns236363.ovh.net with SpamAssassin (version 3.4.0); Tue, 24 May 2016 10:00:23 +0200 Subject: [SPAM] X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on ns236363.ovh.net X-Spam-Flag: YES X-Spam-Level: ******* X-Spam-Status: Yes, score=7.9 required=5.0 tests=EMPTY_MESSAGE,MISSING_DATE, MISSING_FROM,MISSING_HEADERS,MISSING_MID,MISSING_SUBJECT,NO_HEADERS_MESSAGE, NO_RECEIVED,NO_RELAYS autolearn=no autolearn_force=no version=3.4.0 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----------=_57440A17.FF47C9F8" This is a multi-part message in MIME format. ------------=_57440A17.FF47C9F8 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit ------------------ Début de Rapport SpamAssassin --------------------- Ce message est probablement du SPAM (message non sollicité envoyé en masse, publicité, escroquerie...). Cette notice a été ajoutée par le système d'analyse "SpamAssassin" sur votre serveur de courrier "ns236363.ovh.net", pour vous aider à identifier ce type de messages. Le système SpamAssassin ajoute un en-tête "X-Spam-Flag: YES" aux messages qu'il considère comme étant probablement du Spam. Vous pouvez si vous le souhaitez utiliser cette caractéristique pour régler un filtre dans votre logiciel de lecture de courrier, afin de détruire ou de classer à part ce type de message. Si ce robot a classifié incorrectement un message qui vous était destiné, ou pour toute question, veuillez contacter l'administrateur du système par e-mail @ the administrator of that system . Voir http://spamassassin.apache.org/tag/ pour plus de détails (en anglais). Détails de l'analyse du message: (7.9 points, 5.0 requis) -0.0 NO_RELAYS Informational: message was not relayed via SMTP 1.2 MISSING_HEADERS Le message ne comporte pas l'en-tête To: 1.0 MISSING_FROM Missing From: header 1.8 MISSING_SUBJECT Missing Subject: header 2.3 EMPTY_MESSAGE Message appears to have no textual parts and no Subject: text -0.0 NO_RECEIVED Informational: message has no Received headers 1.4 MISSING_DATE En-tête "Date:" absent 0.1 MISSING_MID Missing Message-Id: header 0.0 NO_HEADERS_MESSAGE Message appears to be missing most RFC-822 headers -------------------- Fin de Rapport SpamAssassin --------------------- ------------=_57440A17.FF47C9F8 Content-Type: message/rfc822; x-spam-type=original Content-Description: original message before SpamAssassin Content-Disposition: inline Content-Transfer-Encoding: 8bit XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X ------------=_57440A17.FF47C9F8--Nous pouvons constater:
Il faut, dans master.cf
, configurer postfix pour délivrer le message au filtre de contenu via l'agent de livraison pipe
comme ceci:
# # spamassassin # spamassassin unix - n n - - pipe flags=R user=debian-spamd argv=/usr/bin/spamc -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}
Spamc
va ainsi recevoir le message à transmettre à spamd
qui va l'analyser et ressortir le résultat sur sendmail
qui le ré-injectera dans le système.
Ensuite, toujours dans master.cf
, d'ajouter au service smtp
l'option content_filter=spamassassin
comme ceci:
smtp inet n - - - - smtpd
# connexion à spamassassin :
-o content_filter=spamassassin
La sortie de spamc
que nous avons étudiée plus haut est ré-injectée dans le système avec la commande sendmail
. Ce message, émis localement (Received: from localhost
) ne sera pas traité par smtpd
pas par pickup
et donc ne repassra pas par le filtre, ce qui est bien entendu préférable faute de quoi une boucle sans fin serait créée.
Encore un peu de patience, ça va venir… En attendant, voyez la documentation officielle.