aman00323/emailchecker
EmailChecker for Laravel validates email addresses beyond basic format checks, using DNS and MX lookups plus disposable, role-based, and free-provider detection to catch typos and risky addresses before they hurt deliverability. Configurable and easy to integrate into registration or lead forms.
Architecture fit. aman00323/emailchecker is a Laravel service-provider package that wraps email deliverability checks (syntax → MX/domain resolution → optionally SMTP mailbox probing → disposable/role-account heuristics) behind a facade or container binding. Architecturally it slots in as a validation adapter, not a platform component: it belongs behind a form request rule, a registration listener, or a queued job — never inline in a hot path. It does not own state, so it is trivially swappable for a hosted API later, which is the main reason to consider it at all.
Integration feasibility. Composer-installable, MIT, Laravel auto-discovery. The real feasibility question is not the package but the environment: meaningful verification requires outbound SMTP (ports 25/465/587) and, for many checks, fsockopen/ext-sockets. Most managed PHP hosts, PaaS runtimes (Heroku, Vercel-style), and locked-down enterprise networks block port 25 outbound. If SMTP probing is the core value, the deploy target must be validated before any code is written.
Technical risk.
Key questions for the maintainer/evaluation spike.
invalid / risky / unknown, or collapse everything into a boolean?Stack fit. Standard Laravel package ergonomics — composer require, published config, optional facade. Fits cleanly alongside Laravel's built-in email validation rule as an additive check, not a replacement. It should not be wired into an existing validator chain in a way that changes failure semantics for callers.
Migration path. No schema migration is required by the package, but add one anyway: a email_verifications table (or cache keys) keyed by a hash of the normalized address, storing result, reason code, checker version, and timestamp. This gives you auditability, cache-hit economics, and a clean rollback story if you swap to a hosted provider — the interface stays, the engine changes.
Compatibility checklist before merge.
ext-sockets/ext-json availability.config:cache) and secret handling.Sequencing.
EmailVerifier interface with a queued implementation, cache, and timeout budget. The vendor package becomes one implementation detail.risky/unknown to a soft path (welcome email with a click-to-confirm) rather than a hard block.Maintenance. Low code churn but high ownership concentration. Pin an exact version, commit the lockfile, and budget for the realistic scenario where you take over maintenance of a vendored fork. Monitor the upstream repo for abandonment signals quarterly. No dependents means no transitive dependency risk — the entire dependency surface is this package plus its own requirements.
Support. GitHub issues only, best-effort, single maintainer. There is no SLA, no security advisory channel, and no guaranteed CVE response. For anything in a signup path handling PII, that is a material gap — treat the package as you would an unmaintained internal library.
Scaling. Verification is I/O-bound and slow (SMTP handshakes commonly 2–10s, longer on greylisting). It must not run synchronously in a request cycle. Requirements: queued jobs, bounded worker concurrency, per-domain rate limiting, a hard timeout ceiling, and aggressive caching (results are stable for hours-to-days). Watch outbound connection limits and your host's acceptable-use policy — high-volume SMTP probing from a shared host is a credible way to get an IP flagged, which then damages your own transactional mail reputation.
Failure modes, ranked by business impact.
Ramp-up. For an experienced Laravel engineer, integration is a half-day; calibration is the work. Realistic estimate: 1 engineer-week to reach a production-safe shadow-mode deployment, plus 2–4 weeks of passive observation before enforcement, plus ongoing ownership of the domain lists and threshold tuning. The engineering cost is small; the policy cost — deciding what to do with an uncertain verdict without harming legitimate users — is the dominant effort and should be owned by product, not just engineering.
TPM recommendation. Worth a scoped spike as a cost-free, self-hosted option, specifically because MIT + zero dependents makes it trivially replaceable. Do not adopt as a production dependency on the current evidence: unproven adoption, single maintainer, and a release date that needs verifying. Gate adoption on spike results, and design the integration behind an internal interface so switching to a hosted verification API is a config change rather than a rewrite.
How can I help you explore Laravel packages today?