I was using PopFile for many years - one of the most active projects at SourceForge: http://popfile.sourceforge.net/
It was, I think, one of the first implementations of Bayesian filtering, and pretty good too, with relatively few false positives after a week of training or so.
Downsides are large memory footprint, rather slow startup, and slow operation when the database grew after several years of usage. Also, configuration is done via the browser, so when you see a miscategorized message, it takes some doing to teach Popfile a new trick.
A few months ago I replaced PopFile with AntiSpamSniper: http://www.antispamsniper.com/
- a Bayesian plugin for TheBat. I also supports Outlook and Outlook Express, but not Thunderbird, I'm afraid. There is a quite capable free version, but I went for the paid version ($19.95), which has a few nice additions, such as a dedicated toolbar and automatic whitelisting of addresses you send email to.
After about three months it produces even fewer false positives than PopFile (maybe one a month!), but a little more false negatives. Specifically, I've been recently getting lots of one-line spam, sometimes only a couple of words, and Antispamsniper has trouble recognizing those messages as spam, probably because there is very little content to hook on to, and each message is different.
I like it a lot - it does not slow down email download nearly as much as PopFile did, the memory footprint is negligible, and of course the training happens inside TheBat, so it's more convenient.
For a long time I used to use a procmail filter on my mail provider's shell account, but updating it was rather tedious, and every time I wanted to update the filter I had to refresh my memory of procmail syntax, which is somewhat involved. I finally switched to using procmail only for logging incoming mail, which is useful to investigate "missing" messages sometimes, but I no longer use it for blocking. Bayesian filtering is certainly much more effective than "dumb" keyword filters.