|
Met Spamassassin is het eenvoudig om in te stellen bij welke score mail wordt aangemerkt als spam. Het is echter makkelijk als je in Domino kunt bepalen welke aktie er uitgevoerd moet worden bij welke score. Er staan op internet meerdere artikelen over hoe je de mail rules kunt aanpassen om ook de Spam scores te kunnen afvangen. Helaas werkte deze voorbeelden niet in onze situatie. Dit had meerdere oorzaken:
- het veld X_Spam_Score heeft geen Summary eigenschap waardoor formules niet werken op dit veld.
- de score is tekst en moet worden omgezet naar nummer om te kunnen vergelijken
- door het converteren van text kan het voorkomen dat er fouten optreden door verschillende punt en komma notatie voor decimalen
Na wat puzzelen heb ik uiteindelijk een werkende situatie waarbij Spamassassin alle spam mail gewoon door laat maar wel de spam score weg schrijft op de mail. In Domino kan ik nu met een Mail Rule eenvoudig de waarde aanpassen waarop ik berichten naar een spam postbus wil verplaatsen.
Dit is een beschrijving voor versie 7x:
Open hiervoor de pernames.ntf database sjabloon (Domino Directory) in de Designer.
Ga naar het formulier (RulesDlg)|Mailrule.

Voeg extra opties toe aan het veld "condition":
spamassassin tag|M spamassassin score|N amavis alert|O
Pas de formule in het veld "Logic" aan:
@If(@Contains(Condition;"C":"F":"H":"N"); "is less than|1":"is greater than|2":"is|3":"is not|4";"contains|1":"does not contain|2":"is|3":"is not|4")
Sla het formulier op. Open de Script Library "Rules"
Zoek in de Declarations de regel "Const COND_Customize = ....." Voeg daar de extra opties toe:
Const COND_SPAMTAG = &h00000122& Const COND_SPAMSCORE = &h00000123& Const COND_AMAVISALERT = &h00000124&
De waardes zijn niet van belang, ze moeten alleen uniek zijn.
Voeg bij de functie FieldString de volgende waardes aan de Select Case toe:
Case "M" FieldString = GetString(COND_SPAMTAG) Case "N" FieldString = GetString(COND_SPAMSCORE) Case "O" FieldString = GetString(COND_AMAVISALERT)
Pas in de sectie "LogicString" de regels If (strCond = "C") Or (strCond = "H") Or (strCond = "F") Then aan zodat er dit staat:
If (strCond = "C") Or (strCond = "H") Or (strCond = "F") Or (strCond = "N") Then
In de sectie ConditionParser kunnen we de volgende opties toevoegen aan "Select Case COND_sCondition"
Case "M" Fieldstring = "X_SPAM_FLAG"
Case "N" Fieldstring = |@If(@IsError(@TextToNumber(@ReplaceSubstring(X_SPAM_SCORE;".":",";""))/| &_ |@Power(10;@Length(@RightBack(@ReplaceSubstring(X_SPAM_SCORE;".";",");","))));0;| &_ |@TextToNumber(@ReplaceSubstring(X_SPAM_SCORE;".":",";""))/@Power(10;@Length(@RightBack(@ReplaceSubstring(X_SPAM_SCORE;".";",");","))))| Case "O" Fieldstring = "X_Amavis_Alert"
De lange formule van "N" zal er voor zorgen dat het tekstveld X_Spam_Score netjes wordt omgezet naar een voor de Domino server begrijpelijke nummerieke waarde.
Even verder op in deze sectie voegen we de "N" optie toe aan de "Select Case COND_sLogic" regels:
Select Case COND_sLogic Case "1" If COND_sCondition = "C" Or COND_sCondition = "F" Or COND_sCondition = "H" Or COND_sCondition = "N" Then LogicString = " < " Else '//contains LogicString = " @Contains( " End If ConditionParser = True Case "2" '//does not contain If COND_sCondition <> "C" And COND_sCondition <> "F" And COND_sCondition <> "H" And COND_sCondition <> "N" Then
Weer een eind verder voegen we de nieuwe opties toe aan "Select Case COND_sCondition"
Case "M","O" '//X_Spam_FLAG Select Case COND_sLogic Case "1" , "2" s_MAINFORMULA = s_MAINFORMULA & "(" & LogicString & FieldString & | ;"| & COND_sString & |"))| Case "3" , "4" s_MAINFORMULA = s_MAINFORMULA & "(" & FieldString & LogicString & " """ & COND_sString & """)" End Select Case "N" '//X_SPAM_SCORE s_MAINFORMULA = s_MAINFORMULA & "(" & FieldString & LogicString & COND_sString & ")"
In de sectie GetString voegen we de nieuwe opties toe aan "Select Case StringType":
Case COND_SPAMTAG GetString = " spamassassin tag" Case COND_SPAMSCORE GetString = " spamassassin score" Case COND_AMAVISALERT GetString = " amavis alert"
Vervolgens kunnen we de wijzigingen opslaan en de Domino Directory vernieuwen met dit sjabloon.
Maak een nieuwe Mail Rule aan bijvoorbeeld als spamassissin flag is greater than 4 move to Database spam.nsf.
Sla de rule en de configuratie op. Eventueel op de server console het commando Set Rules uitvoeren.
Je kunt nu testen. Een testbericht is o.a. te vinden op http://spamassassin.apache.org/gtube/gtube.txt
Afbeeldingen volgen nog.....
Bij ons werkte dit overigens pas nadat we de velden waarop we willen testen ook als Notes velden op de formulieren in de Mail Router Mailbox hadden geplaatst. In ons geval dus drie velden: X_Spam_Score, X_Spam_Flag en X_Amavis_Alert alle drie als text. De velden hebben dan op het moment dat de Router de Rules uitvoert de eigenschap Summary waardoor de formules de velden kunnen evalueren.
|