シーケンス図で理解する「メールセキュリティ」【試験対策】

## はじめに

◆この記事は何？
メールの仕組みとメールセキュリティに関する技術をシーケンス図を用いて説明します。

◆対象
メールセキュリティを学びたい人、試験のために覚えたい人

◆この記事のねらい
シーケンス図を用いることで、メールセキュリティの理解が深まり、覚えやすくなります。
この記事が、より効率良く勉強できるような一助になれば幸いです。

前半ではメールの仕組みについて説明し、後半でメールセキュリティについて説明します。

## メールの仕組み
まずはメールの仕組みについて説明します。

メール送信の流れです。

```mermaid
sequenceDiagram
    participant MUA(Mail User Agent)
    participant MSA(Message Submission Agent)
    participant MTA(Message Transfer Agent)
    participant メールサーバ
    Note over MUA(Mail User Agent):メール作成
    MUA(Mail User Agent) ->> MSA(Message Submission Agent):メールを送信
    Note over MSA(Message Submission Agent):認証
    MSA(Message Submission Agent) ->> MTA(Message Transfer Agent):メールを中継
    MTA(Message Transfer Agent) ->> メールサーバ:メールを転送
    
```

メール受信の流れです。

```mermaid
sequenceDiagram
    participant MUA(Mail User Agent)
    participant MRA(Message Retrieval Agent)
    participant メールボックス
    participant MDA(Message Delivery Agent)
    participant MTA(Message Transfer Agent)
    participant メールサーバ
    Note over メールサーバ:受信
    メールサーバ ->> MTA(Message Transfer Agent):メールを転送
    MTA(Message Transfer Agent) ->> MDA(Message Delivery Agent):転送
    MDA(Message Delivery Agent) ->> メールボックス: メールを格納
    メールボックス ->> MRA(Message Retrieval Agent):メールを取り出す
    MRA(Message Retrieval Agent) ->> MUA(Mail User Agent):メールを届ける
```

◆MUA(Mail User Agent)
電子メールクライアントのこと。メールソフトやメーラーとも呼ばれる。

◆MSA(Message Submission Agent)
送信用メールサーバーのこと。

◆MTA(Message Transfer Agent)
メッセージ中継サーバのこと。

◆MDA(Message Delivery Agent)
メッセージの仕分けを行うソフトウェアのこと。

◆MRA(Message Retrieval Agent)
メッセージ受信用サーバのこと。
MRAには、POP(Post Office Protocol)とIMAP(Internet Message Access Protocol)があります。


参考

https://titechcomp.github.io/y23-il1j/32-delivery.html#:~:text=MSA%20(Message%20Submission%20Agent)%E3%81%8C,%E9%83%B5%E4%BE%BF%E3%83%9D%E3%82%B9%E3%83%88%E3%81%AB%E3%81%82%E3%81%9F%E3%82%8B%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E3%81%A7%E3%81%99%E3%80%82

## POP(Post Office Protocol)

POPは、メールボックスからメールをダウンロードするためのプロトコルです。
メールはダウンロードされて、削除されることが多いです。

## IMAP(Internet Message Access Protocol)

IMAPは、メールボックスからメールをダウンロードせずにメールサーバ側でメール管理を行うためのプロトコルです。
ダウンロードせずにメールを参照します。

## SMTP(Simple Mail Transfer Protocol)

SMTPはメールを送信するためのプロトコルです。

通常、ポート25を利用しますが、OP25B等のセキュリティ対策により、代わりにポート587（SMTP-AUTHを使用）が利用されることが一般的です。

## メールヘッダの構造

- メール
    - メールヘッダ
    - メールボディ
- メールヘッダの構造
    - Return-Path：エラー発生時に送り返すアドレス
    - Received：経由してきたメールサーバを表す情報
    - From：メール送信者のメールアドレス
    - To：メール宛先のメールアドレス
    - Subject：件名


## OP25B(Outbound Port 25 Blocking)

◆目的
迷惑メール対策。
迷惑メールを送りにくい環境をつくります。

◆OP25Bとは
自分のネットワークから外部のネットワークへのポート番号25(SMTP)の通信を遮断することです。

◆デメリット
外部のメールサーバーを使えなくなるのがデメリットです。

◆対策
SMTP-AUTHを使って、587番ポート（サブミッションポート）に接続します。

◆参考
IP25Bは、Inbound Port 25 Blockingで、受信者側の迷惑メール対策です。

## SPF(Sender Policy Framework)

◆目的
メールの送信元ドメインを認証するため

◆SPFとは
メールアドレスのIPアドレスを利用する送信元ドメイン認証技術です。

```mermaid
sequenceDiagram
    box 送信元ドメイン
    participant 送信側メールサーバ
    participant DNSサーバ
    
    end
    box 受信ドメイン
    participant 受信側メールサーバ
    end
    autonumber
    note over 受信側メールサーバ,DNSサーバ :IPアドレスをSPFレコードとして公開
    送信側メールサーバ ->> 受信側メールサーバ:メール
    受信側メールサーバ ->> DNSサーバ:SPF問い合わせ
    DNSサーバ -->> 受信側メールサーバ:SPF応答
    note right of 受信側メールサーバ :IPアドレスを比較して正しいドメイン、正しいメールと判断
    
```

◆SPFレコードの書き方
例：v=spf1 +ip4:x.x.x.x -all

v=spf1
→SPFのバージョン

+の記号
→認証された情報。省略可能。

ip4
→利用するプロトコル

:
→利用するメールサーバーのIPアドレス。

-all
→指定したアドレス以外は不正である


## DKIM(DomainKeys Identified Mail)

◆目的
メールの送信元を認証するため

◆DKIM(DomainKeys Identified Mail)とは

デジタル署名によって認証する送信元ドメイン認証技術です。

```mermaid
sequenceDiagram
    box 送信元ドメイン
    participant 送信側メールサーバ
    participant DNSサーバ
    
    end
    box 受信ドメイン
    participant 受信側メールサーバ
    end
    autonumber
    note over 受信側メールサーバ,DNSサーバ :公開鍵
    送信側メールサーバ ->> 受信側メールサーバ:デジタル署名付きメール
    受信側メールサーバ ->> DNSサーバ:DKIM問い合わせ
    DNSサーバ -->> 受信側メールサーバ:DKIM応答
    note right of 受信側メールサーバ :デジタル署名によって正しいメールと判断
    
```

SPFと比較すると、デジタル署名を使うため信頼度が高いです。
一方で、PKIを整備する必要があるため導入ハードルは高くなります。
また、サーバーの負荷も高くなります。

◆DKIMレコード
- DKIMレコードの構成
    - 名称
        - [セレクタ名].domainkey.[ドメイン名]
    - 種類
        - TXT
    - 本文
        - v=DKIM1;p=[公開鍵の情報]
    - TTL(Time to Live)

TTLによって有効期間が定義されます。

## DMARC

◆目的
送信元ドメイン認証が失敗したとき、メールをどう扱うかのポリシーを送信側ドメインが公開するため。

◆DMARCとは
「ディーマーク」と言います。「Domain-based Message Authentication, Reporting, and Conformance」の略です。

送信元ドメイン認証技術です。
送信元ドメイン認証が失敗したとき、メールをどう扱うか、**送信側ドメイン**がポリシーをDNSサーバーを通じて公開する技術です。

```mermaid
sequenceDiagram
    box 送信元ドメイン
    participant 送信側メールサーバ
    participant DNSサーバ
    
    end
    box 受信ドメイン
    participant 受信側メールサーバ
    participant クライアント
    end
    autonumber
    送信側メールサーバ ->> 受信側メールサーバ:メール
    note over 受信側メールサーバ:SPF/DKIM認証
    alt OK
        受信側メールサーバ ->> クライアント:メール
    else NG
        受信側メールサーバ ->> DNSサーバ:DMARC問い合わせ
        DNSサーバ -->> 受信側メールサーバ:DMARC応答      
    end

    alt None
        受信側メールサーバ ->> クライアント:メール
    else quarantine
        受信側メールサーバ ->> クライアント:メール
        Note over クライアント:迷惑メール
    else reject
        Note over 受信側メールサーバ:拒否
    end
```


◆DMARCレコードの例
v=DMARC1;p=quarantine;rua=[メールアドレス];

v:バージョン番号
p:メール受信者に要望する認証失敗時の動作
rua:集約レポートの送り先

pパラメータのポリシー
| 値 | 説明 |
|:-:|:-:|
|  none |  何もしない |
| quarantine | 認証に失敗した場合、迷惑メールとして扱う  |
| reject |  認証に失敗した場合、メールを拒否する |

「quarantine」には「隔離」という意味があります。

## おわりに

この記事では、メールセキュリティについて、シーケンス図を用いて説明しました。
参考になれば幸いです。

## 参考

[「ゼロからスタート! 教育系YouTuberまさるの情報処理安全確保支援士1冊目の教科書」](https://amzn.asia/d/dSYLc7n)

[2024　情報処理安全確保支援士「専門知識＋午後問題」の重点対策](https://amzn.asia/d/0vzHwZR)