Here's the dirty trick I use. It's not practical for everyone, but for those with their own website, this reduces spam caused by the selling of email addresses by other websites:
I have a website, so my email comes through my website's domain name. I can put anything before the @ symbol and I will still get the email. So, when I have to enter my email at another website, I enter it like this:
their_website_name@mydomain.com. So, for example, when signing up to TFP, I might enter
tfp@mydomain.com. Then when that website sells my email address (which TFP doesn't, but this is just an example), I know who sold it because it comes to an email address that has their name in it.
Then, when I see that an email address has been sold, I set up my website to automatically forward it back to the support, sales, or main email address of the website that sold it. The email hits my website and then goes right back out to the bastards that sold my address! I never have to deal with it.