目次
もくじ

SMTPサーバーと直接対話する

SMTPコマンド/応答コード

SMTPコマンド

HELO 書式 : HELO <SP> <domain> <CRLF>
意味 : 接続の確立
MAIL 書式 : MAIL <SP> FROM:<reverse-path> <CRLF>
意味 : 発信者の指定
RCPT 書式 : RCPT <SP> TO:<forward-path> <CRLF>
意味 : 受信者の指定
DATA 書式 : DATA <CRLF>
意味 : 本文の送信
RSET 書式 : RSET <CRLF>
意味 : 処理の中断
SEND 書式 : SEND <SP> FROM:<reverse-path> <CRLF>
意味 : 発信者の指定
SOML 書式 : SOML <SP> FROM:<reverse-path> <CRLF>
意味 : 発信者の指定
SAML 書式 : SAML <SP> FROM:<reverse-path> <CRLF>
意味 : 発信者の指定
VRFY 書式 : VRFY <SP> <string> <CRLF>
意味 : 受信者の確認
EXPN 書式 : EXPN <SP> <string> <CRLF>
意味 : メーリングリストの会員アドレスの要求
HELP 書式 : HELP [<SP> <string>] <CRLF>
意味 : ヘルプメッセージの要求
NOOP 書式 : NOOP <CRLF>
意味 : ダミーコマンド
QUIT 書式 : QUIT <CRLF>
意味 : 処理の終了
TURN 書式 : TURN <CRLF>
意味 : クライアントとサーバの役割の逆転

SMTP応答コード

コード 意味
211 System status, or system help reply
214 Help message
ヘルプメッセージ。
220 <domain> Service ready
準備完了。
221 <domain> Service closing transmission channel
接続を閉じる。
250 Requested mail action okay, completed
要求された処理は実行可能。完了。
251 User not local; will forward to <forward-path>
受信者が存在しないので[forward-path]に転送する。
354 Start mail input; end with <CRLF>.<CRLF>
メールの入力開始。入力終了は「.」のみの行を送信。
421 <domain> Service not available,closing transmission channel
サービスは利用不能。接続を閉じる。
450 Requested mail action not taken: mailbox unavailable
メールボックスが利用できないため、要求された処理は実行不能。
451 Requested action aborted: local error in processing
処理中にエラーが発生。要求された処理は失敗。
452 Requested action not taken: insufficient system storage
記憶装置の空き領域が不十分なため、要求された処理は実行不能。
500 Syntax error, command unrecognized
文法に間違いがあるため、コマンドが理解できない。
501 Syntax error in parameters or arguments
引数の文法に間違いがある。
502 Command not implemented
指示されたコマンドはこのシステムには実装されていない。
503 Bad sequence of commands
コマンドの発行順序が間違っている。
504 Command parameter not implemented
コマンドの引数が未定義。
550 Requested action not taken: mailbox unavailable
メールボックスが利用できないため、要求された処理は実行不能。
551 User not local; please try <forward-path>
受信者が存在しない。[forward-path]に送信せよ。
552 Requested mail action aborted: exceeded storage allocation
ディスク不足のため、要求された処理は実行不能。
553 Requested action not taken: mailbox name not allowed
メールボックスの名前が不適切なため、要求された処理は実行不能。
554 Transaction failed
処理失敗。

SMTPサーバーと対話

コンソールで telnet サーバー名 25 という命令をするとメールサーバーとの対話が始まります。

インターネットでは迷惑メールの対策として伝統的な25番ポートを使わせないような設定をしている場合がありますが、授業用のサーバーは昔ながらの25で接続できます。

c1e08@st.seiai.ed.jp から自分自身へメールを送る例です。telnet mail.st.seiai.ed.jp 25など水色で書かれているのがキーボードから入力する部分。緑色部分が解説(入力でも出力でもない)。その他がコンピュータからの出力です。

例1

ごくごく普通のメールソフトが送るであろう状況を想定して通信したもの。

途中わざと間違えて、間違えたところからやり直せることも確認している。

最初に相手のアドレスと送信者のアドレスを指定し、dataの後に、ヘッダー部とボディ部を空行で区切って送っている。最後にピリオドのみの行を送ってボディ部の終わりを知らせている。

quitでサーバーとの通信を終えていますが、ここでquitの代わりに mail from: から始めてもう一通送信することもできる。

c1e08@vine42:~$ telnet mail.st.seiai.ed.jp 25
Trying 10.30.30.2...
Connected to mail.st.seiai.ed.jp.
Escape character is '^]'.
220 jonah.st.seiai.ed.jp ESMTP Exim 4.50 Wed, 08 Oct 2008 11:55:10 +0900
HELO vine42.st.seiai.ed.jp vine以下は発信元のホスト(PC)の名前を書くことになっていますが…
250 jonah.st.seiai.ed.jp Hello c1e08 at vine42.st.seiai.ed.jp [10.20.20.42]
MAIL form:c1e08@st.seiai.ed.jp わざと間違えてみましたfromが違います
500 unrecognized command
mail from:c1e08@st.seiai.ed.jp やり直します。コマンドは小文字でもOKの様子
250 OK
rcpt to:c1e08@st.seiai.ed.jp
250 Accepted
data
354 Enter message, ending with "." on a line by itself
from:c1e08@st.seiai.ed.jp  ヘッダー部に入れられるfrom と to
to:c1e08@st.seiai.ed.jp    mail from/rcpt to と故意に替えることもできてしまう。
subject:abc
    ←空行(Enterのみ)はヘッダー部とボディ部の区切りです。1回だけ出現可能です。
abcdef           ここからの3行がメールの本文です。
konnichiwa.      もちろん何行あってもかまいません。
test mail desu.  事情があって英数字だけにしています。
.   ←ピリオドのみの行がメールが終わりますという合図になります。
250 OK id=1KnPH0-0006v3-QO これでメールが送信されました。
quit
221 jonah.st.seiai.ed.jp closing connection
Connection closed by foreign host.
c1e08@vine42:~$ これで telnet からの一連の作業が終わります。

こちらがそれをメールソフトで受け取ったもの

From - Wed Oct  8 12:02:58 2008
X-Account-Key: account2
X-UIDL: 0000000348ec208a
X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
X-Mozilla-Keys:                                                                                 
Return-path: <c1e08@st.seiai.ed.jp>
Envelope-to: c1e08@st.seiai.ed.jp
Delivery-date: Wed, 08 Oct 2008 12:01:08 +0900
Received: from [10.20.20.42] (helo=vine42.st.seiai.ed.jp ident=c1e08)
by jonah.st.seiai.ed.jp with smtp (Exim 4.50)
id 1KnPH0-0006v3-QO
for c1e08@st.seiai.ed.jp; Wed, 08 Oct 2008 12:01:08 +0900
from:c1e08@st.seiai.ed.jp
to:c1e08@st.seiai.ed.jp
subject:abc

abcdef
konnichiwa.
test mail desu.

例2

いろいろな詐称が可能なことを示すためのもの

c1e08@vine42:~$ telnet mail.st.seiai.ed.jp 25
Trying 10.30.30.2...
Connected to mail.st.seiai.ed.jp.
Escape character is '^]'.
220 jonah.st.seiai.ed.jp ESMTP Exim 4.50 Wed, 08 Oct 2008 12:01:20 +0900
helo xxx     ホスト名はなんでも受け付ける
250 jonah.st.seiai.ed.jp Hello c1e08 at xxx [10.20.20.42]
mail from:yy@yyy.jp           fromアドレスも架空の物でもOK
250 OK
rcpt to:c1e08@st.seiai.ed.jp  toは目的からして届かないところを指定しないだろう
250 Accepted
data
354 Enter message, ending with "." on a line by itself
from: zz@zzz.jp               ここのfromアドレスも嘘をつける
to: aa@aaa.jp                 ここのtoは送信に使われない
subject:xyz
date: 1980-12-12              日付も嘘をつける

xyzxyz
mouichido
test mail desu
.
250 OK id=1KnPKL-0006xB-TO
quit
221 jonah.st.seiai.ed.jp closing connection
Connection closed by foreign host.
c1e08@vine42:~$ 

こちらがそれをメールソフトで受け取ったもの

From - Wed Oct  8 12:04:38 2008
X-Account-Key: account2
X-UIDL: 0000000448ec208a
X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
X-Mozilla-Keys:                                                                                 
Return-path: <yy@yyy.jp>      mail to: で指定したfrom
Envelope-to: c1e08@st.seiai.ed.jp
Delivery-date: Wed, 08 Oct 2008 12:04:28 +0900
Received: from [10.20.20.42] (helo=xxx ident=c1e08) xxx しか情報を与えなかったがその他の情報を集めて付け加えている。
by jonah.st.seiai.ed.jp with smtp (Exim 4.50)
id 1KnPKL-0006xB-TO
for c1e08@st.seiai.ed.jp; Wed, 08 Oct 2008 12:04:28 +0900
from: zz@zzz.jp               ボディ部で指定した from
to: aa@aaa.jp                 ボディ部で指定した to
subject:xyz
date: 1980-12-12              ボディ部で指定した日付

xyzxyz
mouichido
test mail desu

聖愛中学高等学校
http://www.seiai.ed.jp/
Last Modified