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

Laravel Sieve Laravel Package

ukfast/laravel-sieve

ukfast/laravel-sieve adds declarative, reusable filtering and sorting to Laravel Eloquent queries, letting you map request query parameters to model scopes for cleaner, safer list endpoints and APIs.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Package: ans-group/laravel-sieve — Laravel wrapper around the ManageSieve protocol (RFC 5804) for reading/writing Sieve mail-filter scripts (RFC 5228) on a mail server. Maintained by ANS Group (a UK managed-hosting provider), which is a positive signal: the maintainer is also a consumer of the package in a production mail-hosting business.

Architecture fit

  • Fits Laravel applications that own or administer mailboxes: hosting control panels, multi-tenant mail admin, webmail "vacation responder / rule builder" UIs, and provisioning workflows.
  • Assumes a service-provider + facade + publishable config shape, so it composes cleanly with Laravel's container, config caching, and credential encryption conventions.
  • Poor fit outside Laravel: it is a thin, framework-coupled client, so extracting it into a shared PHP service or a non-Laravel worker would mean re-implementing the protocol layer.
  • Architectural constraint to design around: ManageSieve operates on entire scripts. There is no partial edit — every "add a rule" action is a read-modify-write against the whole script. That is a domain concern that surfaces in your application design, not something the package solves.

Integration feasibility

  • Low mechanical effort: composer require, publish config, supply host/port/credentials, call the facade. Days, not weeks, for a single-tenant proof of concept.
  • Real effort sits in the surrounding concerns: credential storage and rotation for per-mailbox accounts, TLS/STARTTLS posture toward the mail host, network egress to port 4190, and mapping your UI's rule model onto Sieve syntax.
  • Requires a reachable Live ManageSieve endpoint for meaningful testing. Confirm whether the package ships a fake/mock or contract-test harness before committing — an untestable-in-CI dependency changes the cost estimate materially.

Technical risk

  • This release is a platform-floor break, not a feature break. v1.2.0 → v2.0.0 is a major bump whose stated content is only "PHP 8.5 and Laravel 13." The implied change is that older PHP/Laravel constraints were dropped. Assume it will not install on your current framework version until you have upgraded the host application.
  • Bleeding-edge dependency risk. PHP 8.5 / Laravel 13 adoption means the package tracks the framework's release cadence very closely. Your upgrade calendar is now coupled to theirs, and there is a window where the package's supported matrix and your platform's stable matrix do not overlap.
  • Change-detection risk (highest). The release note does not state whether public API, facade signatures, config keys, or exception types changed. A major version is the maintainer's licence to break them. Treat the v2 surface as unverified until the changelog/diff is reviewed.
  • Single-maintainer / small-contributor risk. The release highlights a first-time contributor, which is healthy for a community project but suggests a small bus factor. Verify release cadence over the last 12–18 months and issue-response latency.
  • Protocol-layer risk. Auth failures, script compilation errors, quota limits, and TLS negotiation all surface as remote-server errors. How faithfully the package exposes those (vs. collapsing them into a generic failure) determines your observability and support burden.
  • Concurrency risk. Read-modify-write on whole scripts means two concurrent requests can silently clobber each other's rules. The package almost certainly does not solve this; you must serialise per mailbox.

Key questions

  1. What is the exact supported matrix in v2.0.0 — php and illuminate/* constraints in composer.json? Which Laravel/PHP versions were dropped relative to v1.2.0?
  2. Does v2.0.0 change any public API, facade method, config key, or exception class? Is the major bump only a platform-floor change?
  3. Is there a test double / fake connection for CI, or do integration tests require a live Cyrus/Dovecot Pigeonhole endpoint?
  4. Which ManageSieve capabilities and Sieve extensions are supported (vacation, fileinto, imap4flags, relational, body)? Are unsupported extensions rejected gracefully or silently dropped?
  5. TLS: implicit TLS, STARTTLS, or both? Is certificate verification enforced and configurable?
  6. Security posture: is there a SECURITY.md / disclosure process? Are mailbox credentials held only in config, or is there a credential-provider abstraction?
  7. Support model: is there any commercial SLA behind this from ANS Group, or is it best-effort open source?
  8. What is the release cadence and last-12-month issue throughput?

Integration Approach

Stack fit

  • Target state: Laravel 13 / PHP 8.5 application, package at ^2.0.
  • Current state is almost certainly Laravel 10/11/12 / PHP 8.2–8.4, which means ^2.0 cannot be installed yet. This is a coordination problem, not an engineering one.
  • Pin ^1.2 in the interim. Do not attempt a partial upgrade; composer will refuse on platform constraints.

Migration path

  1. Read the v1.2.0…v2.0.0 diff and composer.json to confirm the break is constraint-only. If any API/config key moved, add it to the upgrade ticket with a call-site inventory (grep for the facade alias and config keys).
  2. Inventory every call site and every config key your app relies on, plus any code catching package exceptions.
  3. Upgrade the host application to Laravel 13 / PHP 8.5 first — the package is a follower, not a driver.
  4. Bump the package constraint, re-publish and diff the config file rather than overwriting it.
  5. Re-run the contract tests (see below) before any production traffic.

Compatibility

  • The hard blocker is the platform matrix. Secondary compatibility surface: config key names, facade alias/namespace, exception hierarchy, and any return types your code destructures.
  • Behavioural compatibility is the sneaky one: a Sieve script that compiled under v1.2.0 should produce byte-identical output under v2.0.0. Assert on the emitted script, not just on the absence of exceptions.

Sequencing

  • Phase 0 (now, 1–2 days): diff review, call-site inventory, confirm CI story.
  • Phase 1 (parallel, off critical path): stand up a disposable Dovecot Pigeonhole (or Cyrus) container in CI with a seeded mailbox. Write contract tests: authenticate, list scripts, upload a script with a known rule set, download it, assert round-trip fidelity, and assert server-side compile errors are surfaced as distinguishable failures.
  • Phase 2: framework upgrade to Laravel 13 / PHP 8.5, package held at ^1.2 on the old branch.
  • Phase 3: bump to ^2.0, re-run contract tests, then canary on one domain / one mailbox in staging with script-diff logging enabled.
  • Phase 4: broaden rollout domain by domain; keep a documented rollback to the previous constraint and previous config snapshot.
  • Rule: never bundle this bump with unrelated dependency upgrades — you want a clean bisect if script output drifts.

Operational Impact

Maintenance

  • Low code churn expected — this is a protocol adapter, and the protocol is stable. But you inherit the Laravel release treadmill: expect a package major every time Laravel ships one, each gated on a PHP floor bump. Budget roughly one small upgrade ticket per framework cycle.
  • Cost is mostly in the two-phase coordination (framework first, package second), not in code changes.

Support

  • Open-source, vendor-stewarded. No evidence of a commercial SLA for the package itself unless we are also an ANS Group customer — worth confirming.
  • Small contributor pool is the main support risk. Mitigation: keep the integration surface narrow (one adapter class wrapping the facade) so that forking, patching, or replacing the package is a contained change rather than a rewrite.

Scaling

  • ManageSieve is a stateful TCP protocol with an auth handshake per connection. Cost per operation is network round-trips plus authentication, not CPU. Throughput scales with connection concurrency at the mail host, not with your app servers, and mail hosts commonly cap concurrent ManageSieve sessions per user/mailbox.
  • For anything beyond low-volume admin actions (bulk provisioning, nightly rule reconciliation across thousands of mailboxes), plan a queued worker with bounded concurrency, per-mailbox serialisation, backoff on auth/timeout errors, and a dead-letter path. Do not call this synchronously from a web request path at scale.
  • Script size and number limits vary by server; establish the ceiling empirically before designing a "rules per mailbox" product limit.

Failure modes (design dashboards and runbooks for each)

  • Connection refused / timeout to port 4190 — network policy, firewall, or mail host outage.
  • TLS handshake or certificate validation failure — often hits silently after a host certificate rotation.
  • Authentication failure — stale or rotated mailbox credentials; distinguish from authorisation failure.
  • Server-side Sieve compile error — user-authored or generated rules that the server rejects; must be surfaced to the user with the server's message, and must not be swallowed.
  • Quota / script-size exceeded.
  • Concurrent modification — two writers, last-write-wins, silent loss of a user's rules. Highest-severity failure mode because it is invisible. Mitigate with a per-mailbox lock and, where the protocol permits, an optimistic concurrency check.
  • Partial success in batch operations — no transaction across mailboxes; make operations idempotent and re-runnable.

Ramp-up

  • For a competent Laravel developer: 1–2 days to a working integration.
  • The real learning curve is domain, not framework: Sieve (RFC 5228) semantics, extension availability, ManageSieve behaviour, and the read-modify-write model. Budget 1–2 weeks for genuine proficiency, and secure a mail-infrastructure SME for review — most defects here will be "valid PHP, invalid Sieve," which ordinary code review will not catch.
  • Documentation debt to clear up front: a written mapping from your product's rule model to Sieve constructs, and a decision on which extensions you will and will not expose.
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.
adachsoft/changelog-linter
adachsoft/collection
payerurl/telegrambot-crypto-payment-instant-payout
dskripchenko/laravel-hybrid-search
riorizkyrainey/lara-ced
mehedimi/static-vel
zharp/zharp
nonsapiens/bigquery-model-sync
lgu-bayambang-ict-office/lgu-laravel-development-standards
andydefer/laravel-support
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel
draftsmaninc/draftsman
square-bit/laravel-volition
himito/laravel-mailman
htinlynn/genius-helper
maco-studios/hephaestus
elmogy/larafast