While this is an excellent article about spam filtering software, it should be noted that spamassassin is not just a spam filter. It is a frontend to a number of different filters and rlb checks and other tests for spam.
For example, spamassassin can be configured to check the razor, pyzor, and dcc content based blacklistst for the message, it can also run other spam filters as part of the filtering process.
It is very easy to extend using perl scripting.
There are a number of additional checks that are being created by users for spamassassin which keeps it up to date with modern spamming techniques, e.g. Rules de Jour and
Also, it is possible to configure spamassassin to use any of the filters mentioned in the article (and most others) as part of the filtering process. I personally recommend dspam or crm114.
Spamassassin also integrates very well with MTAs, and can run in a high performance daemon mode.
It generates excellent iptables rule-sets with a very easy but powerful configuration. It has support for many different complex services natively like samba and peer-to-peer firesharing applications.
If only firehol had native support for some form of QoS with tc or iptables it would be the perfect firewall solution. Without QoS the firewall needs to be complemented by other tools or manual packet queueing configuration.