On Sat, 2014-07-26 at 11:12 +1000, Noel Butler wrote: > On 26/07/2014 03:32, Axb wrote:
> > what's the advantage of such a response method? > > > > The idea of separate return codes is to use different rules/scores and > > different rule descriptions which describe the type of listing > > As you see, we use .2-.11 for this rule, the RC is only for internal > use here so support can identtify which list, (we have two others that > use singular codes that are rule specific) so are you suggesting that > rather than that one rule, we have ten rules doing exactly the same > thing? > > That's not very efficient :) They don't do the same thing. They distinguish different listings. Which is exactly why you have different return codes, as you just explained. There is one DNS query (or eval() code run). There are multiple light- weight response based rules. See e.g. stock Bayes and URIBL rules. Using a set of FOO_* rules, advantages are (a) supporting different scores, even if you don't need them right now, and (b) knowing exactly which one of the set fired. Always. Because the rule names differ. In the case of a "return code" injected into the description, as you described, you will only know the actual listing with the Report header added. Which is spam only be default. The Status header with the terse list of tests hit will NOT tell you, which of your internal listings fired. So with ham, there's no hint which of your lists badly fired... If your support needs to identify different RBL lists, enable them to do that for FP hits on ham, too. Use rule names, that identify the list. The describe option offers an additional, verbose, human readable text for a given rule. The describe option does not differentiate flavors of a given rule. And, well, you really don't want your support to depend on the verbose description, given for users to understand the rule, but being unable to tell or explain the FP rule hit with only the rule name available, do you? -- char *t="\10pse\0r\0dtu\0.@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; }}}