PR

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

IT-Skills

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

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

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

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

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

スポンサーリンク

SMTPとは?わかりやすく

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

OSI参照モデルで言うと第7層:アプリケーション層で動作するプロトコルです。

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

通信プロトコルとは?

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

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

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

通信プロトコルについて更に詳しく知りたい方は以下の記事をご覧ください。

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

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

SMTPの仕組み

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

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

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

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

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

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

SMTPとは

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

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

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

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

SMTPをさらに詳しく

ネットワークエンジニアを目指す方向けにSMTPの仕組みを技術的な観点から詳しく解説します。

以下は、メーラーとメールサーバ間でやり取りされる通信の順序をわかりやすく図解したものになります。

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

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

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

TCPによるコネクションの確立が完了した後は、SMTPコマンドという特別なコマンドを発行しながら、メーラーとメールサーバがデータ転送に関する制御&メール転送を行う仕組みです。

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

TCP

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

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

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

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

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

SMTPコマンド

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

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

コマンド説明
HELO / EHLOメールサーバに対する挨拶/通信開始の合図
MAIL送信元メールアドレス "FROM:<送信元メールアドレス>" をメールサーバに通知
RCPT宛先メールアドレス "TO:<宛先メールアドレス>" をメールサーバに通知
DATAメール本文をメールサーバに転送する
VRFYアドレスを参照する
QUITメールサーバとの接続を終了する
RSETセッションの状態をリセットする(メールサーバとの接続を中断・中止する)
HELPSMTPコマンドのヘルプを要求する

上記の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コマンド全般に対する応答
SMTPのまとめ
  • SMTPとはSimple Mail Transfer Protocolの略でメールを送信するために利用する通信プロトコルです
  • SMTPはメーラー→メールサーバ / 送信元メールサーバ→宛先メールサーバへのデータ転送を行う
  • メーラー to メールサーバ /メールサーバ同士のやり取りはSMTPコマンドを介して行われる

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

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

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

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

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

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

SMTPとは

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

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

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

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

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

ネットワークエンジニアとして

コンピュータとコンピュータはどのように通信をしているのか?インターネットはどのような仕組みで構成されているのか?

ネットワークの基礎を1から学習したい方(=ネットワークエンジニアを目指す方)は、以下の書籍が非常におすすめです!

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

システムエンジニアを目指す方や、IT知識を1から身につけたい方は以下のページをご覧ください。

正直どこから学び始めればよいかわからない。どのように勉強していけば、エンジニアとしてのスキルが磨けるか?が分からない・・・という方は必見です。

システムエンジニア向けに「できるエンジニア」になる方法を1から解説しておりますので、是非ご覧ください。

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