これは私が備忘録として投稿しています。ご参考になれば幸いですが、内容に関しては責任を負えません。実行に関しては全て自己責任でお願いします。
ContactForm7でスパム対策が行われてなかったため、確認メールを使用したスパムに利用されました。そのためFlamingoに数百万件の大量のメッセージデータが残ってしまい削除する必要があった。
必要な問合せデータが混ざっているかもしれないが、数百万件のスパムデータから見つけることは困難なので全て削除して空にする。
対策1:プラグインで削除
WP Bulk Deleteプラグインの無償版を使用して削除を行った。
安全にデータの作業は行えるが、実行時間が約100件/分程度かかり件数を1,000件に絞って実行してもタイムアウトになる事があった。
念の為、タイムアウト時間はphp.iniに「max_execution_time = 600;」で60秒に変更した。
対策2:SQLで削除
レンタルサーバのphpMyAdminが使って直接SQLから削除を行う。
Flamingoでは、アドレス帳と受信メッセージでそれぞれ独自のPost_typeを使っているため、wp_postsとwp_postmetaテーブルからそれぞれのデータを削除することが可能。
アドレス帳のpost_typeは「flamingo_contact」と受信メッセージのpost_typeは「flamingo_inbound」
wp_postsとwp_postmetaは親子関係にあるため、必ずwp_postmetaを削除してからwp_postsを削除する事
prefixは「wp_」とします。
1.アドレス帳の削除
wp_postmetaの件数確認
SELECT count(*) FROM wp_postmeta
WHERE post_id in
(SELECT ID FROM wp_posts WHERE post_type = “flamingo_contact” ORDER BY ID DESC);
wp_postmetaの削除
DELETE FROM wp_postmeta
WHERE post_id in
(SELECT ID FROM wp_posts WHERE post_type = “flamingo_contact” ORDER BY ID DESC) LIMIT 10;
最初は、LIMIT 10から様子をみた方がいいかな・・・
wp_postsの件数確認
SELECT count(*) FROM wp_posts WHERE post_type = “flamingo_contact”;
wp_postsの削除
DELETE FROM wp_posts WHERE post_type = “flamingo_contact” LIMIT 10;
2.受信メッセージの削除
上記SQLのpost_typeを”flamingo_contact”から”flamingo_inbound”へ変更する。
結果
All in ONE WP Migrationでのデータサイズが、803.09MB から147.61MB になった。
以上
あとがき
今回データの改ざんが行われている様子はなかったのですが、reCAPTUREなどのセキュリティ対策、最新版のアップデート、定期的なバックアップの必要性をつくづく感じました。