You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@spamassassin.apache.org by "Lawrence @ Rogers" <la...@nl.rogers.com> on 2011/10/14 01:39:28 UTC

Re: Results of eval and meta rules

On 13/10/2011 9:01 PM, Karsten Bräckelmann wrote:
> On Thu, 2011-10-13 at 03:57 -0230, Lawrence @ Rogers wrote:
>> On 13/10/2011 1:45 AM, Karsten Bräckelmann wrote:
>>> In a related note, as per the M::SA::Conf docs for meta rules -- "The
>>> value of a hit meta test is that of its arithmetic expression. The value
>>> of a hit eval test is that returned by its method."
>>>
>>> The latter means, this style of adding "rules" is not necessarily safe,
>>> since these are eval tests. However, in this case, I believe they all
>>> should be set to 1 in case of a match.
>>>
>>> The former means, you could eliminate such issues due to inconsistencies
>>> and code duplication, by using an additional meta level:
>>>
>>>     meta __VALUE  FOO + BAR
>>>
>>>     meta ONE  __VALUE == 1
>>>     meta TWO  __VALUE == 2
>> I don't know how I overlooked that omission in the first rule :)
> In particular, since these rules are not exactly complex, and seeing
> them side by side... ;)
>
> Anyway, that's why I also included a way, to prevent this from ever
> happening. Define once, don't duplicate code, simply by adding another
> meta rule level.
>
>
>> Thanks, it's working as expected now.
>>
>> I designed the rules using the information available on
>> http://wiki.apache.org/spamassassin/WritingRules
>>
>> Under "Meta rules"
>>
>> It has this rule
>>
>> meta LOCAL_MULTIPLE_TESTS (( __LOCAL_TEST1 + __LOCAL_TEST2 +
>> __LOCAL_TEST3)>  1)
>>
>> "The value of the sub rule in an arithmetic meta rule is the true/false
>> (1/0) value for whether or not the rule hit. "
>>
>> If this is incorrect, perhaps this documentation should be updated.
> Well, incorrect... Put into easy terms, I'd say. It's intended as a
> quick-start tutorial. After that, I seriously recommend having a look
> into the full documentation.
>
> There are two points here:
>
>    "The value of a hit eval test is that returned by its method."
>
> Which, I believe (without looking at the code) is generally the boolean
> value as mentioned in the wiki. Including the URI DNSBL eval rules you
> are using.
>
> However, and that was mostly meant as a heads-up, it MAY NOT hold true
> always, since eval rules MAY return something else.
>
>    "The value of a hit meta test is that of its arithmetic expression."
>
> This also most likely is generally the boolean value. Definitely in the
> example given, since the (non-boolean!) sub-result of the arithmetic
> expression then is compared against a number -- either true, of false.
>
> The trick is, to keep the duplicated arithmetic sub-expression in a
> single meta, and use that result for your comparison. Using the
> supported, though generally not used feature for your benefit.
>
>
Thanks for the info :)

Regards,
Lawrence