I've been using SpamAssassin for about 6 months now to protect my family's mail accounts. It is an open source project and uses rules and heuristics to identify spam signatures in the mail header or in the body content. It's not perfect and the occasional piece of spam gets through, but nothing like the 50 to 60 spam emails I used to get every day.
SpamAssassin filters the mail on my server and assigns a score for each spam-like trait in the header or body. If the score is high enough it replaces the mail with a warning message with the original mail as an attachment. My mail client puts any such messages in the deleted folder. There are also client based versions of the same technology that filter the mail as you download it from your ISP's POP3 server.
Spamassassin is pretty good, but I have been using a new one called
QURB - it relies on "whitelists" of senders you communicate with. I periodically have to go thru a junk folder, but at least it's not so intrusive.
BTW: McAffee (SpamKiller) bought the company that marketed SpamAssassin, so it may be end of life pretty soon.