Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Burner Email Providers Laravel Package

wesbos/burner-email-providers

A maintained list of disposable and burner email domains for blocking throwaway signups. Drop it into validation rules or your own checks to reject temporary addresses, with a simple dataset you can filter, cache, or extend.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. This is not a PHP package. wesbos/burner-email-providers is a curated data repository — plain-text/JSON domain lists (free providers, disposable providers) published for consumption via npm. In a Laravel codebase it is therefore a data dependency, not a code dependency: there is no service provider, no facade, no ValidationRule, no Composer package. Fit is high for the underlying need (reject or flag disposable-email signups) and effectively zero as a drop-in library. The realistic integration is: vendor the list into our repo, wrap it in a Laravel validation rule we own.

Integration feasibility. Straightforward. A thin wrapper is roughly one to two engineering days including tests: parse the list into a set, normalize the domain (lowercase, strip trailing dot, handle IDN/punycode), match on the registrable domain plus subdomain suffix, and expose it as a ValidationRule. No new runtime services, no vendor lock-in. The metadata reinforces this reading — 1.2k stars signals community trust in the data, while 0 dependents and a low opportunity score reflect that there is no integration surface to build on.

Technical risk.

  • Staleness is the dominant risk. The list is only as good as its last update; new burner domains appear continuously and the repo has no SLA, versioning discipline, or changelog guarantee.
  • False positives carry real cost. Aggressive lists catch legitimate corporate and regional providers; a blocked signup is a lost user with no feedback loop unless we build one.
  • Matching semantics are unspecified upstream. Exact-domain matching is trivially bypassed via subdomains and punycode; naive suffix matching over-blocks. We must define and test the rule ourselves.
  • Supply chain / bus factor. Single-maintainer repo; if we pull from npm at build time we inherit npm supply-chain exposure for what is essentially a text file. Vendoring a pinned snapshot removes this.
  • Licensing is MIT — no legal friction.

Key questions.

  1. Which list(s) do we consume — disposable only, or free-provider domains too? These have very different false-positive profiles.
  2. Exact-match only, or registrable-domain + subdomain suffix? Who signs off on the matching policy?
  3. What is our refresh cadence, and who owns the diff review when the upstream list changes?
  4. Do we hard-block at registration, soft-flag for review, or score into an existing risk engine?
  5. What is the appeal/allowlist path for a user wrongly rejected, and who supports it?
  6. Is a vendored, checksummed snapshot acceptable, or does security require a mirrored internal source?
  7. Are we comfortable owning the wrapper indefinitely with no upstream PHP support?

Bottom line: treat this as a seed dataset, not a dependency. Budget for the wrapper, the refresh job, and the policy decisions — those, not the list, are the actual work.

Integration Approach

Stack fit. Laravel 9/10/11 on PHP 8.1+. Deliverables:

  • A vendored snapshot under resources/data/ (or a private mirror), version-pinned and committed.
  • A DisposableEmail validation rule plus a domain-normalizer service.
  • A cached in-memory set resolved as a singleton (safe under Octane; load once per worker, not per request).
  • Optional disposable_email_domains table for ops-managed allowlist/blocklist overrides layered on top of the vendored list.
  • An artisan command (email-domains:sync) and scheduled job that fetches upstream, diffs against the current snapshot, and opens a PR or alerts rather than silently swapping data.

Migration path. Greenfield, so sequencing is the migration: snapshot → rule → shadow telemetry → enforcement. Do not attempt to consume the npm package at runtime; take a tarball copy once and vendor the file.

Compatibility. The data format is the most stable interface here — newline-delimited domains survive upstream refactors better than JSON schema changes. Add a parser test that asserts minimum list size and format so a malformed upstream sync fails loudly instead of silently emptying the blocklist. Works identically in HTTP, queue workers, and console commands.

Sequencing.

Phase Scope Exit criteria
0 Spike: inspect list contents, size, overlap with our existing users Sample audited against real signup data; false-positive estimate
1 Vendored snapshot, rule, normalizer, unit tests Rule green in CI; subdomain/IDN cases covered
2 Shadow mode: log would-be rejections, enforce nothing 2 weeks of telemetry, false-positive rate quantified
3 Enforce on registration; allowlist override + CS runbook Error rate flat, appeals process live
4 Automated refresh with diff review; optional internal mirror Refresh owned by a named person

Phase 2 is the gate. If shadow telemetry shows non-trivial false positives, revisit before any user is blocked.

Operational Impact

Maintenance. Code churn is near zero; data maintenance is perpetual. The recurring cost is a scheduled sync plus human review of the diff — budget a few hours per quarter. Pin the snapshot and record its source commit so a rollback is one revert.

Support. Low ticket volume but high sensitivity: every blocked signup is a user who may not tell you. Requires a documented CS runbook (what the rejection means, how to allowlist a domain, how to escalate), and the rejection message should route to that path rather than a dead end.

Scaling. Negligible. A few thousand domains in a PHP set is sub-millisecond and a few hundred KB per worker. At 10x the list size it is still a non-issue. The only scaling concern is correctness of the cache invalidation when the list is refreshed on a running fleet — use a versioned cache key, not a blind Cache::forget.

Failure modes.

  • Stale list → burner signups leak through. Detect via signup-quality metrics, not logs.
  • Over-broad list → legitimate users blocked. Highest-severity failure; mitigate with shadow mode, allowlist, and appeal path.
  • Upstream deletion/rename → sync job fails. Mitigate by keeping last-good snapshot and alerting on fetch failure rather than falling back to an empty list.
  • Malformed sync → silent empty blocklist. Mitigate with parser assertions and a minimum-size check.
  • Bypass → subdomain, punycode, plus/dot aliasing on free providers. Accept partial coverage and pair with other fraud signals; do not treat this list as a control, only as a filter.
  • Supply chain → eliminated by vendoring instead of installing from npm.

Ramp-up. A mid-level Laravel developer is productive in half a day; the wrapper is small and idiomatic. The genuine ramp-up is organizational: agreeing the matching policy, defining the allowlist owner, and getting CS comfortable with the rejection path. Plan for that time explicitly — it will exceed the engineering time.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
uni-method/symfony-lib
tacticmedia/scim-server-bundle
neika-ai/symfony-bundle
mattleads/agent-publishing-bundle
glavweb/framework-bundle
glavweb/extra-bundle
glavweb/api-bundle
glavweb/admin-bundle
adachsoft/api-version-bundle
elsayed85/laravel-api-exceptions
ouhssini/laravel-demo-mode
daworks/ncloud-outbound-mailer-driver
gp247/cms
ignibyte/aic-gates
nexa-merchant/blog
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
cgv/localized-resource