🦔

メール送信の仕組みをやさしく解説!〜SendGridやAmazon SESの前に知っておくべき基礎知識〜

に公開

はじめに

メール送信サービス(SendGrid や Amazon SES)を使うと、手軽に大量のメールを送れますが、その裏では複雑なメール配送の仕組みが動いています。

このメール送信の仕組みを理解しておくと、SendGrid や Amazon SES の導入やトラブル対応がグッと楽になります。

この記事では、メール送信に関わる登場人物(MUA, MTAなど)や、メールがどのように相手に届くのかを初心者にもわかりやすく解説します。


主な登場人物(コンポーネント)

  • MUA (Mail User Agent / メールユーザーエージェント):
    あなたがメールを作成したり読んだりするソフトウェアやサービスです。
    例: Outlook, Thunderbird, Apple Mail, Gmailのウェブインターフェース, スマートフォンのメールアプリなど。

  • MSA (Mail Submission Agent / メールサブミッションエージェント):
    MUAから送信されたメールを最初に受け付けるサーバー(あなたのメールプロバイダの送信サーバーなど)。

  • MTA (Mail Transfer Agent / メール転送エージェント):
    メールをインターネット経由で宛先の近くまで「バケツリレー」方式で転送する役割を担うサーバー。SMTPサーバーとも呼ばれます。

  • MDA (Mail Delivery Agent / メールデリバリーエージェント):
    宛先側のMTAからメールを受け取り、最終的に受信者のメールボックス(郵便受けのようなもの)にメールを配送する役割。

  • DNS (Domain Name System / ドメインネームシステム):
    インターネット上のドメイン名(例: example.com)に対応するIPアドレスなどを管理するシステム。メール送信においては、宛先ドメインのメールサーバー(MXレコード)を見つけるために不可欠です。

  • メールボックス (Mailbox):
    受信者のメールが保存されるサーバー上の領域。


メール送信の詳細なステップ

以下に、メールが送信されてから相手に届くまでの流れをステップごとに説明します。

ステップ1: メールの作成と送信指示 (MUA)

  1. あなた (送信者) がMUA(例: Gmailの画面)で宛先メールアドレス (recipient@example.com)、件名、本文などを入力し、メールを作成します。
  2. 「送信」ボタンを押すと、MUAはメール送信の処理を開始します。

ステップ2: MUAからあなたの送信サーバーへ (MUA → MSA)

  1. あなたのMUAは、設定されている送信メールサーバー(MSA)に接続します。この接続には通常 SMTP プロトコルが使われます。
    • 例えば、Gmailを使っていればGmailの送信サーバー、会社のメールなら会社の送信サーバーです。
  2. MSAは、あなたが正当なユーザーであることを確認するために 認証 (SMTP AUTH) を行います(例: IDとパスワード、OAuth2認証)。
  3. 認証が成功すると、MUAは作成したメールのデータ(ヘッダー情報や本文)をMSAに送信します。

ステップ3: 送信サーバー内での処理 (MSA → 送信側MTA)

  1. MSAは受け取ったメールをチェックし、送信キュー(一時的な待機場所)に入れます。
  2. 多くの場合、MSAと送信側の最初のMTAは同じ組織のメールシステム内にあり、ここでメールは本格的な配送プロセスに乗るために送信側MTAに引き渡されます。

ステップ4: 宛先メールサーバーの特定 (送信側MTA + DNS)

  1. 送信側MTAは、メールの宛先アドレス (recipient@example.com) のドメイン部分 (example.com) に注目します。
  2. 送信側MTAは DNSサーバー に問い合わせて、example.com ドメインのメール配送を担当するメールサーバー(MXレコード:Mail eXchanger record)の情報を取得します。
    • MXレコードには、通常、複数のメールサーバーのホスト名と、それらの優先順位が登録されています。

ステップ5: インターネット経由でのメール転送 (送信側MTA → 受信側MTA)

  1. 送信側MTAは、DNSから取得したMXレコード情報に基づき、最も優先度の高い 受信側MTA (宛先 example.com のメールサーバー) に SMTP で接続を試みます。
  2. 接続が確立されると、送信側MTAは受信側MTAにメールを送信します。
    • ここで重要: 受信側MTAは、受け取るメールが正当なものか、迷惑メールではないかなどをチェックします。
      • 送信元IPアドレスのチェック: ブラックリストに載っていないかなど。
      • SPF, DKIM, DMARCの検証: 送信元ドメインのなりすましでないかを確認。
      • アンチスパムフィルター: メールの内容やヘッダー情報からスパムスコアを計算。
      • アンチウイルススキャン: 添付ファイルなどにウイルスが含まれていないかを確認。
  3. これらのチェックの結果、問題があればメールは拒否されたり、迷惑メールフォルダに振り分けられたりします。問題がなければ、受信側MTAはメールを受け付けます。
  4. もし、優先度の高い受信側MTAに接続できない場合(サーバーダウン、ネットワーク障害など)、送信側MTAは一定時間後に再試行したり、MXレコードに記載されている次に優先度の高い受信側MTAへ接続を試みたりします。

ステップ6: 受信サーバー内での配送準備 (受信側MTA → MDA)

  1. 受信側MTAは、無事に受け取ったメールを、そのサーバー(または関連サーバー)上で動作している MDA (メールデリバリーエージェント) に渡します。

ステップ7: メールボックスへの格納 (MDA)

  1. MDAは、メールの宛先アドレスのユーザー部分 (recipient) を見て、該当する受信者の メールボックス にメールを格納します。

ステップ8: 受信者によるメールの確認 (MUA + 受信サーバー)

  1. 受信者 がMUA(例: Outlook)を起動したり、ウェブメールにアクセスしたりします。
  2. 受信者のMUAは、設定されている受信メールサーバー(POP3サーバーまたはIMAPサーバー)に接続します。この接続には POP3 または IMAP プロトコルが使われます。
  3. 認証後、MUAは受信サーバー上のメールボックスから新着メール(今回送信されたメールを含む)を取得し、受信者の画面に表示します。

まとめ

  • メールはMUA → MSA → MTA → MDA → Mailboxという流れで送受信されます。
  • それぞれの段階で認証・配送・ウイルスチェック・スパム判定などが行われています。
  • この流れを理解しておけば、SendGridやAmazon SESの設定やトラブル対応の理解がグッと深まります!
    ぜひ、この知識をもとに「届けたい人に、確実に届くメール配信」を目指してみてください。

Discussion