propaganistas/laravel-disposable-email
Laravel validator that rejects disposable email addresses from services like Mailinator and Guerillamail. Ships with a built-in blacklist (auto-updated weekly), a config file, the indisposable rule, and an optional command to refresh domains yourself.
email, rate limiting, verification, and captcha.:mx option and hard-block enforcement are the two dials that move both abuse coverage and legitimate-user rejection — a decision to model with real traffic rather than an engineering detail.:mx is enabled.Adopt when:
disposable:update (daily) — the project ships weekly list patches, and pinning without refreshing means detection coverage silently decays.domains.json or accepting the rule degrades gracefully if the dependency is dropped.Look elsewhere when:
:mx parameter, and accept that rotated front domains will leak through.To executives: A one-day integration that shuts down a common, low-effort abuse channel — throwaway inboxes used to farm free trials, referral credits, and promo codes. Cost is negligible and reversible; the measurable return is fewer fake accounts inflating signup numbers and degrading funnel metrics. Framing matters: this is signup hygiene that makes growth metrics trustworthy, not a security product, and not a replacement for our existing verification, rate limiting, and risk scoring.
To engineering: An idiomatic Laravel package — auto-discovered provider, indisposable rule added to the existing validator pipeline, publishable config, and a schedulable disposable:update command. No new runtime, schema, or service. Two decisions need owners: (1) scheduling the list refresh so coverage doesn't decay between weekly upstream patches, and (2) whether to enable :mx, which adds a live DNS lookup to the validation hot path and requires an explicit fail-open policy plus a timeout so a bad resolver never blocks legitimate signups.
To support and marketing: Blocked users need a visible, polite recovery path — a localized indisposable error line and clear guidance to use a permanent address. Roll out to the highest-abuse surfaces first, monitor the false-positive rate against support tickets, and keep an override available before expanding enforcement.
Known risks to state up front: detection quality is bounded by the upstream disposable/disposable list and rotating front domains can slip through; the dependency has one primary maintainer and no support commitments; and its Laravel support window is actively trimmed, so it must sit on the framework-upgrade checklist rather than drift.
How can I help you explore Laravel packages today?