ICDロゴ

SMTP (Simple Mail Transfer Protocol)

【エス・エム・ティー・ピー】

最終更新日: 2001/06/18

 インターネット メールを転送するための通信プロトコル。SMTPでは、基本的にメッセージを送信する側が受信側にテキスト ベースのコマンドを送信し、そのコマンドに対する応答を得ながら、メッセージを送信する。現在、パーソナル コンピュータで利用されている電子メールソフトウェアの多くは、メールの受信ではPOP(Post Office Protocol)を使用し、メールの送信ではSMTPを使用するようになっている。

 基本的なSMTPの仕様は、RFC 821で規格化されており、さらに一部を拡張して、8bitデータの送受信を可能にしたり、メッセージサイズのネゴシエーションを可能にしたりしたものがRFC 1651〜1653で規格化されている(後者の拡張仕様はESMTPと呼ばれる)。SMTPでは、送信側から送られるコマンドや、受信側からの応答はすべてテキスト ベースのもので、文字列の最後にCR LFが付けられる。こうしたコマンドとその応答をやり取りしながら、メッセージの送信を行う。通信ポートとしては、通常は25番を使う。

 SMTPのコマンドは、「MAIL」(メールの送信者情報を通知するコマンド)や「RCPT」(メールの受信者を指定するコマンド)、「DATA」(メッセージデータの送信開始を指示するコマンド)などの4文字のもので、コマンドに応じて、このコマンド名に続けてパラメータが送られる。こうしてコマンドが受信側に送られると、受信側は3桁の数値+メッセージという形式で応答を返す。この3桁の数値では、エラーがなく処理を続行できること、またはエラーが発生しているときには、そのエラーの種類を識別できる番号を返す。数値に続くメッセージは、基本的には応答内容を人間が読みやすくしただけで、数値で与えられる情報に等しい。したがってプログラムでは、通常は先頭部分の数値だけを見て、エラーの有無、およびエラーの内容を判断する。送信側から見たSMTPでの基本的なメッセージ転送の手順は次のとおり。

1.接続を開始する
2.「HELO」コマンドを送り、セッションを開始する
3.「MAIL」コマンドを送り、メールの送信者を通知する
4.「RCPT」コマンドを送り、メールの受信者を通知する
5.「DATA」コマンドを送り、メッセージの送信開始を通知する
6.受信先から送信確認が到着したら、実際にメッセージの送信を開始する
7.「CR LF.CR LF」(2つのCR LFの間にピリオドだけがある)を送り、転送メッセージが終了したことを通知する
8.「QUIT」コマンドを送り、セッションを終了する

 この手順では相手先からの応答にかかわる処理を省いたが、送信側は、コマンドを送ったら、必ず相手先からの応答を確認し、エラーが発生していない場合にかぎり処理を次に進める。なお、手順の「MAIL」、「RCPT」、「DATA」コマンドはこの順序で、必ず連続して送信することになっている。しかし同一メッセージを複数の受信者に送る場合には、「RCPT」コマンドを受信者の数だけ繰り返すことが可能だ。ただし連続送信が可能な受信者のアドレス数は、100個までに制限されている。

Copyright (C) 2000-2007 Digital Advantage Corp.

アイティメディアの提供サービス

キャリアアップ