Avoiding Email Spam

I have been dealing with this issue of having a lot of dodgy emails in my mailing list database. Since my current hosting provider only allow me to save email addresses up to 5000 records and am reaching its capacity, I need to be able to prevent these kind of emails to get through my mailing list or to get rid the existing ones in the db.

Does anyone by any chance know what is most commonly used approach to prevent spam emails being entered into our database automatically (without human intervention)?

Any type of test for the form being filled out by a real person. The ones using hard to read images of text used to be popular as automated processes can’t read them but then neither can some real people. There are also lots of less obtrusive ways of doing it. For example you could hide an input field using CSS and have it’s label contain instructions to leave it blank for those people who end up finding it anyway - then when the spambots put content in that field you know you can discard their form. Another alternative is to test how long it takes them to fill out the form. If they fill it out faster than a person can type then obviously its a spambot.

Thank you for your reply, felgall. I believe the suggestion that you put up there is more onto the form / front-end part of the website which I believe my site have already adopted some of your suggested approaches.

In my case however, the issue that I am dealing with is more of spelling error email addresses, typos, or random emails with valid email format which the users may either may or may not deliberately did it (eg. asdlfjdsaljf@yahoo.com, randomemail@yahho.com, etc).

I came across this one article here: http://www.webdigi.co.uk/blog/2009/how-to-check-if-an-email-address-exists-without-sending-an-email/ on verifying email addresses programmatically using PHP. After many hours trying the suggestion listed there, I’ve found out that this approach has a weakness also whereby the response is entirely depends on the mail server host itself whether they support message relaying or not.

My question here is, is there any other way to do an email address verification apart from using the approach as detailed on the url above? or what is the other way around to prevent this kind of non-existence/random email issues from getting through?