I recommend IMF for a free AntiSpam solution too. It does recognize spam very well if you configure it properly.
The best practice is to set IMF up on the exchange-frontend and then start perfmon.msc (performance monitor).
there you add from "MSExchange Intelligent Messaging Filter" the counters:
"Total Messages Assigned an SCL Rating of..." from 0 to 9
and
"Total Messages Scanned for UCE"
Now save the perfmon settings.
In the beginning you should configure IMF for high SCL Rates.
After a few days (depends on you mail-traffic) watch the performance counters
and configure for messages to block the highest SCL Rate which has the highest amount of mails. e.g. 8
And for the spam that will be delivered to the "Junk Mail Folder" the next lower SCL Rate with the highest amount of mails. e.g. 5.
BTW: If you choose to archive and not to block the "definitive spam" then you should google for "IMF Archive Manager".
It is a free tool for viewing the UCE Archive where you can delete or resend messages.
Hope this helps.