電子・情報工学系/システム情報工学研究科CS専攻 新城 靖 <yas@is.tsukuba.ac.jp>
このページは、次の URL にあります。
http://www.coins.tsukuba.ac.jp/~syspro/2007/No6_files/smtp.html
あるいは、次のページから手繰っていくこともできます。
http://www.coins.tsukuba.ac.jp/~syspro/2007/
http://www.coins.tsukuba.ac.jp/~yas/
表6 SMTPで定義されている手続き
MAIL FROM:<reverse-path> 新しいメールの転送を開始する。 <reverse-path>は、エラーが起きた時の送り返し先のアドレス。 RCPT TO:<forward-path> メールの送り先として <forward-path> を指定する。 DATA メールのデータを送り始める。 VRFY <login-name> メールの受け手を確認する。 EXPN <ml-name> メーリング・リストの受取人を表示する。 SEND FROM:<reverse-path> メールを転送する。 HELO <domain> 最初に接続した時に自分自身を相手に知らせる。 QUIT 接続を切る。
表7 SMTPの応答コード
コード 説明 -------------------------------------------------------------------- 220以下に、SMTP で電子メールが出される様子を示している。というドメインで要求受け付け可能である。 250 そのアドレスへのメールは、受け付け可能である。 251 そのアドレスは、ローカルには受取人がいない。
% telnet orchid-nwc smtpTrying 130.158.86.206... Connected to orchid-nwc.coins.tsukuba.ac.jp. Escape character is '^]'. 220 orchid-nwc.coins.tsukuba.ac.jp ESMTP Postfix HELO azalea20.coins.tsukuba.ac.jp
250 orchid-nwc.coins.tsukuba.ac.jp MAIL From:<yas@coins.tsukuba.ac.jp>
250 Ok RCPT To:<yas@is.tsukuba.ac.jp>
250 Ok DATA
354 End data with
. From: yas@coins.tsukuba.ac.jp To: yas@is.tsukuba.ac.jp
Subject: hello
![]()
body
.
250 Ok: queued as C150F164511 QUIT
221 Bye Connection closed by foreign host. %
![]()
太字になっている部分が、SMTPの要求(クライアントが送信したも
の)であ。数字で始まっている所が、受信側の orchid-nwd
で
動作しているサーバの応答である。このように、SMTP では、2つのプログラム
が対話をして、電子メールを転送する。
上の対話には、現われていないが、DATA
の後に
電子メールの本文が送られている。ここで本文には、
From:
, To:
, Subject:
など
のヘッダも含まれている。
本文の From:
や To:
は、電子メールの転送に
は使われない。
転送には、表?に出てくるMAIL
FROM:
や RCPT TO:
に続くアドレスが使われる。この、
SMTP
のレベルの、配送に使われるデータを、本文と区別して
封筒
(envelope)
と呼ぶ。
SMTP() で DATA
の中に出てくるTo:
と、
RCPT TO:
は、多くの場合一致している。しかし、メーリン
グ・リストのメールや、.forward で転送されたメールでは、一致して
いない。すなわち、メーリング・リストや.forward がうまく働くのは、
封筒に書かれた宛先が使われていることによる。
telnet を使って、電子メールを送るサーバに接続して、SMTPのコマンドを打ち 込み、電子メールを送ってみなさい。SMTP の定義は、RFC821 というドキュメ ントにある。DATA は、From: や To: 行を含めることを忘れないようにしなさ い。
SMTPサーバに対して、電子メールを発信するプログラムをつくりなさい。その プログラムの名前を、smtpput とする。
mverify コマンドは、次のように3つの引数を与えて利用するものとする。
% ./smtpput host from@coins.tsukuba.ac.jp to@coins.tsukuba.ac.jp < mail-dataここで、host は、SMTPサーバ(sendmailデーモン)が動いているホストの名前 である。![]()
from@coins.tsukuba.ac.jp
は、SMTP の
MAIL FROM: で与えるアドレス(自分自身のアドレス)である。
to@coins.tsukuba.ac.jp
には、SMTP の RCPT To:
で指定する受取人のアドレスを指定する。実験では、これも自分自身のアドレ
スを使う。
電子メールの本文は、標準入力(キーボード、または、ファイルやパイプ)から 与える。
DATA には、次のようなデータを指定する。
DATA From: from@coins.tsukuba.ac.jp To: to@coins.tsukuba.ac.jp 本文 .本文は、標準入力(上の例では、mail-data という名前のファイル)から受け取 る。
プログラムをつくる時には、行末の扱い(CR-LF)に注意 しないさい。