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

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