Skip to content
MailCull
Back to blog verify-email

Can You Verify an Email Address Without Sending One?

Yes, and there are five distinct check layers that get you there. Here is what each one proves, where they break down, and what MailCull does at each step.

The short answer is yes. You can verify an email address without sending a message to it, and most credible email validators (including MailCull) work this way by design. The longer answer is more interesting, because "verify" is doing a lot of work in that sentence.

Different check layers prove different things. A syntax check proves the address is shaped like an email. A DNS check proves the domain can receive mail. An SMTP probe asks the receiving server, in protocol, whether the specific mailbox exists, without ever delivering a message. The right mental model is a ladder: each rung removes a different class of bad address, and the higher rungs are the ones most validators either skip or get wrong.

Here is the ladder, what each rung proves, and what MailCull does at each step.

01Rung 1: syntax validation

The cheapest, fastest check. Does the address even parse as an email per RFC 5321 § 4.1.2? It catches things like jane@[email protected] (two @ signs), [email protected] (consecutive dots in the local part), and bare strings with no @ at all.

What it does not catch: [email protected]. Syntactically perfect, mailbox doesn't exist. Anyone who tells you syntax validation is "email verification" is undercharging the word.

Worth noting: some validators reject [email protected] as invalid syntax. That's wrong. RFC 5321 explicitly allows + in the local part, and Gmail uses it for sub-addressing. MailCull accepts plus-aliased addresses. (We've seen Bounceless and CaptainVerify reject them; that's a real cost to anyone whose list contains plus-filtered subscribers.)

02Rung 2: DNS and MX validation

This asks DNS whether the domain exists and whether it advertises mail servers (MX records) that are willing to receive mail for it. Failure here is decisive in one direction: if there's no MX record and no fallback A record, no mail is going to land at this address regardless of what the local part says.

What it catches: typos at the domain level (gmial.com, outlok.com, yahooo.com), defunct domains, parked domains with no mail infrastructure, and the surprisingly large class of B2B addresses where the company has migrated to Google Workspace or Microsoft 365 but the old DNS still points nowhere.

What it doesn't catch: the domain is configured to receive mail, but this specific mailbox doesn't exist.

03Rung 3: disposable and role-based detection

Two cheap-but-useful checks that don't probe the address at all.

Disposable detection compares the domain against a curated list of throwaway-inbox providers: Mailinator, 10MinuteMail, Guerrilla Mail, and the few hundred others. These addresses are technically deliverable, but if you're running cold outreach or list cleaning for a paid SaaS, you want them flagged so they don't pad your "deliverable" count with people who'll never see the email.

Role-based detection flags addresses like info@, sales@, support@, admin@, postmaster@. These usually go to shared inboxes or aliases, not individual humans. Whether to keep them depends on your use case: they're fine for support workflows, terrible for personalised cold email.

04Rung 4: SMTP probing (this is where most validators stop showing their work)

Here's where "verify without sending" gets interesting. SMTP is a protocol, not just a delivery mechanism. You can open a connection to the receiving server, walk through the protocol handshake (HELO / MAIL FROM / RCPT TO), and read the server's response, without ever transmitting the DATA portion that contains the actual message. No email is sent. The server simply tells you whether it would accept a message for that recipient.

Three things can come back:

  • 250 OK: the server accepts the recipient. Strong signal the mailbox exists.
  • 550 5.1.1 (or similar): the server rejects the recipient. The mailbox doesn't exist, or has been disabled.
  • Anything else: greylisting (4xx temporary), rate limiting, "we can't tell you" responses (252), or outright refusal to engage. These are the ambiguous cases.

MailCull runs this probe for every address that passes the earlier rungs. We record the exact SMTP reply and surface it on every verdict, so you can see why an address was marked the way it was. A 250 OK becomes the smtp_confirmed reason flag. A 550 becomes smtp_rejected. A 252 becomes smtp_unknown because that's the honest answer.

This is the part most competitors skip or hide. ZeroBounce, NeverBounce, Kickbox: they all probe SMTP under the hood, but they collapse the result into a one-word verdict (valid, invalid, catch-all, unknown) and never show you the protocol reply. When a customer asks "why did this bounce, you said it was valid?", they have nothing to point at.

The Microsoft 365 problem

Most B2B lists are now hosted on Microsoft 365 protected tenants (the MX hosts end in .mail.protection.outlook.com). Microsoft's Exchange Online Protection (EOP) does two annoying things at the SMTP layer:

  1. It returns 250 OK for some non-existent mailboxes as an anti-abuse measure (so spammers can't enumerate users via SMTP probing)
  2. It returns 550 5.4.1 for some real mailboxes when it's rate-limiting the probe source

A naive SMTP probe gets the wrong answer in both directions. Most validators handle this by giving up, returning unknown or policy_block for ~30-40% of typical B2B lists.

MailCull runs a multi-layer cascade against M365 domains before the SMTP probe:

  • getuserrealm.srf: Microsoft's domain-level pre-check; tells us whether the tenant is managed, federated, or hybrid
  • GetCredentialType: the primary mailbox-existence signal from Microsoft's authentication endpoints
  • Autodiscover v1: a secondary fallback when GetCredentialType is throttled
  • SMTP cross-check: when the cascade and SMTP disagree, we return risky rather than commit to a confidently wrong verdict

Every verdict from that cascade ships with its evidence: the getuserrealm.srf result, the GetCredentialType signal, the SMTP reply we cross-checked against, and a plain-English reason, so you can audit exactly how a corporate address was judged. It costs ~1.5-2 seconds per corporate validation and recovers most of the addresses other tools mark unknown.

05Rung 5: catch-all detection

A catch-all domain is configured to accept mail for any local part. [email protected] and [email protected] both get 250 OK at the SMTP layer, because the server is set up to accept everything and sort it out later.

This is the hardest case in email validation. Per-address SMTP probing can't distinguish a real mailbox from a made-up one on a catch-all server, because the server says yes to everything.

MailCull detects catch-all behavior by sending a probe to a random, almost-certainly-fake local part on the same domain. If that probe also returns 250 OK, the domain is catch-all. Addresses on catch-all domains are marked risky with the smtp_catch_all or smtp_catch_all_suspected reason flag, never deliverable. Honest uncertainty beats confidently wrong.

06What "verify without sending" cannot prove

After all five rungs, here's what's still unprovable without actually delivering:

  • The mailbox exists, accepts mail, but is abandoned: the human stopped checking it three years ago
  • The mailbox exists, but is forwarded to another address that itself bounces
  • The mailbox exists, accepts mail, but the message will go to spam based on content the validator never sees
  • The server lies under load: some EOP-protected tenants 250 OK everything when rate-limited

This is why no honest validator quotes 99% or 100% on mixed lists. The category has structural ambiguity. Anyone claiming 99%+ is either testing on a curated easy list or rounding up after a deliverable-bias adjustment.

MailCull states 98% real-world accuracy, and any address it cannot confirm comes back risky or unknown rather than a false positive. What you can audit is the evidence behind every verdict: the SMTP reply, the MX record we resolved against, and a plain-English reason on each row, so you can check any result yourself before you send.

07When verifying without sending is the right tool

Almost always. The alternative, sending a test message and waiting for a bounce, has three problems:

  1. It hurts your sender reputation in proportion to your bounce rate. Bouncing 5% of a fresh list is one of the fastest ways to get rate-limited by Gmail and Microsoft, and reputation damage compounds for weeks.
  2. It's slow. Bounce-back diagnostics arrive over hours or days, not the seconds an SMTP probe takes.
  3. It only validates the addresses you actually mail, which means you've already committed the deliverability hit by the time you learn anything.

Pre-send verification flips this: you check the list before you send, remove the obvious bad addresses, segment the uncertain ones, and send to the high-confidence set. Your bounce rate stays under the threshold that triggers reputation damage. Your engaged inbox rate goes up.

The whole category exists because "verify without sending" is the workflow that protects sender reputation.

08What MailCull does, in one paragraph

Every address goes through all five rungs: syntax, DNS/MX, disposable/role, SMTP probe (with the M365 cascade where it applies), and catch-all detection. The verdict is one of four words: deliverable, risky, undeliverable, unknown. Underneath the verdict is the evidence chain: the SMTP reply, the MX record we resolved against, the cascade results if Microsoft was involved, and a confidence score from 0 to 1. Free plan gets 500 credits per month with the full deep-scan pipeline. Pro is $19/month flat for 10,000 credits, plus the API, plus the MCP server for connecting Claude or any MCP client. Max is $49/month for 75,000 credits with the same API and MCP access.

---

If you want to see the evidence chain on a real address, start free: 500 credits/month, no credit card. Or paste a single address into the public checker to see the full reply set for one verdict before signing up.

Try it

Start with 500 free validation credits. No card.

Both Free and Pro run the same scan engine, full SMTP probe, MX lookup, typo, disposable, domain checks, and the evidence chain on every verdict. The difference is the monthly credit pool (Free=500, Pro=10,000, Max=75,000) plus Pro's API and MCP access.

Found a mistake? Email [email protected]. verify-email · email-validation · deliverability · evidence-chain