E-Mail-Benachrichtigung für Kommentare eingerichtet
Bislang gab es in meinem Blog die im Beitragstitel genannte Funktion nicht, aber seit heute läuft es nun: Ich bekomme eine E-Mail, wenn ein neuer Kommentar freizuschalten ist und ihr bekommt eine E-Mail, wenn ich oder ein anderer Besucher auf euren Kommentar antwortet.
Ab hier folgt nur noch „Tech-Sprech“ für Interessierte:
Das Unterfangen war nicht ganz einfach umzusetzen, denn ich wollte es kostenlos, anonym/datensparsam, wartungsarm und ohne Big Tech aus den USA. Also das Rundum-sorglos-Paket! 🤭
Das bei mir zum Einsatz kommende Pure Comments unterstützt für den E-Mail-Versand Amazon SES und SMTP. Ersteres fällt wegen Big Tech und kostenpflichtig direkt weg. Ich ahnte schon (siehe weiter unten), dass es bei SMTP nicht einfach werden würde, denn mein kostenloses Webhosting bei lima-city enthält keine Postfächer, die ich zum Senden hätte nutzen können. Aber ich hatte kürzlich noch meine alte Datenstrom-Yellow-Instanz dazu gebracht, mir über die PHP-Funktion mail() Benachrichtigungen zuzusenden. Ginge das mit einer Quellcodeanpassung nicht auch mit Pure Comments?
Ja, es geht, aber praktikabel ist es nicht. Denn an eine Proton-Mail-Adresse konnte ich senden, ein Gmail-Testaccount blockte jedoch mit dem Hinweis ab: „550-5.7.26 Your email has been blocked because the sender is unauthenticated. 550-5.7.26 Gmail requires all senders to authenticate with either SPF or DKIM.“ – Beides ist beim kostenlosen Webhosting nicht möglich.
An der Stelle betrachtete ich den mail()-Ansatz als gescheitert. Der Vollständigkeit halber nachfolgend mein „Code-Hack“. (In den Pure-Comments-Einstellungen stand als „Email provider“ der Wert „None“.)
In der Datei comments/index.php änderte ich:
ses_send_email($config, $to, $subject, $bodyText);
zu:
$headers = 'From: <noreply@werschreibt.de.cool>';
mail($to, $subject, $bodyText, $headers);
und in der comments/api/index.php wurde:
ses_send_email($config, $config['moderation']['notify_email'], $subject, $bodyText);
zu:
$headers = 'From: <noreply@werschreibt.de.cool>';
mail($config['moderation']['notify_email'], $subject, $bodyText, $headers);
Also doch SMTP! Nun nutze ich sowieso Proton Mail, aber SMTP erfordert einen der kostenpflichtigen Tarife. Google Gmail ist kostenlos, würde sehr wahrscheinlich mit SMTP funktionieren, ist aber wegen Big Tech ein No-Go. Ich muss denen eure schönen E-Mail-Adressen ja nicht auf dem Silbertablett servieren, gelle?
Mal kurz nach Deutschland geschaut: GMX FreeMail ist kostenlos, aber möchte im letzten Schritt der Registrierung eine Mobilfunknummer zur Verifizierung. mail.de FreeMail ist ebenfalls kostenlos, möchte aber genauso bei der Registrierung eine Mobilfunknummer für die Verifizierung. Weiter gegoogelt, aber nichts Vielversprechendes gefunden.
Dann erinnerte ich mich an meinen früheren kostenlosen Hosting-Account bei x10hosting.com, in dem man ziemlich konfigurieren konnte. Die Server stehen zwar u. a. auch in den USA, ist aber immerhin kein ganz so großes Big Tech. Dieser DMARC Domain Checker fand für meine Domain „werschreibt.x10.network“ dort einen SPF-Eintrag, den Gmail doch so gern hätte! ❤️ – „So, give it a try!“, dachte ich bei mir.
Ich habe mir also dort im „Hosting Control Panel“ ein Postfach mit der Adresse „noreply@werschreibt.x10.network“ angelegt und das Versenden sicherheitshalber auf 50 E-Mails pro Tag begrenzt. (Maximal 200 wären möglich.) Das Panel meinte, ich solle „mail.werschreibt.x10.network“ mit Port 587 als SMTP-Server nehmen. Mit diesen Angaben habe ich Pure Comments gefüttert und … scheiterte.
Um den Grund herauszufinden, fügte ich in der Datei comments/includes/smtpmail.php oberhalb von $mail->send(); die Zeile $mail->SMTPDebug = 2; ein, um die Kommunikation zwischen Pure Comments und dem E-Mail-Server verfolgen zu können. Es lag am Namen des SMTP-Servers: „Peer certificate CN=`x15.x10hosting.com' did not match expected CN=`mail.werschreibt.x10.network'“ – Ich änderte ihn in „x15.x10hosting.com“ und schon klappte es mit dem Versenden.
Gmail jammert zwar immer noch „Gmail konnte nicht überprüfen, ob diese Nachricht tatsächlich von werschreibt.x10.network gesendet wurde und nicht von einem Spammer stammt.“, aber damit kann ich derzeit leben. Mit ein bisschen weiterer Analyse und nach Anlegen des DMARC-Eintrags "v=DMARC1;p=reject; rua=mailto:noreply@werschreibt.x10.network" sowie Ergänzen von „ip4:198.91.80.251“ im vorgegebenen SPF-Eintrag im „Hosting Control Panel“ stufen Proton Mail und Gmail meine Kommentar-E-Mails nun als ungefährlich ein. 🥳
Zuletzt fiel mir noch ein, dass E-Mails aus Johns Kommentarsystem auf rausgerufen.de mit defekten Umlauten usw. bei mir ankommen und mein Kommentarsystem war natürlich ebenfalls betroffen. Abhilfe brachten zwei neue Zeilen:
$mail->CharSet = 'UTF-8';
$mail->Encoding = 'base64';
oberhalb von $mail->send();.
Ich habe fertig! (Na, fast. In den E-Mails wird noch Englisch als Sprache verwendet …)
Sollte ich hier irgendwo Blödsinn erzählt haben und/oder sich das viel eleganter lösen lassen, dann schreibt's bitte in die Kommentare! ✍️