# nobounce.dev blog

How email validation actually behaves against live DNS: typo correction, RFC 7505 null MX, the SERVFAIL/NXDOMAIN split, and failing open in a signup flow.

HTML index: https://nobounce.dev/blog/

## Validation engine

- [One Mail Host Serves Both gmai.com and hotmial.com](https://nobounce.dev/blog/typosquat-mx-host-clustering/) — Typo domains are an unenumerable long tail, but the operators collecting mail for them reuse infrastructure, so the MX host is the tractable signal.
  - Markdown: https://nobounce.dev/blog/typosquat-mx-host-clustering/index.md
- [Suggest the Correction Instead of Rejecting the Signup](https://nobounce.dev/blog/suggest-the-correction-not-rejection/) — Rejecting a mistyped address ends the session; naming the intended address recovers it, which means the interesting engineering is in the suggestion.
  - Markdown: https://nobounce.dev/blog/suggest-the-correction-not-rejection/index.md

## DNS and RFCs

- [MX Validation Does Not Catch the Typos That Matter](https://nobounce.dev/blog/mx-validation-misses-typo-domains/) — An MX lookup accepts the four most common Gmail and Hotmail misspellings, because typo domains are registered and resolve correctly.
  - Markdown: https://nobounce.dev/blog/mx-validation-misses-typo-domains/index.md
- [Null MX, RFC 7505, and Why Reserved Domains Need Their Own Reason Code](https://nobounce.dev/blog/null-mx-rfc-7505-reserved-domains/) — A domain publishing MX 0 . is telling you it accepts no mail at all, and example.com does the same — but breaking your test suite is not the same problem as a bad signup.
  - Markdown: https://nobounce.dev/blog/null-mx-rfc-7505-reserved-domains/index.md
- [SERVFAIL Is Not NXDOMAIN, and Conflating Them Accepts Bad Addresses](https://nobounce.dev/blog/servfail-vs-nxdomain-email-validation/) — A resolver failure and a nonexistent domain arrive as different DNS status codes and demand opposite responses: fail open on one, reject on the other.
  - Markdown: https://nobounce.dev/blog/servfail-vs-nxdomain-email-validation/index.md

## Signup flows

- [Fail Open: Email Validation Must Never Block a Signup](https://nobounce.dev/blog/fail-open-email-validation-signup/) — Treat the validator as advisory infrastructure: set a timeout, branch on the verdict, record what was actually checked, and let users through when it cannot answer.
  - Markdown: https://nobounce.dev/blog/fail-open-email-validation-signup/index.md
- [How to Batch-Validate a List of Email Addresses](https://nobounce.dev/blog/batch-validate-email-list/) — POST /v1/check/batch returns one verdict per address keyed by email_sha256; chunk oversized lists, check remaining quota first, and act on suggestions instead of only counting rejects.
  - Markdown: https://nobounce.dev/blog/batch-validate-email-list/index.md
- [Validate Email Addresses From an AI Agent](https://nobounce.dev/blog/validate-emails-from-an-agent/) — An autonomous agent can obtain access, validate an address and recover from an error without a human in the loop, provided every step is a single HTTP request.
  - Markdown: https://nobounce.dev/blog/validate-emails-from-an-agent/index.md

## Choosing a validator

- [How to Choose an Email Validation API](https://nobounce.dev/blog/choosing-an-email-validation-api/) — Accuracy percentages on vendor pages are unfalsifiable, so evaluate the response contract, the failure behaviour and the retention policy instead.
  - Markdown: https://nobounce.dev/blog/choosing-an-email-validation-api/index.md
- [Why nobounce Will Never Do SMTP RCPT TO Probing](https://nobounce.dev/blog/why-no-smtp-rcpt-probing/) — The technique that promises per-mailbox certainty depends on infrastructure reputation, returns weak signals at the largest providers, and is permanently outside this product's scope.
  - Markdown: https://nobounce.dev/blog/why-no-smtp-rcpt-probing/index.md
