Docs · Concepts

Results and catch-all

Every check asks the address's own mail server, and the answer says what it said. This page covers what each verdict and status means, how a check works, and why a catch-all domain is never called valid.

Preview: may change before launch · Updated

Verification verdicts

POST /verify answers with one verdict. The free email verifier on magpiecrm.com gives the same verdicts today.

VerdictWhat it meansWhat to do
validThe mail server said the mailbox exists.Safe to send.
invalidThe address can't get email: it isn't well formed, its domain takes no email, or the mail server said the mailbox doesn't exist.Don't send: it will bounce.
catch_allThe domain accepts every address, so its mail server can't say whether this mailbox exists.Send with care: it may bounce later.
riskyThe mailbox may exist, but could bounce.Send with care.
unknownNo clear answer: the mail server didn't answer in time, or wouldn't say.Try again later, or send with care.

The checks

Each answer carries the checks behind the verdict. A check that wasn't run is null.

CheckWhat it says
checks.syntaxThe address is well formed.
checks.domainThe domain exists and has mail servers (its MX records).
checks.mailboxWhat the mail server said: exists (exists), missing (doesn't exist), accepts_all (can't tell: the domain accepts every address), unknown (no clear answer).
checks.disposableThe address is at a throwaway email service.
checks.roleIt's a shared role address, such as info@ or sales@.
checks.freeIt's at a free email provider, not a company's own domain.
checks.providerThe mail provider, when it's recognised.

How an address is checked

Our verification servers look up the domain's mail servers, then start to deliver an email to the address, as any mail server would. The mail server's answer to the recipient says whether the mailbox exists. They stop there, before any message is sent, so the person never receives anything.

How an address is checkedOur verification server asks the company's mail server whether jane.smith@northwind.example has a mailbox, the way a sending server would, and hangs up before sending anything.
  1. Find the mail serverOur verification server to DNS
    AsksMX northwind.example
    Answermx.northwind.example
  2. ConnectOur verification server to Company mail server
    SendsOpens a connection
    Reply220ready
  3. Say helloOur verification server to Company mail server
    SendsEHLO
    Reply250hello
  4. Name a senderOur verification server to Company mail server
    SendsMAIL FROM
    Reply250OK
  5. Ask about the mailboxOur verification server to Company mail server
    SendsRCPT TO:<jane.smith@northwind.example>
    Reply250mailbox existsor550no such mailbox
  6. Hang upOur verification server to Company mail server
    SendsQUIT
    Reply221bye

    No email is sent. The check stops before DATA, the command that would carry a message.

Read the code:emailFinder.ts

Try it on an address. This is the free checker that runs on magpiecrm.com, with the same verdicts and checks as POST /verify:

Free. We don't send an email or keep the address. See the privacy policy.

Recorded example: a real result from our free checker on 1 November 2026

Validpele@magpiecrm.com

The mail server says this mailbox exists. Safe to send.

Format
Valid
Domain takes email
Yes
Mailbox
Exists
Disposable address
No
Role address (info@, sales@)
No
Free mailbox provider
No, a company domain

Checks come from our own servers and our own domain, never yours, and are paced so no mail server is asked too much at once. See Rate limits and pacing.

Catch-all domains

Some domains accept mail for every address, whether or not the mailbox exists. Their mail server says yes to everything, so a yes there proves nothing. Before trusting a yes, the check tests the domain:

  1. It asks about a made-up address that can't exist.
  2. If that's accepted, it asks about a second made-up address of a different shape, in a separate session.
  3. If both are accepted, the domain is catch-all, and the answer is catch_all, not valid.

Whether a domain is catch-all is remembered for 30 to 180 days, so it isn't tested on every check.

Sending to catch-all addresses

A catch-all address may work, or may bounce later. MagpieCRM on Magpie Cloud sends unconfirmed addresses in a first batch of up to 50, waits at least an hour, and sends the rest only if under 2% bounced. Doing the same keeps bounces off your domain.

Finder statuses

POST /find works out the likely addresses for a name at a domain, starting with the company's known format, and checks up to 6 with the mail server. It stops at the first one confirmed, and answers with a status:

StatusWhat it means
verifiedThe company's mail server confirmed the address. It comes back in email.
catch_allThe domain accepts every address, so no guess can be confirmed there. No email.
riskyThe mail server only gave a risky answer, so nothing was confirmed. No email.
not_foundEvery likely address was rejected, or the domain takes no email. No email.
unknownThe mail server didn't give a clear answer this time. No email, and trying again later may help.

Only verified comes with an email, and only a verified find is charged. You never get a guess.

Questions about the APIs? Email pele@magpiecrm.com.