Skip to content

Let members forward their club mailbox to their personal email - #133

Merged
AlaqmarG merged 3 commits into
mainfrom
feat/personal-forwarding
Sep 15, 2026
Merged

AlaqmarG merged 3 commits into
mainfrom
feat/personal-forwarding

Conversation

@AlaqmarG

@AlaqmarG AlaqmarG commented Sep 14, 2026

Copy link
Copy Markdown
Member

Description

  • New Email forwarding switch on My profile: forwards the club mailbox to the personal email on the member's account. Off by default.
  • Target is always the stored personal email; the request can't name an address. Club addresses and read-only mailboxes can't forward.
  • Runs as a per-account Sieve script (forward-to-personal), separate from the co-presidents retirement forward.
  • OCI only relays approved senders, so the forwarded copy is From "Sender via BrockCSC" <member@brockcsc.ca> with Reply-To set to the original sender. The mailbox copy is kept untouched.
  • Spam isn't forwarded, and an X-BrockCSC-Forwarded header stops forward loops.
  • When an approver changes someone's personal email, an active forward follows it (or switches off if it can't).
  • Outside production the switch only compiles the script on Stalwart (SieveScript/validate) and doesn't apply it.

Checklist

  • npm run typecheck, npm run lint, npm run format:check and npm run build pass
  • Schema changes have a committed migration (npm run db:generate) — none
  • New env vars added to .env.example, .env.local.example, deploy/docker-compose.yml and komodo/deploy-context.mjs — none
  • Admin-only routes gated with requireAdmin / requireApprover — member route, self only
  • Tested on the branch's preview deploy (light theme)
  • No secrets, internal hostnames or IPs committed
  • Live forward verified on production (needs a real inbound message)

Testing Evidence

forwarding
Email forwarding switched on in the preview (personal details blurred)
  • In the preview the switch compiles the rule on the real mail server (SieveScript/validate) without applying it. The first try caught a Stalwart lexer quirk: a quote after an escaped backslash never closes the string. That's fixed in 84e7039, and the rule now compiles.

@AlaqmarG AlaqmarG added feature New capability for the people using the site area: mail Mailboxes, the mail client, sending or delivery area: admin The admin portal: analytics, users, events labels Sep 14, 2026
@AlaqmarG
AlaqmarG merged commit c8e875e into main Sep 15, 2026
12 checks passed
@AlaqmarG
AlaqmarG deleted the feat/personal-forwarding branch September 15, 2026 01:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: admin The admin portal: analytics, users, events area: mail Mailboxes, the mail client, sending or delivery feature New capability for the people using the site

Development

Successfully merging this pull request may close these issues.

1 participant