app-email: calcom+nextcloud wired & send-tested; calcom healthcheck GET fix + docs

calcom + nextcloud both send live via the :2526 plaintext listener (calcom signup =
Nodemailer; nextcloud password-reset = Symfony Mailer), both From <app>@felhom.eu.
calcom healthcheck: wget GET not --spider (HEAD 405s). CHANGELOG + REPORT.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-29 13:56:49 +02:00
parent e90dae890e
commit bb81cd414a
3 changed files with 49 additions and 66 deletions
+14
View File
@@ -1,5 +1,19 @@
# Changelog
## 2026-06-29 — App-email: calcom + nextcloud (tls_mode=plaintext :2526 + nextcloud split-From)
- **nextcloud** — `smtp_mapping` with `tls_mode: plaintext` (controller injects port 2526, the plaintext-only
listener) + **split From** (`from_var=MAIL_FROM_ADDRESS` + `from_domain_var=MAIL_DOMAIN` → nextcloud@felhom.eu).
Compose references the injected `${SMTP_*}`/`${MAIL_*}`. Live-confirmed: real password-reset delivered via
plaintext :2526 (Symfony Mailer never attempted STARTTLS).
- **calcom** — `smtp_mapping` with `tls_mode: plaintext` (EMAIL_SERVER_HOST/PORT, EMAIL_FROM=calcom@felhom.eu).
**Plus three pre-existing template fixes** (calcom never deployed before — the image pin was invalid):
(1) image `v4.8.7``v4.6.9` (the pinned tag has no published image); (2) added required `DATABASE_DIRECT_URL`
(Prisma `migrate deploy` fails without it → incomplete schema → 500s); (3) healthcheck `/api/health`
`/api/auth/providers` (the old path 404s in v4.x → container stayed unhealthy → Traefik wouldn't route).
- Both apps point at the controller's `:2526` plaintext-only listener because their SMTP clients
opportunistically STARTTLS-upgrade and can't skip the self-signed cert — the listener simply doesn't offer
STARTTLS, so they stay plaintext (accepted on the single-tenant app bridge).
## 2026-06-29 — App-email rollout: gitea + rallly (calcom/nextcloud/immich = findings)
- **gitea 1.23.4** — added `smtp_mapping` (STARTTLS via `GITEA__mailer__PROTOCOL=smtp+starttls` +
`FORCE_TRUST_SERVER_CERT=true` to trust the shim's self-signed cert; single `GITEA__mailer__FROM`). Compose