簡易メール転送プロトコル(SMTP)とは?

簡易メール転送プロトコル(SMTP)は、メール送信に関するネットワーキングの標準です。

学習目的

この記事を読み終えると、以下のことができるようになります。

  • 簡易メール転送プロトコル(SMTP)の仕組みを説明する
  • SMTPコマンド、サーバー、エンベロープを理解する
  • 拡張SMTP(ESMTP)を定義する

関連コンテンツ


さらに詳しく知りたいとお考えですか?

サインアップして、Cloudflareからセキュリティ関連の学習用記事をお受け取りください。

当社がお客様の個人データをどのように収集し処理するかについては、Cloudflareのプライバシーポリシーをご確認ください。

記事のリンクをコピーする

簡易メール転送プロトコル(SMTP)とは?

簡易メール転送プロトコル(SMTP)は、電子メール(メール)をネットワーク経由で伝送するための技術標準です。他のネットワーキングプロトコルと違い、SMTPを使えば、コンピューターとサーバーが基になるハードウェアやソフトウェアにかかわらずデータを交換できます。封筒の宛名書きに標準的な形式を用いることで郵便サービスが可能になるように、SMTPは送信者から受信者へメールが移動する方法を標準化し、メール配信の普及を可能にします。

SMTPはメール配信プロトコルであって、メール受信プロトコルとは異なります。郵便サービスでは郵便物を郵便受けに配達します。受取人は、その郵便受けから郵便物を取り出さなければなりません。同様に、SMTPはメールをメールプロバイダーのメールサーバーへ配信します。受信者がそのメールをメールサーバーから受け取って読むには、別のプロトコルが使われます。

SMTPの仕組み

ネットワーキングプロトコルはすべて、あらかじめ定義されたデータ交換プロセスに従っています。SMTPは、メールクライアントとメールサーバー間のデータ交換プロセスを定義しています。メールクライアントはユーザーがやりとりする相手です。ユーザーがアクセスしてメールを送信するコンピューターやWebアプリケーションがこれに当たります。メールサーバーはメールの送信、受信、転送のための専用コンピューターです。ユーザーがメールサーバーと直接やりとりすることはありません。

送信を開始する際のメールクライアントとメールサーバーのやりとりをまとめると、以下のようになります。

  • SMTP接続を開く: SMTPはトランスポート層の通信プロトコルとして伝送制御プロトコル(TCP)を使っていますので、最初のステップはクライアントとサーバーの間のTCP接続から始まります。次に、メールクライアントが、専用のHelloコマンド(HELOまたはEHLO、後段で説明)でメール送信プロセスを開始します。
  • メールデータを転送する: クライアントがサーバーへ、一連のコマンドと実際のメールの内容(宛先と件名を含むメールヘッダー、メール本文、および追加的な構成要素)を送ります。
  • メール転送エージェント(MTA): サーバーがメール転送エージェント(MTA)と呼ばれるプログラムを実行します。MTAは受信者のメールアドレスのドメインを確認し、送信者のものと異なる場合はドメインネームシステム(DNS)に受信者のIPアドレスを問い合わせます。これは、郵便局で郵便受取人の郵便番号を調べるのと同じです。
  • 接続を閉じる: データ伝送が完了すると、クライアントがサーバーに通知し、サーバーが接続を閉じます。この時点で、サーバーがさらなるメールデータを受け取ることは、クライアントが新たにSMTP接続を開かない限りありません。

通常、この最初のメールサーバーは実際のメールの最終的な宛先ではありません。サーバーは、クライアントからメールを受信した後、このSMTP接続のプロセスを別のメールサーバーと繰り返すのです。その二つ目のサーバーも同じ手順を踏み、メールは最終的に、受信者のメールプロバイダーが管理するメールサーバー上にある受信者の受信トレイに届きます。

このプロセスを、郵便物が差出人から受取人へ移動するプロセスと比較してみてください。郵便配達員は手紙を差出人から受取人へ直接配達するわけではなく、いったん郵便局へ持ち帰ります。手紙はその郵便局から別の町の郵便局へ、そこからまた別の郵便局へ、さらに別の郵便局へと送られ、最終的に受取人の手元へ届けられます。同様に、メールもSMTPを使ってサーバーからサーバーへと送られ、最終的に受信者の受信トレイへ届くのです。

SMTPエンベロープとは?

SMTP「エンベロープ」は、メールクライアントがメールサーバーへ送る、メールの送信元と宛先に関する一連の情報です。SMTPエンベロープはメールのヘッダーや本文とは異なり、メールの受信者には見えません。

SMTPコマンドとは?

SMTPコマンドはあらかじめ定義されたテキストベースの指示で、クライアントまたはサーバーに対し、何をすべきか、添付データをどう扱うべきかを伝えます。サーバーにデータを正しく受け取らせるためにクライアントが押せるボタンと考えてください。

  • HELO/EHLO:これらのコマンドは、Helloと言ってクライアントとサーバーの間のSMTP接続を開始します。"HELO"はこのコマンドの基本形で、"EHLO" は特種なタイプのSMTPです。
  • MAIL FROM:これは、サーバーにメールの送信者が誰であるかを伝えます。たとえば、Aliceが友人のBobにメールしようとしている場合、クライアントは"MAIL FROM:<alice@example.com>"というコマンドを送るという具合です。
  • RCPT TO:このコマンドはメール受信者をリスト化するためのものです。複数の受信者がいる場合、クライアントはこのコマンドを複数回送ることができます。上記の例の場合、Aliceのメールクライアントは"RCPT TO:<bob@example.com>"というコマンドを送ることになります。
  • DATA:これはメール内容の前にきます。以下のようになります。

DATA
Date: Mon, 4 April 2022
From: Alice alice@example.com
Subject: Eggs benedict casserole
To: Bob bob@example.com

Hi Bob,
I will bring the eggs benedict casserole recipe on Friday.
-Alice
.
  • RSET:このコマンドは接続をリセットするもので、SMTP接続を閉じることなく、それまでに転送された情報をすべて削除します。RSETは、クライアントが誤った情報を送った時に用います。
  • QUIT:接続を終えるコマンドです。

SMTPサーバーとは?

SMTPサーバーは、SMTPプロトコルを使ってメールの送受信を行えるメールサーバーをいいます。メールクライアントはメールプロバイダーのSMTPサーバーと直接接続して、メールの送信を開始します。SMTPサーバーでは、いくつかの異なるソフトウェアプログラムが実行されます。

  • メール送信エージェント(MSA):MSAはメールクライアントからメールを受け取ります。
  • メール転送エージェント(MTA):MTAは配信チェーン上の次のサーバーへメールを転送します。上述した通り、必要に応じてDNSへクエリーを送り、受信者のドメインのDNSメール交換(MX)レコードを調べる場合があります。
  • メール配信エージェント(MDA):MDAはMTAからメールを受け取り、受信者の受信トレイに保存します。

SMTPが使うポートは?

ネットワーキングにおけるポートは、ネットワークデータが受け取られる仮想のポイントをいいます。郵便の宛先でいえばアパートの部屋番号だと考えてください。ポートは、コンピューターがネットワーキングデータを適切なアプリケーションへ振り分けるのに役立ちます。ネットワークセキュリティ対策(ファイアウォールなど)は、悪意のあるデータの送受信を防止するために不要なポートをブロックすることができます。

従来、SMTPは25番ポートだけを使っていました。現在も25番ポートは使われていますが、465番、587番、2525番も使えます

  • 25番ポートはSMTPサーバー間の接続に最もよく使われます。このポートは現在、スパマーが悪用して大量のスパムを送ろうするため、エンドユーザーネットワークのファイアウォールによってブロックされることが多くなっています。
  • 465番ポートは、かつてはセキュアソケットレイヤー(SSL)暗号化を組み合わせたSMTP専用でした。SSLがトランスポートレイヤーセキュリティ(TLS)に取って代わられたため、最新のメールシステムではこのポートは使われていません。465番が登場するのはレガシー(陳腐化した)システムだけです。
  • 587番ポートは、現在のメール送信用デフォルトポートです。このポート経由のSMTP通信は、TLS暗号化を使っています。
  • 2525番ポートは正式なSMTPポートではありませんが、メールサービスの中には、上記のポートがブロックされた場合にこのポートを使ったSMTP配信を行うものもあります。

SMTPとIMAP、POPの比較

インターネットメッセージアクセスプロトコル(IMAP)とポストオフィスプロトコル(POP)は、メールを最終的な宛先へ配信する際に使われます。メールクライアントは、チェーン上の最後のメールサーバーからメールを取得してメールをユーザーに表示しなければなりません。この際、クライアントはSMTPではなくIMAPまたはPOPを使います。

SMTPとIMAPまたはPOPの違いを理解するには、木板とロープの違いを考えてみてください。長い木板を使えば何かを押し出すことができますが、引き寄せることはできません。一方、ロープは引き寄せはできますが、押し出しはできません。同様に、SMTPはメールをメールサーバーへ「プッシュ」し、ユーザーのアプリケーションまでの残りの道のりはIMAPとPOPが「プル」します。

拡張SMTP(ESMTP)とは?

拡張SMTP(ESMTP)はSMTPの1バージョンで、本来の機能を拡張して、メール添付ファイルの送付やTLSの使用、その他の機能を有効にするものです。ほぼすべてのメールクライアントやメールサービスが、基本的なSMTPではなくESMTPを使っています。

ESMTPには、接続開始時にESMTPの使用を可能にする"EHLO"("extended hello")メッセージなど、追加的なコマンドがいくつかあります。

Cloudflare Email Routingとは?

Cloudflare Email Routingは、メールアドレスの作成・管理がシンプルになるように設計されており、追加したメールボックスを別途監視しておく必要がありません。Email Routingを使えば、ユーザーは、プライマリメールアドレスを共有したくない場合に使うカスタムメールアドレスをいくつでも作成できます。そうすれば、メールは好みのメール受信トレイにルーティングされ、プライマリメールアドレスが露出することは決してありません。

Cloudflare Email Routingは、メールのヘッダーと本文は変えずに、SMTPエンベロープを変更することによって機能します。詳しくはブログ記事をお読みください