7. Mailbetrieb¶
Pfarrplaner stellt Mails in der Produktion asynchron über Redis und Horizon in die Zustellwarteschlange. Die eigentliche SMTP-Zustellung übernimmt im Docker-Betrieb der optionale, interne Postfix-Dienst. In der Entwicklung bleibt Mailpit der lokale Testdienst.
7.1. Produktionsmail aktivieren¶
Der Produktionsdienst wird nur mit dem Compose-Profil mail gestartet:
./planer up -d app horizon scheduler web
docker compose -f compose.production.yaml --profile mail up -d postfix
./planer exec app php artisan queue:failed
Postfix veröffentlicht keinen Host-Port. App und Horizon erreichen ihn nur als
postfix:587 im privaten Mail-Netzwerk. Der Host-Postfix bleibt unabhängig.
7.2. Erforderliche Konfiguration¶
Die Werte stehen ausschließlich in der nicht versionierten .env:
MAIL_ALLOWED_SENDER_DOMAINS=example.org
MAIL_HOSTNAME=mail.example.org
MAIL_FROM_ADDRESS=noreply@example.org
MAIL_FROM_NAME=Pfarrplaner
Für direkte MX-Zustellung bleiben Relay-Adresse und Relay-Benutzer leer. Bei
einem authentifizierten Relay werden Host, Benutzername und TLS-Stufe gesetzt;
das Passwort liegt ausschließlich in secrets/mail-relay-password.
Direkte Zustellung benötigt ausgehenden TCP-Port 25, passende A-/AAAA- und PTR-/rDNS-Einträge sowie SPF, DKIM und DMARC. Ein SMTP-Relay ist in vielen Umgebungen zuverlässiger.
7.3. DKIM und Backups¶
DKIM-Schlüssel liegen unter secrets/dkim und dürfen nicht in Git gelangen.
Sie gehören in den betrieblichen Backup- und Wiederherstellungsprozess. Die
Postfix-Zustellwarteschlange liegt im benannten Volume postfix_queue; bei
normalen Neustarts darf sie nicht mit docker compose down -v gelöscht werden.
7.4. Prüfung und Fehlersuche¶
./planer status
./planer logs --tail=200 postfix
./planer logs --tail=200 horizon
./planer exec app php artisan queue:failed
./planer exec app php artisan queue:retry all
Prüfen Sie zusätzlich die freigegebene Absenderdomain, MAIL_HOSTNAME, DNS,
Relay-Zugangsdaten und die SPF-, DKIM- und DMARC-Header einer Testmail.
Mails werden in Laravel über Horizon verarbeitet. Ein vorübergehend nicht
erreichbares MX-Ziel verbleibt anschließend in der persistenten Postfix-Queue.
Fehlgeschlagene Laravel-Jobs bleiben in failed_jobs sichtbar.
7.5. Rollback¶
Bei einer Umstellung wird nur die Pfarrplaner-Mailkonfiguration auf den vorherigen SMTP-Dienst zurückgesetzt. Postfix und seine Queue werden erst nach Prüfung der noch ausstehenden Zustellungen beendet. Die Konfiguration und Queue des Host-Postfix werden nicht verändert.