Add Roundcube Sieve routing file

The prompts used to arrive at this change since the previous commit

User exported a Roundcube test filter, asked for a new Sieve file for the current setup, and requested that Afmelden rules be included while disregarding the existing roundcube.txt filters.

Any special observations that may be relevant for version management for this version. Be brief.

Generated mailcat_roundcube.sieve from mailinglist_routes.json and domain_routes.json with INBOX-prefixed fileinto targets and no copy actions. No local Sieve compiler was available; JSON and structural checks passed. roundcube.txt, verplaats_log.json, and plan.md were left unstaged.
This commit is contained in:
2026-07-05 12:33:15 +02:00
parent 0811a6ca5a
commit 35d78a27aa
2 changed files with 1521 additions and 0 deletions
File diff suppressed because it is too large Load Diff
+9
View File
@@ -79,6 +79,15 @@ Mailing-list routes:
- `mailinglist_routes.json` covers normalized policy from `decisions.json`, including `Afmelden.*` destinations. - `mailinglist_routes.json` covers normalized policy from `decisions.json`, including `Afmelden.*` destinations.
- Mailing-list routing supports domain and `From` substring matching; it does not yet fetch or match `List-ID`. - Mailing-list routing supports domain and `From` substring matching; it does not yet fetch or match `List-ID`.
Roundcube/Sieve:
- `roundcube.txt` is a user-exported Roundcube filter test file and should be treated as local evidence that Roundcube/Managesieve can export Sieve. Do not treat its test filters as desired production policy.
- `mailcat_roundcube.sieve` is the generated Roundcube/Managesieve Sieve file for the current routing setup.
- `mailcat_roundcube.sieve` is generated from `mailinglist_routes.json` first, then `domain_routes.json`, matching Python routing order after invoice detection.
- It includes `Afmelden.*` routes and uses `fileinto` without `:copy`, so matching incoming messages are sorted instead of duplicated.
- It uses `INBOX.`-prefixed mailbox names because the user's Roundcube export used `fileinto :copy "INBOX.Notes";`.
- Historical mailbox reordering still requires `verplaats_bestaand.py`; Sieve only affects new incoming mail after activation.
Historical sorting: Historical sorting:
- `verplaats_bestaand.py` defaults to dry-run. Real moves require `--uitvoeren` and interactive `JA`. - `verplaats_bestaand.py` defaults to dry-run. Real moves require `--uitvoeren` and interactive `JA`.