They haven't got your email address by any devious means.
They use computer programs that literally creates hundreds of email addresses an hour and hope that a percentage of them are right. eg
[email protected];
[email protected]; asmity@yahoo absmith acsmith adsmith and so on
If the first part of your email address is a proper name then you are far more likely to get spam that if you used random letters and numbers.
Do not reply to any of these emails - that will simply confirm your email address is 'live' and they can sell it on to other spammers.
Depending on how you receive email you should be able to filter them out. Have a look at the email address of the sender. If the bit after @ is obscure (@nigerianscammers.com for example) you can add @nigerianscammers.com tto the filter.
If it is a common one, you can't do this - you would block genuine mails.
You can use a free program to help screen your email:
http://www.mailwasher.net/