On Sun, 2010-10-24 at 22:08 +0200, Karsten Bräckelmann wrote:
> On Sun, 2010-10-24 at 16:05 -0230, Lawrence @ Rogers wrote:
> > I have settled on the following as it's more specific and less prone to 
> > FPs (I can't think of any possibilities right now)
> 
> > header __LOCAL_SUBJECT_SPAMMY  Subject =~ /^[0-9a-zA-Z,.+]{42,}$/
> > meta LOCAL_SUBJECT_SPAMMY1  ((__LOCAL_SUBJECT_SPAMMY + HTML_MESSAGE + 
> > MIME_QP_LONG_LINE + MPART_ALT_DIFF + TRACKER_ID) > 2)
> 
> I don't think that meta logic is actually what you intended. At least
> three of these rules must be true. Any three. It does *not* guarantee
> your subject rule to match, it does not further constrain or safe-guard
> it.

> > score  LOCAL_SUBJECT_SPAMMY1 5.0

Also, when trying to make that rule even more specific in order to
safely raise its score, you dropped a fundamental design opportunity of
scoring systems.

That rule sure is worth a point of its own. So rather than converting it
into a non-scoring sub-rule only for meta rules, you can keep it --
scored low-ish, and create a second, more specific meta rule.

  header FOO  Subject =~ /.../
  score  FOO  1.0

  meta   BAR  FOO && (A + B + C + D >= 2)
  score  BAR  3.0

Just a thought, since it seems appropriate in this case. Also, fixed the
logic of the meta rule. ;)


-- 
char *t="\10pse\0r\0dtu...@ghno\x4e\xc8\x79\xf4\xab\x51\x8a\x10\xf4\xf4\xc4";
main(){ char h,m=h=*t++,*x=t+2*h,c,i,l=*x,s=0; for (i=0;i<l;i++){ i%8? c<<=1:
(c=*++x); c&128 && (s+=h); if (!(h>>=1)||!t[s+h]){ putchar(t[s]);h=m;s=0; }}}

Reply via email to