Check If Email Exists

A GitHub repository page: the backend, cli, core and rabbitmq folders on the left, the project description and topics on the right.

Asking the recipient's mail server, without sending anything

Check If Email Exists tells whether an email address can receive mail without ever sending it a message. The library validates the syntax, resolves the domain's MX records, then opens an SMTP conversation with the receiving server (EHLO, MAIL FROM) and reads its answer for that address. The result lands in is_reachable: safe, risky, invalid or unknown. It is the engine behind Reacher, an email verification API, and ships as a Rust crate, a standalone CLI and an HTTP backend in a Docker image.

One JSON per address: catch-all, full inbox, disposable domain

  • Field-level detail: beyond the verdict, the response covers syntax (with a suggested correction), MX records, the SMTP session (full inbox, disabled account, catch-all domain) and extras such as disposable domains or role accounts like admin@.
  • Per-provider overrides: Gmail, Hotmail B2B and B2C, Yahoo, Mimecast and Proofpoint each get their own method, EHLO name, MAIL FROM address and, since v0.11.0, a SOCKS5 proxy picked from a named list.
  • Bulk jobs: /v1/bulk takes a list and returns a job ID for polling progress and fetching results.

Port 25, headless Chrome and the move to MIT

Checks need outbound port 25, or a SOCKS5 proxy to get around it. The install guide warns that many ISPs and cloud providers block that port. The CLI, built for Linux (x86_64 and ARM64) and Intel macOS, is no exception: it uses no backend and checks from the machine it runs on. Past very small volumes, the README points to paid SMTP proxies, because the proxy IP's reputation is then what counts. Providers that still block real-time checks get an unknown, and since v0.11.9 so do greylisting replies.

Yahoo and consumer Hotmail are checked in a headless browser. That is the CLI's default for both, and each can be switched to smtp. The Docker image ships Chromium and ChromeDriver, and the config file states that the proxy does not cover these checks.

No secret protects the API until one is set. The Docker image binds to all interfaces, and the x-reacher-secret header is enforced only once header_secret is configured, a line the shipped config leaves commented out. Until then, anyone who reaches port 8080 can run checks.

High volume means self-hosting, on a setup labelled beta. Reacher's hosted version stops at 10,000 verifications a month and has no bulk mode. A self-hosted instance sends nothing to Reacher, and to scale it the docs put workers behind a RabbitMQ queue, with PostgreSQL as the only supported storage. The config file calls that architecture beta and advises throttling each worker, for instance at 60 requests a minute and 10,000 a day, so providers do not block its IPs.

MIT-licensed since v0.11.9, and pitched against paid checkers. The README calls the project an open-source alternative to hunter.io, verify-email.org and email-checker.net, which charge for the same service. Through v0.11.8 the code was AGPL-3.0 with a separate commercial license; the v0.11.9 changelog records the switch to MIT, and the docs now allow use in proprietary software.

v0.11.10, released October 16, 2026, is the latest version. It closes a run of three releases in eleven days (v0.11.8 on October 5, v0.11.9 on October 10) that followed almost nine months without one. Most fixes deal with a single provider: GMX full-inbox replies, Microsoft tenants and consumer domains, Proofpoint detection. The project is still on 0.x, and the README's Cargo.toml snippet still says 0.9.