以下の内容を読むとメールソフトがどのようにsmtpサーバと通信して メールを出しているか理解できます。注意
ここで説明した内容を実際に実験する場合には以下の点に注意してくださいこれを誤るとSPAMメールと認識され、トラブルが発生する場合があります。 これらの間違いはメールソフトの設定を間違えた場合と同じことですが、 毎回手入力するので、間違いの可能性が高くなると思われます。 特にご注意ください。
- 利用資格のあるSMTPサーバを使用すること
- 上のサーバで利用が許されているメールアドレスを間違わないように 入力すること
SMTP プロトコル
SMTPプロトコルはrfc821で規定されています。このプロトコルの 概要を以下で説明します。SMTPで使われるポート番号は25番です。それで telnet でサーバに 接続するには、以下のようにコマンドを実行します。SMTPサーバに接続したら、以下の順に情報を送ります。
telnet SMTPサーバ名(あるいはIPアドレス) 25以上のコマンドを順に実行すると、メールが送信されます
- "HELO 接続元のマシンのホスト名"
SMTPサーバに接続しているクライアントのホスト、つまり telnetを実行しているホストの名前を引数にしていして helo コマンドを実行 します。ここで入力するホスト名はどんな名前でも受け付けられると思われますが、 Received: フィールドに書き込まれます。例:
helo pc750- "MAIL FROM: 自分のメールアドレス"
差出人のメールアドレスを入力します例:
mail from: fujiki@kitakyu-techno-ctr.co.jp- "RCTP TO: 宛先のメールアドレス"
宛先のメールアドレスを入力します例:
rcpt to: tab03124@nifty.ne.jp- "DATA"
メールの内容の送信開始するために、DATA コマンドを送ります。- メールの内容
送信する内容を送ります。メールの内容を開始するコマンドを送ります。 メールの最後に、"."だけの行を送ると入力が終了します。例:
subject: test hello. How are you? Please send mail to me. Thank you Takeshi .- "QUIT"
SMTPへのコネクションを切るために QUIT コマンドを実行します。接続例
ここで実際にsmtpサーバの smtp のポート(25番ポート)に接続し、メールを送る 例を示します。赤色で表示されている部分が入力した部分です。最初の行はtelnetの起動です。 UNIXシェルのプロンプトかDOSプロンプトで入力してください。 windows で telnet を起動して、メニューから接続先を指定する場合は、 [接続]メニューから[リモートシステム]を選択して表示されるダイアログで、 [ホスト名]にsmtpサーバを、[ポート]に25を入力して接続してください。
% telnet hibiki.kitakyu-techno-ctr.co.jp 25 Trying 210.160.116.130... Connected to hibiki.kitakyu-techno-ctr.co.jp. Escape character is '^]'. 220 hibiki.kitakyu-techno-ctr.co.jp ESMTP Sendmail 8.9.3/3.7W; Mon, 29 Nov 1999 17:04:45 +0900 (JST) helo pc750 250 hibiki.kitakyu-techno-ctr.co.jp Hello hibiki.kitakyu-techno-ctr.co.jp [210.1 60.116.130], pleased to meet you mail from: fujiki@kitakyu-techno-ctr.co.jp 250 fujiki@kitakyu-techno-ctr.co.jp... Sender ok rcpt to: tab03124@nifty.ne.jp 250 tab03124@nifty.ne.jp... Recipient ok data 354 Enter mail, end with "." on a line by itself subject: smtp connection test Hi! This is test. Please mail to me. Thank you Takeshi . 250 RAA19395 Message accepted for delivery quit 221 hibiki.kitakyu-techno-ctr.co.jp closing connection Connection closed by foreign host. fujiki@hibiki[/var/mail]このような通信を人がマニュアルで入力して行うことはほとんどありませんが、 メールのソフトウェアはこのようなコマンドを裏でsmtpサーバに送って通信を 行っているのです。赤く表示されている部分がユーザが入力した部分で、それ以外の部分は サーバからの応答です。この SMTP サーバとメールソフトの間で行われる通信のプロトコルは rfc821で規定されています。このアプリケーション層のプロトコルでは、 ここで行われているような、サーバとクライアントの通信の際に 使うことのできるコマンド、それに対するレスポンス、およびそのコマンドに よってどのような効果が生じるのかなどを規定しています。
アプリケーションレベルの通信がどのようになされているか、 イメージを描いていただけたでしょうか。
[ポートを指定して使おう] [SMTP サーバへの接続] [POP サーバへの接続] 「telnetの使い方」のページへ戻る