akismet

wall < "akismet – Einträge in wp_commentmeta entfernen"

Broadcast message from spillerm@unixe.de (pts/1) (Mi Jan 13 13:42:33 2016):
4
Diesen Beitrag schrieb ich vor 3 Jahren. Behalte das beim Lesen bitte im Hinterkopf.

akismet war lange Zeit der Quasi-Standard in Sachen Spam-Bekämpfung unter WordPress, und auch auf meiner Präsenz war es eine ganze Weile aktiv. Als ich es entfernen wollte stellte ich fest: es ist ganz schön hartnäckig…

Irgendwann war der Punkt erreicht, an dem ich das Plugin einfach nicht mehr einsetzen mochte; denn einerseits hatte ich zunehmend Probleme mit False Positives, und das war recht nervig. Andererseits wurde meine Datenbank grösser und grösser — unglaublich, wie akismet den Datenbestand aufblasen kann.

Aber auch aus Datenschutz-Sicht finde ich es bedenklich: vereinfacht ausgedrückt übermittelt das Plugin jeden neuen Kommentar an die akismet-Server in den USA und prüft ab, ob der Wortlaut des Kommentars, die hinterlegte Email-Adresse oder die IP-Adresse des Absenders dort als SPAM markiert ist. Darauf müssen die Kommentatoren vorher hingewiesen werden, Abmahnungen können sonst die Folge sein (diesen Artikel und seine Verweise fand ich in dem Zusammenhang recht erhellend).

Vorsicht solltet ihr auch bei der Wahl der verwendeten Version walten lassen: Basic ist für den privaten Anwender kostenfrei, doch schon wenn ihr GoogleAds oder ähnliches schaltet fallt ihr nicht mehr in diese Kategorie und müsst den Service bezahlen.

Ich habe für mich dazu entschieden, das Plugin im ersten Schritt zu deaktivieren — und im zweiten dann zu löschen. Um jedoch auch die Datenbank zu bereinigen war etwas mehr Aktion nötig — ich zeige es euch nachfolgend anhand einer relativ überschaubaren Beispiel-WordPress-Installation, und ihr könnt euch vorstellen, dass bei einer wirklich grossen Seite so einiges zusammen kommt…

Ermitteln der Einträge

mysql> SELECT table_name "Table Name",
    -> table_rows "Rows Count",
    -> round(((data_length + index_length)/1024/1024),2) "Table Size (MB)"
    -> FROM information_schema.TABLES
    -> WHERE table_schema = "WordPress"
    -> AND table_name ="wp_commentmeta";
+----------------+------------+-----------------+
| Table Name     | Rows Count | Table Size (MB) |
+----------------+------------+-----------------+
| wp_commentmeta |        989 |            0.28 |
+----------------+------------+-----------------+
1 row in set (0.00 sec)

Löschen der Einträge

mysql> delete from wp_commentmeta
    -> WHERE meta_key like "%akismet_%";
Query OK, 611 rows affected (0.17 sec)

Abschliessende Überprüfung

mysql> SELECT table_name "Table Name",
    -> table_rows "Rows Count",
    -> round(((data_length + index_length)/1024/1024),2) "Table Size (MB)"
    -> FROM information_schema.TABLES
    -> WHERE table_schema = "WordPress"
    -> AND table_name ="wp_commentmeta";
+----------------+------------+-----------------+
| Table Name     | Rows Count | Table Size (MB) |
+----------------+------------+-----------------+
| wp_commentmeta |        378 |            0.09 |
+----------------+------------+-----------------+
1 row in set (0.00 sec)
4