How do I check if an email address exists?

By hand, the check looks like this. Find the mail server with nslookup -type=mx example.com, then connect with telnet mx.example.com 25. Send EHLO, then MAIL FROM:<you@yourdomain.com>, then RCPT TO:<name@example.com>. Read the reply code and type QUIT before DATA, so no message is ever sent.

Your reply code tells you what the server thinks. A 250 is accepted and 550 is no such user. A 4xx is temporary, often greylisting or throttling, so try again later. A 252 means the server won't confirm but will take the mail, and a 530 means it wants you to log in, which blocks the probe.

Doing this yourself hits walls fast. Most home ISPs block port 25, and Gmail and Microsoft 365 block SMTP probes from cloud IPs, so the connection often never opens. Yahoo and AOL answer 250 or 252 to every RCPT TO and bounce later, so a yes from them proves little.

A 250 on its own isn't proof either. Send a second RCPT TO with a made-up local part at the same domain. If that also gets 250, the domain is catch-all and accepts everything. Around 28% of a typical B2B list sits on domains like that.

For one address, paste it into the free email verifier. For a list, upload it to bulk verification and each row comes back as valid, invalid, catch_all or unknown. Sending a test email also works, but every dead address then bounces on your own domain. The full protocol walk-through is in how SMTP verification works.

What does a 252 reply mean when checking an email?

A 252 means the server cannot verify the address but will accept mail for it. Servers send it to defeat address probing, so treat it as no answer rather than a yes.

Why does every address on a domain show as existing?

The domain is catch-all: its server accepts any address, including made-up ones. Probe a random local part at the same domain, and a 250 there confirms it. Around 28% of a typical B2B list sits on catch-all domains.

Is it free to check if an email address exists?

For a few addresses, yes. ZapBounce gives 100 free checks a month with no card, and paid checks cost $5 for 1,000 after that. Unknown results are never billed.

Check this against your own list

100 free credits a month, no card. Unknown results come back labeled and are never billed.