Goal
Use the interoperable Sieve redirect/keep model for forwarding while preserving existing configuration compatibility.
Scope
- Compile forwards.json rules to deterministic Sieve scripts.
- Support full email addresses canonically and bare local-parts as legacy input.
- Explicitly define Junk forwarding policy.
- Add loop prevention and redirect limits per RFC 5228.
- Add validate/compile/test CLI commands.
Acceptance criteria
- Existing role forwards compile without behavior changes.
- keep + redirect semantics are explicit.
- Junk policy is configurable and documented.
- Loop and multi-hop tests pass.
- Live socials@ and hi@ delivery probes pass.