Détection anti-spam avec SpamAssassin et PYTHEAS MailGate
Cette page explique comment installer SpamAssassin (v.3.4.1) en liaison avec PYTHEAS MailGate.
SpamAssassin (tm) est un logiciel "open source" capable
de détecter des polluriels ou pourriels (spam), par des analyses heuristiques, des
recherches dans des RBL (Realtime Blackhole List) etc. Chaque message ainsi
identifié
est marqué, et PYTHEAS MailGate peut être configuré pour traiter de tels
messages d'une manière particulière.
La licence d'utilisation pour SpamAssassin (tm)
est la Apache Software License (que vous pouvez consulter ici:
http://www.apache.org/foundation/licence-FAQ.html). Ni les auteurs,
ni nous-mêmes, garantissent le bon fonctionnement de ce logiciel - vous l'utilisez
à vos propres risques et périls.
Ni SpamAssassin, ni l'environnement logiciel
nécessaire à son fonctionnement, sont installés par la procédure d'installation
de PYTHEAS MailGate. Son interface avec SpamAssassin nécessite
une clé de licence qui autorise l'utilisation des
Règles d'analyse du contenu (Content-Checking Rules) ; consultez
la page About à propos des
options activées par votre clé de licence.
A l'origine, SpamAssassin a été écrit pour fonctionner sur des plateformes
Unix. Ce document vous aidera à le faire fonctionner sur une plateforme Windows, comme
par exemple Windows 200x/XP. Bien que la l'installation nécessite un petit effort,
nous sommes convaincus que cela en vaut la peine -
ce logiciel a une efficacité redoutable.
Mise à niveau de
SpamAssassin
Si vous installez SpamAssassin pour la première fois sur votre
machine, passez directement à la section suivante.
Mise à niveau d'une machine avec SpamAssassin v.3.x.x installé
Pendant la durée de la mise à jour, arrêtez le service Pytheas.MailGate (ou
la Tâche de Communication, le Communication Task).
Pour installer la dernière version de SpamAssassin :
- Si vous effectuez la mise à niveau d'une version 2.x de SpamAssassin,
il est important de lire ces remarques d'abord.
- Désinstallez ActivePerl. Puis supprimez
c:\perl y
compris ses sous-dossiers.
Par contre, laissez le dossier c:\etc\mail\spamassassin intact.
Nous vous recommandons également de conserver les deux fichiers qui composent l'utilitaire
NMAKE , qui se trouvent dans C:\perl\bin .
- Téléchargez le nouveau
Pack de support pour SpamAssassin. Le
fichier
sa.cmd nécessaire pour SpamAssassin v.3.4.1
est différent de celui pour les versions précédentes (celles d'avant la
version 3.3.0). Copiez également DOS2UNIX.EXE
et UNIX2DOS.EXE
dans le dossier d'installation de PYTHEAS MailGate.
- Votre fichier de configuration
pmg-local.cf contient éventuellement des options devenues
obsolètes. Lisez attentivement le début du fichier spamdebug.txt
lors des vérifications que vous allez effectuer lors de la mise en service de SpamAssassin.
- Suivez la même démarche que pour une nouvelle installation,
à partir d'ici.
L'installation de Perl
Téléchargez le
Pack de support pour SpamAssassin.
- Installez ActivePerl (v. 5.8.8.822).
Pour la sélection des composants à installer, gardez Perl et
PPM. Vous pouvez désélectionner les options Perl ISAPI,
PerlEx, PerlScript, Documentation et
Examples.
- Pour vérification: ouvrez une fenêtre avec ligne de commande, et tapez
PERL -v .
- Par la suite, nous allons assumer que Perl a été installé dans
C:\PERL
(dans le cas contraire, changez les références à ce dossier dans le
texte ci-dessous pour le faire correspondre à votre installation).
- Redémarrez votre machine. Toutefois, au cas où Perl était déjà installé sur
votre machine, et la variable d'environnement PATH contenait déjà le chemin
d'accès
C:\PERL\BIN comme
par ex. lors d'une mise à jour, ce redémarrage n'est pas indispensable. Après
un redémarrage, vérifiez (avec la commande PATH ),
que le chemin C:\PERL\BIN en fasse désormais partie.
L'installation de NMAKE
- Télécharger NMAKE.
- Lancez l'exécution de ce fichier, et placez les fichiers extraits
NMAKE.EXE
et NMAKE.ERR .dans C:\PERL\BIN .
Installation de quelques modules Perl supplémentaires
Un certain nombre de modules d'extension sont déjà installés par le programme
d'installation de Perl ; d'autres sont disponibles en téléchargement.
SpamAssassin a besoin de quelques modules supplémentaires qui ne sont pas compris
dans la distribution de base.
Télécharger et installer SpamAssassin
- Vérifiez que votre version de PYTHEAS MailGate est v. 2.32a (ou une
version plus récente). Effectuez une mise à niveau si nécessaire.
- Connectez-vous au site
http://spamassassin.apache.org/downloads.html, et téléchargez le programme d'installation
au format ZIP. Décompressez le fichier à partir de la racine de votre lecteur.
A titre d'exemple, pour SpamAssassin
3.4.1, cela va
créer le dossier
C:\Mail-SpamAssassin-3.4.1
ou C:\Mail-SpamAssassin-3.4.1\Mail-SpamAssassin-3.4.1 .
Dans ce qui suit, nous allons l'appeler SPAMSOURCE.
- Ouvrez une fenêtre avec ligne de commande (sur Windows Server 2008 et
supérieur : ligne de commande en "mode administrateur"), placez-vous dans le dossier
SPAMSOURCE, et tapez :
PERL MAKEFILE.PL
On va vous poser un certain nombre de questions. Faites très
attention de répondre négativement à la première (il ne s'agit pas
de la réponse par défaut !) :
Première question: Build spamc.exe (...)?
Répondre : N
Question suivante : What email address or URL should be used (...)
Répondre : ce qui correspond à votre site.
Vous pouvez ignorer les avertissements à propos des modules optionnels
manquants :
(...)
optional module missing: Razor2
optional module missing: Net::Ident
optional module missing: IO::Socket::INET6
optional module missing: IO::Socket::SSL
(...)
- Toujours dans le dossier SPAMSOURCE, tapez :
NMAKE
NMAKE INSTALL
- Faites une copie de sauvegarde de
c:\perl\site\etc\mail\spamassassin\v310.pre
(nommez-la v310.backup par ex. ; ne lui donnez pas
l'extension .pre ). Ouvrez le fichier c:\perl\site\etc\mail\spamassassin\v310.pre
dans un éditeur de texte (Wordpad.exe affichera le contenu mieux
que Notepad.exe).
Au début des lignes
loadplugin Mail::SpamAssassin::Plugin::Pyzor
loadplugin Mail::SpamAssassin::Plugin::Razor2
ajoutez le caractère # en début de ligne afin de les transformer en commentaire,
et ainsi éviter le chargement de ces modules.
- Enfin, tapez :
C:\Perl\Site\Bin\SpamAssassin -V
Attendez la réponse suivante :
SpamAssassin version
3.4.1
running on Perl version 5.8.8
- Télécharger les règles d'analyse pour SpamAssassin :
C:\Perl\Site\Bin\sa-update --nogpg -v
L'option --nogpg est moins sûre, mais elle fonctionne sans installer gpg au préalable. La commande devrait se dérouler sans message d'erreur.
Nous vous recommandons d'exécuter cette commande régulièrement (par ex.
hebdomadairement) pour tenir les règles de SpamAssassin à jour.
Vérifier votre installation de SpamAssassin
Ouvrez une fenêtre avec ligne de commande, placez-vous dans le dossier
SPAMSOURCE, et tapez :
c:\perl\site\bin\spamassassin -D < sample-nonspam.txt 2>spamdebug.txt
L'exécution devrait se dérouler sans messages d'erreur. La fenêtre avec la
ligne de commande affichera le contenu du message après son passage par SpamAssassin.
Ce texte devrait indiquer qu'il ne s'agit pas de "spam" dans ce cas (consultez les lignes préfixées par
X-Spam-... qui ont
été ajoutées par SpamAssassin dans la partie en-tête du message).
Attention: il est possible que le fichier spamassassin.bat ne
soit pas créé dans le dossier c:\perl\site\bin , mais plutôt dans le
dossier c:\perl\bin . Dans ce cas, veuillez ajuster les commandes y
faisant référence dans les chapitres ci-dessous.
Consultez le contenu du fichier spamdebug.txt qui
vient d'être créé.
Vérifiez le bon fonctionnement de la résolution DNS : La partie qui rend compte
de l'analyse des lignes en-tête Received devrait ressembler à ceci :
dbg: dns: servers obtained from Net::DNS : [...]:53
dbg: dns: nameservers set to ...
(...)
dbg: dns: is Net::DNS::Resolver available? yes
A la fin du fichier, vérifiez le résultat de l'analyse :
dbg: check: is spam? score=0 required=5
dbg: check: tests=
dbg: check: subtests=__CT,__CTYPE_CHARSET_QUOTED, __CT_TEXT_PLAIN, __DOS_BODY_STOCK, __DOS_BODY_SUN, __DOS_HAS_ANY_URI, __DOS_LINK, __DOS_RCVD_FRI, __FB_PICK, __FB_S_STOCK, __FM_STOCK_WORDS, __HAS_ANY_EMAIL, __HAS_ANY_URI, __HAS_MSGID, __HAS_RCVD, __HAS_SUBJECT, __LAST_UNTRUSTED_RELAY_NO_AUTH, __MIME_VERSION, __MISSING_REF, __MSOE_MID_WRONG_CASE, __NAKED_TO, __NONEMPTY_BODY, __RCVD_IN_SORBS, __RCVD_IN_ZEN, __SANE_MSGID, __TOCC_EXISTS, __YOUR_ACCOUNT
Faisons maintenant un test avec un message qui sera identifié en tant que "spam". Toujours positionné dans le dossier SPAMSOURCE, tapez :
c:\perl\site\bin\spamassassin -D < sample-spam.txt 2>spamdebug.txt
L'affichage dans la fenêtre de ligne de commande doit indiquer qu'il
s'agit d'un message "spam" cette fois-ci. Consultez les lignes en-tête
commençant par X-Spam-... que SpamAssassin a ajouté au message, et le corps du message
modifié par SpamAssassin.
Consultez également le contenu du fichier spamdebug.txt . Vérifiez le résultat
de l'analyse que vous trouverez à la fin :
dbg: check: is spam? score=999.998 required=5
dbg: check: tests=GTUBE,NO_RECEIVED,NO_RELAYS
dbg: check: subtests=__CT,__CTE,__CT_TEXT_PLAIN,__HAS_MSGID,__HAS_SUBJECT, __MIME_VERSION, __MISSING_REF, __MSGID_OK_HOST, __NONEMPTY_BODY, __SANE_MSGID, __TOCC_EXISTS, __UNUSABLE_MSGID
La documentation en ligne
Vous la trouvez en suivant le lien
http://spamassassin.apache.org/full/3.3.x/dist/doc/. Si vous ne savez pas
par où commencer, lisez d'abord Mail Spamassassin Conf.
Établir le lien entre SpamAssassin et PYTHEAS MailGate
Si vous êtes en train de mettre à jour une installation avec
SpamAssassin, vous avez terminé, et vous pouvez redémarrer PYTHEAS MailGate.
Si nous
n'avez pas encore de fichier pmg-local.cf , copiez celui du
Pack de support pour SpamAssassin vers C:\etc\mail\spamassassin . Créez
ce dossier au cas où il n'existerait pas. Configurez vos options de fonctionnement
de SpamAssassin dans ce fichier, au lieu de modifier les fichiers de
configuration livrés avec SpamAssassin dans C:\perl\site\share\spamassassin ,
Ainsi, vous ne courez pas le risque d'écraser vos ajustements par une mise à jour
future de SpamAssassin. Par contre, il est certes utile de parcourir
ces fichiers, pour avoir une idée de l'étendu des possibilités de paramétrage.
Remarque importante: pour PYTHEAS MailGate v. 2.75c et avant,
sur Windows Server 2012, évitez des espaces dans le nom du dossier de stockage
temporaire pour messages entrants.
Copiez les fichiers sa.cmd , DOS2UNIX.EXE et
UNIX2DOS.EXE dans le dossier de PYTHEAS
MailGate (par défaut C:\Program Files\PytheasMailgate ). Dans
sa version originale, sa.cmd assume que PYTHEAS
MailGate et Perl ont été installés dans les dossiers
proposés par défaut ; si tel n'est pas le cas dans votre installation, modifiez
sa.cmd en conséquence.
Strictement parlé, nous n'avons pas besoin
de DOS2UNIX.EXE et UNIX2DOS.EXE pour cette version de SpamAssassin, mais cela
pourra devenir nécessaire pour des versions à venir.
Ci-dessous
quelques commentaires par rapport au contenu de sa.cmd qui lance
SpamAssassin :
-D |
Mode diagnostique. Correspond à la directive de
fournir en sortie un descriptif détaillé des traitements effectués, et des résultats
obtenus (cf. ci-dessous). Cette option peut éventuellement être
modifiée pour changer la sélection des informations représentées. Vous
pouvez aussi supprimer ce paramètre, si vous n'avez pas besoin de ces
informations. |
-e |
Correspond à la directive de positionner le code de sortie en
fonction de l'état "pourriel ou pas". PYTHEAS MailGate utilise ce code
de sortie pour déterminer si un message est du "spam". |
-p ... |
Donne à SpamAssassin la directive d'utiliser le
fichier pmg-local.cf , sans tenir compte du contexte utilisateur
dans lequel SpamAssassin a été lancé. |
%1, %2, %3, %4 |
PYTHEAS MailGate va appeler sa.cmd avec
4 paramètres. Ci-dessous quelques précisions. |
%1 |
Nom (complet) du fichier contenant le message à examiner. |
%2 |
Nom (complet) du fichier qui contiendra le message examiné (il
s'agit toujours de Dossier_Temp\PmgSaChki.tmp ,
i étant un nombre entre 1 et 12). |
%3 |
Nom (complet) de fichier qui contiendra le texte de sortie du
mode diagnostique de SpamAssassin (il s'agit toujours de
Dossier_Temp\PmgSpamAi.log, i étant un
nombre entre 1 et 12). |
%4 |
Déterminé par la configuration
du compte POP3 dans PYTHEAS MailGate. NB : la version de sa.cmd
du
Pack de support pour SpamAssassin contient
du code pour un traitement particulier déclenché par la valeur
NoSpamCheck de ce paramètre, qui fait d'ailleurs ce que le mot
suggère : si vous ajoutez l'attribut Spam-A:NoSpamCheck à la
rubrique Comment d'un compte
POP3, ce dernier sera exclu du traitement anti-spam.
|
Code de sortie ou Errorlevel |
Depuis la version 2.31c,
PYTHEAS MailGate ne dépend plus du code de sortie (autrement dit, de la
valeur Errorlevel) du fichier de commande sa.cmd . |
Pour vérifier votre installation, vous pouvez utiliser sapmg.cmd
du
Pack de support pour SpamAssassin. Ce
fichier de commande appele SpamAssassin de la même manière que
PYTHEAS MailGate. Vous trouverez le message vérifié par
SpamAssassin, ainsi que le rapport de diagnostique spamdebug.txt ,
dans le dossier référencé par la variable environnement TEMP (pour
afficher les variables d'environnement, utilisez la commande SET).
Mise en route
Si vous activez ce traitement pour la première fois, il sera prudent de ne commencer
qu'avec une seule boîte aux lettres POP3, en choisissant les options suivantes:
- Check incoming mail with SpamAssassin... Only from POP3 accounts with
the word Spam-A in the comment. Saisissez le mot Spam-A dans
la rubrique Comment d'un de vos comptes POP3.
- Forward messages identified as Spam to... The intended Recipient as
usual
après le traitement des messages par SpamAssassin dans le Remote
Control Program ou dans le Session Log message, notez l'apparition des lignes comme
celle-ci :
[11:16] [Spamassassin] Spam status: No, score=-4.9 required=5.0 tests=BAYES_00
autolearn=ham version=3.4.1
ou encore :
[11:06] *** [Spamassassin] Spam status: Yes, score=8.8 required=5.0
tests=BAYES_99, BIZ_TLD, HTML_60_70, HTML_MESSAGE, HTML_TITLE_UNTITLED, HTTP_EXCESSIVE_ESCAPES,
MIME_BASE64_TEXT, MIME_HTML_NO_CHARSET, MIME_HTML_ONLY autolearn=no version=3.4.1
Si vous avez
des problèmes :
- Consultez
PmgSpamAn.log , ou aussi PmgSaChkn.tmp (il faut vite faire
une copie de ce fichier pendant le cycle de téléchargement, car il sera supprimé
à la fin). Vous trouverez ces fichiers dans le dossier spécifié sur la page
Réglages du service,
Courriel entrant (dans la v. 2.x: sur la
page
Environment du Programme de Configuration).
- Avez-vous vraiment redémarré votre machine depuis l'installation de Perl?
- Avez vous vérifié les chemins d'accès dans
sa.cmd ?
- Avez-vous créé le dossier
C:\etc\mail\SpamAssassin ? Y
avez-vous placé votre exemplaire de pmg-local.cf ?
Un peu de nettoyage
Vous pouvez supprimer le dossier SPAMSOURCE et son contenu.
Options pour l'acheminement du "spam" par PYTHEAS MailGate
Vous disposez des options suivantes pour l'acheminement des messages identifiés
comme spam:
- comme d'habitude (NB que le l'objet du message a été marqué en tant que
spam par
SpamAssassin),
- toujours à un destinataire (Recipient) explicitement spécifié,
- ne pas l'acheminer du tout.
NB: si vous avez choisi de consigner chaque message reçu dans un fichier log,
ces messages acheminés nulle part seront néanmoins mentionnés dans ce log, avec
l'objet du message préfixé par le mot [Spam].
- Les messages identifiés comme "spam" avec un score au delà d'une certaine limite peuvent être acheminés
d'une manière différente, par rapport aux messages identifiés comme "spam" avec un score modéré, en dessous
de cette limite.
Configuration spécifique
pour chaque compte POP3 de la détection de "spam"
Vous pouvez l'activer pour tous les comptes POP3 à la fois, ou seulement pour
certains.
Pour activer l'analyse de "spam" seulement pour quelques comptes POP3, choisissez
l'option correspondante dans la configuration de PYTHEAS MailGate. Puis saisissez
le mot-clé Spam-A dans la rubrique Commentaire (Comment)
des comptes POP3 concernés.
Si cela est utile, vous pouvez même utiliser des configurations de détection de
"spam" spécifiques
à chaque compte POP3 :
- Saisissez l'expression suivante dans la rubrique Comment dans
les propriétés de chaque compte POP3:
Spam-A:ConfigTag .
ConfigTag est un identifiant quelconque (composé seulement de lettres et
de chiffres). Il sera passé en tant que 4ème paramètre au fichier de commandes
sa.cmd .
- Vous pouvez ensuite écrire des instructions dans
sa.cmd - sur la base
de ce 4ème paramètre - qui peuvent lancer SpamAssassin avec des paramètres
de ligne de commande spécifiques pour chaque compte POP3.
- Si pour un compte POP3 aucune valeur pour ConfigTag n'a été
donnée, le 4ème paramètre recevra la valeur Nothing (vous
n'avez donc pas à vous inquiéter de n'avoir que 3 paramètres dans certains cas).
- Le fichier
sa.cmd file du
Pack de support pour SpamAssassin files
contient du code pour traiter ce paramètre correspondant à une valeur de ConfigTag
égale à NoSpamCheck ,
avec l'effet d'exclure le compte POP3 correspondant du traitement anti-spam.
L'apprentissage Spam/Ham avec SpamAssassin
Pour l'opération d'apprentissage (sa-learn), on a besoin de courriels au format
texte (d'après RFC822), avec les en-têtes complètes (message header). Malheureusement,
il ne semble pas y avoir de moyen simple pour obtenir des courriels dans un tel
format à partir de Microsoft Outlook.
Comment enregistrer des messages entrants dans des fichiers au format texte
selon RFC822
A partir de la version 2.30c, PYTHEAS MailGate est capable d'effectuer
ce traitement grâce à une directive particulière ajoutée au Commentaire (la
rubrique
Comment) d'un compte POP3. Le mot-clé de la directive est SaveToDisk ,
et il supporte deux paramètres étant séparés par une barre verticale (ASCII_124) :
- le nom du dossier où les messages seront enregistrés. Ce dossier sera créé
à partir du dossier
ProgramData\PytheasMailgate\Incoming (le
dossier Incoming est placé en
fonction de l'emplacement où se trouve le fichier de configuration
PMailGat.INI ) ;
- un âge maximal (en heures). Tout fichier âgé au delà se trouvant dans ce
dossier sera automatiquement supprimé. Une valeur de 0 (zéro) désactive le
nettoyage automatique.
A titre d'exemple, ajouter la directive SaveToDisk:SpamHam|24 au
commentaire de la fiche d'un de vos comptes POP3 revient à enregistrer les
messages provenant de cette boîte aux lettres POP3 dans le dossier PytheasMailgate\Incoming\SpamHam ,
et tout fichier qui se trouve dans ce dossier âgé de plus que 24 heures sera
supprimé. La distribution des
messages est effectuée comme d'habitude. Il est à noter que plusieurs comptes POP3
peuvent faire référence au même dossier.
Une autre manière d'obtenir des messages au format texte (selon RFC822) est
de passer par le traitement View/Delete messages (accessible dans le
Programme de Configuration de PYTHEAS MailGate, sur la page
des propriétés d'un compte POP3). Il permet d'enregistrer
un message dans ce format (Save message as; appuyer sur F10
pour y accéder). Pour pouvoir enregistrer des messages même après leur
téléchargement,
configurez PYTHEAS MailGate de ne pas effacer
les messages lors du téléchargement, mais plutôt un ou
deux jours plus tard. Cela vous laissera le temps de les récupérer au bon format. Aussi,
après la mise en service du moteur Bayes, cela vous permettra de récupérer les messages
qui ont éventuellement subi une détection incorrecte.
Pour rendre cette opération efficace, vous pouvez préparer votre environnement
comme suit:
- Mettez en place la structure de dossiers, comme décrit dans le
Pack de support pour SpamAssassin.
- Faites des raccourcis sur le bureau pour les programmes
LearnHam.cmd
and LearnSpam.cmd , et les dossiers SpamTest\Ham et
SpamTest\Spam .
Le processus d'apprentissage peut maintenant se dérouler de la manière suivante:
- Sauvegardez le message pour le processus d'apprentissage sur le bureau (View/Delete
messages, F10, Save message as).
- Par un glisser-déplacer, déplacez ce fichier sur le raccourci du dossier
SpamTest\Spam .
- Démarrez le script
LernSpam.cmd par un double click sur son raccourci
(cela va traiter tous les fichiers qui se trouvent dans le dossier correspondant).
Instructions supplémentaires pour une mise à jour de SpamAssassin
2.x
- Avant ce commencer avec la mise à jour, et avant de désinstaller
l'ancienne version, mettez votre base de données Bayes
existante dans un état stable.
Dans une fenêtre avec ligne de commande, faites exécuter la commande suivante :
sa-learn -p c:\etc\mail\spamassassin\pmg-local.cf --rebuild
- Nettoyez le dossier
c:\etc\mail\spamassassin : n'y laissez
que votre fichier pmg-local.cf et le dossier bayesdb
avec son contenu.
- Après l'installation de SpamAssassin v. 3.x : dans une fenêtre avec ligne de commande, tapez :
c:\perl\site\bin\sa-learn -p c:\etc\mail\spamassassin\pmg-local.cf --sync suivi de
c:\perl\site\bin\sa-learn -p c:\etc\mail\spamassassin\pmg-local.cf -D --import Ceci va convertir votre base de données Bayes au nouveau format DB_File. Ne
vous inquiétez pas - ces commandes peuvent prendre quelques minutes, selon la
taille de votre base de données Bayes.
- Vérifiez que la nouvelle version de SpamAssassin fonctionne
sur votre machine
(nous recommandons d'utiliser le fichier de commande
spam-a.cmd inclus
dans le
Pack de support pour SpamAssassin, car il
fait référence à votre fichier pmg-local.cf contenant les
réglages pour votre site, qui à son tour contient une référence à votre
base de données Bayes, qui se trouve dans c:\etc\mail\spamassassin\bayesdb ). Analysez aussi le texte
affiché pour découvrir des options de configuration qui ne sont plus
supportées, ou qui ont changé de syntaxe. Le
Pack de support pour SpamAssassin
contient d'ailleurs un fichier pmg-local.cf à titre d'exemple.
Informations complémentaires
Remerciements
Pour réaliser ce document, nous nous sommes inspirés du document
USING SpamAssassin WITH WIN32, (c) 2002,2003 by Michael Bell
(merci!).
SpamAssassin est une marque déposée de la Apache Software
Foundation.
|