Sidequests
Ein E-Mail-Protokoll für WordPress, das Datenschutz ernst nimmt. Es zeichnet jede Mail auf und behandelt den Bestand von Anfang an als personenbezogene Daten, die irgendwann wieder weg müssen.
WordPress verschickt ständig E-Mails: Formulareingaben, Bestellbestätigungen, Passwort-Links, Hinweise an die Redaktion. Ob sie ankommen, sieht im Backend niemand. Ein Mail-Log schließt diese Lücke, und Plugins dafür gibt es etliche. Fast alle speichern jede Mail vollständig und unbegrenzt, mit Empfänger, Betreff und Inhalt. So wächst in der Datenbank eine Sammlung personenbezogener Daten, an die nach der Einrichtung keiner mehr denkt. Deshalb habe ich Privacy Mail Log gebaut. Es zeichnet jede Mail auf und behandelt den Bestand von Anfang an als das, was er ist: personenbezogene Daten, die irgendwann wieder weg müssen.
Das Plugin zeichnet jede E-Mail auf, die über wp_mail() läuft:
Name und Adresse der Empfänger, Betreff, Inhalt und die Dateinamen der
Anhänge. Die Anhänge selbst werden nicht gespeichert. Zu jedem Eintrag
gehört der Status: erfolgreich versendet, fehlgeschlagen mit der
Fehlermeldung des Mailers oder „Pending", wenn ein anderes Plugin die
Zustellung übernommen und nichts zurückgemeldet hat. SMTP-Plugins, die auf
wp_mail() aufsetzen, werden mit erfasst. Die Übersicht bietet
Suche, Statusfilter und Massenlöschung. HTML-Mails zeigt die Detailansicht
in einer Sandbox, die Skripte und Formulare blockiert. Eine Testmail aus dem
Backend zeigt, dass das Protokoll läuft.
Der Kern des Plugins sind die Datenschutz-Einstellungen. Für Empfängername, Adresse, Betreff und Inhalt lässt sich getrennt festlegen, ob das Feld nie, nach einer Frist oder sofort anonymisiert wird. „Sofort" greift, bevor der Eintrag geschrieben wird. Der Wert erreicht die Datenbank also gar nicht erst. Wer den Inhalt auf „Sofort" stellt, betreibt ein reines Metadaten-Protokoll: Man sieht, wann welche Mail an wen rausging und ob sie ankam, der Text bleibt außen vor.
Für die E-Mail-Adresse gibt es drei Ersetzungsarten: ein Platzhalter, ein stabiler Hash oder nur die Domain. Der Hash macht eine Adresse unkenntlich, bleibt aber für dieselbe Adresse immer gleich. So lässt sich auch im anonymisierten Protokoll noch erkennen, dass fünf Mails an denselben Empfänger gingen, ohne zu wissen, an wen.
Die Aufbewahrung läuft in zwei Stufen über WP-Cron: Nach der ersten Frist werden die Einträge anonymisiert, nach der zweiten gelöscht. Voreingestellt sind 30 und 90 Tage, beides lässt sich anpassen. Das Protokoll hat damit ein Ablaufdatum und räumt hinter sich selbst auf.
Privacy Mail Log hängt sich in die Datenschutzwerkzeuge von WordPress ein. Bei einem Auskunftsersuchen landen die passenden Protokolleinträge im Export. Bei einem Löschersuchen werden alle Einträge an die betreffende Adresse unwiderruflich anonymisiert: Name, Adresse, Betreff und Inhalt werden überschrieben, der Eintrag selbst bleibt. Die Versandstatistik stimmt weiterhin, personenbezogene Daten sind keine mehr da. Endgültig ist das in jeder Variante: Die Originalwerte werden überschrieben, ein Zurück gibt es nicht.
Privacy Mail Log ist ein Werkzeug, keine Konformitätsgarantie. Ob der Einsatz zur DSGVO passt, hängt von Konfiguration, Fristen und den Prozessen des Betreibers ab. Das Plugin liefert die Mittel dafür. Es kommt ohne externe Abhängigkeiten aus, stellt keine Anfragen nach außen und trackt nichts. Für Entwickler gibt es Hooks: eine Action nach jedem protokollierten Eintrag und Filter für die Einstellungen, die benötigte Berechtigung und die Batch-Größe des Cron-Laufs.
Voraussetzungen sind WordPress 6.7 und PHP 7.4, Lizenz GPL. Installation über das Plugin-Verzeichnis oder per WP-CLI:
wp plugin install neuedaten-privacy-mail-log --activate
Alles Weitere im Plugin-Verzeichnis: