From cc19f451c5c46e7feba4fe710c60cd293488f911 Mon Sep 17 00:00:00 2001 From: Jeff Emmett Date: Sun, 15 Feb 2026 16:15:21 -0700 Subject: [PATCH] Create task TASK-064 --- ...d-—-migrate-to-self-hosted-Mailcow-SMTP.md | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 backlog/tasks/task-064 - Decommission-Resend-—-migrate-to-self-hosted-Mailcow-SMTP.md diff --git a/backlog/tasks/task-064 - Decommission-Resend-—-migrate-to-self-hosted-Mailcow-SMTP.md b/backlog/tasks/task-064 - Decommission-Resend-—-migrate-to-self-hosted-Mailcow-SMTP.md new file mode 100644 index 0000000..7990d7e --- /dev/null +++ b/backlog/tasks/task-064 - Decommission-Resend-—-migrate-to-self-hosted-Mailcow-SMTP.md @@ -0,0 +1,39 @@ +--- +id: TASK-064 +title: Decommission Resend — migrate to self-hosted Mailcow SMTP +status: Done +assignee: [] +created_date: '2026-02-15 23:15' +labels: [] +dependencies: [] +priority: high +--- + +## Description + + +Replace all Resend API integrations with self-hosted Mailcow SMTP via email relay service + + +## Implementation Notes + + +## Completed 2026-02-15 + +### Changes +- cryptidAuth.ts: sendEmail() now calls email-relay.jeffemmett.com instead of api.resend.com +- boardPermissions.ts: admin request emails use email relay +- types.ts: RESEND_API_KEY → EMAIL_RELAY_URL + EMAIL_RELAY_API_KEY +- wrangler.toml: updated secrets docs +- Tests updated with new mock env vars + +### Wrangler Secrets +- EMAIL_RELAY_URL set +- EMAIL_RELAY_API_KEY set +- RESEND_API_KEY deleted + +### Email Relay +- Deployed at email-relay.jeffemmett.com +- Flask + Gunicorn, sends via Mailcow SMTP +- Bearer token auth +