Ditto all the stuff about not using your ISPs email server.
Personally, I'd experienced a declining state of affairs in email hosting at a price that I thought was reasonable. I eventually got to the point where I hacked together my own (receiving only) email server in Python. (Also using pieces from Django to connect to an SQL backend.) My outgoing email is sent via a cheap hosting package I have that also doubles as a backup if I have a major incoming server problem... I can just point my MX records back to them.
https://github.com/marvinglenn/asnn-mda (Open Source licensed, free as in both speech and beer)
I'm getting a few false positives in blocking, but that's more due to incompetent configurations by legitimate companies. For example, US Cellulars SPF records don't clear their own sending servers. A few other business, my bank in particular, use a registrar that I find to be such a spam source that I reject email merely by being registered there.
This software is not for anyone that doesn't have at least a modicum of hacker spirit, but I've gotten it to the point where it's been extremely effective for me, hopefully not too hard to set up for others, and gives me the cathartic release of dropping F-bombs on spammers during the SMTP transaction.