I just wonder what their pros and cons are, and which is better for production use. Thanks~
migration rejected from stackoverflow.com May 19 at 7:04
This question came from our site for professional and enthusiast programmers. Votes, comments, and answers are locked due to the question being closed here, but it may be eligible for editing and reopening on the site where it originated.
closed as primarily opinion-based by Sven♦ May 19 at 7:04
Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise. If this question can be reworded to fit the rules in the help center, please edit the question.
Firstly, you should expect to be dealing with well over 99% of spam before you get to the last ditch effort of heavy weight content processing. Checking sender domains, RBL checks, SMTP pipelining checks, and probably greylisting should all come before bayesian analysis or spamassassin.
I don't like spamassassin mostly because it doesn't give me enough flexibility to reject on the basis of light-weight checks without doing the heavy-weight ones at all. I regard it as only suitable for domains with light use (seconds per email rather than emails per second).
The dspam engine is quite good, but the supporting CGI program was pretty poor when I last looked (which was a few years back now). But maybe someone has taken on the task of finishing that off? It was a decent project, but looked like the author ran out of steam. In my experience dspam does very well initially, but significantly degrades with over-training.
I've tried bogofilter, some time before moving to dpsam. I forget the details, as i tried quite a few of them. I did like dspam better, but it was a few years back, and things may have changed.
One thing that's really important, is that doing a two way split between spam and non-spam is a bad strategy. You want an unsure category. The threshold for marking something as spam should be such that you should not need to go looking through it just in case it got something wrong. If you do, then what's the point? Spam-chasing becomes a hobby/time-waster rather than a way to get time back from spam. You should only be reviewing and training on the 'unsure' category. (If you do find errors in the other categories, train on them, but don't go looking for them).
Spambayes is another good one. Like bogofilter though, it's terms are single words. Engines which use word sequences like dspam does can do significantly better. (I'm not sure, but I suspect they're also more prone to over-training.)
I used to run Spamassassin and moved away from it. In my experience its problems are:
I've since been trying bogofilter but I've run up against some of its limitations: