PR

SMTPとは?IT初心者向けにわかりやすく3分で解説

IT-Skills

SMTPとはSimple Mail Transfer Protocolの略で、メールを送信するために利用する通信プロトコルです。

このページでは、SMTP (Simple Mail Transfer Protocol) とは何か?SMTPはどのような仕組みで動いている?どんや役割を担っている?という疑問に対して1からわかりやすく解説します。

そもそも通信プロトコルって何?という方でもしっかり理解できるよう、必要となる周辺知識も一緒に理解できるように丁寧に説明します。

このページで学べる内容
  • SMTPとは?
    • 通信プロトコルとは?
    • メール送受信の仕組み
    • メーラー/メールサーバとは?
  • SMTPコマンド
  • SMTPサーバとは?
  • 【補足】初期のSMTP小話

ネットワークエンジニアを目指す方であれば知らないと恥ずかしい超・基本知識。またネットワークエンジニアでなくてもITに関する仕事をしている方であれば知っておいて損はない知識です。是非最後までご覧ください。

読者特典 ゼロから学ぶネットワーク入門 

スポンサーリンク

SMTPとは?わかりやすく

SMTPSimple Mail Transfer Protocol)は、インターネット上で電子メールを転送するためのプロトコルです。このプロトコルは、「①メールサーバ間のメール転送」や「②メールクライアントからメールサーバへのメール送信」に使用されます。

参考 サーバーとは?

ちょっとややこしい説明となりましたが、とりあえず、シンプルなメール「送信」プロトコルなんだな!と覚えて置ければOKです。

我々は毎日メールを送受信していますが、その裏で必ず動作しているのがこのSMTP。SMTPというプロトコルがなければメールを送受信することはできませんので、ほぼ毎日仕事で利用しているプロトコルの1つだと言えます。

通信プロトコルとは?

プロトコルとはコンピュータとコンピュータが通信を行う際に決められた約束事・決まりのこと。製造されたメーカーも国も違うコンピュータ同士が、お互いに適切に通信を行うためには「守るべき共通のルール」が必要。

その「守るべき共通のルール」として定義されたのが通信プロトコルです。

例えば、普段私たちがお互い話をすることができているのも「利用する言語」があらかじめプロトコルとして決まっているからとも言えます。

smtp プロトコル
参考:プロトコルとは?

では、SMTPは具体的にどのようにメール送受信を行っているのでしょうか?

ここから具体的にSMTPが何者か?をイメージできるように、SMTPを利用したメール送信の仕組みを1からわかりやすく図解していきます。

SMTPの仕組み

SMTP (Simple Mail Transfer Protocol) を利用したメール送信の流れは以下の通り。

1つ1つ順を追って解説します。ザックリ言うと、以下の4ステップでメールの送受信が行われます。

SMTPとは
図1:SMTPとは?
メール送受信の仕組み
  • ステップ①:作成したメールをメールサーバへ送信
  • ステップ②:送信元のメールサーバから受信側のメールサーバへメール転送
  • ステップ③:メーラーがメールサーバをチェック
  • ステップ④:受信側のメールサーバから受信側の端末にメール送信

SMTPが利用されるのはステップ①と②です。

つまり、相手のメールサーバへメールを届けるところまでが役割で、その後はSMTPと対をなすプロトコルであるPOPが動作して受信者にメールを配信します。

郵便配達で例えると、「ステップ①:自宅から最寄りへの郵便局」「ステップ②:最寄りの郵便局から配達先の最寄りの郵便局」までの配送を行うのがSMTPの役割です。

SMTPとは

我々が普段送っているメールは相手のコンピュータに直接届けられているわけではなく、メールサーバを経由してメールが届けられているというのが1つのポイント。その際に、メールサーバへのメール転送の役割を担っているのがSMTPであると理解しましょう!

我々が普段利用しているOutlookやGmailなどはメール文面の作成やメール管理だけではなく、SMTPへ諸々の命令を出す役割を担っています。

OutlookやGmailなどのメール作成ソフトをメーラーと呼びます。

なぜ、わざわざメールサーバを間に設置する必要があるの?という疑問については、本ページの最後の章で解説します。まずここでは、SMTP基本知識の理解に努めましょう。

SMTPをさらに詳しく

ネットワークエンジニアを目指す方向けにSMTPの仕組みを技術的な観点から詳しく解説します。特に、具体的にどのような通信を行うことで、それを実現しているのか?

以下がその答え(メーラーとメールサーバ間でやり取りされる通信の順序)を図解したものになります。

SMTPとは
図2:SMTPを利用したメール送信の仕組み
SMTPメール転送の仕組み(詳細)
  • ステップ①:TCPコネクションの確立ポート番号25
  • ステップ②:HELOコマンド(SMTP通信の開始)
  • ステップ③:MAILコマンド(送信元アドレスの通知)
  • ステップ④:RCPTコマンド(宛先アドレスの通知)
  • ステップ⑤:DATAコマンド(メール本文の送信開始通知)
  • ステップ⑥:メール本文転送
  • ステップ⑦:QUITコマンド(SMTP通信の終了)

SMTPでは始めにTCP25番ポートを利用してTCPコネクション(SMTPセッション)を確立します。

各種試験では、「TCPポート番号25 = SMTP」 が出題されるため基本知識として押さえておきましょう。

TCPによるコネクションの確立が完了した後は、SMTPコマンドという特別なコマンドを発行しながら、メーラーとメールサーバがデータ転送に関する制御&メール転送(送信元は?送信先は?件名は何?本文の内容は・・・?を定義)を行う仕組み。

SMTPコマンドを送ると、サーバ側からはSMTP応答コードが返答され、対話型の処理を行うのがSMTPの特徴の1つです。

分かりやすく言えば、例えばあなたがGmailでメール送信ボタンを押した裏側で「SMTPコマンド」が発行されているということ。そのコマンドに応じてメールサーバがメールを転送したり、送信者に異常を知らせたりするということです。

サンプル SMTPコマンド・SMTP応答コマンドの例

SMTPコマンドとそれに対するSMTPサーバの応答を使って、メールが送信されるプロセスは、実際の通信セッションで次のように進行します。ここでは、クライアント(メールを送る側)とサーバ(メールを受け取る側)の間のテキストベースのコマンドと応答のやり取りの一例を示します。

クライアント: EHLO mymailclient.com
サーバ: 250-smtp.example.com at your service
サーバ: 250-SIZE 52428800
サーバ: 250-8BITMIME
サーバ: 250-STARTTLS
サーバ: 250-ENHANCEDSTATUSCODES
サーバ: 250-PIPELINING
サーバ: 250-CHUNKING
サーバ: 250 SMTPUTF8

クライアント: STARTTLS
サーバ: 220 2.0.0 Ready to start TLS

(セキュリティのために通信がTLSで暗号化されます)

クライアント: EHLO mymailclient.com
サーバ: 250-smtp.example.com at your service
... (他の応答は省略) ...

クライアント: MAIL FROM:<sender@example.com>
サーバ: 250 2.1.0 Sender <sender@example.com> OK

クライアント: RCPT TO:<recipient@example.net>
サーバ: 250 2.1.5 Recipient <recipient@example.net> OK

クライアント: DATA
サーバ: 354 Start mail input; end with <CRLF>.<CRLF>

クライアント: From: sender@example.com
クライアント: To: recipient@example.net
クライアント: Subject: Test Message
クライアント: 
クライアント: This is a test message.
クライアント: .
サーバ: 250 2.0.0 OK: queued as 12345

クライアント: QUIT
サーバ: 221 2.0.0 Bye

次の章で細かく以下の1つ1つのコマンドをご説明しますので、ここでは何となくのイメージを持っていただければOKです。

TCP

TCP (Transmission Control Protocol) とは、OSI参照モデル第4層:トランスポート層で動作する信頼性の高い通信を担保するためのプロトコルです。

別名伝送制御プロトコルとも呼ばれ、その名の通り「伝送/通信」を「制御」することが目的のプロトコルです。

TCPについて合わせて学習したい方は以下の記事をご覧ください。

図ではメーラーとメールサーバ間の通信を図時していますが、これはメールサーバとメールサーバ間の通信にも当てはまります。

大事なのはメール送受信の仕組みの全体像を把握することと、メールサーバ間における通信の仕組み・順序を把握することです。

SMTPコマンド

SMTPコマンドは上記で説明した通り、送るデータの種類や通信の開始通知を行うなど様々な役割があります。

以下に代表的なSMTPコマンドを記載します。ネットワークスペシャリスト試験ではSMTPコマンドに関する出題もなされるため、一通り頭に入れておきましょう。

コマンド説明
HELO / EHLOメールサーバに対する挨拶/通信開始の合図
MAIL送信元メールアドレス "FROM:<送信元メールアドレス>" をメールサーバに通知
RCPT宛先メールアドレス "TO:<宛先メールアドレス>" をメールサーバに通知
DATAメール本文をメールサーバに転送する
VRFYアドレスを参照する
QUITメールサーバとの接続を終了する
RSETセッションの状態をリセットする(メールサーバとの接続を中断・中止する)
HELPSMTPコマンドのヘルプを要求する
クライアント: EHLO mymailclient.com
サーバ: 250-smtp.example.com at your service
サーバ: 250-SIZE 52428800
サーバ: 250-8BITMIME
サーバ: 250-STARTTLS
サーバ: 250-ENHANCEDSTATUSCODES
サーバ: 250-PIPELINING
サーバ: 250-CHUNKING
サーバ: 250 SMTPUTF8

クライアント: STARTTLS
サーバ: 220 2.0.0 Ready to start TLS

(セキュリティのために通信がTLSで暗号化されます)

クライアント: EHLO mymailclient.com
サーバ: 250-smtp.example.com at your service
... (他の応答は省略) ...

クライアント: MAIL FROM:<sender@example.com>
サーバ: 250 2.1.0 Sender <sender@example.com> OK

クライアント: RCPT TO:<recipient@example.net>
サーバ: 250 2.1.5 Recipient <recipient@example.net> OK

クライアント: DATA
サーバ: 354 Start mail input; end with <CRLF>.<CRLF>

クライアント: From: sender@example.com
クライアント: To: recipient@example.net
クライアント: Subject: Test Message
クライアント: 
クライアント: This is a test message.
クライアント: .
サーバ: 250 2.0.0 OK: queued as 12345

クライアント: QUIT
サーバ: 221 2.0.0 Bye

上記のSMTPコマンドを定められた順序でメールサーバに発行することで一連のメール送信手順が完了。後続ではPOPによって宛先メールサーバ→受信者へのメール転送がなされるのがメール送受信の仕組みです。

MAILコマンドやRCPTコマンドなどはネットワークスペシャリスト試験等でもよく出題される知識ですので頭に入れておきましょう!

SMTP応答コード

SMTPコマンドに対する応答がSMTP応答コードです。

ざっくりいうと、200番台が処理の成功を表し、400番台が一時的なエラー(サービスダウンなど)を、500番台が永続的なエラー(コマンドの不正など)を表します。

SMTP応答コード意味備考
211システムの状態やシステムヘルプの応答HELPコマンドの応答
214ヘルプメッセージ
(コマンドの使用方法ついての情報)
HELPコマンドの応答
220準備完了接続後の応答
221SMTP通信の終了QUITコマンドの応答
250処理の成功SMTPコマンド全般に対する応答
251受信者が存在しないため転送処理を行うRCPT/VRFYコマンドの応答
354メール本文の入力を開始するDATAコマンドの応答
421サービス利用不可SMTPコマンド全般に対する応答
450メールボックス利用不可RCPT/DATAコマンドの応答
451処理中にエラーが発生MAIL/RCPT/DATAコマンドの応答
452システム容量が不足しているMAIL/RCPT/DATAコマンドの応答
500文法エラー/コマンドが不正SMTPコマンド全般に対する応答
501文法エラー(パラメータが不正)SMTPコマンド全般に対する応答
502コマンド未実装EHLO/VRFY/EXPN/HELPに対する応答
503コマンドの順序が不正MAIL/RCPT/DATAコマンドに対する応答
504コマンドパラメータ未実装EHLO/HELO/VRFY/EXPN/HELPコマンド
に対する応答
550メールボックス利用不可SMTPコマンド全般に対する応答
クライアント: EHLO mymailclient.com
サーバ: 250-smtp.example.com at your service
サーバ: 250-SIZE 52428800
サーバ: 250-8BITMIME
サーバ: 250-STARTTLS
サーバ: 250-ENHANCEDSTATUSCODES
サーバ: 250-PIPELINING
サーバ: 250-CHUNKING
サーバ: 250 SMTPUTF8

クライアント: STARTTLS
サーバ: 220 2.0.0 Ready to start TLS

(セキュリティのために通信がTLSで暗号化されます)

クライアント: EHLO mymailclient.com
サーバ: 250-smtp.example.com at your service
... (他の応答は省略) ...

クライアント: MAIL FROM:<sender@example.com>
サーバ: 250 2.1.0 Sender <sender@example.com> OK

クライアント: RCPT TO:<recipient@example.net>
サーバ: 250 2.1.5 Recipient <recipient@example.net> OK

クライアント: DATA
サーバ: 354 Start mail input; end with <CRLF>.<CRLF>

クライアント: From: sender@example.com
クライアント: To: recipient@example.net
クライアント: Subject: Test Message
クライアント: 
クライアント: This is a test message.
クライアント: .
サーバ: 250 2.0.0 OK: queued as 12345

クライアント: QUIT
サーバ: 221 2.0.0 Bye

ポイント サンプルの説明

  • EHLO コマンドはセッションを開始し、クライアントがサーバに自己紹介。
  • サーバは 250 というステータスコードで応答し、使用できる機能をリストアップ。
  • STARTTLS コマンドはセッションを暗号化することを要求。
  • 再度 EHLO を送信して暗号化されたセッションでの通信を開始。
  • MAIL FROM で送信者を、RCPT TO で受信者を指定。
  • DATA コマンドは、メールのヘッダと本文を送信する準備ができたことをサーバに伝える。
  • ヘッダと本文を入力し、ピリオドだけの行でメール本文の終了をサーバに伝える。
  • サーバが 250 ステータスコードで応答し、メールがキューに入ったことを確認。
  • QUIT コマンドでセッションを終了。
ポイント SMTPとは?
  • SMTPとはSimple Mail Transfer Protocolの略でメールを送信するために利用する通信プロトコルです
  • SMTPはメーラー→メールサーバ / 送信元メールサーバ→宛先メールサーバへのデータ転送を行う
  • メーラー to メールサーバ /メールサーバ同士のやり取りはSMTPコマンドを介して行われる

SMTPサーバとは?

ここまで何度か登場している「メールサーバ」について少し深堀して解説します。

SMTPとは
再掲:SMTPとは?

これまでは単にメールサーバという言葉を利用してきましたが、特にSMTPを利用してメールを送信することに特化したサーバ(上記の図でいう「送信側メールサーバ」)をSMTPサーバと呼びます。

SMTPサーバは、メーラー(Microsoft OutlookやGmailなど)から送信されたメールを受け取り、それを適切な宛先のメールサーバへ転送する役割に特化。メールの保管などを行う機能は持ちません。

SMTPサーバ、メールサーバの言葉の違いをここで整理しておきましょう。

SMTPサーバ:送信専用の郵便局

SMTPサーバは、あなたが書いた手紙(メール)を郵便局に持っていくシーンを思い浮かべるとわかりやすくなります。

あなたがメールを送る時、SMTPサーバはそのメールを受け取り、インターネットを通じて宛先の郵便局(宛先のメールサーバ)に届けます。これは、郵便局が他の郵便局に手紙を送るのと同じです。SMTPサーバは送るためのものなので、メールを受け取る機能はありません。

メールサーバ:郵便局の総合カウンター

メールサーバは郵便物の送受信をすべて管理する総合カウンターです。

SMTPサーバの機能を含むので、メールを送ることができますが、POPやIMAPといった他の「郵便受け」の機能を持っており、メールを受け取って保管することもできます。あなたがメールを受け取る時、メールサーバからあなたの「郵便受け」(メールクライアント)にメールが届けられます。なので、メールサーバはメールの送受信の両方を扱うことができる万能な郵便局のようなものです。

要するに、SMTPサーバはメールを送るための特化した郵便局であり、メールサーバは送るものと受け取るものの両方を管理する総合郵便局と考えることができます。

SMTPサーバの主な機能と役割

SMTPサーバの主な機能と特徴は以下の通り。

  1. メールの中継とルーティング
    • 送信されたメールを受け取り、宛先アドレスに基づいて適切なサーバに転送します。
  2. 認証とセキュリティ
    • スパムメールや不正アクセスを防ぐために、ユーザー認証やTLS(Transport Layer Security)による暗号化通信を提供します。
  3. 配信管理
    • メールが正しく配信できなかった場合に、送信者に通知を行う機能を持っています。
  4. キュー管理
    • 一時的にメールを保存し、配信の最適なタイミングで送信するためのキューシステムを持っています。

企業やISP(インターネットサービスプロバイダ)は独自のSMTPサーバを持つことが多く、メールサービスの提供者(例えば、GoogleのGmailやMicrosoftのOutlook.com)も独自のSMTPサーバを運用しています。SMTPサーバは、メール送信の基盤となる重要なインフラストラクチャの一部です。

補足:SMTPの歴史(初期の電子メール転送)

最後にSMTPに関する補足―。初期の電子メール配送について解説しておきます。

現在の電子メールは上記で解説した通り、送信者と受信者の間にメールサーバ(SMTPサーバ)を設置しスムーズにメール転送を行う仕組みを採用しています。

SMTPとは
現在のメール送受信の仕組み

実はこの方式が採用される前は、以下のようにSMTPのみを利用して(POPを利用せずに)コンピュータ to コンピュータで直接SMTPを利用してメール転送を行っていたという歴史があります。

SMTPとは

初期の電子メールではメールサーバの概念は存在せず、相手のコンピュータと直接TCPコネクションを確立し、そのうえでSMTPを用いてメール送信をする仕組みが用いられます。

間にメールサーバが存在する必要がなく、非常にシンプルな方式でメール転送を行っていたのですが、これには「受信者のコンピュータも常に電源ONでスタンバイしている必要がある」という大きなデメリットが存在。

相手の仕事が終わりPCの電源がオフになっているときには、メールを送信することができません。

そこで、常時電源ONの状態であるメールサーバを設置し、メールは必ずメールサーバを経由して相手に届けられる仕組みが考えられました。また、その際メールサーバに届けられたメールを自分のパソコンに取り込むためのプロトコル・仕組みも必要となるので、このときにPOPというプロトコルも登場するのです。

参考 POP / IMAP

なぜ、メールサーバなんて必要なの?なぜSMTPとPOPの2つが必要なの?という疑問は、上記SMTPの歴史を踏まえるとその答えがよく分かるかと思います。

SMTPの仕組みだけを頭に入れるのではなく、過去の歴史までさかのぼって学習することでSMTPやメール送受信の仕組みをより本質的に理解することができるようになります。

ネットワーク学習の決定版(ネットワークエンジニアを目指すなら必見!)

blank
インターネットのプロトコルTCP/IP入門書の決定版!

↑ページ数が多く誰でも手軽に読める内容ではありませんが、ネットワークエンジニアであれば、ほぼ全員が一度は読んだことがある超・有料書籍。是非一度読破しておきたい1冊のご紹介です。

読者特典> 0から学ぶネットワーク入門

タイトルとURLをコピーしました