SPAM ASSASSIN sous Domino
Filtrer le SPAM sous Domino avec SpamAssassin
Voici une petite procédure afin d'intégrer SPAMASSASSIN à un serveur Domino...
...
SPAMASSASSIN est un outil anti-spam opensource disponible aussi pour Linux que pour Windows. Il utilise différents mécanismes afin d'identifier et de filtrer des messages considérés comme du SPAM : analyse d'en-têtes et de contenu, filtrage Bayésien, DNS Blacklists, utilisation de bases de filtrage collaboratives... SPAMASSASSIN peut s'installer en tant que serveur et filtrer les messages avant qu'ils ne soient distribués à votre serveur de messagerie. Il est possible de l'installer sur une machine dédiée et, dans ce cas, de l'intégrer à un système de relai SMTP. Je pense que c'est d'ailleurs la meilleure solution.
L'intégration à Domino peut également s'effectuer en intégrant l'appel de SPAMASSASSIN à des agents stockés dans les boites aux lettres des utilisateurs. Dans ce cas, l'analyse des messages est effectuée au moment de la distribution du courrier par le routeur Domino. C'est la solution qui est abordée dans cet article. L'installation est effectuée sur un serveur Domino 7.0.2 sous Windows 2003 serveur.
Télécharger les outils requis
L'intégration de SPAMASSASSIN requiert :
SPAMASSASSIN, la version utilisée est la 3.1.7. Vous pouvez charger SPAMASSASSIN au format zip à l'adresse suivante : http://spamassassin.apache.org/downloads.cgi?update=200610100328" target="_blank">spamassassin.apache.org
Un interpréteur PERL : j'utilise dans cet exemple http://www.activestate.com/Products/ActivePerl/" target="_blank">Active Perl 5.8.8.820
L'outil nMake afin de construire les modules PERL requis pour SPAMASSASSIN : http://download.microsoft.com/download/vc15/patch/1.52/w95/en-us/nmake15.exe" target="_blank">sur le site Microsoft
<li>Et pour finir, j'utilise la base SpamAssassin Integration 0.5.2 sur http://www.openntf.org/projects/pmt.nsf/ProjectLookup/SpamAssassin%20Integration" target="_blank">OpenNTF.org. Login requis (juste une formalité !).
Installation d'Active Perl
C'est peut être la phase la plus simple.
Exécutez le MSI que vous vous avez téléchargé et suivez les instructions. Le package d'installation va même configurer toutes les déclarations de variables pour vous. Active Perl est par défaut installé dans c:\perl.
Installer SPAMASSASSIN
La procédure est un peu plus manuelle.
- Décompresser Spam Assassin sur
le disque dur du serveur dans, par exemple, c:\spam.
- Décompresser l'outil NMAKE dans
le même répertoire.
- Lancer une fenêtre de commandes
DOS, puis naviguer vers le répertoire c:\spam :
cd c:\spam
- Taper la commande :
perl makefile.pl
- Répondre aux question de configuration
posées en faisant attention au premier point (au risque de voir votre
installation ne pas aboutir si vous garder la valeur y par défaut) :
buid spamc.exe = n
adresse e'mail = adresse devant recevoir les notifications
- Les alertes qui apparaissent
ensuite concernent les modules complémentaires SPAM ASSASSIN qui ne sont
pas installés. L'installation de ces modules peut s'effectuer à l'aide
de PPM ou, plus simple, la version Active Perl utilisée dispose d'un PPM
graphique (top non !).
- Lancer nmake à l'aide de la
commande DOS nmake
- Puis taper nmake install
- Lancer le batch setupdoc.bat
(http://domino.stergann.org/web/domsphere.nsf/Downloads/PMOY-6YCRGJ/$File/setupdoc.bat.txt"
target="_Blank">téléchargeable depuis la section
Downloads, et après en avoir enlevé l'extension .txt). Ce batch a pour
objectif de construire l'arborescence des fichiers d'aide de SPAMASSASSIN
dans le répertoire c:\perl\html\site\lib\mail\spamassassin
- Créer un répertoire c:\usr\share\spamassassin puis copier le ontenu de c:\perl\site\share\spamassassin dans ce répertoire.
Il s'agit d'un bug lié à WINDOWS, SPAMASSASSIN n'utilise pas l'arborescence prévue en c:\perl\...
- Créer un répertoire c:\etc\mail\spamassassin puis copier le contenu de c:\perl\site\etc\mail`spamassassin dans ce répertoire (pour les mêmes raison qu'au point précédent).
- Localiser le fichier c:\perl\bin\spamassassin.bat,
puis ajouter, après la ligne ECHO OFF :
set res_nameservers=adresseIP d'un serveur DNS
set lang=fr_FR
- Apporter les mêmes modifications au fichier sa_learn.bat
- Créer un répertoire c:\usr\share\spamassassin puis copier le ontenu de c:\perl\site\share\spamassassin dans ce répertoire.
That's all for the moment folks !
Installer SPAMASSASSIN Integration for Domino 0.5.2
Décompresser le fichier SpamAssassin_0.5.2.zip (téléchargé sur OpenNTF) dans le répertoire data de votre serveur (ou dans un sous-répertoire de data).
Ce fichier contient les templates utilisés pour générer les bases nsf SPAMASSASSIN.
- Commencer par signer, dans Domino
Administrator, les templates que vous venez d'installer avec un Id d'utilisateur
ayant le droit d'exécuter des méthodes Non restrictives et de signer des
agents a éxécuter pour le compte d'un autre utilisateur. Ces options de
sécurité sont définies, dans l'annuaire Domino, sur l'onglet sécurité du(des)
document(s) serveur(s).
- créer une base Spamassassin
à partir du modèle SpamAssassin Setup :
- Ouvrir la base NSF que vous
venez de créer dans Domino Designer , puis modifier pour chaque agent ayant
cette option définie, la propriété Exécuter au nom de en remplaçant
le nom pré-défini par celui d'un administrateur disposant d'un accès complet
aux fonctions d'administration.
Liste des agents (ATTENTION, ne modifiez que les agents qui ont déjà l'option définie) :
Propriété d'un des agents :
- Vérifier, pour chacun des utilisateurs
qui vont utiliser SPAMASSASSIN, que les préférences de courrier entrant
ne soient pas définies à Texte riche. Cette option se configure,
dans l'annuaire Domino, pour chaque document personne. L'option de conservaion
au format de l'expéditeur est correcte.
Si les messages entrants sont convertis en Texte Riche Notes, SPAMASSASSIN sera incapable d'analyser les messages.
- Il ne reste plus qu'à installer
SPAMASSASSIN dans les boites aux lettres. Ouvrez la base de configuration
(celle que vous avez créée au point 2 de cette section), puis lancer l'outil
d'installation depuis le menu Actions\Install
Options :
Installez dans des bases spécifiques : les templates de courrier,
Désactivez le lancement de la tache Design.
- Puis cliquez sur le bouton Install
- L'action va recopier les éléments
structurels requis dans les templates sélectionnés : les agents, deux bibliothèques
de scripts et un masque de configuration SPAMASSASSIN. La recopie des éléments
structurels génère un bug selon les versions de Domino utilisées : les
agents perdent le lien avec les bibliothèque de scripts qui sont référencées
dans le use.
Il faut donc, avant de mettre à jour les boites aux lettres, corriger ce point dans les templates de courrier.
- Ouvrez, dans Domino Designer,
les fichiers ntf dans lesquels vous avez installés les outils SPAMASSASSIN.
- ouvrez successivement les deux
bibliothèques de scripts SPAMASSASSIN afin de les recompiler :
Ajoutez un retour chariot n'importe où dans le code de chaque bibliothèque
Puis fermez et enregistrez les bibliothèques
- Mettez à jour les boites aux
lettres des utilisateurs en tapant, sur la console du serveur Domino, la
commande :
LOAD DESIGN -D MAIL
Configurer les options par défaut de SPAMASSASSIN et problèmes rencontrés
Chaque utilisateur peut configurer certaines des options de SPAMASSASSIN : en l'occurence les options relatives aux agents.
Les préférences générales de SPAMASSASSIN sont cependant globales au niveau du serveur Domino.
Après la première exécution d'un des agents SPAMASSASSIN, un fichier de préférences est créé dans le répertoire localsettings\defaultUser de windows.
Le fichier central de configuration de SpamAssasin se trouve quant à lui dans c:\etc\mail\spamassassin\local.cf
Exemple de configuration :
# ___________________________________________________________
# SpamAssassin user preferences file. See 'perldoc Mail::SpamAssassin::Conf'
# for details of what can be tweaked.
###########################################################################
# How many points before a mail is considered spam.
# J'ai mis le score à 1 en phase de tests afin de pouvoir disposer de données considérées comme SPAM
required_score 1
# Les deux variables suivantes ne fonctionnent pas
# mais doivent correspondre à des versions antérieures de SPAMASSASSIN
# rewrite_subject 1
# subject_tag *****possible SPAM*****
# La variable suivante est censée préfixer le sujet des messages (selon l'aide de SPAMASSASSIN
# Je n'ai pas réussi à la faire marcher
# J'ai donc effectué une modification du code dans SPAMASSASSIN Intégration
# Voir plus loin dans ce sujet
rewrite_header subject *****possible SPAM*****
# possibilité de rajouter des champs particuliers au header des messages
# Dans la pratique, la réécriture des messages par SPAMASSASSIN m'a causé des problèmes
add_header all score score=_SCORE_
version=_VERSION_
report_safe 0
use_bayes 1
use_bayes_rules 1
bayes_auto_learn 1
bayes_ignore_header X-Upstream-Spamfilter
skip_rbl_checks 0
use_razor2 0
use_dcc 1
use_pyzor 1
ok_languages fr
ok_locales fr
# Whitelist and blacklist addresses are now file-glob-style patterns, so
# "friend@somewhere.com", "*@isp.com", or "*.domain.net" will all work.
# whitelist_from someone@somewhere.com
# Add your own customised scores for some tests below. The default scores are
# read from the installed spamassassin rules files, but you can override them
# here. To see the list of tests and their default scores, go to
# http://spamassassin.apache.org/tests.html .
#
#score SYMBOLIC_TEST_NAME n.nn
# Speakers of Asian languages, like Chinese, Japanese and Korean, will almost
# definitely want to uncomment the following lines. They will switch off some
# rules that detect 8-bit characters, which commonly trigger on mails using CJK
# character sets, or that assume a western-style charset is in use.
#
# score HTML_COMMENT_8BITS 0
# score UPPERCASE_25_50 0
# score UPPERCASE_50_75 0
# score UPPERCASE_75_100 0
# score OBSCURED_EMAIL 0
# Speakers of any language that uses non-English, accented characters may wish
# to uncomment the following lines. They turn off rules that fire on
# misformatted messages generated by common mail apps in contravention of the
# email RFCs.
# score SUBJ_ILLEGAL_CHARS 0
# ___________________________________________________________
Les variables ne fonctionnent pas forcément toutes correctement avec ce mode d'intégration dans Domino. Cerytains ADD'Ons non plus : RAZOR par exemple. Un montage de SPAMASSASSIN sur un relai SMTP, Postfix par exemple, ou Domino avec SpamAssassin implémenté en Daemon (spamc-spamd) serait certainement plus efficace.
Pour préfixer les messages :
n'ayant pas réussi à implémenter la variable rewrite_header, j'ai modifié le code de la bibliothèque de scripts SpamAssassin (Windows32)
Localisez, dans l'événement gCheckDocument, le code suivant :
Puis ajouter les expressions en gras :
If lngExitCode > 0 Then
Print "SpamAssassin (" & ndbMail.FilePath & "): spam identified"
On Error Resume Next
rndoMail.RemoveFromFolder gstrInboxFolderName
Err = 0
On Error Goto Error_Handler
If rndoOptions.GetItemValue(gstrItemNameAction)(0) = gstrItemValueActionDelete Then
' Put it in the Trash folder
On Error Resume Next
rndoMail.PutInFolder gstrTrashFolderName, False
Err = 0
On Error Goto Error_Handler
Else
' Put it in the Junk Mail folder
On Error Resume Next
rndoMail.PutInFolder gstrJunkMailFolderName, False
Err = 0
On Error Goto Error_Handler
End If
prefixe="***SPAM Possible*** " & rndoMail.Subject(0)
rndoMail.subject=prefixe
call rndoMail.save(true,false)
Else
Print "SpamAssassin (" & ndbMail.FilePath & "): ham identified"
End If
Positionnez vous en tout début du code de l'événement, puis ajoutez une déclaration :
Dim prefixe as string
(L'option Declare a été positionnée dans la bibliothèque)
Fermez puis enregistrez la bibliothèque.
Bug rencontré lors du traitement des messages par SPAMASSASSIN
Un des problèmes les plus embêtants que j'ai rencontrés concerne la dénaturation des messages par l'option d'agent Domino de réécriture SPAMASSASSIN.
L'utilisateur peut activer lui même cette option :
Le résultat est en théorie plus qu'intéressant car il permet, entre autres, d'ajouter des champs SPAMASSASSIN au message traité : par exemple les champs supplémentaires configurés dans les préférences de SPAMASSASSIN.
Le résultat s'est malheureusement traduit par un agent SPAMASSASSIN qui part en vrille sur le serveur Domino. Pas tout le temps, mais sur certains messages, je n'ai pas encore eu le temps de creuser, mais je pense que c'est lié à la taille des messages. Il y a des variables de configuration SPAMASSASSIN qui semblent permettre de traiter ce problème.
Il serait à mon avis préférable, dans le contexte d'intégration Domino abordé dans l'article courant, de modifier le code LotsuScript de traitement des messages en positionnant la valeur de ReplaceMessage à false au delà d'une certaine taille de mémo.
A creuser donc...
En attendant d'avoir le temps (toujours le même problème) de modifier les scripts, j'ai désactivé, dans Domino Designer, l'accès par l'utilisateur au champ ReplaceMessage du masque SpamAssassin\Options.
-







Comments
Quelle plate forme ? Quel OS ?
Quel répertoire ?
Quel contexte ?
...
La référence des codes d'erreurs nmake se trouve ici : { Link }
Posted by Pierre MOYSAN At 22:42:19 On 26/03/2008 | - Website - |
nmake install ne marche pas :
install(1) : fatal error U1034 : syntax error : separator missing stop
merci de ton aide car je suis bloqué
Posted by lentz At 16:25:22 On 26/03/2008 | - Website - |
{ chez Microsoft }
Le lien est toujours valide
Posted by Pierre MOYSAN At 22:38:54 On 04/12/2007 | - Website - |
j'ai le problème que la personne précédente j'ai le message d'erreur suivant ""NMAKE : erreur irrécupérable U1064 : ne MAKEFILE introuvable et aucune cible ont été spécifiés".
est ce que par rapport a la proc j'ai omis quelque chose?
merci
Posted by costa At 11:28:46 On 27/11/2007 | - Website - |
Je vais être amené à implémenter une telle solution dans mon entreprise. Cela me semble parfaitement adapté à nos besoins.
Néanmoins je n'ai absolument aucune compétence en Perl (et je ne sais même pas si il y a un rapport), et lors de l'exécution de NMake, cela me renvoie le message du type : "NMAKE : erreur irrécupérable U1064 : ne MAKEFILE introuvable et aucune cible ont été spécifiés".
Sauriez-vous ou je pourrais récupérer le fichier MAKEFILE demandé ? Merci d'avance.
PS : Nous tournons sous Win 2003 Serveur.
Posted by Yohann At 11:57:08 On 02/08/2007 | - Website - |
Le seul problème que j'ai rencontré est lié à la dénaturation des messages en cas de réécriture par SpamAssassin.
Le vrai souci est plutôt côté perfs et charge serveur : le module PERL est vraiment gourmand.
Ce mode de configuration n'est pas vraiment adapté adapté à un gros serveur. Pour un serveur de messagerie de 200 utilisateurs, cela doit pouvoir tenir avec de bonnes ressources CPU. Au dela ...
Il serait plus intéressant d'implémenter SpamAssassin en mode relai SMTP qu'en mode agent, et conserver les fonctions d'apprentissage, très efficaces, sous Notes/Domino.
Ca doit même être faisable sous Windows...
Autre outil libre que je viens de tester : ASSP ({ Link } sous Windows ou Linux.
qui lui fonctionne nativement en mode relai SMTP. Fonctionnement parfait avec Domino, les modules PERL étant chargés en tant que services sont beaucoup moins gourmands en ressources
Posted by Pierre MOYSAN At 19:53:37 On 08/02/2007 | - Website - |
Encore un bel article Pierre. On sent que t'y a passer du temps
SpamAssassin est un produit génialissime qui a en plus l'avantage d'être gratuit. Quand on connais le prix des anti-spam, c'est pas un petit avantage...
Les success stories about SA tournent toutes autour d'une implémentation de SA sur un boitier Linux light en amont de l'infrastructure.
Concernant l'architecture décrite dans cet article, j'ai plusieurs intérogations :
Pour connaitre SA je sais que lors de l'analyse, il demande beaucoup de CPU. J'ai du mal à penser qu'il peut être raisonablement installé sur un serveur Domino surtout si celui-ci est fortement spammé.
L'agent d'analyse à la réception d'un mail ma fait assez peur car si l'agent se bloque la tâche nrouter se bloque et c'est tout le routage qui est bloqué
De plus sachant que l'on ne peut activé qu'un agent de ce type par base, quid de l'agent OOO (out of office) ?
Posted by julien At 11:30:09 On 07/02/2007 | - Website - |