サービスでメールを使う時にに知っておきたい『SMTP-AUTH』『SPF』『DKIM』『DMARC』『SSL』について(セキュリティ面)

# はじめに

メール設定時に、
『どこまですればセキュアか?』
『この設定はどこまで配慮してくれているのか？』
『どこまで行えば完璧か?』
等々曖昧だったので調べました！と言うものです。

で結論ですが、
ある程度セキュアにはできますが『完璧』は難しそうです、、という報告です。
※詳しくは[SSL](https://qiita.com/sachiko-kame/items/cd9b5187cb767f6510c5#ssl)の箇所を参考にしてください。私はこの部分が一番残念な部分でした、、

あと自分のサービス設定する場合、
『SPF』『DKIM』『SSL』は絶対に設定しておきたいなの気持ちです。(大切な情報送る場合)
『SMTP-AUTH』は気持ちあった方が嬉しいぐらいの認識です！
誰にでも見られてもいい場合は『SSL』はそこまで必要ないのかもの認識です。

# 用語の大雑把な説明
何はともあれ、表で大雑把にみたい方が沢山いるはずなのでここで素晴らしくまとめられた表をご覧頂きたいと思います！:hatched_chick: 
↑
(ハードルを自分で上げるから苦しくなるんだよ、、:confused:)

| 用語 | 簡単な説明 | 何対策 |
|:-|:-|:-|
|  SMTP-AUTH | 認証(idとpss使って認証のあの認証)  | 第三者にメールを送信されないようにする対応  |
|  SPF |  送信ipアドレスの制御 |  第三者にメールを送信されないようにする対応 |
|  DKIM |  署名 |  誰が送ったかを受信者にお知らせするためのもの。私が送ってるから！私が！的なもの。メールの改ざん防止もできるよう。 |
|  DMARC |  うまくいかなかった時どうするかを決めておくもの(SPFとDKIMと一緒に使われるもの) |  SPFやDKIMが失敗した時(送信されてくるIPが違ったり、署名されているものが妥当なものでない時)、そのメールを今後どうするか決めておくもの。ブロックするのか迷惑メールにするのか等々。正直これは、設定していたらユーザーさんに優しい対応なのかなぐらいの認識です。 |
|  SSL |  通信経路暗号化  |  メールを読みたられないようにメールの内容を暗号化しておくと言うもの |

# 設定されているか確認したい時
何か設定するにあたってそもそも確認できないと『う~~~ん』ってなりますよね。
あと自分に送られてきているメールどこまでやっているのだろうとか気になりますよね。
それもみる方法があるのです。(Gメールにて)
以下手順です！

**まずは『通信暗号化』の確認方法**
①Gメールで確認したメールアドレスを開くのみです。

送り主の名前周辺に赤いアイコンなければ暗号化されているの認識です！

ただこれ[googleさん](https://support.google.com/mail/answer/6330403?hl=ja)では全部(緑アイコンとか)表示されている的な感じに書かれていますね、、私のは表示されていませんでしたが、なんでですかね？

ここでちゃんと見れるよ！とかあったら教えて欲しいです！
設定とかで表示されるようになるのでしょうかね？

|<img width="100px" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133940/88e2d7c8-e9c6-c9af-22e9-3f9edc6eab7f.png">
|:-:|


**次は『SPF、DKIM、DMARC』の確認方法**
①Gメールで確認したメールアドレスを開く。
②右上ら辺に縦3点みたいなのあるのでタップ。以下みたいなのです。
![スクリーンショット 2022-02-06 18.58.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133940/103c0828-b721-dfdb-1e6d-537a940701cf.png)
③『メッセージのソースを表示』をタップ。ちなみに設定されていれば以下のように『PASS』が表示されています。表示されていない場合設定されていないということになりなります。

```
SPF:	'PASS'（IP: ***.***.***.**）。
DKIM:	'PASS'（ドメイン: *********.jp）
DMARC:  'PASS'
```
:fish:上記以外はメール確認だけで簡単に確認すること出来なさそうですね。

# メールが送られるまでの確認
まず一旦上記の内容や、色々な用語(送信サーバーや受信サーバーやSMTPやPOP/IMTP等々)を考えないでください。一旦メールが送られるまでの確認したいと思います。
<font color="red">**図が素晴らしすぎるので図を見てもらえればテキストは読まなくてもいいかもです！**</font> :hatched_chick:
↑
(だからそうハードルを上げるな、、言ってもそんな図素晴らしくないぞ、、:confused:)

| ![スクリーンショット 2022-02-06 17.49.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133940/085d19d0-0336-f521-87e2-21e67d8a0004.png)
|:-:|

```
以下登場する私的用語です
・sachikoサービス…sachikoが運営するサービス
・sachiko契約サーバー…sachikoが契約したメールサーバー(今回だと送信サーバーになります)
・ユーザーA…今回メールが送られてくる立場の人
・ユーザーA契約サーバー…ユーザーAが契約したメールサーバー(今回だと受信サーバーになります)
```

①『sachikoサービス』は『sachiko契約サーバー』に『ユーザーA』にメール送る指示をする。
②『sachiko契約サーバー』は『ユーザーA契約サーバー』にメールを送る。
③『ユーザーA契約サーバー』は『ユーザーA』用にメールを保存しておく。
④『ユーザーA』は『ユーザーA契約サーバー』にメールがきていないか尋ねる。
⑤『ユーザーA契約サーバー』は『ユーザーA』にメールこれですって渡す(応答する)。

:relaxed:私は思った！受信サーバーって自発的じゃねえな。
:older_woman:少し成長した私は思った。端末ぶち壊されてたり他の人とか使うようになっていたりしたら今の受信サーバーの動き方問題ないのか。


<font color="red">上記で伝えたかったことは、あくまで自分が制御出来るサーバーは今回の場合だと『送信サーバー』の方のみですよ！ということです！他にも③④⑤らへんの流れも伝えたかったのはあったりなかったりします！</font>

ちなみに用語等々もう少しつけると以下のようになります！

|![スクリーンショット 2022-02-06 20.08.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133940/26994037-f057-fee6-0aaa-2f66356aecb3.png)
|:-:|


# 実際に関わってくる箇所
では最後におさらいとしてそれぞれについて図と一緒に簡単に説明して終了とさせて頂きます！
↑
:hatched_chick:(素晴らしい図って言うと思ったでしょう！あえて裏切りました！)
↑
:rage:(う、うっざ！！！！！、、、、、、うざすぎる、、、)

## SMTP-AUTH 
送信サーバーは送信されてくるid,passが正確でない場合処理を受け付けません。
ここでわかるように送信してくるIPアドレス等チェックしていないので、id,passが知られてしまったらあれまーと言うことになります。

|<img width="500px" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133940/f6618911-f719-c3fd-3c41-fc1860293265.png">
|:-:|

## SPF
送信サーバーはあらかじめ登録されているIPアドレスからしか処理を受け付けません。

|<img width="500px" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133940/1fff6bf0-fcb3-fdde-bf03-339fbdafb332.png">
|:-:|

## DKIM
メールに署名しておくことでメール改ざんや、メール送信者をちゃんと証明します！
(署名で使われているドメインが自分が信用しているドメインだったら問題ないって受信者が確認できますね！)

|<img width="500px" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133940/059c85c0-77c5-c1c2-1aa2-de43b9265967.png">
|:-:|

## DMARC
SPFやDKIMで失敗したメールはこのように処理してくださいを提示しておく

|<img width="500px" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133940/1bf4e053-794b-388d-2931-0b91ea2a259c.png">
|:-:|


## SSL
通信経路の暗号化。
ですが、受信サーバーの方でそれら設定されていない場合、受信サーバーから受信者への暗号化等々は行われません。[ここ](https://qiita.com/sachiko-kame/items/cd9b5187cb767f6510c5#%E3%83%A1%E3%83%BC%E3%83%AB%E3%81%8C%E9%80%81%E3%82%89%E3%82%8C%E3%82%8B%E3%81%BE%E3%81%A7%E3%81%AE%E7%A2%BA%E8%AA%8D)を見てくれている方なら分かるかと思いますが、今回の場合の受信サーバーは自分が契約できるわけではないのです。送信相手が契約しているサーバー全て契約するなんて無理ですしね、、膨大ですからね、

|<img width="500px" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133940/4b5488d4-387a-4ab2-bc4f-48408ad25495.png">
|:-:|


# 最後に
これら設定は、あくまでメールサーバーで設定するもののようです。(サービス運営サーバーではない)

なのでメールサーバーを選択する際はこれらに対応しているか確認する必要がありそうですね！

これは今関係ないかもですが、『サービス運営サーバー』と『メールサーバー』を別々のサーバー運営しているサービスにしても問題ないのか？と思ったことあるのですが、これも問題なさそうです！

同じサーバーにすると割引とかあるかもですが、
それ以外は特に考えなくても問題ないの認識です。
サービス側で何かこういうサービスありますよ！とか言ってくれているならそのサービスみて決めるもいいかもしれませんが。



# 参考
https://www.nic.ad.jp/ja/basics/terms/dmarc.html
https://www.nic.ad.jp/ja/basics/terms/dkim.html
https://www.nic.ad.jp/ja/basics/terms/spf.html
https://e-words.jp/w/SMTP%E8%AA%8D%E8%A8%BC.html
https://sendgrid.kke.co.jp/blog/?p=10121
https://mail.yahoo.co.jp/antispam/dmarc.html
https://hrkworks.com/it/linux/server/mail07/