Loren Wilton wrote:
You have a bit of a chicken and egg problem at the start. Until
some learning takes place in the system.
Two possibilities. The rules exist and have scores. Assume they are
maintained, for whatever reason.
1. Until Bayes has enough info to kick in, classification is done
by the scores. Then when Bayes kicks in the scores turn off (insofar
as adding to themessage score, they might still show up as tokens in
the message that Bayes will process).
2. Divide all the scores by 10 or 20. The leave them on. Pretty
soon bayes will override almost any reasonable score combination.
BTW, while ham rules are possible, SA has almost no ham rules; perhaps
two or so. Spammers long ago found they could write their spams to
match ham rules and thus bypass SA. Thus, no ham rules, no spmammer
workarounds. Of course personal or ste specific ham rules will
generally still work, since they will not be public knowledge and
spammers won't be able to target them.
I suspect you can find all rule names in PerMsgStatus. However the
latest SA versions have implemented a 'check' plugin that actually
runs the rules and accumulates the score. The rule running was moved
to a plugin so that people could, at least in theory, change the order
or the way that rules are run. It sounds like that is what you want
to do, so a modified Check plugin may well be the way to go.
I don't understand though why you are interested in the names of all
rules run; I don't see what it buys you. Currently ALL rules are run,
unless short-circuiting is in effect, and by default it mostly isn't.
In any case, if a rule doesn't hit on a message, the name of the rule
is probably irrelevent. It might have missed because the message is
ham, but it even more likely missed because it simply targets a
different kind of spam. So assuming that "rules not hit" === "good
tokens" is unlikely to be the case.
You should be able to get Bayes to scan the rule names hit pretty
easily. Bayes is just about the last rule; I think Awl comes after
it. You might want to change that order, which I suspect you can do
in the Check plugin. You could then modifty the Check code to push the
rule names into a special header line before calling Bayes. This
could probably be done in Check, and could certainly be done by a
one-off plugin that you wrote. It would be called by a special rule
just before Bayes is called, and again, it would add the current rule
names to a special header bayes could see.
Of course you have to modify Check to drop out the scores for the
non-byes rules. Either that or rescore all of the rules.
Just a thought - what if we had some central servers for real time
reporting where the SA rule hits and scores were reported in real time
for some sort of live scoring or analysis or dynamic adjusting? Just
thinking out loud here.
- Re: A different approach to scoring spamassassin hits Marc Perkel
-