ITメモ
ITの基礎・共通知識




SMTP

SMTP




「SMTP」は、
通信において「送信機能」を担当するプロトコル。
ホストネームから、IPアドレスを割り出したり、
送信先のメールサーバーにメール送信するのが、
「SMTP」プロトコルの役割。








SMTPとは


「SMTP」は、
「RFC821」で規定されたSMTP(Simple Mail Transfer Protcol)プロトコル。
「送信機能」を担当するプロトコルで、
ホストネームからIPアドレスを割り出し、
送信先メールサーバーにメールを送信する。



エンベロープとデータ

エンベロープ(封筒)は、「DATA」の前に記述する「MAIL FROM:送信元メールアドレス」と「RCPT TO:送信先メールアドレス」部分のことをいい。 両アドレスをエンベロープアドレスという。
その後に送られる「DATA」が、メール本文となる。
「DATA」の中には、メールのヘッダと本文が含まれるので、エンベロープの内容は、メール内容からは分からない。


SMTPで使われるポート番号

ポート番号解説
25通常利用されるポート



メール送信の流れ


記述コマンド解説
telnet サーバー名(IP) 25 メールサーバにポート番号25番(SMTPのポート番号)で接続する。
HELO ドメイン名 SMTPサーバに接続
MAIL FROM:送信元メールアドレス 自分のメールアドレスを入力
RCPT TO:送信先メールアドレス 相手のメールアドレスを入力
DATA 「DATA」を記述して「Enter」で入力することで、本文データの入力が可能になる。
メールの付属情報と本文の入力。
下記の項目で、差出人等の情報を渡すことができる。
各項目は省略も可能。
DATAの属性(ヘッダ)説明
From:送信元メールアドレス自分のメールアドレスを入力
To:送信先メールアドレス相手のメールアドレスを入力
Subject:題名(タイトル)メールの件名を入力
X-Mailer:メーラの名前を入力
本文(BODY)ヘッダの名前を書かずに文字を書き始めると本文になる。
.(ピリオド) 「DATA」の終了。
メールの終端は、ピリオドだけの行を書く。


Back





コマンドライン(Telnet)からメール送信


Telnetを使って、メールサーバーの25番ポートにアクセスして、
コマンドラインからメールを送る方法。



telnet mail.ash.jp 25

HELO foo.or.jp

MAIL FROM: 送信元メールアドレス

RCPT TO: 送信先メールアドレス

DATA
From: 送信元メールアドレス
Subjet: タイトル
メール本文
.

QUIT


Back





コマンドライン(Telnet)からのGmail送信


Telnetを利用して、コマンドラインから「G-mail」のメール送信をする方法をメモしています。
「G-mail」サーバーを利用する場合、セキュリティのために、必要なコマンド入力がいくつかあります。



サンプルコード


コマンド入力 >>> s_client -starttls smtp -crlf -connect smtp.gmail.com:587
CONNECTED(00000003)
depth=1 C = US, O = Google Inc, CN = Google Internet Authority
verify error:num=20:unable to get local issuer certificate
verify return:0
---
Certificate chain
0 s:/C=US/ST=California/L=Mountain View/O=Google Inc/CN=smtp.gmail.com
i:/C=US/O=Google Inc/CN=Google Internet Authority
1 s:/C=US/O=Google Inc/CN=Google Internet Authority
i:/C=US/O=Equifax/OU=Equifax Secure Certificate Authority
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIDWzCCAsSgAwIBAgIKFeQVggADAAA7NjANBgkqhkiG9w0BAQUFADBGMQswCQYD
VQQGEwJVUzETMBEGA1UEChMKR29vZ2xlIEluYzEiMCAGA1UEAxMZR29vZ2xlIElu
dGVybmV0IEF1dGhvcml0eTAeFw0xMTExMTgwMTU3MTdaFw0xMjExMTgwMjA3MTda
MGgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1N
b3VudGFpbiBWaWV3MRMwEQYDVQQKEwpHb29nbGUgSW5jMRcwFQYDVQQDEw5zbXRw
LmdtYWlsLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuK+t5ZRq6c3K
kWPwLuIcPa6DgiBURaQK9akP4OBoXKJ6bqYIQWsS4C3RgnOaGaDENadxHSNZ5Qpl
Vqg2S54N54SM5OXwOq0NtrqdlbhgigB53TZouiJvnLDxxIexSOn2Gx1qyZF2z8Ii
MoUhHuStWgW5YoOHje8z6K9xQdYkQp0CAwEAAaOCASwwggEoMB0GA1UdDgQWBBTs
OL4jbtJ5l8B6/eoEvv30KEiTrjAfBgNVHSMEGDAWgBS/wDDr9UMRPme6npH7/Gra
42sSJDBbBgNVHR8EVDBSMFCgTqBMhkpodHRwOi8vd3d3LmdzdGF0aWMuY29tL0dv
b2dsZUludGVybmV0QXV0aG9yaXR5L0dvb2dsZUludGVybmV0QXV0aG9yaXR5LmNy
bDBmBggrBgEFBQcBAQRaMFgwVgYIKwYBBQUHMAKGSmh0dHA6Ly93d3cuZ3N0YXRp
Yy5jb20vR29vZ2xlSW50ZXJuZXRBdXRob3JpdHkvR29vZ2xlSW50ZXJuZXRBdXRo
b3JpdHkuY3J0MCEGCSsGAQQBgjcUAgQUHhIAVwBlAGIAUwBlAHIAdgBlAHIwDQYJ
KoZIhvcNAQEFBQADgYEAQiMlHuQLRFqR10UsSg5WTNe3vagbdnBLAkdhvAf90B5a
9beBxJH2/ylTSIGfD2uceAqzcsQe6Ouy4C9r3rz86qA1dhdtIcPg6uoZb+E2qhE5
UaOJOPO4rHInX9kscBxh+baHbpBMh+ch6v5L8plss8hd0id8C4g10YKzwcgPYlQ=
-----END CERTIFICATE-----
subject=/C=US/ST=California/L=Mountain View/O=Google Inc/CN=smtp.gmail.com
issuer=/C=US/O=Google Inc/CN=Google Internet Authority
---
No client certificate CA names sent
---
SSL handshake has read 2268 bytes and written 477 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-RC4-SHA
Server public key is 1024 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
Protocol : TLSv1.2
Cipher : ECDHE-RSA-RC4-SHA
Session-ID: 867B72C45BE628C68713976C3B73CF2684BBA31483758EAD4FCBCB8F7545F2EF
Session-ID-ctx:
Master-Key: F38B065B1BE4FF62F786144A2B9F1997407F6059F855DEBA5EAF1AE249E24DEA00EE0200419EA95D1614B26B383C0569
Key-Arg : None
PSK identity: None
PSK identity hint: None
SRP username: None
TLS session ticket lifetime hint: 100800 (seconds)
TLS session ticket:
0000 - 75 be ab 14 ff bf e3 74-61 4f 98 e6 ec 58 ae ab u......taO...X..
0010 - 31 b5 52 7d e5 01 65 38-e7 cc ec 1f 79 02 bf 33 1.R}..e8....y..3
0020 - 3e fb 75 b1 1f 62 54 a6-f0 2c 4f a2 dc df 6e be >.u..bT..,O...n.
0030 - db 5b 1e ec 15 27 da 5a-6b cc 6c ba e2 f2 d2 1d .[...'.Zk.l.....
0040 - b6 36 73 56 3e aa e3 c5-fd 38 3c aa 0e 86 1f fc .6sV>....8<.....
0050 - 47 f3 5e 74 1f 8a 5c d2-7c d7 da 8c 44 5e 21 71 G.^t..\.|...D^!q
0060 - 55 54 94 fb 82 2b 02 a2-0c 7b fc 10 93 24 b2 19 UT...+...{...$..
0070 - 23 c2 2b 0d cc 6a 91 d2-8c 2e ef 9a a2 ce 6d bb #.+..j........m.
0080 - 59 36 78 a7 a6 d0 48 06-f6 4a 6f 03 77 47 bf 84 Y6x...H..Jo.wG..
0090 - 3c 66 b5 73
Start Time: 1347980254
Timeout : 300 (sec)
Verify return code: 20 (unable to get local issuer certificate)
---
250 ENHANCEDSTATUSCODES


コマンド入力 >>> localhost
250-mx.google.com at your service
250-SIZE 35882577
250-8BITMIME
250-AUTH LOGIN PLAIN XOAUTH XOAUTH2
250 ENHANCEDSTATUSCODES

コマンド入力 >>> AUTH LOGIN
334 VXNlcm5hbWU6

ユーザー入力(base64でエンコーディング) >>> dGFrYW11cmExMjI3QGdtYWlsLmNvbQo=
334 UGFzc3dvcmQ6

パスワード入力(base64でエンコーディング) >>> XXXXXXXXXXXXXXXXX
235 2.7.0 Accepted

コマンド入力 >>> mail from:<sample@sample.com>
250 2.1.0 OK vg4sm89502pbc.68

コマンド入力 >>> rcpt to:<sample@sample.com>
250 2.1.5 OK vg4sm89502pbc.68

コマンド入力 >>> data
354 Go ahead vg4sm89502pbc.68

コマンド入力 >>>
subject:test
メール本文を入力。
//最後に「.\n」を入力するとメール本文が終了。
.


read:errno=0



base64でエンコーディングする方法

$ echo "Sample@gmail.com" | openssl enc -e -base64


Back





SMTPコマンドの一覧


HELO クライアントが接続する際に接続元を送出する。
グリーティングメッセージ(挨拶)。
英語のHelloの意味で、自分のホスト名を名乗る。
EHLO Extended Helloの意味で、使い方はHELOと同じ。拡張SMTP(ESMTP)に対応していることをサーバーに知らせる場合に使う。
サーバー側でも、ESMTPに対応していれば、拡張機能で使用できるコマンド一覧を返してくる。
MAILMAIL FROM メールアドレスと引数を付けてメール送信者を指定する。
RCPT RECIPIENTの意味で、RCPT TO メールアドレスと引数をつけて、メール受取人を指定する。エンベロープアドレスとなる。
DATA 送信元アドレス、宛先アドレスが受け入れられた後、メッセージ本文の送信開始を要求する。
RSET RESETの意味。メールを送信している過程で中断する。サーバーは受け取っているメールを途中で破棄する。
VRFY 引数にユーザー名を指定して、そのユーザーアカウントがサーバー上にあるかどうかを確認する。
EXPN 引数にメーリングリスト名を指定する。そのメーリングリストが存在する場合、参加しているメンバーのアドレスを返す。
NOOP 特に動作しない。サーバーは一定時間でクライアントとの接続を切断する。クライアントとサーバーでコネクションを切らずに接続したい場合に使われる。
QUITサーバーとの切断を要求する。




ATRN - 認証されたTURN
書式ATRN
種別拡張コマンド
EHLOキーワード ATRN
拡張サービス名On-Demand Mail Relay
現状未実装
応答成功: 250 失敗: 450, 451, 453, 502, 530
定義RFC 2645
語源Authenticated Turn
参照 TURNの改良版。 AUTHを用いた認証を行うことで、TURNにあっ たセキュリティ上の問題を回避している。つまり、このコマンドはAUTHの後で しか利用できない。ATRNが発行されるとクライアントとサーバの役割が逆転す る。
AUTH - SMTP認証
書式AUTH (メカニズム) [最初の応答]
種別拡張コマンド
現状実装されていることもある
EHLOキーワード AUTH
拡張サービス名Authentication
応答成功:250, 334, 失敗: 432, 534, 538 454, 530, 501, 504, 535
定義RFC 2554
語源AUTHentication
参照 このコマンドにより、サーバとクライアントがSASL(RFC 2222)を利用して相互 認証できるようになる。 (メカニズム)はCRAM-MD5やDIGEST-MD5などのダイジェスト化アルゴリズムであ り、どれが利用できるかについてはサーバからのEHLOに明記されている。 [最初の応答]は、サーバからのチャレンジのレスポンスで、BASE64でエンコー ドされる(これを送らない場合には、サーバから334が送られるので、それに対 してBASE64エンコードされたレスポンスを返す)。 AUTHコマンドは1度の接続中、1度だけしか利用できず、またメールトラン ザクション開始前(終了後)にのみ、利用できる。
BDAT - バイナリメッセージの転送
書式BDAT (転送するオクテット数) [LAST]
種別拡張コマンド
EHLOキーワード CHUNKING
拡張サービス名CHUNKING
現状ほとんどのシステムで未実装
応答成功:250, 354
失敗: 451, 554, 503 552, 554, 451, 452,
定義RFC 3030
語源DATA
参照 「BDAT」コマンドにより、BINARYデータの転送が可能となる。
DATAであれば<CRLF>で区切られる、
<CRLF>.<CRLF>で終了という制限があるが、
「BDAT」では、単に転送オクテット数をBDATコマンドへのパラメータとすることで、
いかなるデータでも送信可能となる。
MAILへのオプションパラメータSIZEと異なり、
データオクテット数は厳密である(データの終わりを判別するためのオクテット列が存在しないので当然だが)。
また、DATAと異なり、BDATに対して3yzの応答はなく、指定した量のデータを受信して 始めて250応答が返る。
1つのメールトランザクションでBDATコマンドを何回使ってもよいが、最後に は「LAST」オプションが必要である。

「BDAT 0 LAST」のようにすると、BDATにより送信するデータがもうないことを示すことができる。
BDATはDATAと一緒には利用できない。
DATA - メッセージの転送
書式DATA
種別基本コマンド
現状必須
応答成功:250, 354, 失敗: 451, 554, 503 552, 554, 451, 452,
定義RFC 821, RFC 1123→RFC 2821
語源DATA
参照 BDAT メールのデータを送信するためのコマンドで、MAIL, RCPTの後に使われる。 DATAコマンドに対してパラメータはなく、サーバが受理するならコマンドその ものに対してまず354応答が返される。これが返されたら、クライアントは DATAの内容(つまりメールメッセージの内容:ヘッダとボディ)を送信する。こ こで1行は78文字(全角なら39文字)以内であるべきで、998文字以内でなければ ならない(RFC 2822)。 送信してよいデータは7ビットASCIIすべて。ただし、スペース、CRLF以外は送 信すると誤動作するかもしれない。また、「8bitMIME」で拡張されることもあ る。 データ(メッセージ)のおわりは「.」(ピリオド)だけの行で示される。本当に 「.」だけのデータを送信したい場合のため、送信側(クライアント)は「.」で 始まる行の先頭にもう1つの「.」をつけくわえ、サーバは行頭の「.」を取り 除く。つまり、「.forward」とだけ書いた行は「..forward」として送信され、 サーバで元に戻される。「.」だけの行なら「..」として送信される。 データの終わりに対し、サーバは成功(250)か失敗を返す。成功が返されたと きにサーバはそのメッセージを配信したり、リレーしたり、キューに入れた りする。この時点でクライアントはこのメッセージに関する一切の責任を、サー バに渡したことになる(つまり、ここで成功が返された後には再送してはなら ない)。
EHLO - SMTPセッションの開始
書式EHLO (SMTPクライアントのFQDN)
種別基本コマンド
現状必須
応答成功:250, 失敗:504, 550
定義RFC 1869→RFC 2821
語源Extended HeLlO
参照 HELO EHLOにより、SMTPサーバはSMTPクライアントを識別し、もしそのクライアント がそのSMTPサーバを利用できるならばセッションが開始される。これに対して、 SMTPサーバは応答コード250で以下の情報(普通複数行)を返す(グリーティング)。 なお、SMTPサーバは、実際にはTCP/IP接続のIPアドレスなどの情報からクライア ントを識別すべきである。 サーバ自身の名前(FQDN) このサーバで利用できる拡張サービス クライアントは、基本コマンドに加えて、ここでサーバから返される拡張コマ ンドを利用することもできる。それ以外を利用してはならない。 なお、拡張サービスについてはこちらを参照の こと。なお、ここで表示されるのは、拡張サービスの名称やコマンド名ではな く、拡張サービスに関連したEHLOキーワードと呼ばれるものである (拡張サービス表にはEHLOキーワードと表記)。 SMTPクライアントのFQDNが存在しない場合には、そのIPアドレスが送られ、(も し存在するなら)続いてそのクライアントを識別するのに有用な情報が送られ る。
ETRN - サーバのqueueをクライアントから扱う
書式ETRN
種別拡張コマンド
EHLOキーワード ETRN [option] [node name]
拡張サービス名Remote Queue Processing Declaration
現状実装されていることが多い
応答成功: 250, 251, 252, 253 失敗: 458, 459, 500, 501
定義RFC 1985
語源Extended Turn
参照 SMTPコネクションを利用してサーバからクライアントへメールを転送する。 [node name]として自ホストの完全な名前(DNSのMX, CNAMEいずれでも良い) をいれると、サーバはそれが本当かどうか確認し、その上でメールをこのセッ ションでクライアントへと送る。 オプションで@[domain name](たとえば @example.com)とすると、そのドメイ ンあてのすべてのメールがクライアントへ送られる。#[queue name](たとえば #uucp)とすると、そのqueueにあるメールが送られる。
EXPN - メーリングリストアドレスの展開
書式EXPN (アドレス)
種別拡張コマンド
EHLOキーワード EXPN
拡張サービス名Expand
現状実装すべき
応答成功: 250, 252, 失敗: 550, 500, 502, 504,
定義RFC 821, RFC 1123→RFC 2821
語源EXPaNd
参照VRFY (アドレス)のメーリングリストが存在すれば、そのメンバーリストを表示する。 その際には250の応答コードが用いられ、各行 に1アドレスが表示される(つまり、普通は複数行の応答となる)。 もしEXPNしたアドレスが普通のユーザのメールボックスである場合には、VRFYと同じように振る舞う実装もあり、一方ではエラーと する実装もある(いずれも正しい実装である)。 最近では、セキュリティ上の理由によりこのコマンドを利用できないようにし ているサーバが多く、その場合には550が返る。
HELO - SMTPセッションの開始
書式HELO (SMTPクライアントのFQDN)
種別基本コマンド
現状必須
応答成功:250, 失敗:504, 550
定義RFC 821, RFC 1123, (RFC 2821)
語源HELlO
参照 EHLO HELOにより、SMTPサーバはSMTPクライアントを識別し、もしそのクライアント がそのSMTPサーバを利用できるならばセッションが開始される。これに対して、 SMTPサーバは応答コード250でサーバ自身の名 前(FQDN)を返す(グリーティング)。 SMTPクライアントのFQDNが存在しない場合には、そのIPアドレスが送られ、(も し存在するなら)続いてそのクライアントを識別するのに有用な情報が送られ る。 現在では、このコマンドではなくEHLOを利用すべきであ り、HELOはEHLOを理解できない古いクライアント、サーバのためにのみ存在す る(が、サーバはHELOをサポートしなければならない)。
HELP - ヘルプ
書式HELP [(コマンド名)]
種別拡張コマンド
EHLOキーワード HELP
拡張サービス名Help
応答成功: 211, 214, 失敗: 502, 504,
定義RFC 821, RFC 1123→RFC 2821
語源HELP
参照 ヘルプ。単にHELPとだけすると簡単なヘルプが返り、また HELP (コマンド名) とすればそのコマンドに関するより詳細なヘルプが返るかもしれない。
MAIL - メールを送る
書式MAIL FROM: (アドレス) [オプション]
種別基本コマンド
現状必須
応答成功:250, 失敗: 552, 451, 452, 550, 553, 503
定義RFC 821, RFC 1123, RFC 1869→RFC 2821
語源MAIL
参照 EHLO, RCPT
このメールの(エンベロープ上:つまり、配送システム上)の送り主を示す。 メールヘッダのFrom: (RFC 2822で定義されている)とは意味が違う点に注意。 EHLO(HELO)がメールセッション(クライアントとサーバの接続に関する処理)の 初期化をするのに対し、メールトランザクション(ある1つのメールについての 処理)を初期化する(このコマンド以前にサーバに渡された宛て先やデータは消 去される)。メールトランザクションが進行している時にはMAILコマンドは利 用できない。普通、EHLOコマンド直後に使われる。 (アドレス)は送り主のメールボックスアドレス(を「<>」で括ったもの)である。 現在ではホストのリストを前置するフォーマット(例えば puni!shiori!mimori のよ うな)は使うべきではない。一部のエラーメールなどについて(アドレス)が 「<>」のみの場合がある(メールがループするのを防ぐため)。 オプションには以下のようなものがある。
いずれもEHLO でサーバからそれに関連するキーワードが返された場合にのみ利用可能である。
オプション名拡張サービス名説明定義RFC
BODY8bit-MIMEtransport,BINARYMIME BODYのフォーマット(7bit/8bit/バイナリ)を示す1652, 3030
SIZEMessage Size Declarationメッセージのサイズをあらわす1870
ENVIDDelivery Status Notification エンベロープに識別子をつける1891
RETDelivery Status NotificationDSNにメールボディを含むか、ヘッダだけを返すかを指示する1891
AUTHAuthenticationSMTP AUTHを利 用する2554
BYDeliver Byある時間内にメールを配送させる2852
NOOP - 何もしない
書式NOOP [パラメータ]
種別基本コマンド
応答成功: 250, 200(正しくない実装)
定義RFC 821→RFC 2821
語源NO OPeration
参照 何もしないコマンド。パラメータがあっても動作は同じ。
QUIT - メールセッションの終了
書式QUIT
種別基本コマンド
現状必須
応答成功: 221
定義RFC 821, RFC 1123→RFC 2821
語源QUIT
参照 メールセッションを終了する。これに対して221の応答を受信したら、コネク ションを閉じる。
RCPT - メールの送り先(envelope)を示す
書式RCPT TO: (アドレス) [オプション]
種別基本コマンド
現状必須
応答成功:250, 251, 失敗: 550, 551, 552, 553, 450, 451, 452, 503
定義RFC 821, RFC 1123, RFC 1869→RFC 2821
語源ReCiPienT
参照EHLO, MAIL メールをどこに送るのか、という受信者を指定するコマンド。
メールヘッダのTo:やCc:など(RFC 2822で定義されている)とは意味が違う点に 注意。同じメッセージを複数の宛て先に送る場合、1回のメールトランザクショ ンでこのコマンドを複数回使うことができる。なお、MAILコマンドより後にし か利用できない。 宛て先のアドレスに普通のもの(mimori@puni.netなど)とする他、 「@iyadesu.org:mimori@puni.net 」というように書けば iyadesu.org を経由 (リレー)してmimori@puni.net へとメールが送信される(ただし、 iyadesu.org がメールリレーを許可していなければ、550エラーとなってしまう)。 オプションには以下のようなものがある。いずれもEHLO でサーバからそれに関連するキーワードが返された場合にのみ利用可能である。

オプション名拡張サービス名説明定義RFC
NOTIFYDelivery Status NotificationDSN送出の条件を決める1891
ORCPTDelivery Status Notification元々の送り先を示す 1891
RSET - メールトランザクションのリセット
書式RSET
種別基本コマンド
現状必須
応答成功:250, 200 (正しくない実装)
定義RFC 821, RFC 1123→RFC 2821
語源ReSET
参照 EHLO このコマンドにより、現在のメールトランザクションを中止する。サーバは、 ここまでに送られた送り元、送り先、データなどすべてを廃棄する。 簡単にいえば、EHLO(HELO)直後の状態へ戻る(EHLOを送信してもほとんど同じ 結果が得られるが、EHLOよりもRSETの方が単純なコマンドである)。 このコマンドは常に成功し、250応答が返る。
SAML - ユーザのターミナルかメールボックスへメッセージを送る
書式SAML FROM: (アドレス)
種別拡張コマンド
EHLOキーワード SAML
拡張サービス名Send and Mail
現状ほとんど使われない
応答成功:250 失敗: 450, 552, 451, 452, 550, 553, 503
定義RFC 821, RFC 1123
語源Send And MaiL
参照 MAIL, SEND このコマンドをMAILの代わりに利用することにより、メッ セージをメールボックスとターミナル双方へ送る。もしユーザがログイン していないような場合にはメッセージはメールボックスのみへ送られる。 ただし、利用できる環境はほとんど存在しない。
SEND - ユーザのターミナルにメッセージを送る
書式SEND FROM: (アドレス)
種別拡張コマンド
EHLOキーワード SEND
拡張サービス名Send
現状ほとんど使われない
応答成功:250, 失敗: 450, 552, 451, 452, 550, 553, 503
定義RFC 821, RFC 1123
語源SEND
参照 MAIL このコマンドをMAILの代わりに利用することにより、メッ セージをメールボックスではなくターミナルへと送る。もしユーザがログイン していないような場合には450の応答を返す。 ただし、利用できる環境はほとんど存在しない。
SOML - ユーザのターミナルかメールボックスへメッセージを送る
書式SOML FROM: (アドレス)
種別拡張コマンド
EHLOキーワード SOML
拡張サービス名Send or Mail
現状ほとんど使われない
応答成功:250 失敗: 450, 552, 451, 452, 550, 553, 503
定義RFC 821, RFC 1123
語源Send Or MaiL
参照 MAIL, SEND このコマンドをMAILの代わりに利用することにより、メッ セージをメールボックスではなくターミナルへと送る。もしユーザがログイン していないような場合にはメッセージはメールボックスへと送られる。 ただし、利用できる環境はほとんど存在しない。
STARTTLS - TLSによるセッションの暗号化
書式STARTTLS
種別拡張コマンド
現状実装されていることもある
EHLOキーワード STARTTLS
拡張サービス名starttls
応答成功:220, 失敗: 501, 454
定義RFC 2487
語源START TLS
参照 このコマンドが送られると、TLS(Transport Layer Security, RFC 2246)によ るネゴシエーションがなされ、それに成功するとその後の通信がTLSにより、 暗号化される。
TURN - サーバとクライアントを入れ替える
書式TURN
種別拡張コマンド
EHLOキーワード TURN
拡張サービス名Turn
現状利用すべきでない
応答成功:250 失敗: 502, 500, 503
定義RFC 821
語源TURN
参照 クライアントとサーバ、受信側と送信側を入れ替える。TURN以降は、元サーバ であった方がコマンドを送るようになる。ただし、このコマンドはセキュリティ 上の問題があるため、特殊な環境以外では利用すべきでない。
VRFY - メールアドレスの確認
書式VRFY (アドレス or ユーザ名)
種別拡張コマンド
EHLOキーワード VRFY
現状実装すべき
応答成功: 250, 251, 252, 失敗: 550, 551, 553, 502, 504,
定義RFC 821, RFC 1123→RFC 2821
語源VeRiFY
参照 EXPN
(アドレス or ユーザ名)が存在するかどうかを確認する。
実際にそのサーバ上のメールボックスが存在することを確認できたら、250の応答コードでユーザのメールボックス名(と、 オプションでユーザのフルネームなど)が返される。
メールボックスが別サーバにあるなどの理由で実際には確認できないが、
文法上は正しいなら252が返される。
また、その引 数で複数のアドレスにマッチするなどの場合には551が返る。
もしVRFYしたアドレスがメーリングリストの場合には、EXPNと同じように振る舞う実装もあり、一方ではエラーと する実装もある(いずれも正しい実装である)。 最近では、セキュリティ上の理由によりこのコマンドを利用できないようにし ているサーバが多く、その場合には550が返る。
Xで始まるコマンドユーザ定義で自由に使ってよい(RFC 2821)。


Back





応答コードの一覧




1xxPositive Preliminary reply 肯定的事前応答
2xxPositive Completion reply 肯定的完了応答
211System status, or system help reply システム・ステータスまたはシステム・ヘルプ応答ステータスやヘルプ要求への応答。
214Help message(ヘルプ・メッセージ)。利用方法、特定の非標準コマンドの意味などの、人間にとってのみ有用な情報。
220≶domain> Service ready サービス準備完了 通信が正常終了し、サービスの準備が完了した。
221<domain> Service closing transmission channel サービスは通信チャネルを閉じている 通信が正常終了し、サービスを閉じます。
235Authentication successful 認証成功 クライアントの認証に成功した。
250Requested mail action okay, completed 要求されたメール処理可能、完了 要求された処理が実行可能となり、完了した。
251User not local; will forward to [forward-path] ユーザはローカルに存在せず;[forward-path]に転送 受信者が存在しないため、[forward-path]に転送される。
252Cannot VRFY user, but will accept message and attempt delivery ユーザーを確認できないが、メッセージを受け入れて配送を試みる
3xxPositive Intermediate reply 肯定的中間応答
354Start mail input; end with 「CRLF」.「CRLF」 メールの入力を開始せよ;「改行」.「改行」で終了メールの入力を開始する。「改行」.「改行」で終了する。
4xxTransient Negative Completion reply 一時的な否定的完了応答
421<domain> Service not available, closing transmission channel サービスは利用不可、通信チャネルを閉じる サービスが利用できないため、通信を閉じる。
450Requested mail action not taken: mailbox unavailable 要求されたメール処理は実行されない;メールボックス利用不可 メールボックスが利用できないため、要求された処理は実行できない。
451Requested action aborted: local error in processing 要求された処理を中断:処理中にローカル・エラー 処理中にエラーが発生したため、要求された処理は失敗した。
452Requested action not taken: insufficient system storage 要求された処理は実行されない;システム記憶装置不足 システム容量が不十分なため、要求された処理は実行できない。
5xxPermanent Negative Completion reply 恒久的な否定的完了応答
500Syntax error, command unrecognized 文法エラー、コマンドが理解不能 文法に間違いがあるため、コマンドが理解できない。長すぎるコマンドによるエラーを含む。
501Syntax error in parameters or arguments パラメータまたは引数の文法エラー パラメータまたは引数の文法に誤りがある。
502Command not implemented コマンド未実装 指示されたコマンドが実装されていない。
503Bad sequence of commands 不正なコマンド順序 コマンドの発行順序が間違っている。
504Command parameter not implemented コマンド・パラメータ未実装 コマンドのパラメータが実装されていない。
550Requested action not taken: mailbox unavailable 要求された処理は実行されない;メールボックス利用不可 メールボックスが利用できないため、要求された処理は実行できない。
551User not local; please try [forward-path] ユーザーはローカルに存在せず;[forward-path]を試行せよ 受信者が存在しないため、[forward-path]への転送を試してみる必要がある。
552Requested mail action aborted: exceeded storage allocation 要求されたメール処理を中断:記憶装置の割り当て超過 メールボックスの容量超過のため、要求された処理は失敗した。
553Requested action not taken: mailbox name not allowed 要求された処理は実行されない;メールボックス名は不許可 メールボックスの名前が不適切なため、要求された処理は実行できない。
554Transaction failed 処理失敗 処理に失敗したか、接続開始時の応答の場合は「SMTPサービスが存在しない」。 SMTP応答コードの2桁目の数字は、次の意味を持っています。
SMTP応答コードの2桁目の数字
x0xSyntax 文法 文法エラーまたは未実装や不適切なコマンド
x1xInformation 情報 ステータスやヘルプ要求への応答
x2xConnections 接続 通信チャネルに関する応答
x5xMail system メールシステム 受信側メールシステムの問題等のステータス


Back