EntwicklerMitarbeiter-Handbuch

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)

VariableBeispielHinweis
SMTP_HOSTsmtp.mailgun.orgIn Production niemals localhost.
SMTP_PORT587STARTTLS-Standardport. 465 nur bei implizitem TLS.
SMTP_USERNAMEpostmaster@mg.sellx.devAnmelde-User. Bei Mailgun: API-Key als Username.
SMTP_PASSWORD(aus Vault)Niemals ins Repo. Coolify-Env oder Docker-Secret.
SMTP_FROM_ADDRESSno-reply@sellx.devDKIM-signierte Domain noetig, sonst Spam.
SMTP_STARTTLStrueProduction-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.

Bashmagic-link-grep.sh
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.com

Integration-Tests (MailHog)

Phase-2-Folge #1 (d519090) hat MailHog-Container-Tests via Testcontainers eingefuehrt. Diese sind [Trait(„Category“, „Integration“)]-getaggt und laufen separat:

Bashtest-categories.sh
# Unit-Suite (schnell, kein Docker noetig)
dotnet test --filter "Category!=Integration"

# Integration-Suite (Docker erforderlich)
dotnet test --filter "Category=Integration"