One of reason for the spam you get, are all these websites that, for no particular reason, require a registration – and thus your email. It could be a random forum where you are searching for something or whatever that “offers” “free” registration.
There are two plus one ways you can avoid this:
Well, firstly you can always create one more email just for all these websites.
A sometimes better/faster way is to use bug me not. This is a community-based (in terms of that anyone can add website credentials) site where you can search if the website that is asking you for registration is already there. If there is, you will be given credentials that in most cases work.
You can use a temporary email account. This is quite different from method (1), since this is really a one-time disposable email. Usually you find a site offering this service, you create an email (just with one click) and immediately use the generated email for the registration. In most cases, you temp email will be “destroyed” after some minutes. There are many who offer this kind of service: