diff --git a/docs/betrieb-mail.md b/docs/betrieb-mail.md new file mode 100644 index 0000000..3579dc0 --- /dev/null +++ b/docs/betrieb-mail.md @@ -0,0 +1,57 @@ +# Mailversand im Produktivbetrieb + +Stand: 2026-07-15 + +Der Mailversand läuft über `app/saas-mail.php` und nutzt bewusst **keinen** +fest codierten SMTP-Client. Alle Versandwege der App (Passwort-Reset, +E-Mail-Verifikation, Einladungen, Info-Mails, Jahresabschluss) laufen über +`saas_send_mail()`. + +## Wie der Versand funktioniert + +- Im Dev-Modus (`APP_ENV=dev`) schreibt `saas_send_mail()` jede Mail nur als + Datei nach `var/mail` (`APP_MAIL_TRANSPORT=log`), es wird nichts wirklich + verschickt. +- Außerhalb des Dev-Modus verschickt `saas_send_mail()` standardmäßig über + PHPs eingebaute `mail()`-Funktion (`APP_MAIL_TRANSPORT=mail`). `mail()` + übergibt die Nachricht an den lokalen Mail-Transport-Agent des Servers, + auf dem PHP läuft (typischerweise `sendmail`), **nicht** an einen + externen SMTP-Relay. + +## Warum das für Webspace-Hosting passt + +Läuft die App auf dem eigenen Webspace, geht die Mail damit automatisch +über den Mailserver des Webspace-Anbieters raus. Bei den meisten +Webspace-Anbietern ist genau dieser Mailserver bereits für die gehosteten +Domains autorisiert (passender SPF-Eintrag, korrektes rDNS), sodass Mails +im Namen der eigenen Domain ohne zusätzliche SMTP-Konfiguration +zuverlässig zugestellt werden. Ein externer SMTP-Provider ist für den +Start nicht nötig. + +## Produktiv zu setzende Umgebungsvariablen + +```bash +export APP_ENV="prod" +# APP_MAIL_TRANSPORT kann entfallen, "mail" ist der Standard sobald +# APP_ENV nicht "dev" ist. Explizit setzen schadet aber nicht: +export APP_MAIL_TRANSPORT="mail" + +# Wichtig: echte Absenderadresse auf der eigenen Domain, sonst ist SPF- +# Alignment beim Empfänger nicht gegeben, selbst wenn der Server senden +# darf. Der Code-Default "noreply@kaffeeliste.local" ist nur ein +# Platzhalter und darf produktiv nicht stehen bleiben. +export APP_MAIL_FROM="noreply@kaffeeliste.de" +export APP_MAIL_FROM_NAME="Kaffeeliste" + +# Für korrekte Links in Mails (Passwort-Reset, Einladungen, Dashboard-Link): +export APP_BASE_URL="https://app.kaffeeliste.de" +``` + +## Später möglich, aktuell nicht nötig + +Eine dedizierte SMTP-/Provider-Anbindung (z. B. über einen +Transaktionsmail-Dienst mit Bounce- und Zustellprotokoll) war in +`docs/m3-saas-basis-vorbereitung.md` als möglicher späterer Ausbau +vorgesehen. Das bleibt sinnvoll, sobald Zustellrate, Bounce-Handling oder +Versandvolumen eine eigene Überwachung brauchen – für den Start reicht der +Versand über den ohnehin bereits autorisierten Webspace-Mailserver.