なぜ、なりすましメール(偽装メールアドレス)が届くのか

# はじめに
個人ではメールソフトは、Gmailを使用しています。迷惑メールフォルダに振り分けられているメールの中にも正しいメールもあるため、チェックはしています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14053/03f19af3-5e47-801e-a5ee-aaedf50b4d72.png)

最近、特にくるのがAmazon系の迷惑メールです。迷惑メールでも、ドメイン名が如何にも怪しい（例 j04im8.cn)なら容易に判別できるのですが、ドメイン名が「amazon.co.jp」と正しい場合、如何やって判断するのか？

# メッセージのソース表示
Gmailでは、右端にある縦の三点リーダー「⋮」をクリックし、「メッセージのソース表示」をクリックすると、メッセージのソースが表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14053/e8f6e06f-f07d-fed6-13cb-628343940c58.png)

メッセージのソースの一部抜粋したものです。

```
ARC-Authentication-Results: i=1; mx.google.com;
       spf=softfail (google.com: domain of transitioning amazonr-account-updyatet@tachai.top does not designate 175.129.49.3 as permitted sender) smtp.mailfrom=amazonr-account-updyatet@tachai.top;
       dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amazon.co.jp
Return-Path: <amazonr-account-updyatet@tachai.top>
```

ドメイン名が「tachai.top」となっており、明らかにamazonからではありませんね。
最近では、新しいドメイン「.top」が迷惑メールとして使われていることが多いようです。

もう一つ同じようにメッセージのソースの一部抜粋したものですが、ドメイン名には「cn」となっていて、やはり中国からのなりすましが多いと感じます。

```
ARC-Authentication-Results: i=1; mx.google.com;
       spf=softfail (google.com: domain of transitioning amazonx-co-jppo@ddddct.cn does not designate 175.129.49.20 as permitted sender) smtp.mailfrom=amazonx-co-jppo@ddddct.cn;
       dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amazon.co.jp
Return-Path: <amazonx-co-jppo@ddddct.cn>
```

# なりすましメールの仕組み
なぜ、差出人（From欄）を偽装できるのか？
これには電子メールの送信の仕組みを知る必要があります。

* [なぜ、嘘のメールアドレスが書けるの？　（中級）](https://salt.iajapan.org/wpmu/anti_spam/universal/measure/another-address/)
* [電子メールなりすましの仕組みと、なりすましがなぜ簡単なのかの理由](https://www.proofpoint.com/jp/corporate-blog/post/how-does-email-spoofing-work-and-why-it-so-easy)

##　電子メールの構造  
現在の電子メールでは、3つの主要な部分から構成されています。

1. Envelope（封筒）
2. Message Header（メッセージヘッダ）
3. Message Body（メッセージ本体）

メールソフトによってメールの取扱いは異なりますが、すべてのメールソフトは共通のプロトコル(SMTP:Simple Mail Transport Protocol)を使用しています。これにより異なるシステム間でメールのやりとりが出来るわけです。

差出人と届け先は、エンペロープ（封筒）とメッセージヘッダ(便箋)の両方に記載があります。
「エンベロープTo」「エンベロープFrom」の情報が本来のメールの差出人/届け先になります。
※エンペロープ（封筒）側が違っていると正しくメールを送ることが出来ません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14053/4d15410e-7d78-1f6f-218c-8feb37a8f75e.png)
エンペロープ（封筒）部分は、通常メール作成時にメッセージヘッダー情報を使って自動的に入力されます。
送信者も受信者も、このエンペロープ（封筒）情報を目にすることはほとんどありません。
通常メールを読む場合、メッセージヘッダとメッセージ本体が表示されます。

なりすましメールを出す方々は、この仕組みを悪用してエンベロープには本来の宛先を書くが、メール本体には相手を騙すためのメールアドレスを書くわけですね。

ちなみにドメインが、amazonses.com は、正しい amazon からのメールになります。

## なぜTo/Fromは２種類あるのか
なぜ、「エンベロープTo」「エンベロープFrom」と「ヘッダーTo」「ヘッダーFrom」の2種類に分かれているのか、To/Fromを2つ設けることによってメールの送受信が柔軟になるメリットがあるからです。デメリットとしてはヘッダーの情報を変えれるため、なりすましが出来てしまいます。
それでは、ToとFromで分けて説明します。

* [ヘッダーとエンベロープの違いとは？メール配信の仕組みを解説](https://ms.repica.jp/column/header_envelope_20210118/)

### Toが2つある
Toが2つに分かれていることにより、Bcc機能を使うことができます。
Bccの仕組みは、ヘッダーToには宛先を表示せず、エンベロープToのみに宛先を設定することが可能になるので、受信者に情報を見せずに送信することができます。

### Fromが2つある
Fromが2つ分かれていることにより、転送されたメールが誰から送られたものなのかを分かりやすくすることができます。
転送機能を使用する際、転送をおこなうために封筒の差出人となる「エンベロープFrom」のメールアドレスが設定されてしまいます。しかし、表面上はメール受信時に表示される「ヘッダーFrom」に設定することで見かけ上分かりやすくすることができます。

# なりすましメールの撲滅
「なりすましメール」をなくすためには、メールの送信側と受信側の連携が必要となります。
まず送信側は、正しく送信するメールがどのようなものか情報を提供することが必要です。それにより初めて、受信側は受信したメールが「なりすましメール」かどうかを区別でき、「なりすましメール」であれば排除するなどの対応が可能になります。

このような送信側と受信側が連携するための方式の1つが、SPF（Sender Policy Framework）です。

* [なりすましメール撲滅に向けたSPF（Sender Policy Framework）導入の手引き](https://www.ipa.go.jp/security/topics/20120523_spf.html)

## SPFレコードの設置
SPFレコードとは送信者がメールの送信元を偽装していないかどうかを認証するための仕組みで、DNSのTXTレコードに記述をすることで、このメールの送信元は正しいメールだということを証明することができる。

独自ドメインを使用していて、SPFレコードが設置していなければ迷惑メールフォルダに振り分けられるのです。対策をしていても迷惑メールフォルダに入ってしまう場合があります。

* [送信したメールが送信先の迷惑メールフォルダに入ってしまう場合の対策](https://www.itcoop.or.jp/column/486/)

# 最後に
これで、なりすましメールが届いてしまう仕組みは理解できました。また、メッセージのソース表示して`Return-Path`のドメイン名を見ることで本来の差出人が分かるようになります。
Gmailは優秀ですから、Amazonやクレジットカード系などが迷惑メールフォルダに入っていたら無視して構いません。
しっかりしたところからなら、SPFレコードを設定してなりすましメールフォルダに振り分けられないように対策しているはずです。