コンテンツへスキップ

XServerに中国からの営業メールが大量に届くのでやったこと【備忘録】

最近、XServerで使っているメールアドレスに、中国からと思われる営業メールが異常な量で届くようになりました。

まずは、XServerのメール側で迷惑メールをどうにかできないかを確認しました。

その後、「そもそも、なぜこんなにメールアドレスを知られているのか?」というところを調べて、最終的にWordPress側も対策することにしました。

今回は、その一連の作業を備忘録として残しておきます。どなたかの参考にもなれば幸いです。


1.まずXServerの迷惑メール対策を確認

最初にやったのは、XServer側の迷惑メールフィルタ設定です。

XServerには、高性能スパムフィルタのCloudmark Authorityがあり、迷惑メールやフィッシングメールなどを自動判定できます。

まずははじめに、xserverのサーバーパネル→メール→迷惑メールフィルタ設定より、この迷惑メールフィルタをON(Cloudmark Authority)にしていることを確認しました。

それでも大量に届いていたので、メールの傾向を見てブラックリストも設定しました。

ブラックリストに登録したもの

今回設定したのは、次のような送信元です。

*@*.cn
*@126.com
*@139.com
*@163.com
*@189.cn
*@cnyggy.com
*@fusora-5.com
*@mailleadcrm.com
*@nivela9.com
*@novique-4f.com
*@qq.com
*@rsputg.com
*@seaznova.com
*@voxflow-7.com
prod@*

特定の中国系ドメインだけでなく、実際に届いていた迷惑メールの送信元ドメインなども個別にブラックリストへ追加しました。

また、本文の内容からも迷惑メールを判定できるようにしました。

xserverのサーバーパネル→メール→メール振り分け設定にて、本文に特定の文字列が含まれる場合

以下の文字列を本文に含むメールについて、迷惑メールフォルダへ転送する設定にしました。

China
Guangzhou
Guangdong
Shanghai
Shenzhen
Beijing
Ningbo
Qingdao
Yiwu
Hangzhou
Xiamen
Shaoxing
Email Preferences
Limit My Communications
Maintain Updates
Personalize Delivery
Unsubscribe
If you no longer wish to receive these emails

XServerの設定では、それぞれ個別のフィルタとして登録しています。

例えば、

本文が「China」を含む
        ↓
迷惑メールフォルダへ転送

という形です。

同じように、

本文が「Guangzhou」を含む
本文が「Shanghai」を含む
本文が「Shenzhen」を含む

などについても迷惑メールフォルダへ振り分ける設定にしました。


不愉快ながらも迷惑メールを即時削除するのではなく、まずは迷惑メールフォルダへ転送する設定にしました。

理由は、実際に必要なメールまで誤判定されてしまった場合にも、迷惑メールフォルダを確認できます。

そのため、

「とにかく全部消す」ではなく、「迷惑メールとして振り分けて様子を見る」

という設定にしました。


2.それでもなぜこんなに届くのか?

XServer側で迷惑メールとして処理することはできます。

でも、また新たにちょっと変えた営業メールがやってくる・・・。

そもそも、どうしてこのメールアドレスが大量の業者に知られているんだろう?

そこで、自分のWebサイトを確認しました。そして、contactform7からではなく直接届いている。

元々今までもずっと問い合わせ先として使っている、メールアドレスはWebサイト上に普通の文字列として公開していました。今まではそれでもこれほどの迷惑メールは届かなかったのですが、xserverに変えてから届くようになって、ここを疑うことにしました。


3.メールアドレスを自動収集される可能性

今回は、こうしたメールアドレス収集ボットに拾われている可能性を考えました。


4.WordPressのデータベースを検索

そこで、WordPressのデータベース内でも文字列のメールアドレスを検索してみました。

まずは、Better Search Replaceというプラグインで、メールアドレスを検索窓に入れてドライランで実行。

すると、

898件

も見つかりました。

ただし、ここで全部を一括置換するのは危険なので改めて、xserverのサーバーパネル→データベース→phpmyadminで検索。

WordPressのデータベースには、

  • wp_posts
  • wp_postmeta
  • wp_options
  • wp_users
  • 各種プラグインのテーブル

などがあり、単純な文章だけではなく、サイトやプラグインの設定情報が入っている場合があります。

今回は、まず実際にWebサイト上で表示される文章が保存されている可能性が高い wp_posts を対象にして、どこにメールアドレスが残っているのかを確認することにしました。


5.作業前にデータベースをバックアップ

ここは重要です。

データベースを変更する前に、バックアップを取りました。

同じようにxserverのサーバーパネル→データベース→MySQLバックアップ取得・復元から簡単にバックアップが取れます。

今回のような置換作業をする場合は、万一のときに戻せるようにしておきます。


6.Better Search Replaceで「wp_posts」だけを対象にした

WordPressの「Better Search Replace」を使いました。

検索:

メールアドレス(例:〇〇@〇〇)

テーブルを選択:

wp_posts

wp_postsだけを対象にしました。

まずDry Runを実行。

結果、

1 tables were searched, 116 cells were found that need to be updated, and 0 changes were made.

となりました。

つまり、wp_posts内に公開ページなどとして保存されているメールアドレスが確認できました。


7.メールアドレスを画像に変更

そこで、公開ページ上のメールアドレスを、通常のテキストではなくよく見かけるように画像として表示することにしました。

HTMLとしては、

<img src="〇〇/email.png">

という形です。

画像の中に、メールアドレスを入れる。ペイントなどでさっくり作成。


8.Better Search Replaceで置き換え。

今度はドライランではなく、

検索:メールアドレス

〇〇@〇〇

次と置換:画像にして置き換え。

<img src="https://〇〇/email.png" alt="メールアドレス" style="height: 20px; width: auto; vertical-align: middle;">

wp_postsだけを対象にして置換。

もう一度、wp_posts で検索し、結果0件を確認。


9.実際のページを確認

置換後、サイトを実際に確認。

すべて表示に問題ありませんでした。


10.Contact Form 7も実際にテスト

メールアドレスを画像にしたので、

「お問い合わせフォームまで壊れていないかな?」

という点も確認しました。

実際にContact Form 7からテスト送信。

結果、

正常にメールが送信され、受信もできました。

つまり、ページに表示しているメールアドレスを画像化しても、問い合わせフォームのメール送信機能には影響ありませんでした。


11.XServerの迷惑メールはしばらく観察

ここまでやったところで、今のところは効果あり。

そこで、XServerのWebメールでは、しばらくの間、迷惑メールを即時削除せず、迷惑メールフォルダへ移動する設定で様子を見ることにしています。


12.今回やったことを時系列でまとめると

中国からの営業・迷惑メールが大量に届く
        ↓
① XServerの迷惑メールフィルタを確認
        ↓
② Cloudmark AuthorityをON
        ↓
③ 送信元ドメインなどをブラックリストへ追加
        ↓
④ 中国の地名や営業メールに特徴的な文字列を本文フィルタに登録
        ↓
⑤ 該当メールを迷惑メールフォルダへ転送
        ↓
⑥ なぜメールアドレスが知られているのか調べる
        ↓
⑦ Webサイトにメールアドレスを普通の文字列で公開していることを確認
        ↓
⑧ WordPressのデータベースを検索
        ↓
⑨ 898件の該当データを確認
        ↓
⑩ データベースをバックアップ
        ↓
⑪ Better Search Replaceでwp_postsだけを対象にする
        ↓
⑫ メールアドレスを画像に置換
        ↓
⑬ 元のメールアドレスがwp_postsに残っていないことを確認
        ↓
⑭ 透明背景のPNGに変更
        ↓
⑮ 表示サイズを調整
        ↓
⑯ 関係する4ページを確認
        ↓
⑰ Contact Form 7から実際にテスト送信
        ↓
⑱ メール受信を確認
        ↓
⑲ XServerの迷惑メール量をしばらく観察

まとめ

今回の対策は、大きく分けると2段階です。

XServer側

Cloudmark Authorityによる迷惑メールフィルタに加えて、実際に届いていた迷惑メールの送信元や特徴的な本文をブラックリスト・本文フィルタに登録し、迷惑メールフォルダへ振り分ける。

↓

WordPress側

Webサイト上のメールアドレスを、HTML上の文字列ではなく画像として表示する。

この2つを行いました。

これで実際に迷惑メールが減るのかは、これからしばらく観察してみます。

今回の作業は、あくまで自分のサイトで行った備忘録です。でもかなり苦労したので、同じような方がいたら参考になれば幸いです。