How to verify an email address before sending (free methods)

Syntax, MX and SMTP checks explained, with the free commands and tools to run them and what each result means for a cold email list.

Written by
Mradul, Engineering & Product, EtherLabz
Length
8 min read
Filed under
Tutorial

To verify an email address before sending, run three checks in order: the syntax is valid, the domain has a mail server (an MX record), and that mail server accepts the specific mailbox (an SMTP check). The first two are free and take seconds from your own computer. The third is best left to a verification service, and several have a free tier.

Score lands on every lead, free

Deterministic 0–100 Quality Score on every result — no extra credit, no extra wait. Sort to High Quality before you pay 1 credit for an enrichment.

Native MCP server

Remote endpoint for Claude.ai (OAuth 2.1) + stdio package for Claude Desktop, Cursor, Claude Code. Same tools as the REST API.

These are the two axes where LocalLeads is genuinely different. Everything else — search, enrichment, export — is table stakes. Quality Score · MCP

This guide explains what each check proves, how to run the free ones yourself, and why a home-made SMTP check is usually a bad idea. It is written for people about to send cold email to a list they built or bought, who want to avoid bounces.

What email verification means

Email verification is the process of checking that an address can receive mail without sending a message to it. It is a stack of separate checks, and each one answers a different question.

CheckWhat it provesWhat it cannot tell youFree way to run it
SyntaxThe address is formed correctlyWhether the domain or mailbox existsA spreadsheet formula
Domain (MX record)The domain has a mail server and can receive emailWhether this exact mailbox existsdig or nslookup
Mailbox (SMTP)The mail server says it will accept mail for this addressWhether a person reads it, or whether you will land in the inboxA verifier's free tier
Catch-all detectionThe server accepts every address at the domainWhich of those addresses are realA verifier's free tier
Role and disposable flagsThe address is a shared inbox or a throwawayWhether that matters for your campaignRead the part before the @

No check on this list predicts inbox placement. A verified address can still send your message to spam if your domain is new, your authentication is missing or recipients mark you as junk.


Free check 1: Syntax

A syntax check catches typos and broken exports: a missing @, a space in the middle, a domain with no ending, gmial.com where gmail.com was meant.

In Google Sheets, put your addresses in column A and paste this into B2:

=REGEXMATCH(A2, "^[^@\s]+@[^@\s]+\.[A-Za-z]{2,}$")

It returns TRUE for anything shaped like an address and FALSE for the rest. Sort by that column and fix or delete the FALSE rows. Then sort by domain and scan for misspelled versions of the big providers, which the formula will not catch.

Free check 2: MX record lookup

An MX record is the DNS entry that names the mail server for a domain. If a domain has one, it can receive email. This is the cheapest useful check there is, because it removes dead domains, parked domains and typos in the domain name.

On macOS or Linux, open a terminal:

dig +short MX example.com

On Windows, open Command Prompt:

nslookup -type=mx example.com

How to read the answer:

  • One or more lines with a number and a hostname (for example 10 mail.example.com.) mean the domain has a mail server.
  • A single line that reads 0 . is a null MX. The domain is telling you it accepts no email at all.
  • No answer means no MX record. Under RFC 5321, section 5.1, a sending server then falls back to the domain's address record, so mail can still be delivered in theory. For a business domain it is a strong sign the address is not in use.

If you do not want to use a terminal, free web tools such as MXToolbox run the same lookup in a browser.

An MX check does not look at the part before the @. anything@example.com passes as long as the domain receives mail.

Free check 3: A verifier's free tier

A mailbox check needs a conversation with the recipient's mail server, and verification services are set up to have that conversation from servers with a good reputation. For a small list, the free tiers are enough.

  • ZeroBounce offers 100 free verifications a month when you sign up with a business domain, according to its pricing page.
  • Hunter charges half a credit per verification, and its free plan lists 50 credits a month at the time of writing.
  • NeverBounce, Bouncer and MillionVerifier sell pay-as-you-go credits for larger lists. Check their current prices before you choose, because they change.

Upload a CSV, wait for the run, and download the result with a status on every row.

Free check 4: A manual SMTP check, and why it rarely works

An SMTP check is a mailbox check done by starting to deliver a message and stopping before any content is sent. You can do it by hand:

  1. Look up the domain's MX host with the commands above.
  2. Connect to that host on port 25 with telnet or nc.
  3. Send HELO, then MAIL FROM with your own address, then RCPT TO with the address you are testing.
  4. Read the reply to RCPT TO. A code starting with 250 means accepted. A code starting with 550 means the mailbox was rejected.
  5. Send QUIT. No message is delivered.

It is worth knowing how this works, because it is what every verifier does behind its upload button. In practice it fails from a laptop for four reasons:

  • Many home and office internet providers block outgoing connections on port 25.
  • Catch-all servers answer 250 for every address, real or not.
  • Mail servers are allowed to refuse to confirm addresses. RFC 5321 lets operators disable the VRFY command for security reasons, and many servers also delay or defer unknown senders.
  • Repeating the check for hundreds of addresses from one IP address looks like an attack, and gets that IP blocked.

Use the manual method to test one address when you are curious. Use a service for a list.


What to do with each result

ResultMeaningWhat to do
ValidThe server accepted the mailboxSend
InvalidThe server rejected the mailbox, or the domain has no mail serverRemove it
Catch-all (accept-all)The server accepts everything, so the mailbox is unconfirmedSend in small batches and watch the bounces
UnknownThe server did not answer in timeRe-run later, or hold it back
Role addressA shared inbox such as info@Keep it for small local businesses, where the owner often reads it

Some verifiers tell you to drop role addresses. That advice fits newsletters and large companies. For cold email to a five-person business, the role address is often the only one the business publishes.

Why verification is worth the effort

Mailbox providers judge your sending domain by what happens to your mail. Hard bounces tell them you are mailing addresses you never checked. Spam complaints tell them recipients did not want it.

Google's email sender guidelines ask senders to keep the spam rate reported in Postmaster Tools below 0.10% and to avoid ever reaching 0.30%. The same page requires SPF or DKIM authentication for all senders, and SPF, DKIM and DMARC for anyone sending more than 5,000 messages a day to Gmail accounts. Verification will not fix missing authentication, so set that up as well.

One thing to avoid: do not test an address by sending a real email from your main domain and waiting to see if it bounces. That bounce counts against you like any other.

What lead tools check for you, and what they leave out

Most tools that find email addresses run some checks before they hand you the list. Read the small print on which ones.

LocalLeads, the tool we build, finds local businesses on Google Maps for a niche and a city, reads each business's own website for an email and a phone number, and checks that the email's domain has a mail server (the MX check described above). It also ranks each business from 0 to 100 by how likely it is to buy what you sell, with the reasons listed.

It does not do mailbox-level (SMTP) verification and it does not guarantee deliverability. An address from LocalLeads has passed check 2 on this page and has not been through check 3. It also does not find personal emails of named individuals at large companies, and it does not write or send emails. Before a large send, run the export through a dedicated verifier.

LocalLeads needs a free account, which includes 100 leads every month with no card. One credit is one delivered lead, and the contact lookup is part of that credit. Pro is €4.99 a month for 500 credits, or €48 a year with 6,000 credits up front. Business is €19.99 a month for 2,500 credits, or €192 a year with 30,000 up front. You can export to CSV or Google Sheets, pull the list through the API, or work with it from Claude or Cursor through MCP.

A short routine for a new list

  1. Remove duplicates and run the syntax formula.
  2. Check MX records for any domain you do not recognise, or let your lead tool do it.
  3. Upload the list to a verifier and remove the invalid rows.
  4. Split catch-all and unknown rows into their own batch and send to them slowly.
  5. Verify again if the list has sat unused for a few months, because addresses go stale.

If you are still building the list, see how to find emails for cold emailing. For the rules on contacting the addresses you find, start with Is Google Maps scraping legal? and check your local law: legitimate interest for B2B role addresses under the GDPR in the EU, and CAN-SPAM in the US. This article is not legal advice.


Start with addresses that pass the domain check

The link below creates a free account and runs a search, so you get a ranked list of local businesses with the emails their websites publish, each already checked for a mail server.

Find accountants in Manchester with emails

LocalLeads by PostOrbit, built by EtherLabz.

Frequently asked questions

Can I verify an email address for free?

Yes. A syntax check with a spreadsheet formula and an MX lookup with dig or nslookup cost nothing. For a mailbox-level check, verifiers such as ZeroBounce and Hunter have free monthly allowances that cover small lists.

What is the difference between an MX check and an SMTP check?

An MX check confirms that the domain has a mail server and can receive email. An SMTP check asks that mail server whether it will accept mail for one specific mailbox. An address can pass the MX check and still fail the SMTP check because the mailbox does not exist.

What is a catch-all email address?

A catch-all (or accept-all) domain is set up to accept mail for every address, real or not. A verifier cannot confirm individual mailboxes on such a domain, so it reports them as catch-all. Send to those in small batches and watch for bounces.

Can I verify an email by sending a test message?

You can, but a bounce from that test counts against your sending domain like any other bounce. Use checks that do not deliver a message: an MX lookup or a verification service.

Does a verified email guarantee my message reaches the inbox?

No. Verification tells you the mailbox exists. Inbox placement also depends on your domain's authentication (SPF, DKIM, DMARC), your sending history and how recipients react to your mail.

Does LocalLeads verify email addresses?

LocalLeads checks that the email's domain has a mail server (an MX record). It does not do mailbox-level (SMTP) verification and does not guarantee deliverability. Run a dedicated verifier before a large send.

End of entry

Your turn

See which businesses in your city need what you sell.

Pick what you sell, a niche and a city. The businesses come back ranked, with the reasons on each row.

100 free leads every month. No card. You create a free account, then your search runs.

About the author

Mradul

Engineering & Product, EtherLabz

Builds the LocalLeads extraction pipeline. Writes about the unglamorous parts of lead generation — proxy pools, email verification, and what actually breaks at scale.