Worum geht es
Hin und wieder macht man Dinge die man eigentlich gar nicht gerne tut. Bei mir ist das z.B. die Umsetzung kleiner Kundenanfragen mit PHP. Vor einigen Jahren war das für mich noch völlig in Ordnung, heute liegt mein Focus jedoch klar auf anderen Dingen als kleine Probleme im Quellcode selbst zu lösen. Dennoch hat mich eine der letzten Wünsche eines Bekannten dann doch ein wenig in den Wahnsinn getrieben. Es ging um die Anforderung dass ein bereits seit vielen Jahren existierendes Shopsystem angepasst werden soll so dass die Mails nicht mehr über den eigenen SMTP-Server sondern über den Gmail SMTP versendet werden sollte. Hierzu wurde GSuite-Konto erstellt über welches der Mailversand der eigenen Domain läuft. Nun muss “nur” der Mailversand des Shopsystems auf den Google SMTP umgestellt werden. Nur …
Fast Forward
In der aktuellen Implementierung des Shops war der Mailer bereits in einer eigenen Klasse separiert welche mittels SMTP über den lokalen Mailserver seine Mails versendete. Um den Aufwand möglichst gering zu halten wurde entschieden dass wir diesen Weg weiter verfolgen und eine Authentifizierung mittels Username + Passwort umsetzen. Ein klein wenig Internetrecherche brachte mich auf ein Github-Projekt bei welchem eine Musterlösung für dieses Problem zu finden war:
https://github.com/PHPMailer/PHPMailer/blob/master/examples/gmail.phps
Also wurde die Klasse fix eingebunden und los geht es. Testhalber habe ich dann erstmal die Zugangsdaten meines eigenen Kontos genutzt doch leider war der Mailversand nicht möglich. Ständig erhielt ich eine Fehlermeldung dass die Authentifizierung nicht möglich sei. Auch nach mehrmaligem Prüfen der Zugangsdaten konnte dies als Ursache ausgeschlossen werden.
Einstellungen im Google Account prüfen
Nach einigem hin und her wurde ich in irgend einem Forum auf relevante Einstellungen bei Google aufmerksam. Diese verhindern den “unberechtigten” Zugriff auf das Mailkonto. Hierbei sind 2 Einstellungen zu nennen:
Deaktivierung der 2-Faktor Authentifizierung
Damit eine externe Anmeldung zu Google mit Username und Passwort möglich ist muss die 2-Faktor Authentifizierung deaktiviert werden. Dies erfolgt über den Security-Bereich in der Accountverwaltung von Google (https://myaccount.google.com/security). Die Option “Bestätigung in 2 Schritten” muss deaktiviert werden:
Aktivierung des Zugriffes durch “weniger sichere Apps”
Zusätzlich muss das Gmail-Konto noch für den Zugriff durch “weniger sichere Apps” freigeschaltet werden. Diese Einstellung ist ein wenig verborgen und kann über die folgende URL gefunden werden: https://myaccount.google.com/lesssecureapps
Mailversand über den Gmail SMTP
Nachdem die obigen Einstellungen angepasst wurden steht auch dem Mailversand nichts mehr im Wege. In den ersten Tests hat sich gezeigt dass der Versand sehr sicher und stabil funktioniert. Gesendete Mails erscheinen im GMail Postfach als gesendete Objekte und kommen beim Empfänger sauber an.
Bessere Alternative: O-Auth Authentifizierung
Die hier beschriebene Variante hat diverse Nachteile. Das grösste Problem ist ohne Zweifel dass das persönliche Passwort im PHP-Script hinterlegt werden muss. Aus meiner Sicht ist die hier beschriebene Umsetzung so nicht zu empfehlen.
Auch Google hat hierzu eine klare Stellung und stellt das hier beschriebene Verfahren zum 15. Februar 2021 ab.
After February 15, 2021 – Access to LSAs will be turned off for all G Suite accounts.
https://gsuiteupdates.googleblog.com/2019/12/less-secure-apps-oauth-google-username-password-incorrect.html
Leider kam diese Meldung erst am 16. Dezember 2019 raus. Zu diesem Zeitpunkt war bei meinem Kunden die obige Umsetzung schon aktiv …