[要約] RFC 2920は、SMTPサービス拡張のためのコマンドパイプライニングに関する規格です。目的は、複数のSMTPコマンドを一度に送信することで、通信の効率を向上させることです。
Network Working Group N. Freed Request for Comments: 2920 Innosoft STD: 60 September 2000 Obsoletes: 2197 Category: Standards Track
SMTP Service Extension for Command Pipelining
コマンドパイプラインのSMTPサービス拡張機能
Status of this Memo
本文書の位置付け
This document specifies an Internet standards track protocol for the Internet community, and requests discussion and suggestions for improvements. Please refer to the current edition of the "Internet Official Protocol Standards" (STD 1) for the standardization state and status of this protocol. Distribution of this memo is unlimited.
このドキュメントは、インターネットコミュニティのインターネット標準トラックプロトコルを指定し、改善のための議論と提案を要求します。このプロトコルの標準化状態とステータスについては、「インターネット公式プロトコル標準」(STD 1)の現在のエディションを参照してください。このメモの配布は無制限です。
Copyright Notice
著作権表示
Copyright (C) The Internet Society (2000). All Rights Reserved.
Copyright(c)The Internet Society(2000)。無断転載を禁じます。
Abstract
概要
This memo defines an extension to the Simple Mail Transfer Protocol (SMTP) service whereby a server can indicate the extent of its ability to accept multiple commands in a single Transmission Control Protocol (TCP) send operation. Using a single TCP send operation for multiple commands can improve SMTP performance significantly.
このメモは、Simple Mail Transfer Protocol(SMTP)サービスの拡張機能を定義します。これにより、サーバーは、単一の送信制御プロトコル(TCP)送信操作で複数のコマンドを受け入れる能力の範囲を示します。単一のTCPを使用して、複数のコマンドに対して操作を送信すると、SMTPパフォーマンスが大幅に向上する可能性があります。
Although SMTP is widely and robustly deployed, certain extensions may nevertheless prove useful. In particular, many parts of the Internet make use of high latency network links. SMTP's intrinsic one command-one response structure is significantly penalized by high latency links, often to the point where the factors contributing to overall connection time are dominated by the time spent waiting for responses to individual commands (turnaround time).
SMTPは広く堅牢に展開されていますが、それでも特定の拡張機能が有用であることが証明される場合があります。特に、インターネットの多くの部分は、高レイテンシネットワークリンクを使用しています。SMTPの本質的なOne Command-One応答構造は、高レイテンシリンクによって大幅にペナルティが科されます。多くの場合、接続時間全体に寄与する要因が、個々のコマンドへの応答を待つ時間(ターンアラウンド時間)によって支配されます。
In the best of all worlds it would be possible to simply deploy SMTP client software that makes use of command pipelining: batching up multiple commands into single TCP send operations. Unfortunately, the original SMTP specification [RFC-821] did not explicitly state that SMTP servers must support this. As a result a non-trivial number of Internet SMTP servers cannot adequately handle command pipelining. Flaws known to exist in deployed servers include:
すべての世界では、コマンドPipeliningを使用するSMTPクライアントソフトウェアを単純に展開することができます。残念ながら、元のSMTP仕様[RFC-821]は、SMTPサーバーがこれをサポートする必要があると明示的に述べていませんでした。その結果、非些細な数のインターネットSMTPサーバーは、コマンドパイプラインを適切に処理できません。展開されたサーバーに存在することが知られている欠陥は次のとおりです。
(1) Connection handoff and buffer flushes in the middle of the SMTP dialogue. Creation of server processes for incoming SMTP connections is a useful, obvious, and harmless implementation technique. However, some SMTP servers defer process forking and connection handoff until some intermediate point in the SMTP dialogue. When this is done material read from the TCP connection and kept in process buffers can be lost.
(1) 接続ハンドオフとバッファーは、SMTPダイアログの中央でフラッシュします。SMTP接続を着信するためのサーバープロセスの作成は、有用で明白で無害な実装手法です。ただし、一部のSMTPサーバーは、SMTPダイアログの中間点まで、プロセスフォークと接続ハンドオフを延期します。これが完了すると、TCP接続から読み取り、プロセスに保管されているバッファーが失われる可能性があります。
(2) Flushing the TCP input buffer when an SMTP command fails. SMTP commands often fail but there is no reason to flush the TCP input buffer when this happens. Nevertheless, some SMTP servers do this.
(2) SMTPコマンドが失敗したときにTCP入力バッファーをフラッシュします。SMTPコマンドはしばしば失敗しますが、これが発生したときにTCP入力バッファーをフラッシュする理由はありません。それにもかかわらず、一部のSMTPサーバーはこれを行います。
(3) Improper processing and promulgation of SMTP command failures. For example, some SMTP servers will refuse to accept a DATA command if the last RCPT TO command fails, paying no attention to the success or failure of prior RCPT TO command results. Other servers will accept a DATA command even when all previous RCPT TO commands have failed. Although it is possible to accommodate this sort of behavior in a client that employs command pipelining, it does complicate the construction of the client unnecessarily.
(3) SMTPコマンド障害の不適切な処理と公布。たとえば、一部のSMTPサーバーは、コマンドの最後のRCPTが失敗した場合、データコマンドを受け入れることを拒否し、以前のRCPTが結果をコマンドすることに成功または失敗に注意を払わないことを拒否します。他のサーバーは、以前のすべてのRCPTがコマンドに失敗した場合でも、データコマンドを受け入れます。コマンドパイプラインを採用しているクライアントでこの種の動作に対応することは可能ですが、クライアントの構築を不必要に複雑にします。
This memo uses the mechanism described in [RFC-1869] to define an extension to the SMTP service whereby an SMTP server can declare that it is capable of handling pipelined commands. The SMTP client can then check for this declaration and use pipelining only when the server declares itself capable of handling it.
このメモは、[RFC-1869]で説明されているメカニズムを使用して、SMTPサービスの拡張機能を定義し、SMTPサーバーがパイプラインコマンドの処理が可能であると宣言できます。その後、SMTPクライアントは、この宣言を確認し、サーバーがそれを処理できると宣言した場合にのみ、パイプライニングを使用できます。
This document occasionally uses terms that appear in capital letters. When the terms "MUST", "MUST NOT", "SHOULD", "SHOULD NOT", and "MAY" appear capitalized, they are being used to indicate particular requirements of this specification. A discussion of the meanings of the terms "MUST", "SHOULD", and "MAY" appears in [RFC-1123]; the terms "MUST NOT" and "SHOULD NOT" are logical extensions of this usage.
このドキュメントは、大文字に表示される用語を使用することがあります。「必要はない」、「そうでなければ」、「必要はない」、「そうでない」、および「そうでなければ」、「は」、「は」、「必要はない」が大文字に表示される場合、この仕様の特定の要件を示すために使用されています。[RFC-1123]に「必須」、「必須」、「可能性」という用語の意味の議論が表示されます。「そうでないでください」と「すべきではない」という用語は、この使用法の論理的な拡張です。
The Command Pipelining extension is defined as follows:
コマンドパイプライン拡張機能は次のように定義されています。
(1) the name of the SMTP service extension is Pipelining;
(1) SMTPサービス拡張機能の名前はパイプラインです。
(2) the EHLO keyword value associated with the extension is PIPELINING;
(2) 拡張機能に関連付けられているEhloキーワード値はパイプラインです。
(3) no parameter is used with the PIPELINING EHLO keyword;
(3) Pipelining Ehloキーワードでは、パラメーターは使用されていません。
(4) no additional parameters are added to either the MAIL FROM or RCPT TO commands.
(4) コマンドからコマンドへのメールまたはRCPTに追加のパラメーターは追加されていません。
(5) no additional SMTP verbs are defined by this extension; and,
(5) この拡張機能によって追加のSMTP動詞は定義されていません。そして、
(6) the next section specifies how support for the extension affects the behavior of a server and client SMTP.
(6) 次のセクションでは、拡張機能のサポートがサーバーとクライアントSMTPの動作にどのように影響するかを指定します。
When a client SMTP wishes to employ command pipelining, it first issues the EHLO command to the server SMTP. If the server SMTP responds with code 250 to the EHLO command, and the response includes the EHLO keyword value PIPELINING, then the server SMTP has indicated that it can accommodate SMTP command pipelining.
クライアントSMTPがコマンドPipeliningを採用したい場合、最初にEhloコマンドをサーバーSMTPに発行します。サーバーSMTPがコード250でEHLOコマンドに応答し、応答にEhloキーワード値パイプラインが含まれる場合、サーバーSMTPはSMTPコマンドパイプラインに対応できることを示しています。
Once the client SMTP has confirmed that support exists for the pipelining extension, the client SMTP may then elect to transmit groups of SMTP commands in batches without waiting for a response to each individual command. In particular, the commands RSET, MAIL FROM, SEND FROM, SOML FROM, SAML FROM, and RCPT TO can all appear anywhere in a pipelined command group. The EHLO, DATA, VRFY, EXPN, TURN, QUIT, and NOOP commands can only appear as the last command in a group since their success or failure produces a change of state which the client SMTP must accommodate. (NOOP is included in this group so it can be used as a synchronization point.)
クライアントSMTPがパイプライン拡張のサポートが存在することを確認すると、クライアントSMTPは、個々のコマンドへの応答を待たずに、SMTPコマンドのグループをバッチで送信することを選択できます。特に、コマンドRSET、Mail、From、From、Soml、Soml、SAML、およびRCPTへのすべてが、すべてのパイプラインコマンドグループのどこにでも表示されます。Ehlo、data、vrfy、expn、turn、quit、and noopコマンドは、クライアントSMTPが収容しなければならない状態の変化を生み出すため、グループの最後のコマンドとしてのみ表示できます。(NOOPはこのグループに含まれているため、同期ポイントとして使用できます。)
Additional commands added by other SMTP extensions may only appear as the last command in a group unless otherwise specified by the extensions that define the commands.
他のSMTP拡張機能によって追加された追加のコマンドは、コマンドを定義する拡張機能によって特に指定されていない限り、グループの最後のコマンドとしてのみ表示される場合があります。
The actual transfer of message content is explicitly allowed to be the first "command" in a group. That is, a RSET/MAIL FROM sequence used to initiate a new message transaction can be placed in the same group as the final transfer of the headers and body of the previous message.
メッセージコンテンツの実際の転送は、グループで最初の「コマンド」になることが明示的に許可されています。つまり、新しいメッセージトランザクションを開始するために使用されるシーケンスからのRSE/メールは、前のメッセージのヘッダーとボディの最終転送と同じグループに配置できます。
Client SMTP implementations that employ pipelining MUST check ALL statuses associated with each command in a group. For example, if none of the RCPT TO recipient addresses were accepted the client must then check the response to the DATA command -- the client cannot assume that the DATA command will be rejected just because none of the RCPT TO commands worked. If the DATA command was properly rejected the client SMTP can just issue RSET, but if the DATA command was accepted the client SMTP should send a single dot.
パイプライニングを使用するクライアントSMTP実装は、グループ内の各コマンドに関連付けられたすべてのステータスを確認する必要があります。たとえば、RCPTから受信者アドレスが受け入れられなかった場合、クライアントはデータコマンドへの応答を確認する必要があります。クライアントは、コマンドのRCPTが機能しなかったため、データコマンドが拒否されると仮定できません。データコマンドが適切に拒否された場合、クライアントSMTPはRSETを発行するだけですが、データコマンドが受け入れられた場合、クライアントSMTPは単一のドットを送信する必要があります。
Command statuses MUST be coordinated with responses by counting each separate response and correlating that count with the number of commands known to have been issued. Multiline responses MUST be supported. Matching on the basis of either the error code value or associated text is expressly forbidden.
コマンドステータスは、各個別の応答をカウントし、発行されたことが知られているコマンドの数と相関することにより、回答と調整する必要があります。マルチライン応答をサポートする必要があります。エラーコード値または関連テキストのいずれかに基づいて一致することは、明示的に禁止されています。
Client SMTP implementations MAY elect to operate in a nonblocking fashion, processing server responses immediately upon receipt, even if there is still data pending transmission from the client's previous TCP send operation. If nonblocking operation is not supported, however, client SMTP implementations MUST also check the TCP window size and make sure that each group of commands fits entirely within the window. The window size is usually, but not always, 4K octets. Failure to perform this check can lead to deadlock conditions.
クライアントのSMTP実装は、クライアントの以前のTCP送信操作からの送信がまだ保留中のデータがある場合でも、領収書の直ちにサーバーの応答をノンブロッキングして処理することを選択する場合があります。ただし、非ブロッキング操作がサポートされていない場合、クライアントSMTPの実装もTCPウィンドウサイズを確認し、各グループのグループがウィンドウ内に完全に適合することを確認する必要があります。ウィンドウサイズは通常、常にではありませんが、4Kオクテットです。このチェックを実行しないと、デッドロック条件につながる可能性があります。
Clients MUST NOT confuse responses to multiple commands with multiline responses. Each command requires one or more lines of response, the last line not containing a dash between the response code and the response string.
クライアントは、複数のコマンドに対する応答をマルチライン応答と混同してはなりません。各コマンドには、1つ以上の応答が必要です。最後の行では、応答コードと応答文字列の間にダッシュが含まれていません。
A server SMTP implementation that offers the pipelining extension:
パイプライン拡張機能を提供するサーバーSMTP実装:
(1) MUST respond to commands in the order they are received from the client.
(1) クライアントから受信される順序でコマンドに応答する必要があります。
(2) SHOULD elect to store responses to grouped RSET, MAIL FROM, SEND FROM, SOML FROM, SAML FROM, and RCPT TO commands in an internal buffer so they can sent as a unit.
(2) グループ化されたRSETへの応答、郵送、郵便、送信、SOML、SAML、およびRCPTへの対応を内部バッファーでコマンドに保存することを選択する必要があります。
(3) SHOULD issue a positive response to the DATA command if and only if one or more valid RCPT TO addresses have been previously received.
(3) アドレスが1つ以上の有効なRCPTが以前に受信された場合にのみ、データコマンドに対する肯定的な応答を発行する必要があります。
(4) MUST NOT, after issuing a positive response to a DATA command with no valid recipients and subsequently receiving an empty message, send any message whatsoever to anybody.
(4) 有効な受信者のないデータコマンドに肯定的な応答を発行し、その後空のメッセージを受信した後は、誰にでもメッセージを送信してはなりません。
(5) MUST NOT buffer responses to EHLO, DATA, VRFY, EXPN, TURN, QUIT, and NOOP.
(5) Ehlo、データ、Vrfy、Expn、ターン、Quit、およびNoopへの応答をバッファリングしてはなりません。
(6) MUST NOT buffer responses to unrecognized commands.
(6) 認識されていないコマンドに対する応答をバッファリングしてはなりません。
(7) MUST send all pending responses immediately whenever the local TCP input buffer is emptied.
(7) ローカルTCP入力バッファーが空になるときはいつでも、すべての保留中の応答をすぐに送信する必要があります。
(8) MUST NOT make assumptions about commands that are yet to be received.
(8) まだ受け取られていないコマンドについて仮定してはなりません。
(9) MUST NOT flush or otherwise lose the contents of the TCP input buffer under any circumstances whatsoever.
(9) いかなる状況でも、TCP入力バッファーの内容をフラッシュしたり、紛失したりしてはなりません。
(10) SHOULD issue response text that indicates, either implicitly or explicitly, what command the response matches.
(10)暗黙的または明示的に、応答が一致するコマンドを暗黙的または明示的に示す応答テキストを発行する必要があります。
The overriding intent of these server requirements is to make it as easy as possible for servers to conform to these pipelining extensions.
これらのサーバー要件の最優先意図は、サーバーがこれらのパイプライニング拡張機能に適合することを可能な限り簡単にすることです。
Consider the following SMTP dialogue that does not use pipelining:
パイプラインを使用しない次のSMTPダイアログを考えてみましょう。
S: <wait for open connection> C: <open connection to server> S: 220 Innosoft.com SMTP service ready C: HELO dbc.mtview.ca.us S: 250 Innosoft.com C: MAIL FROM:<mrose@dbc.mtview.ca.us> S: 250 sender <mrose@dbc.mtview.ca.us> OK C: RCPT TO:<ned@innosoft.com> S: 250 recipient <ned@innosoft.com> OK C: RCPT TO:<dan@innosoft.com> S: 250 recipient <dan@innosoft.com> OK C: RCPT TO:<kvc@innosoft.com> S: 250 recipient <kvc@innosoft.com> OK C: DATA S: 354 enter mail, end with line containing only "." ... C: . S: 250 message sent C: QUIT S: 221 goodbye
The client waits for a server response a total of 9 times in this simple example. But if pipelining is employed the following dialogue is possible:
クライアントは、この簡単な例で合計9回サーバーの応答を待ちます。しかし、パイプラインが採用されている場合、次の対話が可能です。
S: <wait for open connection> C: <open connection to server> S: 220 innosoft.com SMTP service ready C: EHLO dbc.mtview.ca.us S: 250-innosoft.com S: 250 PIPELINING C: MAIL FROM:<mrose@dbc.mtview.ca.us> C: RCPT TO:<ned@innosoft.com> C: RCPT TO:<dan@innosoft.com> C: RCPT TO:<kvc@innosoft.com> C: DATA S: 250 sender <mrose@dbc.mtview.ca.us> OK S: 250 recipient <ned@innosoft.com> OK S: 250 recipient <dan@innosoft.com> OK S: 250 recipient <kvc@innosoft.com> OK S: 354 enter mail, end with line containing only "." ... C: . C: QUIT S: 250 message sent S: 221 goodbye
The total number of turnarounds has been reduced from 9 to 4.
ターンアラウンドの総数は9から4に減少しました。
The next example illustrates one possible form of behavior when pipelining is used and all recipients are rejected:
次の例は、パイプラインが使用され、すべての受信者が拒否された場合の行動の可能な形式を示しています。
S: <wait for open connection> C: <open connection to server> S: 220 innosoft.com SMTP service ready C: EHLO dbc.mtview.ca.us S: 250-innosoft.com S: 250 PIPELINING C: MAIL FROM:<mrose@dbc.mtview.ca.us> C: RCPT TO:<nsb@thumper.bellcore.com> C: RCPT TO:<galvin@tis.com> C: DATA S: 250 sender <mrose@dbc.mtview.ca.us> OK S: 550 remote mail to <nsb@thumper.bellore.com> not allowed S: 550 remote mail to <galvin@tis.com> not allowed S: 554 no valid recipients given C: QUIT S: 221 goodbye
The client SMTP waits for the server 4 times here as well. If the server SMTP does not check for at least one valid recipient prior to accepting the DATA command, the following dialogue would result:
クライアントSMTPは、ここでもサーバーを4回待ちます。サーバーSMTPがデータコマンドを受け入れる前に少なくとも1人の有効な受信者をチェックしない場合、次のダイアログが結果になります。
S: <wait for open connection> C: <open connection to server> S: 220 innosoft.com SMTP service ready C: EHLO dbc.mtview.ca.us S: 250-innosoft.com S: 250 PIPELINING C: MAIL FROM:<mrose@dbc.mtview.ca.us> C: RCPT TO:<nsb@thumper.bellcore.com> C: RCPT TO:<galvin@tis.com> C: DATA S: 250 sender <mrose@dbc.mtview.ca.us> OK S: 550 remote mail to <nsb@thumper.bellore.com> not allowed S: 550 remote mail to <galvin@tis.com> not allowed S: 354 enter mail, end with line containing only "." C: . C: QUIT S: 554 no valid recipients S: 221 goodbye
This RFC does not discuss security issues and is not believed to raise any security issues not endemic in electronic mail and present in fully conforming implementations of [RFC-821].
このRFCはセキュリティの問題については議論せず、電子メールで風土病ではなく、[RFC-821]の完全に適合する実装に存在するセキュリティの問題を提起するとは考えられていません。
This document is based on the SMTP service extension model presented in RFC 1425. Marshall Rose's description of SMTP command pipelining in his book "The Internet Message" also served as a source of inspiration for this extension.
このドキュメントは、RFC 1425に示されているSMTPサービス拡張モデルに基づいています。マーシャルローズの著書「The Internet Message」のSMTPコマンドパイプライニングの説明も、この拡張機能のインスピレーションの源として役立ちました。
[RFC-821] Postel, J., "Simple Mail Transfer Protocol", STD 10, RFC 821, August 1982.
[RFC-821] Postel、J。、「Simple Mail Transfer Protocol」、STD 10、RFC 821、1982年8月。
[RFC-1123] Braden, R., "Requirements for Internet Hosts -- Application and Support", STD 3, RFC 1123, October, 1989.
[RFC-1123] Braden、R。、「インターネットホストの要件 - アプリケーションとサポート」、STD 3、RFC 1123、1989年10月。
[RFC-1854] Freed, N., "SMTP Service Extension for Command Pipelining", RFC 1854, October 1995.
[RFC-1854] Freed、N。、「コマンドパイプラインのSMTPサービス拡張」、RFC 1854、1995年10月。
[RFC-1869] Klensin, J., Freed, N., Rose, M., Stefferud, E. and D. Crocker, "SMTP Service Extensions", STD 10, RFC 1869, November 1995.
[RFC-1869] Klensin、J.、Freed、N.、Rose、M.、Stefferud、E。およびD. Crocker、「SMTP Service Extensions」、STD 10、RFC 1869、1995年11月。
[RFC-2197] Freed, N., "SMTP Service Extension for Command Pipelining", RFC 2197, September 1997.
[RFC-2197] Freed、N。、「コマンドパイプラインのSMTPサービス拡張」、RFC 2197、1997年9月。
Ned Freed Innosoft International, Inc. 1050 Lakes Drive West Covina, CA 91790 USA
Ned Freed Innosoft International、Inc。1050 Lakes Drive West Covina、CA 91790 USA
Phone: +1 626 919 3600 Fax: +1 626 919 361 EMail: ned.freed@innosoft.com
This document is a product of work done by the Internet Engineering Task Force Working Group on Messaging Extensions, Alan Cargille, chair.
このドキュメントは、メッセージング拡張機能に関するインターネットエンジニアリングタスクフォースワーキンググループ、Alan Cargille、議長の作業の製品です。
Copyright (C) The Internet Society (2000). All Rights Reserved.
Copyright(c)The Internet Society(2000)。無断転載を禁じます。
This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English.
このドキュメントと翻訳は他の人にコピーされて提供される場合があります。また、それについてコメントまたは説明する派生作品、またはその実装を支援することは、いかなる種類の制限なしに、準備、コピー、公開、および部分的に配布される場合があります。、上記の著作権通知とこの段落がそのようなすべてのコピーとデリバティブ作品に含まれている場合。ただし、このドキュメント自体は、インターネット協会や他のインターネット組織への著作権通知や参照を削除するなど、いかなる方法でも変更できない場合があります。インターネット標準プロセスに従うか、英語以外の言語に翻訳するために必要な場合に従う必要があります。
The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns.
上記の限られた許可は永続的であり、インターネット社会またはその後継者または譲受人によって取り消されることはありません。
This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
この文書と本書に含まれる情報は、「現状」に基づいて提供されており、インターネット社会とインターネットエンジニアリングタスクフォースは、ここにある情報の使用が行われないという保証を含むがこれらに限定されないすべての保証を否認します。特定の目的に対する商品性または適合性の権利または黙示的な保証を侵害します。
Acknowledgement
謝辞
Funding for the RFC Editor function is currently provided by the Internet Society.
RFCエディター機能の資金は現在、インターネット協会によって提供されています。