Email validation vs mailbox verification: what a check actually proves
Heffl
October 3, 2026
An email address can have the right format and still belong to no one. To interpret a verifier's result, separate address format, domain mail routing, recipient acceptance and ownership.
Format and routing
A format check examines the local part and domain. Heffl normalizes international domain names while preserving local-part case. Quoted and international local parts currently return an unsupported-format result rather than a false claim of invalidity.
Mail routing usually comes from MX records. The absence of MX records alone does not establish a failure: SMTP allows fallback to a domain's A or AAAA records. A null MX is different; it explicitly states that the domain accepts no mail. These behaviors are described in RFC 7505.
SMTP acceptance
A verifier can contact the destination server and ask whether it accepts a recipient without sending a message. Heffl's SMTP checker never issues the DATA command that submits message content.
Acceptance remains a limited signal. A server may accept recipients and reject messages later. Policy restrictions, temporary failures and timeouts can leave the check inconclusive. Those results should remain unknown.
Catch-all domains
Some domains accept arbitrary recipient names. If a verifier's random control address is accepted too, it cannot infer that the requested mailbox exists. Heffl reports accept_all separately so an assistant can explain the uncertainty.
Classification and ownership
Disposable, personal-provider and role-address flags are independent of mailbox existence. A support address may be maintained by a real team. A disposable mailbox may still receive messages while it is active.
No passive validation result proves that the person entering an address owns it. If ownership matters, use a separate confirmation flow that sends a code or link with the user's consent.
Try the free email validator, or inspect its API response fields. Use the individual checks to decide what your workflow needs instead of compressing every result into a yes/no answer.