SMTP & Magic-Link-Versand
Konfiguration des SMTP-Relays fuer sellx_central (SmtpEmailService via MailKit) und sellx_customers_portal (Auth.js Email-Provider). Dev-Mode: Console-Output. Production: SMTP_HOST mit STARTTLS-Pflicht.
Env-Vars (sellx_central)
| Variable | Beispiel | Hinweis |
|---|---|---|
| SMTP_HOST | smtp.mailgun.org | In Production niemals localhost. |
| SMTP_PORT | 587 | STARTTLS-Standardport. 465 nur bei implizitem TLS. |
| SMTP_USERNAME | postmaster@mg.sellx.dev | Anmelde-User. Bei Mailgun: API-Key als Username. |
| SMTP_PASSWORD | (aus Vault) | Niemals ins Repo. Coolify-Env oder Docker-Secret. |
| SMTP_FROM_ADDRESS | no-reply@sellx.dev | DKIM-signierte Domain noetig, sonst Spam. |
| SMTP_STARTTLS | true | Production-Pflicht (Phase-2-Folge #1, d519090). In Dev: false zulaessig. |
Validierung beim Startup
sellx_central prueft beim Startup in Production, dass SMTP_STARTTLS=true gesetzt ist. Falls nicht, wirft SmtpOptionsValidator eine Exception. Verhindert versehentlichen Klartext-Email-Versand in Production.
Dev-Mode
In ASPNETCORE_ENVIRONMENT=Development schreibt der SmtpEmailService Magic-Link-URLs auf stdout, nicht an einen SMTP-Server. Im sellx_customers_portal gilt dasselbe: der Email-Provider loggt die Magic-Link-URL auf der Server-Konsole.
grep "Magic-Link fuer" sellx_central.log
# Output:
# [12:34:56] Magic-Link fuer customer@example.com: https://portal.sellx.dev/api/auth/callback/email?token=...&email=customer@example.comIntegration-Tests (MailHog)
Phase-2-Folge #1 (d519090) hat MailHog-Container-Tests via Testcontainers eingefuehrt. Diese sind [Trait(„Category“, „Integration“)]-getaggt und laufen separat:
# Unit-Suite (schnell, kein Docker noetig)
dotnet test --filter "Category!=Integration"
# Integration-Suite (Docker erforderlich)
dotnet test --filter "Category=Integration"