# Changelog of Email Verifier - SMTP, Catch-All & Disposable Detection (`chloematt/email-verifier`) Actor

- **URL**: https://apify.com/chloematt/email-verifier/changelog.md
- **Full Actor documentation**: https://apify.com/chloematt/email-verifier.md

## Changelog

### 0.1 — 2026-08-02

First release.

**Billing.** One event, `email-verified`, charged only on a decisive verdict:
`valid`, `invalid` or `disposable`. `catch_all` and `unknown` are always free,
and duplicates are folded before any work is done.

**Verification.**

- Per-domain calibration probe: a random address is tested first, so a real
  mailbox confirmation is never confused with a server that accepts everything.
- SMTP reply classifier that separates "this recipient is dead" from "this
  server refused us" — Microsoft 365's `550 5.4.1 ... Access denied` is a
  mailbox rejection, `550 5.7.1 ... Spamhaus` is not.
- DNS level: RFC 5322 syntax, NXDOMAIN, RFC 7505 null MX, MX names that resolve
  to nothing, and implicit-MX A/AAAA fallback.
- 11,582 disposable domains, role-account and free-provider flags, and
  single-edit typo suggestions tight enough that `apify.com` suggests nothing.
- Provider-aware de-duplication folding Gmail dots and `+tags`.

**Network.** Apify Actors run on AWS EC2, which blocks outbound ports 25, 465
and 587, and Apify Proxy will not tunnel `CONNECT host:25`. The Actor probes the
route once at startup, reports `smtp_egress_blocked` instead of stalling on
every domain, and bills nothing for the checks it could not run. Supply
`proxyUrl` (HTTP CONNECT or SOCKS5) to switch mailbox checks on.

**Inputs.** Pasted list, CSV/TXT upload or URL, or another Actor's dataset ID.

**Schemas.** Output schema declares both outputs - the dataset and the `SUMMARY`
key-value store record - so Console, the `GET Run` API and MCP agents discover
them without guessing. The dataset schema carries per-field titles,
descriptions, examples and enums, plus three views: Overview, "What you paid
for" (reconcile the invoice against the `billed` column), and Full diagnostics
with the nested SMTP evidence flattened into columns.

**Audit.** `benchmark/run.mjs` reproduces the published accuracy figures against
an independent DNS-over-HTTPS resolver: 0 false `invalid` of 31, 0 false
`disposable` of 12, 15/15 dead domains, 15/15 malformed, 4/4 typos, 0 typo
false positives across 120 healthy-domain rows.
