Docker und PHP-Mail

6. Oktober 2020

Lang: cs en de es

Verwenden Sie Docker und möchten Sie E-Mails aus PHP mit der Systemfunktion mail() versenden? In diesem Artikel beschreibe ich, wie man Docker und PHP so konfiguriert, dass das Versenden von E-Mails funktioniert.

Im Internet ist das Versenden von E-Mails eine alltägliche Sache. Und sogar eine Web-Anwendung (oft nur eine Web-Präsentation) muss Emails versenden. E-Mails werden auf E-Mail-Hosting-Servern gespeichert. Aber wie versendet man E-Mails?

Windows

Entwickler von Webanwendungen, die Windows verwenden, hatten schon immer ein Problem mit dem Versand von E-Mails. Aus diesem Grund wurden verschiedene Tools zum Versenden von E-Mails oder zum Erfassen von E-Mails aus der Entwicklungsumgebung entwickelt.

Unix

Unter Linux oder einem anderen Unix ist das Versenden von E-Mails Standard. Um zu verhindern, dass die Emails verworfen werden oder in SMAP landen, braucht man höchstens einen lokalen/Testrechner der so eingerichtet ist, dass er E-Mails über den Mailserver weiterleitet, der vollständig konfiguriert ist der vollständig konfiguriert ist, um eine hohe Zustellbarkeit der E-Mails zu gewährleisten und E-Mails nicht im SPAM landen.

Eine weitere Möglichkeit besteht darin, die Anwendung so zu konfigurieren, dass sie E-Mails über einen externen SMTP-Server versendet. Dies ist eine ziemlich gute und vielseitige Lösung, aber Sie müssen sicherstellen, dass jede Anwendung auf diese Weise eingerichtet ist und an allen Orten. Natürlich können selbst dann einige E-Mails auf niedrigerer Ebene keine typischen Informationen über Anwendungsabstürze hinterlassen, die oft den System-E-Mail-Versand verwenden (obwohl selbst dieser E-Mail-Versand wahrscheinlich außer Kraft gesetzt werden könnte).

Docker

Derzeit ist Docker weit verbreitet, was eine gute Möglichkeit ist, Anwendungen zu entwickeln. Allerdings löst man damit wieder das Problem des E-Mail-Versands. Denn in Docker läuft nur ein Prozess und sonst nichts, also kein Mailserver. Und wenn man Docker in einer Produktionsumgebung einsetzt, dann ist funktionaler E-Mail-Versand ein Muss.

Im Allgemeinen ist es am besten, keine anderen Technologien zu verwenden, es sei denn, es gibt einen ausdrücklichen Grund dafür. Das heißt, dass Docker eine nutzlose Technologie für die Produktion ist, es sei denn, es besteht eine Notwendigkeit dafür. Jede Technologie, die man einsetzt, sollte man auch beherrschen und die Zeit dafür haben, sonst macht man sich selbst das Leben schwer.

Docker und PHP-Mail

Wie konfiguriere ich also Docker, um E-Mails aus einer PHP-Anwendung zu versenden?

Wie ich bereits im Artikel Docker und Cron erwähnt habe, gibt es normalerweise nur einen Prozess, der in Docker läuft. Wenn Sie also eine Webanwendung (Webserver mit PHP) in Docker laufen lassen, werden Sie feststellen, dass, dass der mailserver, der Dienst, der für den E-Mail-Versand benötigt wird, nicht auf dem System läuft. Daher müssen Sie E-Mails vom PHP-Skript aus mit dem SMTP-Protokoll über einen externen Dienst verschicken. Oder Sie können das Docker-Image so modifizieren, dass Sie die PHP mail()-Funktion trotzdem verwenden können.

Konkret besteht die Lösung darin, PHP einen anderen Befehl verwenden zu lassen, um E-Mails über einen externen Mailserver zu versenden.
Wir werden das Systemdienstprogramm msmtp zum Senden verwenden. In älteren Versionen von Linux-Distributionen wurde ssmtp verwendet.

Die Konfiguration für msmtp befindet sich in der Datei /etc/msmtprc.

Der Inhalt der Konfigurationsdatei kann wie folgt aussehen:

Konto Standard
host smtp.beispiel.com
Port 587
tls ein
tls_starttls ein
tls_trust_file /etc/ssl/certs/ca-certificates.crt
tls_certcheck ein
auth ein
Benutzer user@domain.com
passwort "passwort"
von "user@domain.com"
Protokolldatei /var/log/msmtp.log

Sie müssen noch die PHP-Konfiguration ändern. Fügen Sie also der Datei php.ini folgendes hinzu:

[mail function]
sendmail_path = /usr/bin/msmtp -t

Sie können versuchen, eine E-Mail über msmtp zu versenden, indem Sie den folgenden Befehl in die Konsole des laufenden Containers eingeben:

msmtp -d -a default -i -t <<END
Von: from@example.com
An: toto@example.com
Betreff: test msmtp
test
END

Wenn du alles richtig eingerichtet hast, funktioniert das und du kannst mail() in PHP auf die übliche Weise verwenden.

Email Vertrauen

Auch wenn Sie E-Mails versenden, kann es sein, dass sie den Posteingang des Empfängers nicht erreichen. E-Mails können im SPAM landen oder sogar verworfen werden. Prüfen Sie daher immer, über welche Mailserver Sie E-Mails versenden und ob sie E-Mails sehr vertrauenswürdig sind, nur dann haben Sie Ihr Bestes getan, damit die E-Mails erfolgreich im Posteingang des Empfängers ankommen.

Die Zukunft von PHP

Wenn Sie entscheiden, ob die Zukunft in der Programmierung in PHP liegt, dann schauen Sie sich dieses Video an Ist es sinnvoll, in PHP zu programmieren?:

Články na podobné téma

VMware-Lizenzierungsänderung
Ausführen von Microsoft SQL Server unter Linux
Sicherung: der Proxmox Backup Server
Linux als Router und Firewall
Hochladen eines Docker-Images in die Docker-Registry
Linux: Verwaltung logischer Datenträger
Linux-Software-RAID
Ausführen einer Webanwendung hinter einem Proxy
Migration von Postfächern
Mehrstufige Docker-Erstellung
Sichern Ihrer Daten durch Einschalten des Computers
Podman
Importieren von Windows in die Proxmox-Virtualisierung
Proxmox-Virtualisierung
Docker und Cron
Lenovo ThinkPad X1 Carbon: Inbetriebnahme des LTE-Modems EM7544
Yocto-Projekt: Erstellen eines eigenen Betriebssystems für eingebettete Geräte
Vorbereiten eines Linux-Servers für die Ausführung einer Webanwendung in Python
Wie man eine schlechte Dateifreigabeleistung in Docker behebt
Wie man Docker richtig einsetzt
Installation von Linux auf einem dedizierten HPE ProLiant DL320e Server
Wie man eine Webanwendung einem Belastungstest unterzieht
Warum das JFS-Dateisystem verwenden
Booten von einer 4TB-Festplatte mit GTP unter UEFI
Btrfs-Dateisystem
Raspberry PI
WINE - Ausführen von Windous Programmen unter Linux
GNU/Linux-Betriebssystem

Newsletter

Wenn Sie daran interessiert sind, gelegentlich Neuigkeiten per E-Mail zu erhalten.
Sie können sich registrieren, indem Sie Ihre E-Mail-Adresse eingeben News-Abonnement.


+