I'm writing a perl based mail filter, essentially a wrapper that invokes spamassassin like procmail. I'm using Mail::SpamAssassin to filter the mails instead of commandline SpamAssassin though, as it is the fastest mode to invoke SA.
I've timed an empty SA, SA with razor2, SA with dccifd, SA with dccproc, SA with pyzor and got the following timings on my Athlon Xp 2100+ with 512 MB RAM and Gentoo with 2.6.5 kernel: SA alone with DNS lookup of received from IP:1.199s SA with dccproc:1.857s SA with dccifd:1.859s SA with pyzor:1.654s SA with razor2:2.560s SA with dccifd+pyzor+razor:3.660s The above timings are the average achieved over a 1000 runs of a small 2k mail run one after another. Note that RBL checks weren't used, as RBL checks are best done at MTA level. I'd like to verify whether this kind of timing is the best I can achieve. Seems pyzor being the fastest, dcc second fastest and razor2 the slowest. Maybe something todo with razor2 using TCP, while dcc and pyzor use UDP. Also, shouldn't be the dccifd tests faster than dccproc, as dccifd is a daemon always running, while dccproc has to be loaded everytime, or is the dccproc too is cached in RAM, thereby nullifying the advantage of faster startup for dccifd? Maybe testing the 1000 mails in parallel may yield different results, though I'm not too sure about that. Any feedback is welcome. cheers, Karthikeyan,S.
