mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-08 03:38:23 +00:00
The Mailu import covered only inventory users and logged in with their passwords. It now reads every <address>/ maildir of the legacy volume (files/python/mailu_maildir.py), logs in as the recovery administrator acting for each account, creates missing accounts under the name the OIDC directory resolves, keeps folders, flags, keywords and internal dates, imports and activates each mailbox's Sieve script, merges mailboxes the inventory maps onto another account (migration.mailbox_map), skips and reports mailboxes of domains Stalwart does not serve, and imports nothing twice on a re-run. The recovery credentials reach the script through a 0600 file, not argv. The import task allows 6 hours like the other long data migrations, because a production mailbox of 157k messages does not fit into one. services.stalwart.aliases becomes Stalwart mailing lists, with @<domain> as the domain's catch-all and destinations outside the served domains allowed; services.stalwart.forwards becomes a redirect :copy Sieve script chained with the user's own. Both are provisioned on every deploy and only touch what the role created. The test harness groups its probes under files/test/probe/ and its scenarios under files/test/verify/. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>