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.

       Loren


Reply via email to