I am currently using the spambouncer filter. It can be found at http://www.spambouncer.org. It requires a little setup initially, but it does a very good job. It is regularly updated as well. although the documentation describes it as running on your ISP's server assuming you have shell access, it works just fine with Linux and fetchmail retrieving mail. Basically, it classifies mail as personal, bulk, blocked, or spam. Personal goes to your inbox, bulk is legitimate mailing lists, and unless modified, goes to a folder called bulk.incoming. Blocked mail is usually suspicious mail, but the filter isn't 100% sure of it being spam. Spam is what the filter is sure is really spam, and can be safely sent to /dev/null unless you wish to complain about it. The neat thing about this filter is that some of its rules are designed to catch spammers putting garbage in the subject, or using other tricks to hide from filters. It's also very configurable, letting you decide how paranoid it should be.