Skip to content

Email verification · 6 min read

What Is Email Verification? How It Works, Step by Step

What email verification is, the checks a verifier runs on each address, what each result means, and what to do with every address once it is checked.

Nov 3, 2025 · SimpleCold team

The verification steps in order: syntax and typos, disposable, role address, domain and MX, catch-all, mailbox, then a result

Email verification is the process of checking whether an email address can actually receive mail before you send anything to it. A verifier takes an address like [email protected], runs it through a series of checks, and tells you whether a message would land in a real mailbox, bounce, or fall somewhere in between.

That sounds simple, and the first few checks are. The later ones involve talking to the recipient's mail server, and that is where most of the interesting edge cases live. This post walks through each step in the order a verifier normally runs them, then explains how to act on the results.

Why email verification exists

Every address on a list was correct at some point, or at least someone typed it in believing it was. Since then people have changed jobs, companies have been acquired and rebranded, domains have expired, and signup forms have collected typos like gmial.com. When you send to those addresses, the receiving server rejects the message and you get a bounce.

A few bounces are normal. A steady stream of them tells mailbox providers that you don't maintain your list, and they start treating your mail with more suspicion. Verification lets you find the dead addresses before the providers do.

How email verification works, step by step

Most verifiers run the cheap checks first and stop as soon as one of them gives a definite answer. That keeps the expensive part, the conversation with the mail server, for addresses that pass everything else.

1. Normalize the address

The verifier trims spaces, lowercases the domain, and strips invisible characters that sneak in from spreadsheets and copy-paste. Two rows that differ only by a trailing space are the same address and should be checked once.

2. Check the syntax

The address has to follow the format rules: one @, a local part before it, a domain after it, no illegal characters, and sensible lengths. The local part can be at most 64 characters and the whole address is practically capped at 254. Anything that fails here is undeliverable, and no network call is needed to know it.

3. Look for disposable and role-based addresses

Disposable addresses come from services that hand out temporary inboxes which expire after minutes or days. Role-based addresses such as info@, sales@ or support@ belong to a function, not a person. Neither is automatically bad, but both behave differently from a personal inbox, so a good verifier flags them.

4. Check the domain and its MX records

The verifier looks up the domain in DNS. Does it exist? Does it publish MX records that say which servers accept its mail? A domain with no mail server cannot receive email, and a domain that publishes a null MX record (defined in RFC 7505) is saying outright that it accepts none. Either way the address is undeliverable.

You can run this part yourself with the free MX lookup tool.

5. Probe for catch-all behaviour

Some domains are configured to accept mail for any address at all, real or invented. To spot them, the verifier asks the server about an address that cannot exist, something like a long random string at the same domain. If the server says yes to that, it will say yes to everything, and a "yes" for your contact proves nothing. More on this in what a catch-all domain means for your list.

6. Ask the mail server about the mailbox

This is the SMTP check. The verifier connects to the domain's mail server and starts a normal delivery conversation: it introduces itself, names a sender, and names the recipient with the RCPT TO command. The server answers with a code. A 250 means it will accept mail for that recipient. A 550 with a message like "user unknown" means the mailbox doesn't exist. The verifier then ends the conversation before any message is sent.

Mail servers don't always cooperate. Some delay unknown senders on purpose (greylisting), some block anything that looks like probing, and some simply time out. Those cases lead to the less certain results described below.

7. Classify the result

Finally, the raw answer gets mapped to a category and a reason you can act on.

What the results mean

Most tools use three or four categories, though the names vary. Here is how they usually break down:

CategoryWhat it meansTypical reasonsWhat to do
DeliverableThe server confirmed the mailbox existsMailbox acceptedSend
RiskyThe address may work, but nobody can confirm itCatch-all domain, disposable, role-based, anti-spam blockSend carefully or segment
UndeliverableMail will bounceMailbox not found, domain has no mail server, syntax errorRemove and suppress
UnknownThe check couldn't finishServer timeout, temporary failureRecheck later

The category alone is a blunt instrument. "Risky because the domain is catch-all" and "risky because it's a throwaway inbox" call for different decisions. That's why the reason matters as much as the label.

Where verification fits in your workflow

There are two main moments to verify.

At the point of capture. When someone types an address into a signup form, checkout or lead form, an API call can catch typos and fake addresses before they ever enter your database. This is real-time verification, and it is the cheapest place to stop bad data.

Before you send. Lists you already hold decay, and lists you buy, scrape or export from a data provider were never verified against your sending. Uploading the file to a bulk email verifier before a campaign removes the addresses that would have bounced.

For cold outreach, verify every list right before it goes into a sequence, even if the data provider says the emails are "verified". Their check may be weeks old.

What verification can't do

It's worth being clear about the limits.

  • It cannot confirm a specific mailbox on a catch-all domain. Nobody can, without sending a real message.
  • It doesn't detect most spam traps. Pristine traps look exactly like valid addresses.
  • It doesn't fix authentication, content or sending volume problems. A perfectly clean list sent from a domain without SPF and DKIM can still land in spam.
  • It's a snapshot. An address that is valid today can be deactivated next month.

None of that makes verification less useful. It just means it is one part of deliverability alongside authentication, reputation and engagement. Our email deliverability guide covers how the pieces fit together.

How SimpleCold handles it

SimpleCold runs the steps above in that order and returns Deliverable, Risky or Undeliverable with a plain-language reason for every address, so a catch-all result reads differently from a disposable one. There is no separate Unknown bucket: a server that won't confirm the address comes back Risky with the status no_response. If a domain looks misspelled, the result includes a suggested correction. When a mail server is slow, you get an answer within about 12 seconds or a processing status. The final result is usually ready within a minute or two, and collecting it any time in the next 30 minutes doesn't use another credit.

To try it on one address, use the free email checker. For a whole file, upload a CSV to the bulk email verifier; the download keeps your original columns and adds the category and reason next to each row.

Check your list before you send it

Start with 200 free credits. Pay per credit after that.