mrkeyoor.com_
Mon 10 Aug 15:46 UTC
Self-Hostedevaluationupdated 10 Aug 2026

check-if-email-exists

check-if-email-exists is a Rust library, command-line tool, and self-hosted HTTP service that estimates whether an email address can receive mail without sending a message. It combines syntax, DNS, disposable-domain, role-account, catch-all, and SMTP checks, then returns a graded result instead of treating every address as simply valid or invalid.

Verdict

check-if-email-exists is a serious open-source option when you understand that mailbox verification is probabilistic and operationally awkward. Its layered output is more useful than a green checkmark, and the library, CLI, and HTTP choices cover several integration styles. Use it for measured, low-volume screening or with properly managed proxies; avoid it when licensing, blocked SMTP, or a need for guaranteed answers conflicts with the design.

Setup3/5One Docker command hides port 25, proxy, and provider constraints
Docs4/5Clear modes and output, with thinner production guidance
Community3/5Large adoption and recent work, but a sizable open queue
Maturity3/5Long-running project facing inherent SMTP reliability limits

Who it’s for

  • Rust developers who want email verification inside their own application.
  • Teams willing to run an HTTP service and manage outbound SMTP connectivity.
  • Registration and CRM systems that can treat risky and unknown as meaningful outcomes rather than guaranteed answers.
  • Open-source AGPL-compatible projects, or commercial users prepared to buy the required license.
  • Low-volume operators who want more evidence than syntax and DNS checks alone provide.

Who it’s NOT for

  • Proprietary commercial products expecting permissive open-source terms: the README requires a commercial license unless the application is compatible with AGPL-3.0.
  • Hosts that block outbound TCP port 25: the Docker instructions explicitly require it, and issue 1641 reports SMTP checks returning unknown after connection refusal.
  • High-volume verification teams unwilling to operate SMTP proxies: the README says direct use of your own IPs is suitable only for very small volumes.
  • Workflows that demand a certain yes-or-no result for every provider: the public output includes risky and unknown, while open reports cover false-looking SMTP results and Yahoo headless errors.
  • Teams assuming an MIT switch is complete: a pull request proposes that change, but the published README still documents dual AGPL and commercial licensing.

Setup reality

The demo path is one Docker command and one HTTP request, or a downloaded CLI binary for a single local check. A useful deployment is harder: outbound port 25 must work, source builds need Rust and OpenSSL, higher volume needs a reliable SOCKS5 SMTP proxy, and the backend's worker design can involve RabbitMQ. You must also tune provider-specific methods, secure the API, interpret uncertain results, protect submitted addresses, and resolve the AGPL or commercial-license choice before shipping.

Verification without pretending it is certainty

check-if-email-exists tries to answer a deceptively difficult question: can a message probably reach this mailbox? A regular-expression check only tells you whether an address looks plausible. This project also examines DNS mail records, known disposable domains, role accounts, SMTP connectivity, catch-all behavior, disabled mailboxes, and full inboxes.

The most honest part of the design is its top-level result. An address can be safe, risky, invalid, or unknown. That is better than forcing ambiguous SMTP behavior into a Boolean. Mail providers deliberately limit probing, catch-all domains accept unknown recipients, networks block SMTP, and a server response can vary by sender identity or IP reputation. Reacher exposes the evidence underneath the summary, so an application can distinguish bad syntax from a timeout or a catch-all domain.

The project comes in three useful forms. Rust applications can call the library directly. Operators can download a standalone CLI that checks from the local machine. Other stacks can run the Dockerized HTTP backend and post an address to /v0/check_email. The core logic is not trapped behind a hosted dashboard, even though the maintainer also sells a service.

The one-line Docker start is only the first gate

Running docker run -p 8080:8080 reacherhq/backend:latest is easy. The hard requirement appears in the sentence beside it: outbound port 25 must be open. Many cloud and hosting networks restrict direct SMTP traffic. Open issue 1641 shows the practical result, a Docker deployment receiving connection-refused errors and returning unknown for the reachability decision.

The downloaded CLI avoids running a server, but not the network rules. It performs checks directly from the machine. Its options expose the real moving parts: sender address for MAIL FROM, identity for EHLO, SMTP port, SOCKS5 proxy details, and different verification methods for Gmail, consumer Hotmail, business Hotmail, and Yahoo. Yahoo and Hotmail may involve API, SMTP, or headless methods depending on the provider.

Building from source is reasonable for a Rust project. The backend guide asks for Rust and OpenSSL, then runs the release binary through Cargo. The server also contains an HTTP service and a RabbitMQ worker, which gives larger deployments a queue path but adds another service to operate. The minimal container command is appropriate for evaluation, not a complete production architecture. Authentication, rate controls, logs, address retention, and abuse prevention remain the operator's job.

Volume changes the economics. The README says your own IP addresses can handle very small volumes, but more than that requires SMTP proxy servers. Proxies are not an optional performance tweak here. Their availability and reputation directly influence whether a remote mail server answers. Issue 1634 documents a commercial-trial deployment whose configured SOCKS5 service timed out across several addresses, turning checks into unknown after long waits.

Rich output needs careful product policy

The JSON response is the feature to build around. Syntax details include the parsed domain, user name, and a correction suggestion. MX output says whether the domain accepts mail and lists its records. SMTP details report connection, deliverability, disabled status, catch-all behavior, and inbox capacity. Miscellaneous flags identify disposable and role addresses.

Do not reduce all of that to rejecting anything that is not safe. A temporary connection failure should not lock out a real user. A catch-all address may be perfectly valid but impossible to prove through probing. A disposable address may be acceptable for a privacy-respecting product. Good integration stores the reason, defines separate policies for signup, cleanup, and outbound campaigns, and allows uncertain users another verification route such as a normal confirmation email.

Open reports reinforce this caution. Issue 1443 describes smtp.is_deliverable remaining false even for the reporter's own address. Issue 1598 shows Yahoo checks failing inside the headless verification path. These reports are specific to their environments and versions, so they do not establish a universal defect. They show why a test set across Gmail, Microsoft, Yahoo, corporate gateways, catch-all domains, and deliberately invalid addresses is necessary before launch.

Privacy deserves equal weight. Even without sending mail, a verification service processes identifiers and contacts remote infrastructure in ways that can reveal checking activity. Operators should minimize logs, restrict access, set retention rules, and avoid presenting the technique as invisible or authoritative.

Licensing is a real purchasing decision

The repository's README documents a dual model. AGPL-3.0 is available for open-source applications using a compatible license. Proprietary commercial sites, tools, and applications are directed to purchase a commercial license. GitHub currently reports no single SPDX license because of that arrangement. An open pull request proposes switching to MIT, but it has not been merged. Base a product decision on the current published terms, not the proposed change.

This condition makes Reacher less casual to embed than a permissively licensed validation library. Legal review belongs in the setup estimate. A hosted service can be simpler when paying for network infrastructure is preferable to buying software rights and operating SMTP proxies.

Health and verdict

The project dates to 2017 and had 9,427 GitHub stars on August 10, 2026. Version 0.11.7 was released on January 15, and the repository was pushed on March 17. Issues and pull requests remained active into June, including the proposed license change, while GitHub listed 88 open issues and pull requests. The long history and recent release show maintenance; the sizeable queue and unresolved provider reports show continuing operational friction rather than abandonment.

Documentation covers the three entry paths, output schema, core checks, CLI flags, source builds, HTTP request shape, and licensing. Production details are more scattered, especially around queue deployment, proxy selection, security, and interpreting results.

Reacher is worth testing when self-hosting and detailed evidence matter more than a guaranteed answer. Start with the Docker API, confirm port 25, assemble a provider-diverse test list, and record how often results become unknown. If those constraints fit and the license is acceptable, it offers a capable foundation. If not, a narrower typo checker or a managed verification service will be the more dependable choice.

Alternatives

ProjectWhat it isPick it when
TruemailA configurable Ruby email verifier covering regex, DNS, SMTP, and related checks.pick this instead when your application is Ruby-based and you want verification as a framework-independent library.
AfterShip Email VerifierA Go library for checking email addresses without sending a message.pick this instead when you need an embeddable Go implementation and do not want to operate Reacher's Rust backend.
MailcheckA small browser-oriented library that suggests corrections for mistyped email domains.pick this instead when typo prevention at form entry is enough and SMTP probing would add needless infrastructure and privacy risk.

What people are saying

  1. [github-trending] reacherhq/check-if-email-exists

Sources

  1. check-if-email-exists repository and README
  2. Reacher backend documentation
  3. Reacher CLI documentation
  4. Issue 1641: SMTP connection refusal in Docker
  5. Issue 1443: SMTP deliverability result report
  6. Release v0.11.7