# How email verification works — Ravn

Canonical: https://askravn.com/blog/how-email-verification-works

Guide

# How email verification works, step by step.

A verifier checks an address in layers: is it well formed, does the domain exist and accept mail, and will the mail server accept this exact recipient. It does all of this without sending a message, and when a layer cannot give a clear answer the honest result is unknown.
By Ravn · 3 November 2026
[Start free: 1,000 lookups](https://askravn.com/#start) [Read the docs](https://askravn.com/docs)

The layers
## What checks happen, in what order?
Each layer is cheaper than the next, so a verifier stops as soon as one fails.
- / 01
### Syntax
Is the address shaped like an email: one `@`, a sensible local part, a domain with a dot? Typos like `jane@acme,com` fail here. Result: `bad_syntax`.
- / 02
### Domain lookup
Does the domain exist in DNS at all? A domain that does not resolve cannot receive mail. Result: `domain_not_found`.
- / 03
### MX records
Does the domain publish mail servers? MX records name the servers that accept mail for the domain. No MX means nowhere to deliver. Result: `no_mx`.
- / 04
### Lists
Is the domain a known disposable (throwaway) provider? Is the local part a role like `info@` or `support@`? Is it a free provider? These are flags, not failures.
- / 05
### Mailbox (SMTP) check
Connect to the mail server and ask whether it would accept this recipient, then hang up before any message is sent. A clear yes or no settles the question.
- / 06
### Catch-all test
Ask about an address that should not exist. If the server accepts that too, every yes from it is meaningless, and the address is risky rather than valid.
The core check
## How can you check a mailbox without sending an email?
Email delivery uses SMTP, a conversation between two servers. The sending side says hello, names the sender with `MAIL FROM`, then names each recipient with `RCPT TO`. The receiving server replies to each line with a code. A 250 reply to `RCPT TO` means "I will accept mail for this person". A 550 reply usually means "no such user".A verifier walks through that conversation up to the recipient line, reads the reply, and then quits before the `DATA` step where the message body would go. Nothing is delivered and nobody receives anything. This is the only way to learn about a specific mailbox from the outside, and it depends entirely on the receiving server answering honestly.
Flags
## What are disposable domains and role accounts?
Disposable domains hand out temporary inboxes that expire after minutes or days. People use them to get past sign-up forms. The address may be valid today and dead tomorrow, so it is worth flagging even when the mailbox exists.Role accounts are addresses for a function rather than a person: `info@`, `sales@`, `admin@`, `support@`. They often reach several people, or a ticket queue. They are real, but they behave differently from a personal inbox, and some senders keep them out of marketing lists.Free providers such as large webmail services tell you the address is personal rather than tied to a company domain. That matters for B2B work even when the mailbox is fine.
The grey areas
## What is greylisting, and why does it confuse verifiers?
Greylisting is an anti-spam technique. When a server sees a new sender for the first time, it replies with a temporary failure (a 4xx code) and asks it to try again later. Real mail servers retry after a few minutes and get through. Many spam tools never retry, so they are filtered out cheaply.For a verifier, a temporary failure is not an answer. The mailbox might exist or not. Retrying later can help, but some servers keep deferring, and some rate-limit or block connections that look like probing. Large mailbox providers often accept every recipient at the SMTP stage and decide later, which makes the check uninformative there too.
Honest results
## Why does "unknown" exist as a result?
Because sometimes the server will not say. Timeouts, greylisting, blocked connections and providers that accept everything all end in the same place: the mailbox was not confirmed either way. A verifier can either admit that, or guess.Ravn admits it. `validate_email` returns one of four statuses: `valid`, `invalid`, `risky` or `unknown`. It also reports `mailbox_checked`, so you can see whether the SMTP step ran. The mailbox check runs only where it is enabled, and if the mailbox was not checked the result is never `valid`. A `risk_score` from A to F summarises everything in one grade, and `reason` says why, for example `mailbox_exists`, `mailbox_not_found` or `domain_accepts_mail`.A practical rule: send to `valid` with grade A or B, drop `invalid`, and handle `risky` and `unknown` by reason. The [list verification playbook](https://askravn.com/use-cases/verify-email-list) walks through it, and the [email verification API](https://askravn.com/features/email-verification-api) page documents every field.
Try it
## How do you run a check yourself?
One address from the CLI, up to 1,000 in one REST call, or a whole CSV.
```
# One address
npx ravn validate_email --email jane@acme.com

# Up to 1,000 addresses, one verdict per unique address
curl https://api.askravn.com/v1/tools/validate_emails \
-H "Authorization: Bearer $RAVN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"emails": ["jane@acme.com", "info@acme.com"]}'

# A whole file, keeping your columns and adding rw_* results
npx ravn enrich list.csv --tool validate_email --column Email --out verified.csv
```

Freshness
## How long does a verification result stay true?
Not forever. People leave jobs, companies close mailboxes and domains lapse. A result describes the address on the day it was checked. Re-verify before a large send if the list has been sitting for a few months. Each check uses one lookup, and a miss is free. You can try single addresses at no cost with the [free email verifier](https://askravn.com/tools/email-verifier).
FAQ
## Common questions.
[All questions →](https://askravn.com/faq)Does email verification send a message to the person?No. The check stops before the message step of the SMTP conversation. Nothing is delivered and the person sees nothing.What is the difference between risky and unknown?Risky means the check finished but found a reason for caution, such as a catch-all or disposable domain. Unknown means the mail server would not give a clear answer about the mailbox.Why do some big webmail addresses come back unknown?Some large providers accept every recipient during the SMTP conversation and decide later, or limit probing. The mailbox cannot be confirmed from outside, so the honest result is not valid.Is a role account like info@ invalid?No. Role accounts are often real and deliverable. They are flagged with role_account so you can decide whether they belong on your list.

## More in [blog](https://askravn.com/blog)
Every page uses the same account, plan and tools. [See pricing →](https://askravn.com/pricing)
- [B2B contact data compliance basicsCAN-SPAM, CASL, GDPR, CCPA/CPRA, data broker rules and FCRA limits explained in plain language for teams that use B2B contact data..](https://askravn.com/blog/b2b-contact-data-compliance)
- [Connect Claude to contact data with MCPMCP lets Claude call outside tools.](https://askravn.com/blog/connect-claude-to-contact-data-mcp)
- [Email bounce rate: a practical guideWhat hard and soft bounces are, why they damage sender reputation, and a simple clean-before-send routine that keeps your bounce rate down..](https://askravn.com/blog/email-bounce-rate-guide)
- [Hashed email audiences explainedHow SHA-256 hashed customer lists work for Meta and Google, the normalisation rules, why hashing is not anonymisation, and how to build one locally..](https://askravn.com/blog/hashed-email-audiences-explained)
- [How email finders workEmail finders guess addresses from a name and company using known patterns like first.last, then verify each guess.](https://askravn.com/blog/how-email-finders-work)
- [What is a catch-all email domain?A catch-all domain accepts mail for any address, real or not, so no verifier can prove a mailbox exists there.](https://askravn.com/blog/what-is-a-catch-all-email-domain)
