Published on April 12, 2026 • By Kaiju Team
SMTP validation is the technique of verifying an email address by talking directly to its mail server — without actually sending a message. It's the single most accurate signal in any email verification pipeline. This deep dive walks through the protocol, what each SMTP response code means, and why a naive implementation fails in production.
MAIL FROM + RCPT TO, then reads the 3-digit response code.A full validation session looks like this (lines prefixed C: are client, S: server):
C: <opens TCP to mx1.recipient.com:25>
S: 220 mx1.recipient.com ESMTP ready
C: EHLO verifier.kaijuverifier.com
S: 250-mx1.recipient.com
S: 250-SIZE 157286400
S: 250 STARTTLS
C: STARTTLS
S: 220 Go ahead
C: <TLS negotiation>
C: EHLO verifier.kaijuverifier.com
S: 250 OK
C: MAIL FROM:<probe@verifier.kaijuverifier.com>
S: 250 OK
C: RCPT TO:<target@recipient.com>
S: 250 OK ← address exists
C: QUIT
S: 221 Bye
We never send DATA — we just read the RCPT TO response. That response is the answer to "does this mailbox exist?".
| Code | Meaning | Verifier verdict |
|---|---|---|
| 250 | Address accepted | Valid (or catch-all) |
| 251 | User not local, will forward | Valid |
| 421 | Service not available | Retry |
| 450 | Mailbox busy / greylisted | Retry |
| 451 | Local error | Retry |
| 452 | Insufficient storage | Retry |
| 550 | Mailbox not found | Invalid (hard bounce) |
| 551 | User not local, no forwarding | Invalid |
| 552 | Quota exceeded | Unknown / risky |
| 553 | Bad address syntax | Invalid |
| 554 | Transaction failed / blocked | Blocked (your IP) |
A catch-all server replies 250 to any recipient — real or not — to avoid leaking which mailboxes exist. The standard detection probe:
RCPT TO:<zzqx99notarealuser{timestamp}@domain.com>.Catch-all domains are roughly 15-20% of B2B lists. Enterprise mail systems (Exchange, Google Workspace) are common offenders.
RCPT TO per IP per hour before greylisting. Run a 50k verification from one IP and you hit the wall in 10 minutes.RCPT TO then 5xx-bounce the real send. You only find out when you actually mail.This is why DIY rarely pays off under 50k emails/month — the infrastructure overhead eats any savings. See KaijuVerifier pricing for when outsourcing is the right call.
| Method | Accuracy | Cost |
|---|---|---|
| Regex / syntax only | ~70% | Free |
| DNS/MX lookup | ~85% | Free |
| SMTP handshake | ~96% | Infrastructure |
| SMTP + catch-all + risk DB | ~98% | $0.001-0.01/check |
| Send + track bounce | ~99% | Reputation damage |
Verifying an email address by opening an SMTP connection to the recipient's mail server and asking it — through the RCPT TO command — whether the mailbox exists, without sending an actual message.
Yes. You're using the protocol exactly as specified in RFC 5321. Issues arise only if you abuse volume and your IP ends up on a blocklist, which is a business consequence, not a legal one.
Technically yes, for small volumes (< 500/day) from a properly configured host. At scale you need IP rotation and throttling, which is why most teams outsource.
Greylisting, temporary 4xx responses and IP reputation all cause non-determinism. A good verifier retries with backoff before calling a verdict.
~96-98% when done correctly. The hard ceiling is catch-all domains and spam traps, which no external probe can detect.
KaijuVerifier handles the IP pool, catch-all detection and rate-limiting for you. From $0.001/email.
View API docs