本文とサイドメニューへジャンプするためのナビゲーションスキップです。

スタートアップガイド

J-Net21 中小企業ビジネス支援サイト

  • J-Net21とは
  • スタートアップガイド
中小機構
  • メルマガ登録
  • RSS一覧
  • お問い合わせ

HOME > 製品・技術を開発する > デジ・ステーション

デジ・ステーション


初級ネットワーク講座
第14回 いまさら聞けない!メールの仕組み

ここ10年で、日常生活に欠かせない通信手段としてすっかり定着した電子メール。今回はインターネットの主な用途である、この電子メールのやりとりの基本について説明する。メールを転送するプロトコルであるSMTP、メールサーバのメールボックスに届いたメールを取りにいくPOP3やIMAP4などのプロトコルについて説明する。

電子メールはどう送られるのか?

Eメールとも呼ばれる電子メールは、一般にインターネットを代表とするIPネットワーク(プロトコルIPを用いているネットワーク)を介した私信のやり取りをいう。文章(テキストデータ)のほか、画像・動画・音声・表計算データ、プログラムなどのバイナリデータも、添付ファイルとして送信することができる。また、HTML形式のメールを送信すれば、Webブラウザのような表示も可能だ。また、Webブラウザを使って送受信ができる電子メールもある。

電子メールのやり取りには、メールサーバが必要で、メール転送プロトコルSMTPのほか、メールサーバのメールボックスに届いたメールを取りにいくPOP3IMAP4などのプロトコルが用いられる。
  SMTPとは、Simple Mail Transfer Protocolの略。その名の通り、Mail=電子メールをTransfer=転送するProtocolで、ポート番号は"25"である。
 POP3とは、Post Office Protocol の略で、ポート番号は"110"である。IMAP4とは、Internet Message Access Protocol の略で、ポート番号は"143"である。
 いずれもメールサーバのメールボックスに蓄積された電子メールを取り出すプロトコルで、「ラスト・ワン・ホップ・プロトコル」とも呼ばれる。

電子メールは、下記図1のように送信側から1つ以上、いくつかのメールサーバを経由して受信側に到達する。

図1 電子メールの流れ

図2 電子メールの流れと使用プロトコル
(1) 電子メール送信側のパソコン(メーラ)は、SMTPで、あらかじめ設定されたメールサーバに電子メールを【送信】する。
(2) メールサーバは、SMTPでメールを【受信】する。
(3) メールサーバは、電子メールの終点が自分でないと判断した場合、SMTPで、あて先メールアドレスから判断されるメールサーバ、または、あらかじめ設定されたメールサーバに電子メールを【送信】する。
(4) メールサーバは、SMTPでメールを【受信】する。メールサーバは、電子メールの終点が自分である(=あて先メールアドレスが自身のメールサーバのユーザ)と判断した場合、その電子メールを蓄積する。メールサーバにはユーザのメールアカウントごとにメールボックスが用意されている。
(5) 電子メール受信側のパソコン(メーラ)は、POP3またはIMAP4で、メールサーバの該当するメールアカウントのメールボックスに蓄積された電子メールを取り出しに行く。
(6) メールサーバは、POP3またはIMAP4などのプロトコルで、電子メールを【送信】する。 (7) 電子メール受信側のパソコン(メーラ)は、POP3またはIMAP4で、電子メールを【受信】する。

電子メールに使われるプロトコル

2-1 SMTP

図2 メール送信時のパケット

さっそく電子メールを送信する際のパケットのやり取りを見てみよう(図1の(1))。実際に、メーラであるOutlookで電子メールを作成して送信したところで、パケットをキャプチャする(図2)。
 IPアドレス192.168.0.102はPC(クライアント)、202.228.236.215はあらかじめメーラ(Outlook)に設定しておいたメールサーバである。
 パケット1からパケット3までで、クライアント(ポート番号:1119)とメールサーバ(ポート番号:25、SMTP)間のTCPのコネクションを確立している。その次のパケット4から、データのやり取りが始まる。
 前回のHTTPの場合と同様、SMTPも、やり取りするデータの中身や意味にかかわらず、クライアントからサーバに向かうデータをコマンドとよび、サーバからクライアントに向かうデータをレスポンス、または「応答メッセージ」と呼ぶ。
 データはASCII文字列で、1つのデータには、複数の制御情報が含まれている。制御情報は「CR(改行)」(16進数で"0D")、「LF(行の先頭に復帰)」(16進数で"0A")で区切られている。これは、いわゆる[Enter]キーに相当する。



 ○パケット1 192.168.0.102(クライアント) → 202.228.236.215(メールサーバ) コネクション確立要求(SYN)

 ○パケット2 202.228.236.215(メールサーバ) → 192.168.0.102(クライアント) コネクション確立要求、応答(SYN、ACK)

 ○パケット3 192.168.0.102(クライアント) → 202.228.236.215(メールサーバ) コネクション確立応答(ACK)

 ○パケット4 202.228.236.215(メールサーバ)→192.168.0.102(クライアント)

レスポンス

図3 パケット4の詳細

パケット4を詳しく見てみると(図3)、まずデータ部があり、メールサーバからクライアントに向かっているのでレスポンスであることがわかる。SMTPは、いきなりレスポンスから始まる。赤枠で囲ったデータ部の右端、ステータスラインに着目しよう。
 ここには、動作の結果を3桁の数値で示すステータスコード「220」と、レスポンスフレーズ「sv.arkweb.co.jp ESMTP Sendmail 8.11.6/3.7W/POP-auth(00031322); Tue、18 Nov 2008 07:53:50 +090」が記載されている。
 さらに、パケット4の最後は「0D0A」で終わっていることが確認できる

コマンド
 ○パケット5 192.168.0.102(クライアント)→202.228.236.215(メールサーバ)

図4 パケット5の詳細

次に、パケット5を詳しく見てみよう(図4)。こちらは、クライアントからサーバに向かっているのでコマンドである。同じように、赤枠で囲ったデータ部の右端、ステータスラインに着目してみよう。
 ここでは、「HELO」というコマンドが確認できる。これは、「メール送信開始要求」を意味している。クライアントは、テキストコマンド(パケット5では「HELO」)を用いて、メールサーバに要求を出す。
 また、パケット5の最後も「0D0A」で終わっていることが確認できる。

SMTPデータのやりとり

パケット4以降のデータのやりとりを詳しく見てみると(表1)、メールサーバとクライアント(メーラ)の会話の様子がよくわかる。

表1 パケット4から14までのやりとり

パケット8とパケット10では、電子メールの送信者、受信者をメールサーバに通知しているが、この場合、送信者から受信者に送ろうとしていることがわかる。すなわち、自身にメール送っている。
 パケット12では、DATAコマンドで、「これから電子メールの本文を送ります」とメールサーバに通知している。
 パケット13では、メールサーバから[ステータスコード]354で、電子メールデータ入力開始を伝えている。これにより、電子メールデータ入力モードに切り替わる。
 1つの制御情報の区切りコードである「0D0A」と、電子メール本文中の[Enter]、すなわち「改行(CR)復帰(LF)」とを区別するため、電子メールデータ入力モード中は、「0D0A」を制御情報の区切りとしない。電子メールデータ入力モード中に限っては、ピリオド"."(16進数で"2E"だけの行)、すなわち改行(CR)復帰(LF)"."改行(CR)復帰(LF)、16進数では「0D0A2E0D0A」を、制御情報の区切りコードとして判断し、電子メールデータ入力モードを解除する。
 パケット14は、実際の電子メールの本文となる。最終が16進数で「0D0A2E0D0A」となっているので、ここで電子メールデータ入力モードが終了となる。

コラム:SMTPだけでメールは送れる!
 電子メールで用いられるプロトコルは、最初はメールを転送するSMTPしかなく、POPやIMAPなどのプロトコルは後から誕生した。
 現在のパソコンが普及するまでは、ネットワークへの接続はワークステーション(UNIXマシン)からが主流だった。ワークステーション自体がメールサーバ機能を持っているので、図1で言えば右側のメールサーバが電子メールの終点だった。ワークステーションは、ファイルサーバなどメールサーバ以外のサーバ機能も持っており、通常は24時間電源を落とすことはない。よって、24時間いつでも電子メールを受信することができた。
 その後、パソコンの普及が進んだが、パソコンは一般に、必要なときだけ電源を入れるものであり、またパソコンではアドレス変換でプライベートアドレスを用いることが多いため、パソコンにメールサーバ機能を持たせることは現実的ではなかった。
 そこで、電子メールはメールサーバに蓄積しておき、ユーザがパソコンを介して必要なときにメールを取り出すことができるプロトコルの必要が生じた。そこで、これから解説するPOPやIMAPなどのプロトコルが新たに開発されたのである。

2-2 POP3

図5 メール受信時のパケット


次に、電子メールを受信する際(図1の(5)(7))のパケットのやりとりを見てみよう。前述の通り、SMTPで送信したメールは送信者・受信者が同じなので、メール送信の直後に受信している。パケットのキャプチャ画面を見てみよう。

 IPアドレス「192.168.0.102」はPC(クライアント)、「202.228.236.215」は、あらかじめメーラ(ここではOutlook)に設定しておいたメールサーバである。

 パケット25からパケット27までの3つのパケットで、クライアント(ポート番号:1121)とメールサーバ(ポート番号:110、POP3)間のTCPのコネクションを確立し、次のパケット28からデータのやり取りをしている。

POP3は、メールサーバのメールボックスから電子メールを取り出すときに使用するプロトコルである。SMTPと同様にやり取りするデータの中身や意味にかかわらず、クライアントからサーバに向かうデータをコマンドとよび、サーバからクライアントに向かうデータをレスポンスまたは応答メッセージと呼ぶ。

 ○パケット25 192.168.0.102(クライアント) → 202.228.236.215(メールサーバ) コネクション確立要求(SYN)
 ○パケット26 202.228.236.215(メールサーバ) → 192.168.0.102(クライアント) コネクション確立要求、応答(SYN、ACK)
 ○パケット27 192.168.0.102(クライアント) → 202.228.236.215(メールサーバ) コネクション確立応答(ACK)

データはASCII文字列となっており、1つのデータには、複数の制御情報が含まれている。制御情報は「CR(改行)」(16進数で"0D")、「LF(行の先頭に復帰)」(16進数で"0A")で区切られている。いわゆる[Enter]キーに相当する。
POP3のレスポンスのステータスコードは、"+OK"正常応答と"-ERR"異常(エラー)応答の2種類しかない。

パケット28以降のデータのやりとりを詳しく見てみよう(表2)。
 パケット29と32で、クライアント(メーラ)はメールサーバに、ユーザ名(アカウント)とパスワードを送信している。
 メールサーバには、ユーザのメールアカウントごとにメールボックスが用意されており、他人に自分のメールボックスを勝手に見られないようPOP3にはユーザ名とパスワードによる認証機能がある。
 しかし、特にパケット32は、パスワードを平文(暗号化されていない文)で送信しているため、通信途中で盗聴される可能性がある。そのため認証情報を暗号化するAPOP(Authenticated Post Office Protocol)というプロトコルが用意されている。あくまでも暗号化されるのは認証情報だけで電子メール本文自体は暗号化されない。本文の暗号化には、別途手段が必要となる。
 パケット36で、クライアント(メーラ)はLISTコマンドを送信し、パケット37でメールサーバから"+OK"正常応答が返信される。ここで一覧表モードに切り替わり、メールサーバのメールボックスにあるメールの一覧表が送信されてくる。

図6 パケット39の詳細

パケット39のデータ部(図6)は、「1 926」となっている。これは、メールの通番と、そのメールの大きさ(バイト) を表す。一覧表モードの解除は、電子メールデータ入力モードを解除と同様、ピリオド"."、すなわち16進数で"2E"だけの行を制御情報の区切りコードとして判断し、電子メール一覧表モードを解除する。パケット39のデータ部の最後を見てみると、16進数で「0D0A2E0D0A」となっている。
 パケット40では、クライアント(メーラ)はRETRコマンドを送信している。これは、指定した番号のメールの受信を要求している。
 パケット41では、メールサーバから「+OK」、すなわち正常応答が返信される。ここで、メール受信モードに切り替わり、メールサーバのメールボックスにある指定された番号のメールの本文が送信されてくる。
 パケット43では、メール本文が送られてくる。この時点では、メールサーバからこのメールは消去されていない。
 パケット44ではメールの消去要求を送信し、パケット46で通信終了要求を送信している。

コラム:嘆きのドット・エンター
 ワークステーションでネットワークに接続していた時代にも、SMTPによる電子メールの仕組みはあったので、コミュニケーション手段として活用されていた。しかし、メーラという便利なアプリケーションはなかったため、メールを送受信するには、すべてワークステーションの画面からUNIXコマンドを手で打ちこんでいた。
 「ドット・エンター」と押した瞬間、電子メールは相手方に送信されてしまう。特に焦っているとき、メール本文をろくに読み返しもせず、うっかり勢いで「ドット・エンター」と押してしまい、後悔することもたびたび…。いまだに、当時のネットワーク環境を知る仲間の間では「嘆きのドット・エンター」と言われている。

2-3 IMAP4

IMAP4は、POP3と同様にメールサーバのメールボックスから電子メールを取り出すときに使用するプロトコルである。メールボックスの電子メールの管理をPOP3ではクライアント(メーラ)で行うが、IMAP4ではメールサーバで行う。そのため、メールサーバがIMAP4に対応している必要がある。
 IMAP4では、メールの未読・既読の情報をサーバ側で持つ仕組みになっており、ユーザがメールサーバにフォルダを作ってメールを管理することもできる。また、POP3では、電子メール単位でしか取り出すことができないが、 IMAP4では、電子メールの件名や送信者などのメールヘッダだけを受信したり、添付ファイルを除いた部分だけを受信したりなどの細かい操作が可能である。通信帯域が狭い回線を使っている場合や、個人で複数のコンピュータを保有しているときに便利である。

履歴

パケット14は、送信メールの電子メールの本文であり、パケット43は受信メールの電子メールの本文である。送信者と受信者が同じで、送信した電子メールを即座に受信しているので、メール本文の内容は同じはずだ。そこで、パケット14とパケット43を比較してみよう(図7)。
 両者を比べると、パケット43のメール本文の先頭部、メールヘッダといわれる部分に「Return-Path:」や「Received: from」などのフィールドが付加されている。

(左)図7 パケット14とパケット43の比較         (右)図8 メールヘッダの確認画面


「Received: from」フィールドは、途中通過したメールサーバの情報である。OutlookExpressの場合、電子メールを開いて「表示」→「オプション」でメールヘッダを見ることができる(図9)。「Received: from」フィールドの数だけメールサーバを通過したことになる。この情報は、順次メールヘッダの先頭部に付加されるので、上にあるほど受信者に近く、下にあるほど送信者に近いメールサーバとなる。

 迷惑メールの多くは、送信者の操作で送信元メールアドレスを偽っている。しかし、電子メールが送信者の手元を離れてしまうと、送信者はメールサーバの情報を偽ることはできない。そこで、迷惑メールの発信元を探る場合、複数の「Received: from」フィールドがあれば、一番下の「Received: from」フィールドが有力な情報となる。

コラム:SPAMメールと迷惑メール
 迷惑メールのことをスパム(SPAM)メールとも呼ぶ。スパムメールの語源には諸説あるが、有力なのが米Hormel Foods社の豚肉の缶詰「SPAM」から来ているというものだ。
 イギリスの伝説的な人気コメディ番組「空飛ぶモンティ・パイソン」に、「SPAMの多いレストラン」というコントがあった。ある夫婦がレストランに入ると、メニューを見ると、どの食べ物にもSPAMが入っているのだ。壁にもSPAM SPAM SPAM・・・の文字、店員からもSPAM SPAM SPAM・・・と連呼され、ついにSPAMを注文してしまうコントに由来するとか。
 Hormel Foods社は、迷惑メールを呼ぶのに自社製品の名前「SPAM」を使われるとイメージダウンにつながると提訴した。しかし、これによって逆に知名度が上がり、売上もアップしたので、その後Hormel Foods社は、提訴を取り下げたという。
 日本でも、輸入食品を扱っているお店などで見かけることがある。また、豚肉料理の多い沖縄の食生活にはかなり浸透しており、ゴーヤチャンプルーに入れることもあるそうだ。中身はいわゆるコンビーフのようなもので、近年の健康志向を反映し、減塩タイプもある。スパムを販売しているサイトでは、おにぎりにスパムをつかった「スパムむすび」や、味噌汁にスパムを入れた「スパム味噌汁」なるものも紹介されている。
【次回予告】
 LANを構築するのに欠かせないのがネットワーク接続機器。その代表格がL2スイッチである。別名スイッチングハブとも呼ばれる。L2はレイヤ2の略、すなわちデータリンク層である。
 ネットワークの教科書では、それぞれのレイヤで働くネットワーク接続機器は、物理層ではリピータ、データリンク層はブリッジ、ネットワーク層はルータとされている。ところが、ルータやL2スイッチ、L3スイッチは多様な製品が販売されているが、いっぽうでブリッジ製品、リピータ製品は見当たらない。では、いったいブリッジはどんな働きをしているのか。
 次回は、データリンク層で働くブリッジとL2スイッチそれぞれの基本動作や基本機能を詳しく説明する。

取材協力 :株式会社アイテック

掲載日:2009年2月 4日

キーマンズネット

出典元:株式会社リクルート キーマンズネット 2008年12月9日掲載分

検索

このページの先頭へ