SMTPのしくみ

 SMTP(Simple Mail Transfer Protocol,エス・エム・ティー・ピーと呼ばれる)は,インターネットで電子メールをやりとりするための標準的なプロトコルです.「シンプル」という名のとおり,プロトコル自体は単純です.ですから,後述する手動でSMTPを使ってメールを送信することも容易にできます.
 SMTPは,通信路として「通信の信頼性」のあるTCPを使います.またウェルノウンポート番号として25番に対して,HTTPのようにテキストをベースとした通信を行います.その手順は図5のように,まずSMTPクライアントソフトウェアは,SMTPサーバソフトウェアに対してTCPのセッションを開きます.このセッションの上で「クライアントがサーバにコマンド(命令)を送ると,サーバがそれに答える」という繰り返しを行い,メールの転送を行います.

〔図5〕メールの例
図5


 SMTPによってメールを転送する様子を実際の通信の例に沿って解説します.Telnetコマンドを使って,SMTPサーバに通信を行ったようすが図6図7です.
 今回の実験では,図8のような通信環境で行いました.
 送り主のメールアドレス: norenore@m16.alpha-net.ne.jp
 受け取り主のメールアドレス: ui4s-fnd@asahi-net.or.jp
 いずれも実在するプロバイダ,メールアドレスを用いています.皆様が実験されるときには,ご自分のメールアドレスなどを用いてください.本文中に出てくるメールアドレスやホスト名を“絶対”にそのまま使用しないでください.
 Telnetクライアントには,フリーソフトウェアとして有名なTeraTermを使いました.実験の環境の都合上,Windows98に付属するTelnetコマンドでも実験を行ってみましたが,改行コードの取り扱いにやや不備があり,メール本文での改行コードが化けてしまうという問題が発生しました.ただし,メールの送信を行うこと自体は可能ですので,TeraTermを取得できない場合などは,Windows付属のTelnetを使用しても同様の実験を行うことができます.
 SMTPでは,HTTPと同様に改行コードに<CR><LF>(16進数で0x0d, 0x0a)を用います.キーボードから直接入力する場合,エコーバックがないため,入力した文字が画面に表示されません.また,SMTPでは漢字コードにJISコードを使うことになっています.古いUNIXシステムでは,8bitのデータを伝送することができないものがあります.そのため,SMTPで漢字を含むメールを送信するときは,7bitで漢字を表すことのできるJISコードを使うことに決められています.これらを踏まえて,Telnetクライアント側で図9のような設定を行うことをお勧めします.
 まず図6のように,Tera Termを起動して,接続先ホスト名にプロバイダから指定されているSMTPサーバのホスト名を,ポート番号として25番を指定して,接続します.うまく接続されると,図7の1行目のように,SMTPサーバが自分の名前を名乗ります.ここでは,m16.alpha-net.ne.jpというホスト名で,サーバソフトウェアとしてsendmailが動作していることを表しています.

〔図6〕Telnetクライアントソフトを使ってSMTPサーバに接続する

図6



〔図7〕Telnetクライアントを使って手動でメールを送信しているようす

図7


 CQ出版 TOP OPENDESIGN TOPOPENDESIGN Online目次に戻る
  
Copyright CQ Publishing Co.,Ltd. 1997-2001