Qiitaの公式出会い系を名乗るスパムへの対抗方法（xyz ドメインのあれ）

# 概要
2020年5月17日頃から、Qiitaの公式出会い系を名乗るスパムが発生し、スパマーがフォローすることでQiitaからの通知メールが送信され、結果として危険なサイトへの誘導が行われました。

<img width="300px" alt="D11CFFCF-9A94-45F6-9C95-A4C4F52562E0.jpeg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/77441/c140aef7-ac59-1b4c-b376-c272804dc98c.jpeg">


なお、スパマーアカウントはBANされました。
<img width="400px" alt="374249F5-5C8F-4F58-AC40-B3055E67E00B.jpeg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/77441/f7647225-fa91-3014-4575-c9143aa3c1da.jpeg">

BAN済 [@QiitaBot](https://qiita.com/qiitabot)
BAN済 [@QiitaBot_](https://qiita.com/qiitabot_)
BAN済 [@Admin_Bot](https://qiita.com/admin_bot)
BAN済 [@_BotAdmin](https://qiita.com/_botadmin)
BAN済 [@HarukoAdmin](https://qiita.com/harukoadmin)
BAN済 [@Qiita_Date](https://qiita.com/qiita_date)
BAN済 [@AdminQiita](https://qiita.com/adminqiita)
BAN済 [@AdminQiita_](https://qiita.com/adminqiita_)
BAN済 [@Admin_Qiita](https://qiita.com/admin_qiita)
BAN済 [@Admin_Qiita_](https://qiita.com/admin_qiita_)
BAN済 [@QiitaOfficial](https://qiita.com/qiitaofficial)

:thinking:Qita?
BAN済 [@AdministrationQita](https://qiita.com/administrationqita)

**！悪用禁止！**
恐らく名前のところに`https://`を抜いたURLを入れたんだろうと推測します。
**！悪用禁止！**

# 結論
## メール受信側の対抗方法
受信側で、このメールを受け取りたくないなら、アカウント設定で行います。
「設定」を押下します。
<img width="400px" alt="1BC415E2-36CD-41E4-890E-F153B122A4C6.jpeg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/77441/c37b23ca-4732-8e41-3790-9354555b3497.jpeg">

「メールアドレスと通知」を押下します。
<img width="400px" alt="581F4CF3-4E75-4314-BDC4-4C845F02E8E0.jpeg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/77441/1b2b0224-6b7b-e8ef-4caf-0cd10c981d6b.jpeg">

下のほうにある「フォロー」のところで「メール」のチェックボックスを外して「保存する」を押下します。
Web通知は悪質なサイトへの誘導は行われないので、チェックボックスを外さなくても大丈夫です。
<img width="400px" alt="36551E0B-C3DC-4E3F-91C0-8F3ABDED6B2E.jpeg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/77441/ce970f29-33c8-1c94-e051-f5b0ccdd9838.jpeg">

**メール通知に関して2020年5月18日の時点で[ヘルプページ](https://help.qiita.com/ja/categories/qiita/)にメール通知の説明が無かったので画像による説明を追記しました。**

悪質ユーザーへの通報は公式ヘルプの[通報機能](https://help.qiita.com/ja/articles/qiita-report)にあります。

## メール送信側の対抗方法
次にエンジニアとしては、これをメール送信側で、何とかしたいのですが意外と面倒です。
実は、メールクライアントはURLを正規表現で判定し、それを自動的にハイパーリンクに置換していきます。
そのため、メール送信側では対策が少々難しいと思います。
（アカウント作成時に公開Proxy IPアドレスだったらアカウント作成を拒否するのもありです。）

昔、このようなことの対策をしたことがありますので、やったことを思い出しながら整理すると、以下の方法ぐらいしか無いです。
入力禁止文字にピリオドを追加するが一番オススメです。

* 送信対策
    * 正規表現でURL判定されてしまうので、メール送信する文面でURLらしきものの先頭１文字を大文字にする。（Gmailだけかもしれないので推奨しません）
    * 正規表現でURL判定されてしまうので、メール送信する文面からピリオドを抜く。
    * 正規表現でURL判定させないために、ピリオドの前に¥などURL要素以外の文字を入れる。
    * ユーザーの名前をメール送信しない。
    * HTMLメールであれば、ユーザーの[マイページ](https://qiita.com/sapi_kawahara)など、プロフィールURLをアンカータグとして送信する。
        * アンカータグがあれば、テキストエリアにピリオドがあっても、アンカータグが優先されテキストエリアはハイパーリンクにはならない。
* 入力対策
    * メール送信する可能性のある名前にピリオドを入力させない、ピリオドを入力禁止文字として設定する。
        * タイトルなど他にもユーザーが入力する可能性のある項目で、メール送信するものにはピリオド入力はさせない。
        * 入力項目でピリオドが禁止文字に設定されているのは、これが理由です。


# 実験コーナー
`msmtp`で色々なメールを送信してみよう！
送信先はGmailです。

メール送信側でURLらしきものをハイパーリンク化されてしまうことを制御するのは不可能ですが、知識とし共有しておきます。
すぐに思いつくのは、HTMLメールで`format-detection`を指定ですが、やっても反応しません。
`<meta name="format-detection" content="email=no,telephone=no,address=no">`を設定しても無駄です。

※~~`msmtp`については、別の記事で説明する予定です。~~　
※`msmtp`については別の記事に書きました。
[msmtp を使う](https://kawahara-ci.hatenablog.com/entry/2020/05/19/msmtp)

## テキストメールのパターン
### テキストメールの文面
```plaintext:q1.txt
From: "Qiita1" <sample@sample.com>
To: sample@sample.com
Subject: Qiita1
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8

テキストメール
リンクされる qiit.com
リンクされない Qiita.com
```

### テキストメールの送信
```shell
cat q1.txt | msmtp -t
```
### 受信したテキストメール
<img width="400px" alt="C2BAAD20-05E5-4E45-9147-6C78FCFB5C4A.jpeg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/77441/6f5cc633-d274-f8a4-01e5-eb7d62101115.jpeg">



## HTMLメールのパターン
### HTMLメールの文面

```html:q2.txt
From: "Qiita2" <sample@sample.com>
To: sample@sample.com
Subject: Qiita2
MIME-Version: 1.0
Content-Type: text/html; charset=UTF-8

<html>
<head>
<style>
@media (max-width: 768px) {
  .test1 {
    color: #f0f;
  }
}

@media (min-width: 769px) {
  .test1 {
    color: #0ff;
  }
}
</style>
</head>
<body>
<h1 class="test1">HTMLメール</h1>
リンクされる qiita.com<br/>
リンクされない Qiita.com<br/>
ハイパーリンクでリンクされる（実際はトップページがリンクされる） <a href="https://qiita.com/">https://qiita.com/sapi_kawahara</a><br/>
</body>
</html>
```

### HTMLメールの送信
```shell
cat q2.txt | msmtp -t
```
### 受信したHTMLメール
<img width="400px" alt="116085FD-A2B0-491C-A6DC-FD1FEE7B01F4.jpeg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/77441/bae26b0c-4dfd-abf0-33c4-8059ad2426ce.jpeg">




## base64でエンコードしたメールのパターン
### base64でエンコードしたメールの文面

```plaintext:q3.txt
From: "Qiita3" <sample@sample.com>
To: sample@sample.com
Subject: Qiita3
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: base64

YmFzZTY044Gn44Ko44Oz44Kz44O844OJ44GX44Gf44Oh44O844OrDQrjg6rjg7Pjgq/jgZXjgozj
gosgcWlpdC5jb20NCuODquODs+OCr+OBleOCjOOBquOBhCBRaWl0YS5jb20=
```

### base64でエンコードしたメールの送信

```shell
cat q3.txt | msmtp -t
```
### 受信したbase64でエンコードしたメール
<img width="400px" alt="7E6848D1-E03E-4C76-B35D-8867D076EC9D.jpeg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/77441/d42dc5c1-2e39-1f01-397a-dc4b74ef641d.jpeg">