Greylisting (I use milter-greylist) + spamassassin + spamhaus work pretty decently. All of them are milter based, and should be MTA-agnostic.
I have also a variety of sendmail tricks, like delaying HELO, penalties for more than two wrong addresses, maximum rates etc. Postfix may have equivalent techniques.
It's not magic, however. You'll still have spam, but less.