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.

Reply via email to