app-email: calcom + nextcloud mappings (tls_mode=plaintext, nextcloud split-From)

calcom (Nodemailer) + nextcloud (Symfony) opportunistically STARTTLS with no cert-skip
-> tls_mode=plaintext (:2526, no STARTTLS advertised). nextcloud splits From via
from_domain_var (MAIL_FROM_ADDRESS + MAIL_DOMAIN). Compose files reference injected env.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-29 13:14:01 +02:00
parent 42bf76f540
commit 1b89692a49
4 changed files with 45 additions and 0 deletions
+14
View File
@@ -81,3 +81,17 @@ healthcheck:
path: "/api/health"
expect:
status: 200
# --- App-email mapping (apps → in-controller shim → hub → Resend) ---
# Cal.com (Nodemailer) hard-codes TLS rejectUnauthorized=true with no skip flag and opportunistically
# STARTTLS-upgrades whenever the server offers it — so it cannot use the self-signed :2525 listener.
# tls_mode=plaintext points it at the :2526 listener, which does NOT advertise STARTTLS, so Cal.com never
# attempts TLS (plaintext on the single-tenant app bridge — accepted posture). secure is inferred from the
# port (≠465 → plaintext). EMAIL_SERVER_USER/PASSWORD stay unset (the shim accepts no-auth).
smtp_mapping:
tls_mode: plaintext
host_var: EMAIL_SERVER_HOST
port_var: EMAIL_SERVER_PORT
from_var: EMAIL_FROM
from_name_var: EMAIL_FROM_NAME
from_local: calcom
+7
View File
@@ -23,6 +23,13 @@ services:
- DATABASE_URL=postgresql://calcom:${DB_PASSWORD}@calcom-postgres:5432/calcom
- NEXT_PUBLIC_WEBAPP_URL=https://${SUBDOMAIN}.${DOMAIN}
- NEXTAUTH_URL=https://${SUBDOMAIN}.${DOMAIN}
# App-email (managed relay). Injected by the controller only when app-email is on (global + per-app);
# empty EMAIL_SERVER_HOST keeps Cal.com mail disabled. Cal.com uses the plaintext :2526 listener
# (tls_mode=plaintext) — it can't accept the self-signed STARTTLS cert. See .felhom.yml smtp_mapping.
- EMAIL_FROM=${EMAIL_FROM:-}
- EMAIL_FROM_NAME=${EMAIL_FROM_NAME:-Felhom}
- EMAIL_SERVER_HOST=${EMAIL_SERVER_HOST:-}
- EMAIL_SERVER_PORT=${EMAIL_SERVER_PORT:-587}
networks:
- traefik-public
- calcom-internal