Doku: Mailversand im Produktivbetrieb ueber Webspace-Mailserver
Klaerung auf Nutzerfrage: saas_send_mail() nutzt produktiv PHP mail() statt eines externen SMTP-Relays, laeuft also automatisch ueber den Mailserver des Webspace-Anbieters, der fuer die eigene Domain i.d.R. bereits autorisiert ist (SPF/rDNS). Dokumentiert die dafuer noetigen Env-Variablen, insbesondere APP_MAIL_FROM, das produktiv nicht auf dem Platzhalter noreply@kaffeeliste.local stehen bleiben darf. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -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.
|
||||
Reference in New Issue
Block a user