[要約] RFC 3028は、メールフィルタリング言語であるSieveについての仕様を定めたものであり、その目的は効果的なメールフィルタリングを実現するための標準化と普及を促進することです。

Network Working Group                                       T. Showalter
Request for Comments: 3028                               Mirapoint, Inc.
Category: Standards Track                                   January 2001
        

Sieve: A Mail Filtering Language

ふるい:メールフィルタリング言語

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 (2001). All Rights Reserved.

Copyright(c)The Internet Society(2001)。無断転載を禁じます。

Abstract

概要

This document describes a language for filtering e-mail messages at time of final delivery. It is designed to be implementable on either a mail client or mail server. It is meant to be extensible, simple, and independent of access protocol, mail architecture, and operating system. It is suitable for running on a mail server where users may not be allowed to execute arbitrary programs, such as on black box Internet Message Access Protocol (IMAP) servers, as it has no variables, loops, or ability to shell out to external programs.

このドキュメントでは、最終配信時に電子メールメッセージをフィルタリングするための言語について説明します。メールクライアントまたはメールサーバーのいずれかで実装できるように設計されています。これは、アクセスプロトコル、メールアーキテクチャ、オペレーティングシステムとは独立していることを意図しています。ユーザーがブラックボックスインターネットメッセージアクセスプロトコル(IMAP)サーバーなどの任意のプログラムを実行することを許可されないメールサーバーで実行するのに適しています。。

Table of Contents

目次

   1.      Introduction ...........................................   3
   1.1.     Conventions Used in This Document .....................   4
   1.2.     Example mail messages .................................   4
   2.      Design .................................................   5
   2.1.     Form of the Language ..................................   5
   2.2.     Whitespace ............................................   5
   2.3.     Comments ..............................................   6
   2.4.     Literal Data ..........................................   6
   2.4.1.   Numbers ...............................................   6
   2.4.2.   Strings ...............................................   7
   2.4.2.1. String Lists ..........................................   7
   2.4.2.2. Headers ...............................................   8
   2.4.2.3. Addresses .............................................   8
   2.4.2.4. MIME Parts ............................................   9
   2.5.     Tests .................................................   9
   2.5.1.   Test Lists ............................................   9
      2.6.     Arguments .............................................   9
   2.6.1.   Positional Arguments ..................................   9
   2.6.2.   Tagged Arguments ......................................  10
   2.6.3.   Optional Arguments ....................................  10
   2.6.4.   Types of Arguments ....................................  10
   2.7.     String Comparison .....................................  11
   2.7.1.   Match Type ............................................  11
   2.7.2.   Comparisons Across Character Sets .....................  12
   2.7.3.   Comparators ...........................................  12
   2.7.4.   Comparisons Against Addresses .........................  13
   2.8.     Blocks ................................................  14
   2.9.     Commands ..............................................  14
   2.10.    Evaluation ............................................  15
   2.10.1.  Action Interaction ....................................  15
   2.10.2.  Implicit Keep .........................................  15
   2.10.3.  Message Uniqueness in a Mailbox .......................  15
   2.10.4.  Limits on Numbers of Actions ..........................  16
   2.10.5.  Extensions and Optional Features ......................  16
   2.10.6.  Errors ................................................  17
   2.10.7.  Limits on Execution ...................................  17
   3.      Control Commands .......................................  17
   3.1.     Control Structure If ..................................  18
   3.2.     Control Structure Require .............................  19
   3.3.     Control Structure Stop ................................  19
   4.      Action Commands ........................................  19
   4.1.     Action reject .........................................  20
   4.2.     Action fileinto .......................................  20
   4.3.     Action redirect .......................................  21
   4.4.     Action keep ...........................................  21
   4.5.     Action discard ........................................  22
   5.      Test Commands ..........................................  22
   5.1.     Test address ..........................................  23
   5.2.     Test allof ............................................  23
   5.3.     Test anyof ............................................  24
   5.4.     Test envelope .........................................  24
   5.5.     Test exists ...........................................  25
   5.6.     Test false ............................................  25
   5.7.     Test header ...........................................  25
   5.8.     Test not ..............................................  26
   5.9.     Test size .............................................  26
   5.10.    Test true .............................................  26
   6.      Extensibility ..........................................  26
   6.1.     Capability String .....................................  27
   6.2.     IANA Considerations ...................................  28
   6.2.1.   Template for Capability Registrations .................  28
   6.2.2.   Initial Capability Registrations ......................  28
   6.3.     Capability Transport ..................................  29
   7.      Transmission ...........................................  29
      8.      Parsing ................................................  30
   8.1.     Lexical Tokens ........................................  30
   8.2.     Grammar ...............................................  31
   9.      Extended Example .......................................  32
   10.     Security Considerations ................................  34
   11.     Acknowledgments ........................................  34
   12.     Author's Address .......................................  34
   13.     References .............................................  34
   14.     Full Copyright Statement ...............................  36
        
1. Introduction
1. はじめに

This memo documents a language that can be used to create filters for electronic mail. It is not tied to any particular operating system or mail architecture. It requires the use of [IMAIL]-compliant messages, but should otherwise generalize to many systems.

このメモは、電子メールのフィルターを作成するために使用できる言語を文書化しています。特定のオペレーティングシステムやメールアーキテクチャに関連付けられていません。[IMAIL]に準拠したメッセージを使用する必要がありますが、それ以外の場合は多くのシステムに一般化する必要があります。

The language is powerful enough to be useful but limited in order to allow for a safe server-side filtering system. The intention is to make it impossible for users to do anything more complex (and dangerous) than write simple mail filters, along with facilitating the use of GUIs for filter creation and manipulation. The language is not Turing-complete: it provides no way to write a loop or a function and variables are not provided.

言語は有用であるほど強力ですが、安全なサーバー側のフィルタリングシステムを可能にするために制限されています。意図は、フィルターの作成と操作のためのGUIの使用を促進するとともに、単純なメールフィルターを作成するよりも複雑な(そして危険な)ユーザーが不可能にすることを意図しています。言語はチューリングが完全ではありません。ループや関数を書き込む方法は提供されず、変数は提供されません。

Scripts written in Sieve are executed during final delivery, when the message is moved to the user-accessible mailbox. In systems where the MTA does final delivery, such as traditional Unix mail, it is reasonable to sort when the MTA deposits mail into the user's mailbox.

ふるいに記載されているスクリプトは、メッセージがユーザーアクセス可能なメールボックスに移動される最終配信中に実行されます。MTAが従来のUNIXメールなどの最終配信を行うシステムでは、MTAがユーザーのメールボックスにメールを入力するときに並べ替えることが合理的です。

There are a number of reasons to use a filtering system. Mail traffic for most users has been increasing due to increased usage of e-mail, the emergence of unsolicited email as a form of advertising, and increased usage of mailing lists.

フィルタリングシステムを使用する理由はいくつかあります。ほとんどのユーザーのメールトラフィックは、電子メールの使用の増加、広告の形式として未承諾の電子メールの出現、メーリングリストの使用の増加により増加しています。

Experience at Carnegie Mellon has shown that if a filtering system is made available to users, many will make use of it in order to file messages from specific users or mailing lists. However, many others did not make use of the Andrew system's FLAMES filtering language [FLAMES] due to difficulty in setting it up.

Carnegie Mellonでの経験は、ユーザーがフィルタリングシステムを利用できるようにすると、特定のユーザーまたはメーリングリストからメッセージを提出するために多くの人がそれを利用することを示しています。しかし、他の多くの人は、セットアップが困難なため、アンドリューシステムの炎のフィルタリング言語[炎]を利用していませんでした。

Because of the expectation that users will make use of filtering if it is offered and easy to use, this language has been made simple enough to allow many users to make use of it, but rich enough that it can be used productively. However, it is expected that GUI-based editors will be the preferred way of editing filters for a large number of users.

ユーザーが提供され、使いやすい場合、ユーザーがフィルタリングを使用することが期待されているため、この言語は多くのユーザーがそれを利用できるようにするのに十分なほど簡単になりましたが、生産的に使用できるほど豊富になりました。ただし、GUIベースのエディターは、多数のユーザーにフィルターを編集する好ましい方法になると予想されます。

1.1. Conventions Used in This Document
1.1. このドキュメントで使用されている規則

In the sections of this document that discuss the requirements of various keywords and operators, the following conventions have been adopted.

さまざまなキーワードとオペレーターの要件を議論するこのドキュメントのセクションでは、次の規則が採用されています。

The key words "MUST", "MUST NOT", "SHOULD", "SHOULD NOT", and "MAY" in this document are to be interpreted as defined in [KEYWORDS].

このドキュメントの「必須」、「そうでなければならない」、「そうでなければ」、「すべきではない」、「そうでない」、「必要はない」は、[キーワード]で定義されていると解釈されます。

Each section on a command (test, action, or control structure) has a line labeled "Syntax:". This line describes the syntax of the command, including its name and its arguments. Required arguments are listed inside angle brackets ("<" and ">"). Optional arguments are listed inside square brackets ("[" and "]"). Each argument is followed by its type, so "<key: string>" represents an argument called "key" that is a string. Literal strings are represented with double-quoted strings. Alternatives are separated with slashes, and parenthesis are used for grouping, similar to [ABNF].

コマンドの各セクション(テスト、アクション、または制御構造)には、「構文:」というラベルが付いています。この行は、その名前と引数を含むコマンドの構文について説明しています。必要な引数には、内部角度ブラケット( "<"および ">")がリストされています。オプションの引数は、四角い括弧内にリストされています( "[" and "]")。各引数の後にそのタイプが続くため、「<key:string>」は、文字列である「キー」と呼ばれる引数を表します。リテラル文字列は、二重引用文字列で表されます。代替はスラッシュで分離されており、[ABNF]と同様に、グループ化に括弧が使用されます。

In the "Syntax" line, there are three special pieces of syntax that are frequently repeated, MATCH-TYPE, COMPARATOR, and ADDRESS-PART. These are discussed in sections 2.7.1, 2.7.3, and 2.7.4, respectively.

「構文」ラインには、頻繁に繰り返される、マッチタイプ、コンパレータ、およびアドレスパートの3つの特別な構文があります。これらについては、それぞれセクション2.7.1、2.7.3、および2.7.4で説明します。

The formal grammar for these commands in section 10 and is the authoritative reference on how to construct commands, but the formal grammar does not specify the order, semantics, number or types of arguments to commands, nor the legal command names. The intent is to allow for extension without changing the grammar.

セクション10のこれらのコマンドの正式な文法は、コマンドを構築する方法に関する権威ある参照ですが、正式な文法では、コマンドへの順序、セマンティクス、数字、または引数の種類も法的コマンド名を指定しません。意図は、文法を変更せずに拡張を可能にすることです。

1.2. Example mail messages
1.2. メールメッセージの例

The following mail messages will be used throughout this document in examples.

このドキュメント全体で、次のメールメッセージが使用されます。

   Message A
   -----------------------------------------------------------
   Date: Tue, 1 Apr 1997 09:06:31 -0800 (PST)
   From: coyote@desert.example.org
   To: roadrunner@acme.example.com
   Subject: I have a present for you
        
   Look, I'm sorry about the whole anvil thing, and I really
   didn't mean to try and drop it on you from the top of the
   cliff.  I want to try to make it up to you.  I've got some
   great birdseed over here at my place--top of the line
      stuff--and if you come by, I'll have it all wrapped up
   for you.  I'm really sorry for all the problems I've caused
   for you over the years, but I know we can work this out.
   --
   Wile E. Coyote   "Super Genius"   coyote@desert.example.org
   -----------------------------------------------------------
        
   Message B
   -----------------------------------------------------------
   From: youcouldberich!@reply-by-postal-mail.invalid
   Sender: b1ff@de.res.example.com
   To: rube@landru.example.edu
   Date:  Mon, 31 Mar 1997 18:26:10 -0800
   Subject: $$$ YOU, TOO, CAN BE A MILLIONAIRE! $$$
        
   YOU MAY HAVE ALREADY WON TEN MILLION DOLLARS, BUT I DOUBT
   IT!  SO JUST POST THIS TO SIX HUNDRED NEWSGROUPS!  IT WILL
   GUARANTEE THAT YOU GET AT LEAST FIVE RESPONSES WITH MONEY!
   MONEY! MONEY! COLD HARD CASH!  YOU WILL RECEIVE OVER
   $20,000 IN LESS THAN TWO MONTHS!  AND IT'S LEGAL!!!!!!!!!
   !!!!!!!!!!!!!!!!!!111111111!!!!!!!11111111111!!1  JUST
   SEND $5 IN SMALL, UNMARKED BILLS TO THE ADDRESSES BELOW!
   -----------------------------------------------------------
        
2. Design
2. デザイン
2.1. Form of the Language
2.1. 言語の形

The language consists of a set of commands. Each command consists of a set of tokens delimited by whitespace. The command identifier is the first token and it is followed by zero or more argument tokens. Arguments may be literal data, tags, blocks of commands, or test commands.

言語は一連のコマンドで構成されています。各コマンドは、Whitespaceによって区切られたトークンのセットで構成されています。コマンド識別子は最初のトークンであり、その後にゼロ以上の引数トークンが続きます。引数は、文字通りのデータ、タグ、コマンドのブロック、またはテストコマンドです。

The language is represented in UTF-8, as specified in [UTF-8].

この言語は、[UTF-8]で指定されているように、UTF-8で表されます。

Tokens in the ASCII range are considered case-insensitive.

ASCII範囲のトークンは、症例感受性と見なされます。

2.2. Whitespace
2.2. 空白

Whitespace is used to separate tokens. Whitespace is made up of tabs, newlines (CRLF, never just CR or LF), and the space character. The amount of whitespace used is not significant.

Whitespaceは、トークンを分離するために使用されます。Whitespaceは、タブ、Newlines(CRLF、CRまたはLFだけ)、およびスペース文字で構成されています。使用される空白の量は重要ではありません。

2.3. Comments
2.3. コメント

Two types of comments are offered. Comments are semantically equivalent to whitespace and can be used anyplace that whitespace is (with one exception in multi-line strings, as described in the grammar).

2種類のコメントが提供されています。コメントは、ホワイトスパースと意味的に同等であり、Whitespaceの任意の場所を使用できます(文法で説明されているように、マルチライン文字列に1つの例外を除く)。

Hash comments begin with a "#" character that is not contained within a string and continue until the next CRLF.

ハッシュコメントは、文字列内に含まれていない「#」文字から始まり、次のCRLFまで続きます。

   Example:  if size :over 100K { # this is a comment
                discard;
             }
        

Bracketed comments begin with the token "/*" and end with "*/" outside of a string. Bracketed comments may span multiple lines. Bracketed comments do not nest.

ブラケットのコメントはトークン「/*」で始まり、文字列の外側で「*/」で終わります。ブラケットされたコメントは、複数の行に及ぶ場合があります。ブラケットされたコメントは巣を作らない。

   Example:  if size :over 100K { /* this is a comment
                this is still a comment */ discard /* this is a comment
                */ ;
             }
        
2.4. Literal Data
2.4. リテラルデータ

Literal data means data that is not executed, merely evaluated "as is", to be used as arguments to commands. Literal data is limited to numbers and strings.

リテラルデータとは、コマンドの引数として使用される「現状のまま」と評価されただけで実行されないデータを意味します。リテラルデータは数字と文字列に限定されています。

2.4.1. Numbers
2.4.1. 数字

Numbers are given as ordinary decimal numbers. However, those numbers that have a tendency to be fairly large, such as message sizes, MAY have a "K", "M", or "G" appended to indicate a multiple of a power of two. To be comparable with the power-of-two-based versions of SI units that computers frequently use, K specifies kibi-, or 1,024 (2^10) times the value of the number; M specifies mebi-, or 1,048,576 (2^20) times the value of the number; and G specifies tebi-, or 1,073,741,824 (2^30) times the value of the number [BINARY-SI].

数字は通常の10進数として与えられます。ただし、メッセージサイズなど、かなり大きくなる傾向がある数値は、「K」、「M」、または「G」が2つのパワーの倍数を示すように追加される場合があります。コンピューターが頻繁に使用するSIユニットの2つのパワーバージョンに匹敵するために、KはKibi-、つまり1,024(2^10)の数の倍の値を指定します。Mは、数値の値を1,048,576(2^20)倍指定します。gは、tebi-または1,073,741,824(2^30)の数[バイナリ-si]の値を指定します。

Implementations MUST provide 31 bits of magnitude in numbers, but MAY provide more.

実装は、31ビットの大きさを数値で提供する必要がありますが、さらに多くを提供する場合があります。

Only positive integers are permitted by this specification.

この仕様により、正の整数のみが許可されます。

2.4.2. Strings
2.4.2. 文字列

Scripts involve large numbers of strings as they are used for pattern matching, addresses, textual bodies, etc. Typically, short quoted strings suffice for most uses, but a more convenient form is provided for longer strings such as bodies of messages.

スクリプトには、パターンマッチング、アドレス、テキストボディなどに使用されるため、多数の文字列が含まれます。通常、ほとんどの用途には短い引用文字列で十分ですが、メッセージのボディなどの長い文字列にはより便利なフォームが提供されます。

A quoted string starts and ends with a single double quote (the <"> character, ASCII 34). A backslash ("\", ASCII 92) inside of a quoted string is followed by either another backslash or a double quote. This two-character sequence represents a single backslash or double-quote within the string, respectively.

引用された文字列は、1つの二重引用符(<">文字、ASCII 34)で始まり、終了します。引用された文字列の内側のバックスラッシュ( "\"、ascii 92)の後に別のバックスラッシュまたは二重引用符が続きます。-Characterシーケンスは、それぞれ文字列内の単一のバックスラッシュまたはダブルクォートを表します。

No other characters should be escaped with a single backslash.

他のキャラクターは、単一のバックスラッシュで逃げるべきではありません。

An undefined escape sequence (such as "\a" in a context where "a" has no special meaning) is interpreted as if there were no backslash (in this case, "\a" is just "a").

未定義のエスケープシーケンス(「a」には特別な意味がないコンテキストでは「\ a」など)は、バックスラッシュがないかのように解釈されます(この場合、\ a "は「A」です)。

Non-printing characters such as tabs, CR and LF, and control characters are permitted in quoted strings. Quoted strings MAY span multiple lines. NUL (ASCII 0) is not allowed in strings.

引用された文字列では、タブ、CR、LF、コントロール文字などの非印刷文字が許可されています。引用された文字列は、複数の行に及ぶ場合があります。nul(ascii 0)は文字列では許可されていません。

For entering larger amounts of text, such as an email message, a multi-line form is allowed. It starts with the keyword "text:", followed by a CRLF, and ends with the sequence of a CRLF, a single period, and another CRLF. In order to allow the message to contain lines with a single-dot, lines are dot-stuffed. That is, when composing a message body, an extra `.' is added before each line which begins with a `.'. When the server interprets the script, these extra dots are removed. Note that a line that begins with a dot followed by a non-dot character is not interpreted dot-stuffed; that is, ".foo" is interpreted as ".foo". However, because this is potentially ambiguous, scripts SHOULD be properly dot-stuffed so such lines do not appear.

電子メールメッセージなどの大量のテキストを入力するには、マルチラインフォームが許可されています。キーワード「テキスト:」から始まり、CRLFが続き、CRLFのシーケンス、単一期間、および別のCRLFで終わります。メッセージにシングルドットのある線を含めることを許可するために、線はドットが詰まっています。つまり、メッセージ本文を作成するとき、余分な `。「。」で始まる各行の前に追加されます。サーバーがスクリプトを解釈すると、これらの余分なドットが削除されます。ドットで始まる線とドット以外の文字が続く線は、ドットが詰まっていると解釈されないことに注意してください。つまり、「.foo」は「.foo」と解釈されます。ただし、これは潜在的に曖昧であるため、スクリプトは適切に点在する必要があるため、そのような行が表示されません。

Note that a hashed comment or whitespace may occur in between the "text:" and the CRLF, but not within the string itself. Bracketed comments are not allowed here.

「テキスト」とCRLFの間にハッシュされたコメントまたは空白が発生する可能性があることに注意してください。ここでは、ブラケットのコメントは許可されていません。

2.4.2.1. String Lists
2.4.2.1. 文字列リスト

When matching patterns, it is frequently convenient to match against groups of strings instead of single strings. For this reason, a list of strings is allowed in many tests, implying that if the test is true using any one of the strings, then the test is true. Implementations are encouraged to use short-circuit evaluation in these cases.

パターンを一致させるときは、シングル文字列の代わりに文字列のグループと一致するのが頻繁に便利です。このため、文字列のリストは多くのテストで許可されており、文字列のいずれかを使用してテストが真である場合、テストが真であることを意味します。実装は、これらの場合に短絡評価を使用することをお勧めします。

For instance, the test `header :contains ["To", "Cc"] ["me@example.com", "me00@landru.example.edu"]' is true if either the To header or Cc header of the input message contains either of the e-mail addresses "me@example.com" or "me00@landru.example.edu".

たとえば、テスト `ヘッダー:[" to "、" cc "] [" me@example.com "、" me00@landru.example.edu "]は、toヘッダーまたはCCヘッダーのいずれかの場合、trueです。入力メッセージには、電子メールアドレス「me@example.com」または「me00@landru.example.edu」のいずれかが含まれています。

Conversely, in any case where a list of strings is appropriate, a single string is allowed without being a member of a list: it is equivalent to a list with a single member. This means that the test `exists "To"' is equivalent to the test `exists ["To"]'.

逆に、文字列のリストが適切である場合は、リストのメンバーではなく、単一の文字列が許可されます。これは、単一のメンバーのリストに相当します。これは、テストが「存在する」から「存在する」ことを意味します。

2.4.2.2. Headers
2.4.2.2. ヘッダー

Headers are a subset of strings. In the Internet Message Specification [IMAIL] [RFC1123], each header line is allowed to have whitespace nearly anywhere in the line, including after the field name and before the subsequent colon. Extra spaces between the header name and the ":" in a header field are ignored.

ヘッダーは文字列のサブセットです。インターネットメッセージの仕様[IMAIL] [RFC1123]では、各ヘッダーラインは、フィールド名の後、後続のコロンの前を含む、ほぼどこにでも、ほぼどこにでも空白を持つことができます。ヘッダー名とヘッダーフィールドの「:」の間の追加スペースは無視されます。

A header name never contains a colon. The "From" header refers to a line beginning "From:" (or "From :", etc.). No header will match the string "From:" due to the trailing colon.

ヘッダー名にはコロンが含まれません。「From」ヘッダーは、「または「from:」などから始まる行を指します。トレーリングコロンのために、「from:from」と一致するヘッダーはありません。

Folding of long header lines (as described in [IMAIL] 3.4.8) is removed prior to interpretation of the data. The folding syntax (the CRLF that ends a line plus any leading whitespace at the beginning of the next line that indicates folding) are interpreted as if they were a single space.

データの解釈の前に、長いヘッダーラインの折りたたみ([imail] 3.4.8で説明されている)は削除されます。折りたたみ構文(折り畳みを示す次の線の先頭にあるラインと任意の主要な空白を終了するCRLF)は、それらが単一のスペースであるかのように解釈されます。

2.4.2.3. Addresses
2.4.2.3. アドレス

A number of commands call for email addresses, which are also a subset of strings. When these addresses are used in outbound contexts, addresses must be compliant with [IMAIL], but are further constrained. Using the symbols defined in [IMAIL], section 6.1, the syntax of an address is:

多くのコマンドには、文字列のサブセットでもある電子メールアドレスが必要です。これらのアドレスがアウトバウンドコンテキストで使用される場合、アドレスは[imail]に準拠している必要がありますが、さらに制約されています。[imail]、セクション6.1で定義されているシンボルを使用して、アドレスの構文は次のとおりです。

   sieve-address = addr-spec                ; simple address
                 / phrase "<" addr-spec ">" ; name & addr-spec
        

That is, routes and group syntax are not permitted. If multiple addresses are required, use a string list. Named groups are not used here.

つまり、ルートとグループ構文は許可されていません。複数のアドレスが必要な場合は、文字列リストを使用します。ここでは名前のグループは使用されていません。

Implementations MUST ensure that the addresses are syntactically valid, but need not ensure that they actually identify an email recipient.

実装は、アドレスが構文的に有効であることを確認する必要がありますが、電子メール受信者を実際に識別することを確認する必要はありません。

2.4.2.4. MIME Parts
2.4.2.4. マイムパーツ

In a few places, [MIME] body parts are represented as strings. These parts include MIME headers and the body. This provides a way of embedding typed data within a Sieve script so that, among other things, character sets other than UTF-8 can be used for output messages.

いくつかの場所では、[mime]体の部分は文字列として表されます。これらの部分には、MIMEヘッダーとボディが含まれます。これにより、Sieve Scriptに入力されたデータを埋め込む方法が提供され、とりわけ、UTF-8以外の文字セットを出力メッセージに使用できるようにします。

2.5. Tests
2.5. テスト

Tests are given as arguments to commands in order to control their actions. In this document, tests are given to if/elsif/else to decide which block of code is run.

テストは、アクションを制御するためにコマンドの引数として与えられます。このドキュメントでは、[/elsif/elseのテストが実行され、コードのブロックが実行されるかを決定します。

Tests MUST NOT have side effects. That is, a test cannot affect the state of the filter or message. No tests in this specification have side effects, and side effects are forbidden in extension tests as well.

テストには副作用があってはなりません。つまり、テストはフィルターまたはメッセージの状態に影響を与えることはできません。この仕様のテストには副作用があり、拡張テストでも副作用が禁止されています。

The rationale for this is that tests with side effects impair readability and maintainability and are difficult to represent in a graphic interface for generating scripts. Side effects are confined to actions where they are clearer.

これの理論的根拠は、副作用を伴うテストでは読みやすさと保守性を損ない、スクリプトを生成するためのグラフィックインターフェイスで表現することが困難であることです。副作用は、より明確なアクションに限定されます。

2.5.1. Test Lists
2.5.1. テストリスト

Some tests ("allof" and "anyof", which implement logical "and" and logical "or", respectively) may require more than a single test as an argument. The test-list syntax element provides a way of grouping tests.

いくつかのテスト(それぞれ論理的」と「論理的」または「または「」を実装するいくつかのテスト(それぞれ論理的」を実装する)は、引数として単一のテストを必要とする場合があります。テストリスト構文要素は、テストをグループ化する方法を提供します。

   Example:  if anyof (not exists ["From", "Date"],
                   header :contains "from" "fool@example.edu") {
                discard;
             }
        
2.6. Arguments
2.6. 議論

In order to specify what to do, most commands take arguments. There are three types of arguments: positional, tagged, and optional.

何をすべきかを指定するために、ほとんどのコマンドは議論を取ります。引数には、位置、タグ付き、およびオプションの3つのタイプがあります。

2.6.1. Positional Arguments
2.6.1. 位置的議論

Positional arguments are given to a command which discerns their meaning based on their order. When a command takes positional arguments, all positional arguments must be supplied and must be in the order prescribed.

位置的議論は、命令に基づいてその意味を識別するコマンドに与えられます。コマンドが位置的な引数を取得する場合、すべての位置的引数を提供する必要があり、規定された順序である必要があります。

2.6.2. Tagged Arguments
2.6.2. タグ付き引数

This document provides for tagged arguments in the style of CommonLISP. These are also similar to flags given to commands in most command-line systems.

このドキュメントは、CommonLispのスタイルでタグ付けされた引数を提供します。これらは、ほとんどのコマンドラインシステムでコマンドに与えられたフラグにも似ています。

A tagged argument is an argument for a command that begins with ":" followed by a tag naming the argument, such as ":contains". This argument means that zero or more of the next tokens have some particular meaning depending on the argument. These next tokens may be numbers or strings but they are never blocks.

タグ付けされた引数は、「: ":":contains "などの引数に名前を付けるタグが続くコマンドの引数です。この議論は、次のトークンのゼロ以上が議論に応じていくつかの特別な意味を持っていることを意味します。これらの次のトークンは数字や文字列である可能性がありますが、ブロックではありません。

Tagged arguments are similar to positional arguments, except that instead of the meaning being derived from the command, it is derived from the tag.

タグ付きの引数は、コマンドから導き出される意味の代わりに、タグから派生していることを除いて、位置引数に似ています。

Tagged arguments must appear before positional arguments, but they may appear in any order with other tagged arguments. For simplicity of the specification, this is not expressed in the syntax definitions with commands, but they still may be reordered arbitrarily provided they appear before positional arguments. Tagged arguments may be mixed with optional arguments.

タグ付きの引数は、位置引数の前に表示されなければなりませんが、他のタグ付き引数では任意の順序で表示される場合があります。仕様を簡単にするために、これはコマンドを使用して構文定義で表現されていませんが、位置の引数の前に表示されていれば、任意に並べ替えられる場合があります。タグ付きの引数は、オプションの引数と混合される場合があります。

To simplify this specification, tagged arguments SHOULD NOT take tagged arguments as arguments.

この仕様を簡素化するために、タグ付けされた引数は、タグ付けされた引数を引数として取得すべきではありません。

2.6.3. Optional Arguments
2.6.3. オプションの引数

Optional arguments are exactly like tagged arguments except that they may be left out, in which case a default value is implied. Because optional arguments tend to result in shorter scripts, they have been used far more than tagged arguments.

オプションの引数は、それらが除外される可能性があることを除いて、タグ付き引数とまったく同じです。その場合、デフォルト値が暗示されています。オプションの引数はより短いスクリプトをもたらす傾向があるため、タグ付けされた引数よりもはるかに多く使用されています。

One particularly noteworthy case is the ":comparator" argument, which allows the user to specify which [ACAP] comparator will be used to compare two strings, since different languages may impose different orderings on UTF-8 [UTF-8] characters.

特に注目に値するケースの1つは、「:Comparator」引数です。これにより、ユーザーはどの[ACAP]コンパレータを使用して2つの文字列を比較できます。

2.6.4. Types of Arguments
2.6.4. 引数の種類

Abstractly, arguments may be literal data, tests, or blocks of commands. In this way, an "if" control structure is merely a command that happens to take a test and a block as arguments and may execute the block of code.

抽象的には、引数は文字通りのデータ、テスト、またはコマンドのブロックである場合があります。このようにして、「IF」制御構造は、テストとブロックを引用として実行し、コードのブロックを実行する可能性がある単なるコマンドである単なるコマンドです。

However, this abstraction is ambiguous from a parsing standpoint. The grammar in section 9.2 presents a parsable version of this: Arguments are string-lists, numbers, and tags, which may be followed by a test or a test-list, which may be followed by a block of commands. No more than one test or test list, nor more than one block of commands, may be used, and commands that end with blocks of commands do not end with semicolons.

ただし、この抽象化は、解析の観点からはあいまいです。セクション9.2の文法は、これのあらゆるバージョンを示しています。引数は文字列リスト、数字、タグであり、その後にテストまたはテストリストが続くことがあり、その後にコマンドのブロックが続く場合があります。テストまたはテストリストが1つ以下、コマンドのブロックが1つ以上使用され、コマンドのブロックで終わるコマンドはセミコロンで終わりません。

2.7. String Comparison
2.7. 文字列比較

When matching one string against another, there are a number of ways of performing the match operation. These are accomplished with three types of matches: an exact match, a substring match, and a wildcard glob-style match. These are described below.

ある文字列を別の文字列と一致させるとき、マッチ操作を実行する方法がいくつかあります。これらは、正確な一致、サブストリングマッチ、ワイルドカードグローブスタイルのマッチの3種類のマッチで達成されます。これらを以下に説明します。

In order to provide for matches between character sets and case insensitivity, Sieve borrows ACAP's comparator registry.

キャラクターセットとケースの不感の一致を提供するために、SieveはAcapのComparator Registryを借ります。

However, when a string represents the name of a header, the comparator is never user-specified. Header comparisons are always done with the "i;ascii-casemap" operator, i.e., case-insensitive comparisons, because this is the way things are defined in the message specification [IMAIL].

ただし、文字列がヘッダーの名前を表す場合、コンパレータはユーザー指定されません。 ヘッダーの比較は、「i; ascii-casemap」演算子、つまりケース非感動的な比較で常に行われます。これは、メッセージ仕様[imail]で物事が定義される方法であるためです。

2.7.1. Match Type
2.7.1. マッチタイプ

There are three match types describing the matching used in this specification: ":is", ":contains", and ":matches". Match type arguments are supplied to those commands which allow them to specify what kind of match is to be performed.

この仕様で使用されているマッチングを説明する3つのマッチタイプがあります: ":is"、 ":contains"、および「matches」。一致タイプの引数は、それらが実行される一致の種類を指定できるコマンドに提供されます。

These are used as tagged arguments to tests that perform string comparison.

これらは、文字列比較を実行するテストのタグ付き引数として使用されます。

The ":contains" match type describes a substring match. If the value argument contains the key argument as a substring, the match is true. For instance, the string "frobnitzm" contains "frob" and "nit", but not "fbm". The null key ("") is contained in all values.

「:contains」マッチタイプは、サブストリングマッチを記述します。値引数にサブストリングとして重要な引数が含まれている場合、一致は真です。たとえば、文字列「Frobnitzm」には「FROB」と「NIT」が含まれていますが、「FBM」ではありません。nullキー( "")は、すべての値に含まれています。

The ":is" match type describes an absolute match; if the contents of the first string are absolutely the same as the contents of the second string, they match. Only the string "frobnitzm" is the string "frobnitzm". The null key ":is" and only ":is" the null value.

「:is」マッチタイプは、絶対的な一致を説明しています。最初の文字列の内容が2番目の文字列の内容とまったく同じである場合、それらは一致します。文字列「frobnitzm」のみが文字列「frobnitzm」です。null key ":is" andのみ "は「null値です。

The ":matches" version specifies a wildcard match using the characters "*" and "?". "*" matches zero or more characters, and "?" matches a single character. "?" and "*" may be escaped as "\\?" and "\\*" in strings to match against themselves. The first backslash escapes the second backslash; together, they escape the "*". This is awkward, but it is commonplace in several programming languages that use globs and regular expressions.

「:Matches」バージョンは、文字「*」と「?」を使用してワイルドカードマッチを指定します。「*」はゼロ以上の文字と「?」と一致します単一の文字に一致します。「?」そして、「*」は「\\?」として逃げられるかもしれませんそして、自分自身と一致する文字列で「\\*」。最初のバックスラッシュは、2番目のバックスラッシュを逃れます。一緒に、彼らは「*」から逃げます。これは厄介ですが、グローブや正規表現を使用するいくつかのプログラミング言語では一般的です。

In order to specify what type of match is supposed to happen, commands that support matching take optional tagged arguments ":matches", ":is", and ":contains". Commands default to using ":is" matching if no match type argument is supplied. Note that these modifiers may interact with comparators; in particular, some comparators are not suitable for matching with ":contains" or ":matches". It is an error to use a comparator with ":contains" or ":matches" that is not compatible with it.

どのタイプの一致が発生するかを指定するために、マッチングをサポートするコマンドは、オプションのタグ付けされた引数を取ります ":matches"、 ":is"、および ":contains"。マッチタイプの引数が提供されていない場合、 ":IS"マッチングを使用するコマンドをデフォルトします。これらの修飾子はコンパレータと相互作用する場合があることに注意してください。特に、一部のコンパレータは、「:contains」または「matches」と一致するのに適していません。「:contains」または「 ":bise"と互換性のないコンパレータを使用することはエラーです。

It is an error to give more than one of these arguments to a given command.

これらの引数の複数を特定のコマンドに与えることはエラーです。

For convenience, the "MATCH-TYPE" syntax element is defined here as follows:

便宜上、「マッチタイプ」構文要素は次のようにここで定義されています。

   Syntax:   ":is" / ":contains" / ":matches"
        
2.7.2. Comparisons Across Character Sets
2.7.2. 文字セット間の比較

All Sieve scripts are represented in UTF-8, but messages may involve a number of character sets. In order for comparisons to work across character sets, implementations SHOULD implement the following behavior:

すべてのシーブスクリプトはUTF-8で表されますが、メッセージには多くの文字セットが含まれる場合があります。キャラクターセット間で動作するための比較のために、実装は次の動作を実装する必要があります。

Implementations decode header charsets to UTF-8. Two strings are considered equal if their UTF-8 representations are identical. Implementations should decode charsets represented in the forms specified by [MIME] for both message headers and bodies. Implementations must be capable of decoding US-ASCII, ISO-8859-1, the ASCII subset of ISO-8859-* character sets, and UTF-8.

実装ヘッダー充電をUTF-8にデコードします。UTF-8表現が同一である場合、2つの文字列が等しいと見なされます。実装は、メッセージヘッダーとボディの両方について[MIME]で指定された形式で表される充電をデコードする必要があります。実装は、US-ASCII、ISO-8859-1、ISO-8859-*文字セットのASCIIサブセット、およびUTF-8をデコードできる必要があります。

If implementations fail to support the above behavior, they MUST conform to the following:

実装が上記の動作をサポートできない場合、次のように適合する必要があります。

No two strings can be considered equal if one contains octets greater than 127.

127を超えるオクテットが含まれている場合、2つの文字列を等しいと見なすことはできません。

2.7.3. Comparators
2.7.3. コンパレータ

In order to allow for language-independent, case-independent matches, the match type may be coupled with a comparator name. Comparators are described for [ACAP]; a registry is defined for ACAP, and this specification uses that registry.

言語に依存しない、ケースに依存しない一致を可能にするために、マッチタイプはコンパレータ名と結合することができます。[ACAP]についてはコンパレータが記載されています。レジストリはACAPに対して定義されており、この仕様ではそのレジストリを使用します。

ACAP defines multiple comparator types. Only equality types are used in this specification.

ACAPは複数のコンパレータタイプを定義します。この仕様では、平等タイプのみが使用されます。

All implementations MUST support the "i;octet" comparator (simply compares octets) and the "i;ascii-casemap" comparator (which treats uppercase and lowercase characters in the ASCII subset of UTF-8 as the same). If left unspecified, the default is "i;ascii-casemap".

すべての実装は、「i;オクテット」コンパレータ(単純にオクテットを比較)と「i; ascii-casemap」コンパレータ(UTF-8のASCIIサブセットの大文字と小文字を同じものとして処理する)をサポートする必要があります。不特定のままにしておくと、デフォルトは「i; ascii-casemap」です。

Some comparators may not be usable with substring matches; that is, they may only work with ":is". It is an error to try and use a comparator with ":matches" or ":contains" that is not compatible with it.

一部のコンパレータは、サブストリングマッチで使用できない場合があります。つまり、彼らは「:is」とのみ作業することができます。「:matches」または「:contains」を使用してコンパレータを使用しようとするのはエラーです。

A comparator is specified by the ":comparator" option with commands that support matching. This option is followed by a string providing the name of the comparator to be used. For convenience, the syntax of a comparator is abbreviated to "COMPARATOR", and (repeated in several tests) is as follows:

コンパレータは、マッチングをサポートするコマンドを使用した「:コンパレータ」オプションによって指定されます。このオプションの後には、使用するコンパレータの名前を提供する文字列が続きます。便利なため、コンパレータの構文は「コンパレータ」と略され、(いくつかのテストで繰り返される)は次のとおりです。

   Syntax:   ":comparator" <comparator-name: string>
        

So in this example,

この例では、

   Example:  if header :contains :comparator "i;octet" "Subject"
                "MAKE MONEY FAST" {
                   discard;
             }
        

would discard any message with subjects like "You can MAKE MONEY FAST", but not "You can Make Money Fast", since the comparator used is case-sensitive.

「速くお金を稼ぐことができる」などの主題にメッセージを破棄しますが、「速くお金を稼ぐことができる」ではありません。

Comparators other than i;octet and i;ascii-casemap must be declared with require, as they are extensions. If a comparator declared with require is not known, it is an error, and execution fails. If the comparator is not declared with require, it is also an error, even if the comparator is supported. (See 2.10.5.)

私以外のコンパレータ;オクテットとi; ascii-casemapは、拡張機能であるため、必要とともに宣言する必要があります。要件で宣言されたコンパレータが不明な場合、それはエラーであり、実行は失敗します。コンパレータが必要に応じて宣言されていない場合、コンパレータがサポートされていても、エラーでもあります。(2.10.5を参照してください。)

Both ":matches" and ":contains" match types are compatible with the "i;octet" and "i;ascii-casemap" comparators and may be used with them.

":matches" and ":contas" Match型は、「i; Octet」および「i; ascii-casemap」コンパレータと互換性があり、それらと一緒に使用できます。

It is an error to give more than one of these arguments to a given command.

これらの引数の複数を特定のコマンドに与えることはエラーです。

2.7.4. Comparisons Against Addresses
2.7.4. アドレスとの比較

Addresses are one of the most frequent things represented as strings. These are structured, and being able to compare against the local-part or the domain of an address is useful, so some tests that act exclusively on addresses take an additional optional argument that specifies what the test acts on.

アドレスは、文字列として表される最も頻繁なものの1つです。これらは構造化されており、アドレスのローカルパートまたはドメインと比較できることは有用であるため、アドレスのみで作用するテストでは、テストが機能するものを指定する追加のオプションの引数を採用します。

These optional arguments are ":localpart", ":domain", and ":all", which act on the local-part (left-side), the domain part (right-side), and the whole address.

これらのオプションの引数は、「:localpart "、":domain "、および「all」であり、ローカルパート(左側)、ドメインパーツ(右側)、およびアドレス全体に作用します。

The kind of comparison done, such as whether or not the test done is case-insensitive, is specified as a comparator argument to the test.

実行されたテストがケース非感受性であるかどうかなど、行われた比較の種類は、テストへの比較の引数として指定されています。

If an optional address-part is omitted, the default is ":all".

オプションのアドレスパートが省略されている場合、デフォルトは「:すべて」です。

It is an error to give more than one of these arguments to a given command.

これらの引数の複数を特定のコマンドに与えることはエラーです。

For convenience, the "ADDRESS-PART" syntax element is defined here as follows:

便宜上、「アドレスパート」構文要素は次のように定義されています。

   Syntax:   ":localpart" / ":domain" / ":all"
        
2.8. Blocks
2.8. ブロック

Blocks are sets of commands enclosed within curly braces. Blocks are supplied to commands so that the commands can implement control commands.

ブロックは、カーリーブレース内に囲まれたコマンドのセットです。コマンドが制御コマンドを実装できるように、ブロックはコマンドに提供されます。

A control structure is a command that happens to take a test and a block as one of its arguments; depending on the result of the test supplied as another argument, it runs the code in the block some number of times.

コントロール構造は、たまたまテストとブロックをその議論の1つとして撮影するコマンドです。別の引数として提供されたテストの結果に応じて、数回ブロック内のコードを実行します。

With the commands supplied in this memo, there are no loops. The control structures supplied--if, elsif, and else--run a block either once or not at all. So there are two arguments, the test and the block.

このメモにコマンドが提供されているため、ループはありません。供給された制御構造は、elsif、およびその他 - は、ブロックを一度に実行するかどうかにかかっています。したがって、テストとブロックの2つの引数があります。

2.9. Commands
2.9. コマンド

Sieve scripts are sequences of commands. Commands can take any of the tokens above as arguments, and arguments may be either tagged or positional arguments. Not all commands take all arguments.

ふるいスクリプトはコマンドのシーケンスです。コマンドは上記のトークンを引数として取得でき、引数はタグ付けまたは位置的な引数のいずれかです。すべてのコマンドがすべての議論を取るわけではありません。

There are three kinds of commands: test commands, action commands, and control commands.

コマンドには、テストコマンド、アクションコマンド、および制御コマンドの3種類があります。

The simplest is an action command. An action command is an identifier followed by zero or more arguments, terminated by a semicolon. Action commands do not take tests or blocks as arguments.

最も簡単なのはアクションコマンドです。アクションコマンドは、ゼロ以上の引数が続く識別子であり、セミコロンによって終了しました。アクションコマンドは、引数としてテストやブロックを取得しません。

A control command is similar, but it takes a test as an argument, and ends with a block instead of a semicolon.

コントロールコマンドは似ていますが、テストを引数として取り、セミコロンの代わりにブロックで終了します。

A test command is used as part of a control command. It is used to specify whether or not the block of code given to the control command is executed.

テストコマンドは、制御コマンドの一部として使用されます。制御コマンドに与えられたコードのブロックが実行されるかどうかを指定するために使用されます。

2.10. Evaluation
2.10. 評価
2.10.1. Action Interaction
2.10.1. アクションインタラクション

Some actions cannot be used with other actions because the result would be absurd. These restrictions are noted throughout this memo.

結果はばかげているため、他のアクションでは使用できません。これらの制限は、このメモ全体で注目されています。

Extension actions MUST state how they interact with actions defined in this specification.

拡張アクションは、この仕様で定義されているアクションとの相互作用方法を述べる必要があります。

2.10.2. Implicit Keep
2.10.2. 暗黙のキープ

Previous experience with filtering systems suggests that cases tend to be missed in scripts. To prevent errors, Sieve has an "implicit keep".

フィルタリングシステムの以前の経験は、スクリプトでケースが見逃される傾向があることを示唆しています。エラーを防ぐために、ふるいには「暗黙のキープ」があります。

An implicit keep is a keep action (see 4.4) performed in absence of any action that cancels the implicit keep.

暗黙のキープは、暗黙のキープをキャンセルするアクションがない場合に実行されるキープアクション(4.4を参照)です。

An implicit keep is performed if a message is not written to a mailbox, redirected to a new address, or explicitly thrown out. That is, if a fileinto, a keep, a redirect, or a discard is performed, an implicit keep is not.

メッセージがメールボックスに書き込まれない、新しいアドレスにリダイレクトされていない、または明示的に廃止された場合、暗黙のキープが実行されます。つまり、fileinto、keep、redirect、またはaddardが実行される場合、暗黙のキープはそうではありません。

Some actions may be defined to not cancel the implicit keep. These actions may not directly affect the delivery of a message, and are used for their side effects. None of the actions specified in this document meet that criteria, but extension actions will.

暗黙のキープをキャンセルしないように定義される場合があります。これらのアクションは、メッセージの配信に直接影響しない可能性があり、副作用に使用されます。このドキュメントで指定されたアクションはいずれも、その基準を満たしていませんが、拡張アクションはそうします。

For instance, with any of the short messages offered above, the following script produces no actions.

たとえば、上記の短いメッセージのいずれかで、次のスクリプトではアクションが生成されません。

   Example:  if size :over 500K { discard; }
        

As a result, the implicit keep is taken.

その結果、暗黙のキープが取られます。

2.10.3. Message Uniqueness in a Mailbox
2.10.3. メールボックス内のメッセージの一意性

Implementations SHOULD NOT deliver a message to the same folder more than once, even if a script explicitly asks for a message to be written to a mailbox twice.

実装は、スクリプトがメッセージを2回記述するように明示的に要求する場合でも、同じフォルダーにメッセージを複数回配信しないでください。

The test for equality of two messages is implementation-defined.

2つのメッセージの平等のテストは実装定義です。

If a script asks for a message to be written to a mailbox twice, it MUST NOT be treated as an error.

スクリプトがメッセージを2回メールボックスに書き込ませるように要求する場合、エラーとして扱われてはなりません。

2.10.4. Limits on Numbers of Actions
2.10.4. アクションの数の制限

Site policy MAY limit numbers of actions taken and MAY impose restrictions on which actions can be used together. In the event that a script hits a policy limit on the number of actions taken for a particular message, an error occurs.

サイトポリシーは、取られたアクションの数を制限する場合があり、どのアクションを一緒に使用できるかに制限を課す場合があります。スクリプトが特定のメッセージに対して取られたアクションの数にポリシーの制限に達した場合、エラーが発生します。

Implementations MUST prohibit more than one reject.

実装は、複数の拒否を禁止する必要があります。

Implementations MUST allow at least one keep or one fileinto. If fileinto is not implemented, implementations MUST allow at least one keep.

実装では、少なくとも1つまたは1つのfileintoを許可する必要があります。FileINTOが実装されていない場合、実装は少なくとも1つのKEEPを許可する必要があります。

Implementations SHOULD prohibit reject when used with other actions.

実装は、他のアクションで使用される場合、拒否を禁止する必要があります。

2.10.5. Extensions and Optional Features
2.10.5. 拡張機能とオプション機能

Because of the differing capabilities of many mail systems, several features of this specification are optional. Before any of these extensions can be executed, they must be declared with the "require" action.

多くのメールシステムの機能が異なるため、この仕様のいくつかの機能はオプションです。これらの拡張機能のいずれかを実行する前に、「要求」アクションで宣言する必要があります。

If an extension is not enabled with "require", implementations MUST treat it as if they did not support it at all.

拡張機能が「要求」で有効になっていない場合、実装はまったくサポートしていないかのように扱う必要があります。

If a script does not understand an extension declared with require, the script must not be used at all. Implementations MUST NOT execute scripts which require unknown capability names.

スクリプトが必要に応じて宣言された拡張機能を理解していない場合、スクリプトをまったく使用してはなりません。実装は、不明な機能名を必要とするスクリプトを実行してはなりません。

Note: The reason for this restriction is that prior experiences with languages such as LISP and Tcl suggest that this is a workable way of noting that a given script uses an extension.

注:この制限の理由は、LISPやTCLなどの言語での以前の経験が、これが特定のスクリプトが拡張機能を使用していることに注意する実行可能な方法であることを示唆しているためです。

Experience with PostScript suggests that mechanisms that allow a script to work around missing extensions are not used in practice.

PostScriptの経験は、スクリプトが不足している拡張機能を回避できるメカニズムが実際には使用されていないことを示唆しています。

Extensions which define actions MUST state how they interact with actions discussed in the base specification.

アクションを定義する拡張機能は、基本仕様で議論されたアクションとの相互作用方法を述べる必要があります。

2.10.6. Errors
2.10.6. エラー

In any programming language, there are compile-time and run-time errors.

任意のプログラミング言語では、コンパイル時間とランタイムエラーがあります。

Compile-time errors are ones in syntax that are detectable if a syntax check is done.

コンパイル時間エラーは、構文チェックが完了した場合に検出可能な構文内の構文です。

Run-time errors are not detectable until the script is run. This includes transient failures like disk full conditions, but also includes issues like invalid combinations of actions.

実行時エラーは、スクリプトが実行されるまで検出できません。これには、ディスクの完全な条件などの一時的な障害が含まれますが、アクションの無効な組み合わせなどの問題も含まれます。

When an error occurs in a Sieve script, all processing stops.

ふるいスクリプトでエラーが発生すると、すべての処理が停止します。

Implementations MAY choose to do a full parse, then evaluate the script, then do all actions. Implementations might even go so far as to ensure that execution is atomic (either all actions are executed or none are executed).

実装は、完全な解析を行い、スクリプトを評価し、すべてのアクションを実行することを選択できます。実装は、実行がアトミックであることを確認するためにさえ進むことさえあります(すべてのアクションが実行されるか、実行されないものもありません)。

Other implementations may choose to parse and run at the same time. Such implementations are simpler, but have issues with partial failure (some actions happen, others don't).

他の実装は、同時に解析して実行することを選択できます。このような実装はより簡単ですが、部分的な障害に問題があります(一部のアクションは発生し、他のアクションは発生しません)。

Implementations might even go so far as to ensure that scripts can never execute an invalid set of actions (e.g., reject + fileinto) before execution, although this could involve solving the Halting Problem.

実装は、実行前にスクリプトが無効なアクションセット(例えば、fileintoを拒否する)を実行できないことを保証することさえありますが、これには停止問題の解決が含まれます。

This specification allows any of these approaches. Solving the Halting Problem is considered extra credit.

この仕様により、これらのアプローチが可能になります。停止問題を解決することは、余分なクレジットと見なされます。

When an error happens, implementations MUST notify the user that an error occurred, which actions (if any) were taken, and do an implicit keep.

エラーが発生した場合、実装はユーザーにエラーが発生し、どのアクション(もしあれば)が実行されたことを通知し、暗黙のキープを実行する必要があります。

2.10.7. Limits on Execution
2.10.7. 実行の制限

Implementations may limit certain constructs. However, this specification places a lower bound on some of these limits.

実装は、特定の構成要素を制限する場合があります。ただし、この仕様は、これらの制限のいくつかに下限を掲載しています。

Implementations MUST support fifteen levels of nested blocks.

実装は、15レベルのネストブロックをサポートする必要があります。

Implementations MUST support fifteen levels of nested test lists.

実装は、ネストされたテストリストの15レベルをサポートする必要があります。

3. Control Commands
3. コントロールコマンド

Control structures are needed to allow for multiple and conditional actions.

複数の条件付きアクションを可能にするには、制御構造が必要です。

3.1. Control Structure If
3.1. IFの制御構造

There are three pieces to if: "if", "elsif", and "else". Each is actually a separate command in terms of the grammar. However, an elsif MUST only follow an if, and an else MUST follow only either an if or an elsif. An error occurs if these conditions are not met.

ifには3つのピースがあります:「if」、「elsif」、および「else」。それぞれは、実際には文法の観点から個別のコマンドです。ただし、ELSIFはIFのみに従う必要があり、ELSはifまたはelsifのいずれかのみに従う必要があります。これらの条件が満たされない場合、エラーが発生します。

   Syntax:   if <test1: test> <block1: block>
        
   Syntax:   elsif <test2: test> <block2: block>
        
   Syntax:   else <block>
        

The semantics are similar to those of any of the many other programming languages these control commands appear in. When the interpreter sees an "if", it evaluates the test associated with it. If the test is true, it executes the block associated with it.

セマンティクスは、これらの制御コマンドが表示される他の多くのプログラミング言語のセマンティクスと類似しています。インタープリターが「if」を見ると、それに関連するテストを評価します。テストが真の場合、それに関連付けられたブロックを実行します。

If the test of the "if" is false, it evaluates the test of the first "elsif" (if any). If the test of "elsif" is true, it runs the elsif's block. An elsif may be followed by an elsif, in which case, the interpreter repeats this process until it runs out of elsifs.

「if」のテストがfalseの場合、最初の「elsif」のテスト(存在する場合)を評価します。「elsif」のテストが本当なら、それはelsifのブロックを実行します。Elsifの後にElsifが続く場合があります。その場合、通訳者はELSIFがなくなるまでこのプロセスを繰り返します。

When the interpreter runs out of elsifs, there may be an "else" case. If there is, and none of the if or elsif tests were true, the interpreter runs the else case.

インタープリターがElsifsを使い果たすと、「他の」ケースがある可能性があります。IFまたはELSIFテストが真実であれば、存在しない場合、インタープリターは他のケースを実行します。

This provides a way of performing exactly one of the blocks in the chain.

これは、チェーン内のブロックの1つを正確に実行する方法を提供します。

In the following example, both Message A and B are dropped.

次の例では、メッセージAとBの両方がドロップされます。

   Example:  require "fileinto";
             if header :contains "from" "coyote" {
                discard;
             } elsif header :contains ["subject"] ["$$$"] {
                discard;
             } else {
                fileinto "INBOX";
             }
        

When the script below is run over message A, it redirects the message to acm@example.edu; message B, to postmaster@example.edu; any other message is redirected to field@example.edu.

以下のスクリプトがメッセージAの上に実行されると、メッセージがacm@example.eduにリダイレクトされます。メッセージB、postmaster@example.eduへ。その他のメッセージは、field@example.eduにリダイレクトされます。

   Example:  if header :contains ["From"] ["coyote"] {
                redirect "acm@example.edu";
             } elsif header :contains "Subject" "$$$" {
                redirect "postmaster@example.edu";
             } else {
                redirect "field@example.edu";
             }
        

Note that this definition prohibits the "... else if ..." sequence used by C. This is intentional, because this construct produces a shift-reduce conflict.

この定義は、Cで使用される「... else ...」シーケンスを禁止することに注意してください。

3.2. Control Structure Require
3.2. 制御構造が必要です
   Syntax:   require <capabilities: string-list>
        

The require action notes that a script makes use of a certain extension. Such a declaration is required to use the extension, as discussed in section 2.10.5. Multiple capabilities can be declared with a single require.

要求アクションは、スクリプトが特定の拡張機能を使用していることに注意してください。 このような宣言は、セクション2.10.5で説明したように、拡張機能を使用する必要があります。 複数の機能は、単一の要求で宣言できます。

The require command, if present, MUST be used before anything other than a require can be used. An error occurs if a require appears after a command other than require.

要件以外のものを使用する前に、存在する場合は、要求コマンドを使用する必要があります。要求以外のコマンドの後に要件が表示された場合、エラーが発生します。

Example: require ["fileinto", "reject"];

例:["fileinto"、 "rexect"]を要求します。

Example: require "fileinto"; require "vacation";

例:「fileinto」が必要です。「休暇」が必要です。

3.3. Control Structure Stop
3.3. 制御構造の停止

Syntax: stop

構文:停止

The "stop" action ends all processing. If no actions have been executed, then the keep action is taken.

「停止」アクションはすべての処理を終了します。アクションが実行されていない場合、Keepアクションが実行されます。

4. Action Commands
4. アクションコマンド

This document supplies five actions that may be taken on a message: keep, fileinto, redirect, reject, and discard.

このドキュメントは、メッセージに掲載される可能性のある5つのアクションを提供します。

Implementations MUST support the "keep", "discard", and "redirect" actions.

実装は、「Keep」、「廃棄」、および「リダイレクト」アクションをサポートする必要があります。

Implementations SHOULD support "reject" and "fileinto".

実装は、「拒否」と「fileinto」をサポートする必要があります。

Implementations MAY limit the number of certain actions taken (see section 2.10.4).

実装では、実行される特定のアクションの数が制限される場合があります(セクション2.10.4を参照)。

4.1. Action reject
4.1. アクション拒否
   Syntax:   reject <reason: string>
        

The optional "reject" action refuses delivery of a message by sending back an [MDN] to the sender. It resends the message to the sender, wrapping it in a "reject" form, noting that it was rejected by the recipient. In the following script, message A is rejected and returned to the sender.

オプションの「拒否」アクションは、[MDN]を送信者に送り返すことにより、メッセージの配信を拒否します。送信者へのメッセージを再送信し、それを「拒否」フォームに包み、受信者によって拒否されたことに注目します。次のスクリプトでは、メッセージAが拒否され、送信者に返されます。

   Example:  if header :contains "from" "coyote@desert.example.org" {
                reject "I am not taking mail from you, and I don't want
                your birdseed, either!";
             }
        

A reject message MUST take the form of a failure MDN as specified by [MDN]. The human-readable portion of the message, the first component of the MDN, contains the human readable message describing the error, and it SHOULD contain additional text alerting the original sender that mail was refused by a filter. This part of the MDN might appear as follows:

拒否メッセージは、[MDN]で指定されているように、障害MDNの形を取得する必要があります。MDNの最初のコンポーネントであるメッセージの人間の読み取り可能な部分には、エラーを説明する人間の読み取り可能なメッセージが含まれており、フィルターによってメールが拒否されたことを元の送信者に警告する追加のテキストが含まれている必要があります。MDNのこの部分は次のように表示される場合があります。

   ------------------------------------------------------------
   Message was refused by recipient's mail filtering program.  Reason
   given was as follows:
        
   I am not taking mail from you, and I don't want your birdseed,
   either!
   ------------------------------------------------------------
        

The MDN action-value field as defined in the MDN specification MUST be "deleted" and MUST have the MDN-sent-automatically and automatic-action modes set.

MDN仕様で定義されているMDNアクション値フィールドは「削除」する必要があり、MDN-Sent-Automalityおよび自動アクションモードを設定する必要があります。

Because some implementations can not or will not implement the reject command, it is optional. The capability string to be used with the require command is "reject".

一部の実装は拒否コマンドを実装できないか、実装できないため、オプションです。要求コマンドで使用する機能文字列は「拒否」です。

4.2. Action fileinto
4.2. アクションfileinto
   Syntax:   fileinto <folder: string>
        

The "fileinto" action delivers the message into the specified folder. Implementations SHOULD support fileinto, but in some environments this may be impossible.

「fileinto」アクションは、指定されたフォルダーにメッセージを配信します。実装はfileintoをサポートする必要がありますが、一部の環境ではこれは不可能かもしれません。

The capability string for use with the require command is "fileinto".

要求コマンドで使用する機能文字列は「fileinto」です。

In the following script, message A is filed into folder "INBOX.harassment".

次のスクリプトでは、メッセージaがフォルダー「inbox.harassment」に提出されます。

   Example:  require "fileinto";
             if header :contains ["from"] "coyote" {
                fileinto "INBOX.harassment";
             }
        
4.3. Action redirect
4.3. アクションリダイレクト
   Syntax:   redirect <address: string>
        

The "redirect" action is used to send the message to another user at a supplied address, as a mail forwarding feature does. The "redirect" action makes no changes to the message body or existing headers, but it may add new headers. The "redirect" modifies the envelope recipient.

「リダイレクト」アクションは、メール転送機能がそうであるように、提供されたアドレスで別のユーザーにメッセージを送信するために使用されます。「リダイレクト」アクションは、メッセージ本文または既存のヘッダーに変更を加えませんが、新しいヘッダーを追加する可能性があります。「リダイレクト」は、エンベロープの受信者を変更します。

The redirect command performs an MTA-style "forward"--that is, what you get from a .forward file using sendmail under UNIX. The address on the SMTP envelope is replaced with the one on the redirect command and the message is sent back out. (This is not an MUA-style forward, which creates a new message with a different sender and message ID, wrapping the old message in a new one.)

Redirectコマンドは、MTAスタイルの「フォワード」を実行します。つまり、UNIXの下でSendMailを使用して、Forwardファイルから得られるものです。SMTPエンベロープのアドレスは、リダイレクトコマンドのアドレスに置き換えられ、メッセージが送信されます。(これはMUAスタイルのフォワードではありません。これは、異なる送信者とメッセージIDを使用して新しいメッセージを作成し、古いメッセージを新しいメッセージに包みます。)

A simple script can be used for redirecting all mail:

すべてのメールをリダイレクトするために、簡単なスクリプトを使用できます。

   Example:  redirect "bart@example.edu";
        

Implementations SHOULD take measures to implement loop control, possibly including adding headers to the message or counting received headers. If an implementation detects a loop, it causes an error.

実装は、メッセージにヘッダーを追加したり、受信したヘッダーをカウントするなど、ループ制御を実装するための措置を講じる必要があります。実装がループを検出すると、エラーが発生します。

4.4. Action keep
4.4. アクションキープ

Syntax: keep

構文:キープ

The "keep" action is whatever action is taken in lieu of all other actions, if no filtering happens at all; generally, this simply means to file the message into the user's main mailbox. This command provides a way to execute this action without needing to know the name of the user's main mailbox, providing a way to call it without needing to understand the user's setup, or the underlying mail system.

「キープ」アクションは、フィルタリングがまったく発生しない場合、他のすべてのアクションの代わりにアクションが実行されるものです。一般的に、これは単にユーザーのメインメールボックスにメッセージを提出することを意味します。このコマンドは、ユーザーのメインメールボックスの名前を知らずにこのアクションを実行する方法を提供し、ユーザーのセットアップや基礎となるメールシステムを理解せずに呼び出す方法を提供します。

For instance, in an implementation where the IMAP server is running scripts on behalf of the user at time of delivery, a keep command is equivalent to a fileinto "INBOX".

たとえば、IMAPサーバーが配信時にユーザーに代わってスクリプトを実行している実装では、KeepコマンドはFileInto "Inbox"に相当します。

   Example:  if size :under 1M { keep; } else { discard; }
        

Note that the above script is identical to the one below.

上記のスクリプトは以下のスクリプトと同じであることに注意してください。

   Example:  if not size :under 1M { discard; }
        
4.5. Action discard
4.5. アクション廃棄

Syntax: discard

構文:破棄

Discard is used to silently throw away the message. It does so by simply canceling the implicit keep. If discard is used with other actions, the other actions still happen. Discard is compatible with all other actions. (For instance fileinto+discard is equivalent to fileinto.)

廃棄は、メッセージを静かに捨てるために使用されます。暗黙のキープをキャンセルするだけでそうします。他のアクションで破棄が使用されている場合、他のアクションがまだ発生します。破棄は、他のすべてのアクションと互換性があります。(たとえば、fileintoの破棄はFileIntoと同等です。)

Discard MUST be silent; that is, it MUST NOT return a non-delivery notification of any kind ([DSN], [MDN], or otherwise).

廃棄は沈黙している必要があります。つまり、いかなる種類の非配信通知([DSN]、[MDN]、またはその他)を返してはなりません。

In the following script, any mail from "idiot@example.edu" is thrown out.

次のスクリプトでは、「itiot@example.edu」からのメールが廃止されます。

   Example:  if header :contains ["from"] ["idiot@example.edu"] {
                discard;
             }
        

While an important part of this language, "discard" has the potential to create serious problems for users: Students who leave themselves logged in to an unattended machine in a public computer lab may find their script changed to just "discard". In order to protect users in this situation (along with similar situations), implementations MAY keep messages destroyed by a script for an indefinite period, and MAY disallow scripts that throw out all mail.

この言語の重要な部分である「廃棄」は、ユーザーに深刻な問題を引き起こす可能性があります。公共のコンピューターラボで無人のマシンにログインしたままにしておく学生は、スクリプトが「廃棄」に変更されることがあります。(同様の状況とともに)この状況でユーザーを保護するために、実装は、スクリプトによって無期限にメッセージを破壊し続ける可能性があり、すべてのメールを削除するスクリプトを禁止する場合があります。

5. Test Commands
5. テストコマンド

Tests are used in conditionals to decide which part(s) of the conditional to execute.

テストは、実行する条件のどの部分を決定するために条件付きで使用されます。

Implementations MUST support these tests: "address", "allof", "anyof", "exists", "false", "header", "not", "size", and "true".

実装は、これらのテストをサポートする必要があります:「アドレス」、「Allof」、「Anyof」、「Exists」、「false」、「Header」、「not」、「size」、および「true」。

Implementations SHOULD support the "envelope" test.

実装は「エンベロープ」テストをサポートする必要があります。

5.1. Test address
5.1. テストアドレス
   Syntax:   address [ADDRESS-PART] [COMPARATOR] [MATCH-TYPE]
             <header-list: string-list> <key-list: string-list>
        

The address test matches Internet addresses in structured headers that contain addresses. It returns true if any header contains any key in the specified part of the address, as modified by the comparator and the match keyword.

アドレステストは、アドレスを含む構造化ヘッダーのインターネットアドレスと一致します。ComparatorとMatchキーワードによって変更されたように、アドレスの指定された部分にヘッダーが任意のキーを含む場合、TRUEが返されます。

Like envelope and header, this test returns true if any combination of the header-list and key-list arguments match.

エンベロープやヘッダーと同様に、このテストは、ヘッダーリストとキーリストの引数の組み合わせが一致する場合に真実です。

Internet email addresses [IMAIL] have the somewhat awkward characteristic that the local-part to the left of the at-sign is considered case sensitive, and the domain-part to the right of the at-sign is case insensitive. The "address" command does not deal with this itself, but provides the ADDRESS-PART argument for allowing users to deal with it.

インターネットのメールアドレス[IMAIL]は、AT-SIGNの左側のローカルパートがケースに敏感であると見なされ、AT-SIGNの右側のドメインパートは症例が鈍感であるというやや厄介な特性を持っています。「アドレス」コマンドはこれ自体を扱うのではなく、ユーザーがそれに対処できるようにするためのアドレスパートの引数を提供します。

The address primitive never acts on the phrase part of an email address, nor on comments within that address. It also never acts on group names, although it does act on the addresses within the group construct.

アドレスプリミティブは、電子メールアドレスのフレーズ部分やそのアドレス内のコメントには決して機能しません。また、グループコンストラクト内のアドレスに作用しますが、グループ名にも作用することはありません。

Implementations MUST restrict the address test to headers that contain addresses, but MUST include at least From, To, Cc, Bcc, Sender, Resent-From, Resent-To, and SHOULD include any other header that utilizes an "address-list" structured header body.

実装は、アドレステストをアドレスを含むが、少なくとも、CC、BCC、送信者、res責、res責、「アドレスリスト」構造を使用する他のヘッダーを含める必要があります。ヘッダーボディ。

   Example:  if address :is :all "from" "tim@example.com" {
                discard;
        
5.2. Test allof
5.2. Allofをテストします
   Syntax:   allof <tests: test-list>
        

The allof test performs a logical AND on the tests supplied to it.

Allofテストは、論理的に、およびそれに提供されたテストで実行されます。

   Example:  allof (false, false)  =>   false
             allof (false, true)   =>   false
             allof (true,  true)   =>   true
        

The allof test takes as its argument a test-list.

Allofテストは、その議論としてテストリストを取得します。

5.3. Test anyof
5.3. 任意のテスト
   Syntax:   anyof <tests: test-list>
        

The anyof test performs a logical OR on the tests supplied to it.

Anyofテストは、論理またはそれに提供されたテストで実行されます。

   Example:  anyof (false, false)  =>   false
             anyof (false, true)   =>   true
             anyof (true,  true)   =>   true
        
5.4. Test envelope
5.4. テストエンベロープ
   Syntax:   envelope [COMPARATOR] [ADDRESS-PART] [MATCH-TYPE]
             <envelope-part: string-list> <key-list: string-list>
        

The "envelope" test is true if the specified part of the SMTP (or equivalent) envelope matches the specified key.

SMTP(または同等の)エンベロープの指定された部分が指定されたキーと一致する場合、「エンベロープ」テストは真です。

If one of the envelope-part strings is (case insensitive) "from", then matching occurs against the FROM address used in the SMTP MAIL command.

エンベロープパートの文字列の1つが(ケースの非感受性)「from」である場合、SMTPメールコマンドで使用されるアドレスから一致することが発生します。

If one of the envelope-part strings is (case insensitive) "to", then matching occurs against the TO address used in the SMTP RCPT command that resulted in this message getting delivered to this user. Note that only the most recent TO is available, and only the one relevant to this user.

エンベロープパートの文字列の1つが(ケースの非感受性)「to」である場合、このメッセージがこのユーザーに配信されるSMTP RCPTコマンドで使用されるアドレスに対して一致することが発生します。最新のもののみが利用可能であり、このユーザーに関連するもののみが利用可能であることに注意してください。

The envelope-part is a string list and may contain more than one parameter, in which case all of the strings specified in the key-list are matched against all parts given in the envelope-part list.

エンベロープパートは文字列リストであり、複数のパラメーターを含む場合があります。この場合、キーリストで指定されたすべての文字列は、エンベロープパートリストに与えられたすべての部品と一致します。

Like address and header, this test returns true if any combination of the envelope-part and key-list arguments is true.

アドレスやヘッダーと同様に、このテストは、エンベロープパートとキーリストの引数の組み合わせが真実である場合にtrueを返します。

All tests against envelopes MUST drop source routes.

封筒に対するすべてのテストは、ソースルートをドロップする必要があります。

If the SMTP transaction involved several RCPT commands, only the data from the RCPT command that caused delivery to this user is available in the "to" part of the envelope.

SMTPトランザクションにいくつかのRCPTコマンドが含まれている場合、このユーザーへの配信を引き起こしたRCPTコマンドのデータのみが、エンベロープの「から」の「」で利用可能です。

If a protocol other than SMTP is used for message transport, implementations are expected to adapt this command appropriately.

SMTP以外のプロトコルがメッセージトランスポートに使用される場合、実装はこのコマンドを適切に適合させることが期待されます。

The envelope command is optional. Implementations SHOULD support it, but the necessary information may not be available in all cases.

Envelopeコマンドはオプションです。実装はそれをサポートする必要がありますが、必要な情報はすべての場合に利用できない場合があります。

   Example:  require "envelope";
             if envelope :all :is "from" "tim@example.com" {
                discard;
             }
        
5.5. Test exists
5.5. テストが存在します
   Syntax:   exists <header-names: string-list>
        

The "exists" test is true if the headers listed in the header-names argument exist within the message. All of the headers must exist or the test is false.

「存在する」テストは、ヘッダー名の引数にリストされているヘッダーがメッセージ内に存在する場合に当てはまります。すべてのヘッダーが存在する必要があります。そうしないと、テストが間違っています。

The following example throws out mail that doesn't have a From header and a Date header.

次の例は、ヘッダーと日付ヘッダーのないメールを削除します。

   Example:  if not exists ["From","Date"] {
                discard;
             }
        
5.6. Test false
5.6. falseをテストします

Syntax: false

構文:false

The "false" test always evaluates to false.

「false」テストは常にfalseに評価されます。

5.7. Test header
5.7. テストヘッダー
   Syntax:   header [COMPARATOR] [MATCH-TYPE]
             <header-names: string-list> <key-list: string-list>
        

The "header" test evaluates to true if any header name matches any key. The type of match is specified by the optional match argument, which defaults to ":is" if not specified, as specified in section 2.6.

「ヘッダー」テストは、ヘッダー名がキーと一致する場合、trueに評価されます。一致のタイプは、セクション2.6で指定されているように、デフォルトで「:指定されていない場合」にデフォルトであるオプションの一致引数によって指定されます。

Like address and envelope, this test returns true if any combination of the string-list and key-list arguments match.

アドレスやエンベロープと同様に、このテストは、文字列とキーリストの引数の任意の組み合わせが一致する場合に真実です。

If a header listed in the header-names argument exists, it contains the null key (""). However, if the named header is not present, it does not contain the null key. So if a message contained the header

ヘッダー名の引数にリストされているヘッダーが存在する場合、nullキー( "")が含まれます。ただし、名前付きヘッダーが存在しない場合、nullキーは含まれていません。したがって、メッセージにヘッダーが含まれている場合

X-Caffeine: C8H10N4O2

X-カフェイン:C8H10N4O2

these tests on that header evaluate as follows:

そのヘッダーに関するこれらのテストは、次のように評価します。

           header :is ["X-Caffeine"] [""]         => false
           header :contains ["X-Caffeine"] [""]   => true
        
5.8. Test not
5.8. テストしません
   Syntax:   not <test>
        

The "not" test takes some other test as an argument, and yields the opposite result. "not false" evaluates to "true" and "not true" evaluates to "false".

「not」テストは、他のテストを引数として取り、反対の結果をもたらします。「虚偽ではない」は、「真」と「真の」と評価され、「false」と評価されます。

5.9. Test size
5.9. テストサイズ
   Syntax:   size <":over" / ":under"> <limit: number>
        

The "size" test deals with the size of a message. It takes either a tagged argument of ":over" or ":under", followed by a number representing the size of the message.

「サイズ」テストは、メッセージのサイズを扱います。「:over」または「:under」というタグ付けされた引数が続き、その後にメッセージのサイズを表す数字が続きます。

If the argument is ":over", and the size of the message is greater than the number provided, the test is true; otherwise, it is false.

引数が「:オーバー」であり、メッセージのサイズが提供されている数よりも大きい場合、テストは真です。そうでなければ、それは誤りです。

If the argument is ":under", and the size of the message is less than the number provided, the test is true; otherwise, it is false.

引数が「:under」であり、メッセージのサイズが提供された数値よりも小さい場合、テストは真です。そうでなければ、それは誤りです。

Exactly one of ":over" or ":under" must be specified, and anything else is an error.

正確には「:over」または「:under」を指定する必要があり、他のものはエラーです。

The size of a message is defined to be the number of octets from the initial header until the last character in the message body.

メッセージのサイズは、最初のヘッダーからメッセージ本文の最後の文字までのオクテットの数であると定義されます。

Note that for a message that is exactly 4,000 octets, the message is neither ":over" 4000 octets or ":under" 4000 octets.

ちょうど4,000オクテットであるメッセージの場合、メッセージは「4000オクテットまたは ":4000オクテット以下でもありません。

5.10. Test true
5.10. trueをテストします

Syntax: true

構文:true

The "true" test always evaluates to true.

「真の」テストは常にTrueに評価されます。

6. Extensibility
6. 拡張性

New control structures, actions, and tests can be added to the language. Sites must make these features known to their users; this document does not define a way to discover the list of extensions supported by the server.

新しい制御構造、アクション、およびテストを言語に追加できます。サイトは、これらの機能をユーザーに知っている必要があります。このドキュメントは、サーバーがサポートする拡張機能のリストを発見する方法を定義していません。

Any extensions to this language MUST define a capability string that uniquely identifies that extension. If a new version of an extension changes the functionality of a previously defined extension, it MUST use a different name.

この言語の拡張機能は、その拡張子を一意に識別する機能文字列を定義する必要があります。拡張機能の新しいバージョンが以前に定義された拡張機能の機能を変更する場合、別の名前を使用する必要があります。

In a situation where there is a submission protocol and an extension advertisement mechanism aware of the details of this language, scripts submitted can be checked against the mail server to prevent use of an extension that the server does not support.

提出プロトコルとこの言語の詳細を認識している拡張広告広告メカニズムがある状況では、送信されたスクリプトをメールサーバーに対して確認して、サーバーがサポートしていない拡張機能の使用を防ぐことができます。

Extensions MUST state how they interact with constraints defined in section 2.10, e.g., whether they cancel the implicit keep, and which actions they are compatible and incompatible with.

拡張機能は、セクション2.10で定義されている制約との相互作用方法、たとえば、暗黙のキープをキャンセルするかどうか、どのアクションが互換性があり、互換性がないかを述べる必要があります。

6.1. Capability String
6.1. 機能文字列

Capability strings are typically short strings describing what capabilities are supported by the server.

機能文字列は通常、サーバーによってサポートされている機能を説明する短い文字列です。

Capability strings beginning with "vnd." represent vendor-defined extensions. Such extensions are not defined by Internet standards or RFCs, but are still registered with IANA in order to prevent conflicts. Extensions starting with "vnd." SHOULD be followed by the name of the vendor and product, such as "vnd.acme.rocket-sled".

「VND」で始まる機能文字列。ベンダー定義の拡張機能を表します。このような拡張機能は、インターネット標準やRFCで定義されていませんが、競合を防ぐためにIANAに登録されています。「VND」から始まる拡張機能。「vnd.acme.rocket-sled」などのベンダーと製品の名前に続いて続く必要があります。

The following capability strings are defined by this document:

次の機能文字列は、このドキュメントで定義されています。

envelope The string "envelope" indicates that the implementation supports the "envelope" command.

エンベロープ文字列「エンベロープ」は、実装が「エンベロープ」コマンドをサポートしていることを示します。

fileinto The string "fileinto" indicates that the implementation supports the "fileinto" command.

fileinto文字列「fileinto」は、実装が「fileinto」コマンドをサポートしていることを示します。

reject The string "reject" indicates that the implementation supports the "reject" command.

拒否文字列「拒否」は、実装が「拒否」コマンドをサポートしていることを示します。

comparator- The string "comparator-elbonia" is provided if the implementation supports the "elbonia" comparator. Therefore, all implementations have at least the "comparator-i;octet" and "comparator-i;ascii-casemap" capabilities. However, these comparators may be used without being declared with require.

比較 - 実装が「エルボニア」コンパレータをサポートする場合、文字列「コンパレータエルボニア」が提供されます。したがって、すべての実装には、少なくとも「Comparator-I; Octet」および「Comparator-I; ASCII-CASEMAP」機能があります。ただし、これらのコンパレータは、要求とともに宣言されることなく使用できます。

6.2. IANA Considerations
6.2. IANAの考慮事項

In order to provide a standard set of extensions, a registry is provided by IANA. Capability names may be registered on a first-come, first-served basis. Extensions designed for interoperable use SHOULD be defined as standards track or IESG approved experimental RFCs.

標準の拡張セットを提供するために、IANAによってレジストリが提供されます。機能名は、先着順で登録できます。相互運用可能な使用用に設計された拡張機能は、標準トラックまたはIESG承認の実験RFCとして定義する必要があります。

6.2.1. Template for Capability Registrations
6.2.1. 機能登録用のテンプレート

The following template is to be used for registering new Sieve extensions with IANA.

次のテンプレートは、IANAに新しいふるい拡張機能を登録するために使用されます。

To: iana@iana.org Subject: Registration of new Sieve extension

宛先:iana@iana.org件名:新しいふるい延長の登録

Capability name: Capability keyword: Capability arguments: Standards Track/IESG-approved experimental RFC number: Person and email address to contact for further information:

機能名:機能キーワード:機能引数:標準トラック/IESG承認実験RFC番号:人とメールアドレスへの連絡先

6.2.2. Initial Capability Registrations
6.2.2. 初期機能登録

The following are to be added to the IANA registry for Sieve extensions as the initial contents of the capability registry.

以下は、機能レジストリの初期内容として、Sieve ExtensionsのIANAレジストリに追加されます。

Capability name: fileinto Capability keyword: fileinto Capability arguments: fileinto <folder: string> Standards Track/IESG-approved experimental RFC number: RFC 3028 (Sieve base spec) Person and email address to contact for further information: Tim Showalter tjs@mirapoint.com

機能名:FileInto機能キーワード:FileInto機能引数:FileInto <Folder:String> Standards Track/IESGが承認した実験RFC番号:RFC 3028(Sieve Base Spec)個人およびメールアドレス連絡先com

Capability name: reject Capability keyword: reject Capability arguments: reject <reason: string> Standards Track/IESG-approved experimental RFC number: RFC 3028 (Sieve base spec) Person and email address to contact for further information: Tim Showalter tjs@mirapoint.com

能力名:拒否機能キーワード:拒否機能引数:拒否<理由:String>標準トラック/IESG承認の実験RFC番号:RFC 3028(Sieve Base Spec)個人とメールアドレスを連絡先com

   Capability name:        envelope
   Capability keyword:     envelope
   Capability arguments:
           envelope [COMPARATOR] [ADDRESS-PART] [MATCH-TYPE]
           <envelope-part: string-list> <key-list: string-list>
   Standards Track/IESG-approved experimental RFC number:
           RFC 3028 (Sieve base spec)
   Person and email address to contact for further information:
           Tim Showalter
           tjs@mirapoint.com
        

Capability name: comparator-* Capability keyword: comparator-* (anything starting with "comparator-") Capability arguments: (none) Standards Track/IESG-approved experimental RFC number: RFC 3028, Sieve, by reference of RFC 2244, Application Configuration Access Protocol Person and email address to contact for further information: Tim Showalter tjs@mirapoint.com

機能名:Comparator-*機能キーワード:Comparator-*(「Comparator-」から始まるもの)機能引数:(なし)標準トラック/IESG承認実験RFC番号:RFC 3028、SIVE、RFC 2244、アプリケーション構成詳細については、アクセスプロトコル担当者とメールアドレスに連絡するためのメールアドレス:Tim Showalter tjs@mirapoint.com

6.3. Capability Transport
6.3. 機能輸送

As the range of mail systems that this document is intended to apply to is quite varied, a method of advertising which capabilities an implementation supports is difficult due to the wide range of possible implementations. Such a mechanism, however, should have property that the implementation can advertise the complete set of extensions that it supports.

このドキュメントが適用することを目的としているメールシステムの範囲は非常に多様であるため、実装が幅広く実装されるため、実装がサポートする機能が困難です。ただし、このようなメカニズムには、実装がサポートする拡張機能の完全なセットを宣伝できるプロパティが必要です。

7. Transmission
7. 伝染 ; 感染

The MIME type for a Sieve script is "application/sieve".

ふるいスクリプトのmimeタイプは「アプリケーション/ふるい」です。

The registration of this type for RFC 2048 requirements is as follows:

RFC 2048要件のこのタイプの登録は次のとおりです。

Subject: Registration of MIME media type application/sieve

件名:MIMEメディアタイプアプリケーション/ふるいの登録

MIME media type name: application MIME subtype name: sieve Required parameters: none Optional parameters: none Encoding considerations: Most sieve scripts will be textual, written in UTF-8. When non-7bit characters are used, quoted-printable is appropriate for transport systems that require 7bit encoding.

MIMEメディアタイプ名:アプリケーションMIMEサブタイプ名:SIVE必要なパラメーター:なしオプションのパラメーター:なしエンコーディング考慮事項:ほとんどのシーブスクリプトは、UTF-8で記述されたテキストです。7ビット文字以外の文字が使用される場合、引用された印刷可能なものは、7ビットエンコーディングを必要とする輸送システムに適しています。

Security considerations: Discussed in section 10 of RFC 3028. Interoperability considerations: Discussed in section 2.10.5 of RFC 3028. Published specification: RFC 3028. Applications which use this media type: sieve-enabled mail servers Additional information: Magic number(s): File extension(s): .siv Macintosh File Type Code(s): Person & email address to contact for further information: See the discussion list at ietf-mta-filters@imc.org. Intended usage: COMMON Author/Change controller: See Author information in RFC 3028.

セキュリティの考慮事項:RFC 3028のセクション10で説明。相互運用性の考慮事項:RFC 3028のセクション2.10.5で説明。公開された仕様:RFC 3028.このメディアタイプ:Sieve対応メールサーバー追加情報:マジック番号(S):ファイル拡張子:.siv Macintoshファイルタイプコード:人と電子メールアドレスを連絡先に詳細:IETF-MTA-filters@imc.orgのディスカッションリストを参照してください。意図された使用法:共通の著者/変更コントローラー:RFC 3028の著者情報を参照してください。

8. Parsing
8. 解析

The Sieve grammar is separated into tokens and a separate grammar as most programming languages are.

シーブ文法は、ほとんどのプログラミング言語と同様に、トークンと別の文法に分けられます。

8.1. Lexical Tokens
8.1. 語彙トークン

Sieve scripts are encoded in UTF-8. The following assumes a valid UTF-8 encoding; special characters in Sieve scripts are all ASCII.

ふるいスクリプトはUTF-8でエンコードされています。以下は、有効なUTF-8エンコーディングを想定しています。シーブスクリプトの特殊文字はすべてASCIIです。

The following are tokens in Sieve:

以下はふるいのトークンです:

- identifiers - tags - numbers - quoted strings - multi-line strings - other separators

- 識別子 - タグ - 数字 - 引用文字列 - マルチライン文字列 - 他のセパレーター

Blanks, horizontal tabs, CRLFs, and comments ("white space") are ignored except as they separate tokens. Some white space is required to separate otherwise adjacent tokens and in specific places in the multi-line strings.

ブランク、水平タブ、CRLF、およびコメント(「ホワイトスペース」)は、トークンを分離する場合を除き、無視されます。隣接するトークンを分離し、多線文字列の特定の場所で分離するには、一部の空白が必要です。

The other separators are single individual characters, and are mentioned explicitly in the grammar.

他のセパレーターは単一の個別の文字であり、文法で明示的に言及されています。

   The lexical structure of sieve is defined in the following BNF (as
   described in [ABNF]):
      bracket-comment = "/*" *(CHAR-NOT-STAR / ("*" CHAR-NOT-SLASH)) "*/"
           ;; No */ allowed inside a comment.
           ;; (No * is allowed unless it is the last character,
           ;; or unless it is followed by a character that isn't a
           ;; slash.)
        
   CHAR-NOT-DOT = (%x01-09 / %x0b-0c / %x0e-2d / %x2f-ff)
           ;; no dots, no CRLFs
        
   CHAR-NOT-CRLF = (%x01-09 / %x0b-0c / %x0e-ff)
        
   CHAR-NOT-SLASH = (%x00-57 / %x58-ff)
        
   CHAR-NOT-STAR = (%x00-51 / %x53-ff)
        
   comment = bracket-comment / hash-comment
        
   hash-comment = ( "#" *CHAR-NOT-CRLF CRLF )
        
   identifier = (ALPHA / "_") *(ALPHA DIGIT "_")
        

tag = ":" identifier

tag = ":"識別子

   number = 1*DIGIT [QUANTIFIER]
        
   QUANTIFIER = "K" / "M" / "G"
        
   quoted-string = DQUOTE *CHAR DQUOTE
           ;; in general, \ CHAR inside a string maps to CHAR
           ;; so \" maps to " and \\ maps to \
           ;; note that newlines and other characters are all allowed
           ;; strings
        
   multi-line          = "text:" *(SP / HTAB) (hash-comment / CRLF)
                         *(multi-line-literal / multi-line-dotstuff)
                         "." CRLF
   multi-line-literal  = [CHAR-NOT-DOT *CHAR-NOT-CRLF] CRLF
   multi-line-dotstuff = "." 1*CHAR-NOT-CRLF CRLF
           ;; A line containing only "." ends the multi-line.
           ;; Remove a leading '.' if followed by another '.'.
        
   white-space = 1*(SP / CRLF / HTAB) / comment
        
8.2. Grammar
8.2. 文法

The following is the grammar of Sieve after it has been lexically interpreted. No white space or comments appear below. The start symbol is "start".

以下は、逆に解釈された後のふるいの文法です。以下に空白やコメントはありません。開始シンボルは「start」です。

   argument = string-list / number / tag
        
   arguments = *argument [test / test-list]
        
   block = "{" commands "}"
        
   command = identifier arguments ( ";" / block )
        
   commands = *command
        
   start = commands
        
   string = quoted-string / multi-line
        
   string-list = "[" string *("," string) "]" / string         ;; if
   there is only a single string, the brackets are optional
        
   test = identifier arguments
        
   test-list = "(" test *("," test) ")"
        
9. Extended Example
9. 拡張例

The following is an extended example of a Sieve script. Note that it does not make use of the implicit keep.

以下は、ふるいスクリプトの拡張例です。暗黙のキープを使用していないことに注意してください。

# # Example Sieve Filter # Declare any optional features or extension used by the script # require ["fileinto", "reject"];

##例のシーブフィルター#スクリプトで使用されるオプションの機能または拡張機能を宣言します#["fileinto"、 "reject"];

    #
    # Reject any large messages (note that the four leading dots get
    # "stuffed" to three)
    #
    if size :over 1M
            {
            reject text:
    Please do not send me large attachments.
    Put your file on a server and send me the URL.
    Thank you.
    .... Fred
    .
    ;
            stop;
            }
    #
        
    # Handle messages from known mailing lists
    # Move messages from IETF filter discussion list to filter folder
    #
    if header :is "Sender" "owner-ietf-mta-filters@imc.org"
            {
            fileinto "filter";  # move to "filter" folder
            }
    #
    # Keep all messages to or from people in my company
    #
    elsif address :domain :is ["From", "To"] "example.com"
            {
            keep;               # keep in "In" folder
            }
        
    #
    # Try and catch unsolicited email.  If a message is not to me,
    # or it contains a subject known to be spam, file it away.
    #
    elsif anyof (not address :all :contains
                   ["To", "Cc", "Bcc"] "me@example.com",
                 header :matches "subject"
                   ["*make*money*fast*", "*university*dipl*mas*"])
            {
            # If message header does not contain my address,
            # it's from a list.
            fileinto "spam";   # move to "spam" folder
            }
    else
            {
            # Move all other (non-company) mail to "personal"
            # folder.
            fileinto "personal";
            }
        
10. Security Considerations
10. セキュリティに関する考慮事項

Users must get their mail. It is imperative that whatever method implementations use to store the user-defined filtering scripts be secure.

ユーザーはメールを取得する必要があります。ユーザー定義のフィルタリングスクリプトを保存するために使用する方法を使用するものをすべて安全にすることが不可欠です。

It is equally important that implementations sanity-check the user's scripts, and not allow users to create on-demand mailbombs. For instance, an implementation that allows a user to reject or redirect multiple times to a single message might also allow a user to create a mailbomb triggered by mail from a specific user. Site- or implementation-defined limits on actions are useful for this.

ユーザーのスクリプトを実装して、ユーザーのスクリプトを確認し、ユーザーがオンデマンドのメールボムを作成できるようにすることも同様に重要です。たとえば、ユーザーが単一のメッセージに複数回拒否またはリダイレクトできるようにする実装では、ユーザーが特定のユーザーからメールでトリガーされたメールボムを作成できる場合もあります。これには、サイトまたは実装定義の制限が役立ちます。

Several commands, such as "discard", "redirect", and "fileinto" allow for actions to be taken that are potentially very dangerous.

「破棄」、「リダイレクト」、「fileinto」などのいくつかのコマンドにより、潜在的に非常に危険なアクションが実行される可能性があります。

Implementations SHOULD take measures to prevent languages from looping.

実装では、言語がループするのを防ぐための措置を講じる必要があります。

11. Acknowledgments
11. 謝辞

I am very thankful to Chris Newman for his support and his ABNF syntax checker, to John Myers and Steve Hole for outlining the requirements for the original drafts, to Larry Greenfield for nagging me about the grammar and finally fixing it, to Greg Sereda for repeatedly fixing and providing examples, to Ned Freed for fixing everything else, to Rob Earhart for an early implementation and a great deal of help, and to Randall Gellens for endless amounts of proofreading. I am grateful to Carnegie Mellon University where most of the work on this document was done. I am also indebted to all of the readers of the ietf-mta-filters@imc.org mailing list.

クリス・ニューマンのサポートと彼のABNF構文チェッカー、元のドラフトの要件を概説してくれたジョン・マイヤーズとスティーブ・ホールに、文法について私を悩ませ、最後にそれを修正してくれたラリー・グリーンフィールドに、グレッグ・セレダへのラリー・グリーンフィールドに、グレッグ・セレダに繰り返し感謝してくれたことに非常に感謝しています。例を修正し、提供し、他のすべてを修正するためにNed Freedに、早期の実装と多大な支援のためにEarhartを奪い、無限の量の校正のためにRandall Gellensに提供します。この文書の作業のほとんどが行われたカーネギーメロン大学に感謝しています。また、IETF-MTA-filters@imc.orgメーリングリストのすべての読者にも感謝しています。

12. Author's Address
12. 著者の連絡先

Tim Showalter Mirapoint, Inc. 909 Hermosa Court Sunnyvale, CA 94085

Tim Showalter Mirapoint、Inc。909 Hermosa Court Sunnyvale、CA 94085

   EMail: tjs@mirapoint.com
        
13. References
13. 参考文献

[ABNF] Crocker, D. and P. Overell, "Augmented BNF for Syntax Specifications: ABNF", RFC 2234, November 1997.

[ABNF] Crocker、D。およびP. Overell、「構文仕様のためのBNFの増強:ABNF」、RFC 2234、1997年11月。

[ACAP] Newman, C. and J. G. Myers, "ACAP -- Application Configuration Access Protocol", RFC 2244, November 1997.

[ACAP] Newman、C。and J. G. Myers、「ACAP-アプリケーション構成アクセスプロトコル」、RFC 2244、1997年11月。

[BINARY-SI] "Standard IEC 60027-2: Letter symbols to be used in electrical technology - Part 2: Telecommunications and electronics", January 1999.

[binary-si] "標準IEC 60027-2:電気技術で使用される文字記号 - パート2:通信と電子機器」、1999年1月。

[DSN] Moore, K. and G. Vaudreuil, "An Extensible Message Format for Delivery Status Notifications", RFC 1894, January 1996.

[DSN] Moore、K。およびG. Vaudreuil、「配信ステータス通知の拡張可能なメッセージ形式」、RFC 1894、1996年1月。

[FLAMES] Borenstein, N, and C. Thyberg, "Power, Ease of Use, and Cooperative Work in a Practical Multimedia Message System", Int. J. of Man-Machine Studies, April, 1991. Reprinted in Computer-Supported Cooperative Work and Groupware, Saul Greenberg, editor, Harcourt Brace Jovanovich, 1991. Reprinted in Readings in Groupware and Computer-Supported Cooperative Work, Ronald Baecker, editor, Morgan Kaufmann, 1993.

[Flames] Borenstein、N、およびC. Thyberg、「Power、使いやすさ、実用的なマルチメディアメッセージシステムにおける協同組合」、Int。J. of Man-Machine Studies、1991年4月。コンピューターが支援する協同組合とグループウェア、Saul Greenberg、編集者、Harcourt Brace Jovanovich、1991。モーガン・カウフマン、1993年。

[KEYWORDS] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.

[キーワード] Bradner、S。、「要件レベルを示すためにRFCで使用するためのキーワード」、BCP 14、RFC 2119、1997年3月。

[IMAP] Crispin, M., "Internet Message Access Protocol - version 4rev1", RFC 2060, December 1996.

[IMAP] Crispin、M。、「インターネットメッセージアクセスプロトコル -バージョン4REV1」、RFC 2060、1996年12月。

[IMAIL] Crocker, D., "Standard for the Format of ARPA Internet Text Messages", STD 11, RFC 822, August 1982.

[Imail] Crocker、D。、「ARPAインターネットテキストメッセージの形式の標準」、STD 11、RFC 822、1982年8月。

[MIME] Freed, N. and N. Borenstein, "Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies", RFC 2045, November 1996.

[Mime] Freed、N。and N. Borenstein、「多目的インターネットメールエクステンション(MIME)パート1:インターネットメッセージボディの形式」、RFC 2045、1996年11月。

[MDN] Fajman, R., "An Extensible Message Format for Message Disposition Notifications", RFC 2298, March 1998.

[MDN] Fajman、R。、「メッセージ処分通知のための拡張可能なメッセージ形式」、RFC 2298、1998年3月。

[RFC1123] Braden, R., "Requirements for Internet Hosts -- Application and Support", STD 3, RFC 1123, November 1989.

[RFC1123] Braden、R。、「インターネットホストの要件 - アプリケーションとサポート」、STD 3、RFC 1123、1989年11月。

[SMTP] Postel, J., "Simple Mail Transfer Protocol", STD 10, RFC 821, August 1982.

[SMTP] Postel、J。、「Simple Mail Transfer Protocol」、Std 10、RFC 821、1982年8月。

[UTF-8] Yergeau, F., "UTF-8, a transformation format of Unicode and ISO 10646", RFC 2044, October 1996.

[UTF-8] Yergeau、F。、「UTF-8、UnicodeおよびISO 10646の変換形式」、RFC 2044、1996年10月。

14. 完全な著作権声明

Copyright (C) The Internet Society (2001). All Rights Reserved.

Copyright(c)The Internet Society(2001)。無断転載を禁じます。

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エディター機能の資金は現在、インターネット協会によって提供されています。