The spam fighting process I use (in order):
+- 1: iptables - Block spammers from connecting to port 25, consider logging their attempts. |+- 2: postfix - postfix has a many effective spam controls and plugins | +----+ 2.1: client_restrictions - the client is the machine connecting to your smtp server | +----+ 2.2: helo_restrictions - the helo is the identification that machine provides | +----+ 2.2: sender_restrictions - the sender is the "from" address | +----+ 2.2: recipient_restrictions - the recipient is the "to" address | +- spamassassin - spamassassin is an effective bayesian and rules-based filter to identify spam | +- Thunderbird or Mac Mail - these mail clients (and perhaps others) use training to identify and separate spam
iptables - iptables is an extreme method of blocking email. From the sender's perspective, the host is down. However, in several cases, it can be used effectively, like blocking certain countries and eternally black holes. See http://www.okean.com/ for more information.
On page 2 in this series, we'll discuss fighting spam with Postfix with client, helo, sender, and recipient restrictions.