[要約] RFC 5260は、SieveメールフィルタリングのためのDateとIndex拡張機能に関する規格です。このRFCの目的は、Sieveスクリプトで日付とインデックスを使用してメールをフィルタリングするための仕様を提供することです。

Network Working Group                                           N. Freed
Request for Comments: 5260                              Sun Microsystems
Category: Standards Track                                      July 2008
        

Sieve Email Filtering: Date and Index Extensions

ふるい電子メールフィルタリング:日付とインデックス拡張機能

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)の現在のエディションを参照してください。このメモの配布は無制限です。

Abstract

概要

This document describes the "date" and "index" extensions to the Sieve email filtering language. The "date" extension gives Sieve the ability to test date and time values in various ways. The "index" extension provides a means to limit header and address tests to specific instances of header fields when header fields are repeated.

このドキュメントでは、Sive Emailのフィルタリング言語への「日付」と「インデックス」拡張機能について説明します。「日付」拡張機能は、ふるいにさまざまな方法で日付と時刻の値をテストする機能を与えます。「インデックス」拡張機能は、ヘッダーフィールドが繰り返されたときにヘッダーフィールドの特定のインスタンスにヘッダーとアドレステストを制限する手段を提供します。

Table of Contents

目次

   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  2
   2.  Conventions Used in This Document  . . . . . . . . . . . . . .  2
   3.  Capability Identifiers . . . . . . . . . . . . . . . . . . . .  3
   4.  Date Test  . . . . . . . . . . . . . . . . . . . . . . . . . .  3
     4.1.  Zone and Originalzone Arguments  . . . . . . . . . . . . .  4
     4.2.  Date-part Argument . . . . . . . . . . . . . . . . . . . .  4
     4.3.  Comparator Interactions with Date-part Arguments . . . . .  5
     4.4.  Examples . . . . . . . . . . . . . . . . . . . . . . . . .  6
   5.  Currentdate Test . . . . . . . . . . . . . . . . . . . . . . .  6
     5.1.  Examples . . . . . . . . . . . . . . . . . . . . . . . . .  6
   6.  Index Extension  . . . . . . . . . . . . . . . . . . . . . . .  7
     6.1.  Example  . . . . . . . . . . . . . . . . . . . . . . . . .  8
   7.  Security Considerations  . . . . . . . . . . . . . . . . . . .  8
   8.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . .  9
   9.  References . . . . . . . . . . . . . . . . . . . . . . . . . .  9
     9.1.  Normative References . . . . . . . . . . . . . . . . . . .  9
     9.2.  Informative References . . . . . . . . . . . . . . . . . . 10
   Appendix A.  Julian Date Conversions . . . . . . . . . . . . . . . 11
   Appendix B.  Acknowledgements  . . . . . . . . . . . . . . . . . . 12
        
1. Introduction
1. はじめに

Sieve [RFC5228] is a language for filtering email messages at or around the 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 [RFC3501] servers, as it does not have user-controlled loops or the ability to run external programs.

Sieve [RFC5228]は、最終配信時またはその頃に電子メールメッセージをフィルタリングするための言語です。メールクライアントまたはメールサーバーのいずれかで実装できるように設計されています。これは、アクセスプロトコル、メールアーキテクチャ、オペレーティングシステムとは独立していることを意図しています。ユーザーがユーザー制御ループや外部プログラムを実行する機能がないため、ブラックボックスインターネットメッセージアクセスプロトコル[RFC3501]サーバーなど、ユーザーが任意のプログラムを実行することが許可されないメールサーバーで実行するのに適しています。。

The "date" extension provides a new date test to extract and match date/time information from structured header fields. The date test is similar in concept to the address test specified in [RFC5228], which performs similar operations on addresses in header fields.

「日付」拡張機能は、構造化されたヘッダーフィールドから日付/時刻情報を抽出および一致させるための新しい日付テストを提供します。日付テストは、[RFC5228]で指定されたアドレステストと概念が類似しており、ヘッダーフィールドのアドレスで同様の操作を実行します。

The "date" extension also provides a currentdate test that operates on the date and time when the Sieve script is executed.

「日付」拡張機能は、Sieveスクリプトが実行される日時に動作するCurrentDateテストも提供します。

Some header fields containing date/time information, e.g., Received:, naturally occur more than once in a single header. In such cases it is useful to be able to restrict the date test to some subset of the fields that are present. For example, it may be useful to apply a date test to the last (earliest) Received: field. Additionally, it may also be useful to apply similar restrictions to either the header or address tests specified in [RFC5228].

日付/時刻情報を含むいくつかのヘッダーフィールド、たとえば、受信:単一のヘッダーで自然に2回以上発生します。そのような場合、日付テストを存在するフィールドの一部のサブセットに制限できると便利です。たとえば、受信した最後の(最も早い)フィールドに日付テストを適用すると便利かもしれません。さらに、[RFC5228]で指定されたヘッダーまたはアドレステストのいずれかに同様の制限を適用することも有用かもしれません。

For this reason, this specification also defines an "index" extension. This extension adds two additional tagged arguments :index and :last to the header, address, and date tests. If present, these arguments specify which occurrence of the named header field is to be tested.

このため、この仕様は「インデックス」拡張機能も定義しています。この拡張機能は、2つのタグ付けされた引数を追加します。インデックスと:ヘッダー、アドレス、および日付テストに最後に続きます。存在する場合、これらの引数は、指定されたヘッダーフィールドの発生がテストされるかを指定します。

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

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [RFC2119].

この文書のキーワード "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", および "OPTIONAL" はRFC 2119 [RFC2119]で説明されているように解釈されます。

The terms used to describe the various components of the Sieve language are taken from Section 1.1 of [RFC5228]. Section 2 of the same document describes basic Sieve language syntax and semantics. The date-time syntactic element defined using ABNF notation [RFC5234] in [RFC3339] is also used here.

ふるい言語のさまざまなコンポーネントを記述するために使用される用語は、[RFC5228]のセクション1.1から取得されます。同じドキュメントのセクション2では、基本的なふるい言語の構文とセマンティクスについて説明します。[RFC3339]のABNF表記[RFC5234]を使用して定義された日付の構文要素もここで使用されます。

3. Capability Identifiers
3. 機能識別子

The capability strings associated with the two extensions defined in this document are "date" and "index".

このドキュメントで定義されている2つの拡張機能に関連付けられた機能文字列は、「日付」と「インデックス」です。

4. Date Test
4. 日付テスト
   Usage:   date [<":zone" <time-zone: string>> / ":originalzone"]
                 [COMPARATOR] [MATCH-TYPE] <header-name: string>
                 <date-part: string> <key-list: string-list>
        

The date test matches date/time information derived from headers containing [RFC2822] date-time values. The date/time information is extracted from the header, shifted to the specified time zone, and the value of the given date-part is determined. The test returns true if the resulting string matches any of the strings specified in the key-list, as controlled by the comparator and match keywords. The date test returns false unconditionally if the specified header field does not exist, the field exists but does not contain a syntactically valid date-time specification, the date-time isn't valid according to the rules of the calendar system (e.g., January 32nd, February 29 in a non-leap year), or the resulting string fails to match any key-list value.

日付テストは、[RFC2822]日付時間を含むヘッダーから派生した日付/時刻情報と一致します。日付/時刻情報はヘッダーから抽出され、指定されたタイムゾーンにシフトされ、指定された日付パートの値が決定されます。結果の文字列が、コンパレータと一致キーワードによって制御されるように、キーリストで指定された文字列のいずれかと一致する場合、テストはtrueを返します。日付テストは、指定されたヘッダーフィールドが存在しない場合、誤って虚偽を返します。フィールドは存在しますが、構文的に有効な日付の仕様を含めません。日付時間はカレンダーシステムのルールに従って有効ではありません(例:1月、1月32日、2月29日、非骨折)、または結果の文字列はキーリスト値と一致しません。

The type of match defaults to ":is" and the default comparator is "i;ascii-casemap".

一致のタイプは「:is」にデフォルトで、デフォルトのコンパレータは「i; ascii-casemap」です。

Unlike the header and address tests, the date test can only be applied to a single header field at a time. If multiple header fields with the same name are present, only the first field that is found is used. (Note, however, that this behavior can be modified with the "index" extension defined below.) These restrictions simplify the test and keep the meaning clear.

ヘッダーおよびアドレステストとは異なり、日付テストは一度に単一のヘッダーフィールドにのみ適用できます。同じ名前の複数のヘッダーフィールドが存在する場合、見つかった最初のフィールドのみが使用されます。(ただし、この動作は、以下に定義された「インデックス」拡張機能で変更できることに注意してください。)これらの制限により、テストが簡素化され、意味が明確になります。

The "relational" extension [RFC5231] adds a match type called ":count". The count of a date test is 1 if the specified field exists and contains a valid date; 0, otherwise.

「リレーショナル」拡張[RFC5231]は、「:count」という一致タイプを追加します。指定されたフィールドが存在し、有効な日付が含まれている場合、日付テストのカウントは1です。それ以外の場合は0。

Implementations MUST support extraction of RFC 2822 date-time information that either makes up the entire header field (e.g., as it does in a standard Date: header field) or appears at the end of a header field following a semicolon (e.g., as it does in a standard Received: header field). Implementations MAY support extraction of date and time information in RFC2822 or other formats that appears in other positions in header field content. In the case of a field containing more than one date or time value, the last one that appears SHOULD be used.

実装は、ヘッダーフィールド全体を構成するRFC 2822日付情報の抽出をサポートする必要があります(例:標準日付:ヘッダーフィールド)またはセミコロンに続くヘッダーフィールドの最後に表示されます(例:受信標準では:ヘッダーフィールド)。実装は、RFC2822またはヘッダーフィールドコンテンツの他のポジションに表示される他の形式での日付および時刻情報の抽出をサポートする場合があります。複数の日付または時刻値を含むフィールドの場合、表示される最後の値を使用する必要があります。

4.1. Zone and Originalzone Arguments
4.1. ゾーンとオリジナルゾーンの引数

The :originalzone argument specifies that the time zone offset originally in the extracted date-time value should be retained. The :zone argument specifies a specific time zone offset that the date-time value is to be shifted to prior to testing. It is an error to specify both :zone and :originalzone.

:OriginalZone引数は、抽出された日付時間値のタイムゾーンオフセットを保持する必要があることを指定します。:ゾーン引数は、テスト前に日付時間値をシフトする特定のタイムゾーンオフセットを指定します。ゾーンと:originalzoneの両方を指定するのはエラーです。

The value of time-zone MUST be an offset relative to UTC with the following syntax:

Time-Zoneの値は、次の構文を使用してUTCに対するオフセットでなければなりません。

       time-zone  =  ( "+" / "-" ) 4DIGIT
        

The "+" or "-" indicates whether the time-of-day is ahead of (i.e., east of) or behind (i.e., west of) UTC. The first two digits indicate the number of hours difference from Universal Time, and the last two digits indicate the number of minutes difference from Universal Time. Note that this agrees with the RFC 2822 format for time zone offsets, not the ISO 8601 format.

"" or " - "は、時刻がUTCの前(すなわち、東の)または後ろ(すなわち、西)の前にあるかどうかを示します。最初の2桁は、普遍的な時間との時間の差を示し、最後の2桁はユニバーサル時間との差の差を示します。これは、ISO 8601形式ではなく、タイムゾーンオフセットのRFC 2822形式と一致することに注意してください。

If both the :zone and :originalzone arguments are omitted, the local time zone MUST be used.

ゾーンと:OriginalZone引数が省略されている場合、ローカルタイムゾーンを使用する必要があります。

4.2. Date-part Argument
4.2. 日付 - パートの引数

The date-part argument specifies a particular part of the resulting date/time value to match against the key-list. Possible case-insensitive values are:

日付パートの引数は、キーリストと一致するように、結果の日付/時刻値の特定の部分を指定します。考えられるケースと感受性の値は次のとおりです。

"year" => the year, "0000" .. "9999". "month" => the month, "01" .. "12". "day" => the day, "01" .. "31". "date" => the date in "yyyy-mm-dd" format. "julian" => the Modified Julian Day, that is, the date expressed as an integer number of days since 00:00 UTC on November 17, 1858 (using the Gregorian calendar). This corresponds to the regular Julian Day minus 2400000.5. Sample routines to convert to and from modified Julian dates are given in Appendix A. "hour" => the hour, "00" .. "23". "minute" => the minute, "00" .. "59". "second" => the second, "00" .. "60". "time" => the time in "hh:mm:ss" format. "iso8601" => the date and time in restricted ISO 8601 format. "std11" => the date and time in a format appropriate for use in a Date: header field [RFC2822].

「year」=> year "0000" .. "9999"。「月」=>月 "01" .. "12"。「day」=> day "01" .. "31"。「日付」=>「yyyy-mm-dd」形式の日付。「ジュリアン」=>修正されたジュリアンの日、つまり、1858年11月17日の00:00 UTC以降の整数日数として表された日付(グレゴリオ暦を使用)。これは、通常のジュリアンデーから2400000.5から対応します。修正されたジュリアンの日付に変換するためのサンプルルーチンは、付録Aに記載されています。「時間」=> hour "00" .. "23"。"minute" => minute "00" .. "59"。「2番目」=> 2番目の "00" .. "60"。"time" => the time in "hh:mm:ss"形式。「ISO8601」=>制限付きISO 8601形式の日付と時刻。「STD11」=>日付と時刻は、日付で使用するのに適した形式:ヘッダーフィールド[RFC2822]。

"zone" => the time zone in use. If the user specified a time zone with ":zone", "zone" will contain that value. If :originalzone is specified this value will be the original zone specified in the date-time value. If neither argument is specified the value will be the server's default time zone in offset format "+hhmm" or "-hhmm". An offset of 0 (Zulu) always has a positive sign. "weekday" => the day of the week expressed as an integer between "0" and "6". "0" is Sunday, "1" is Monday, etc.

「ゾーン」=>使用中のタイムゾーン。ユーザーが「:ゾーン」でタイムゾーンを指定した場合、「ゾーン」にはその値が含まれます。IF:OriginalZoneが指定されている場合、この値は日付時間で指定された元のゾーンになります。どちらの引数が指定されていない場合、値はオフセット形式の「HHMM」または「-HHMM」のサーバーのデフォルトタイムゾーンになります。0(Zulu)のオフセットには常に正の兆候があります。「平日」=>「0」と「6」の間の整数として表現された曜日。「0」は日曜日、「1」は月曜日などです。

The restricted ISO 8601 format is specified by the date-time ABNF production given in [RFC3339], Section 5.6, with the added restrictions that the letters "T" and "Z" MUST be in upper case, and a time zone offset of zero MUST be represented by "Z" and not "+00:00".

制限付きISO 8601形式は、[RFC3339]、セクション5.6に与えられた日付時間ABNF生産によって指定されており、文字「T」と「Z」が大文字でなければならないという制限が追加され、タイムゾーンオフセットはゼロである必要があります。「z」ではなく「z」で表現する必要があります。

4.3. Comparator Interactions with Date-part Arguments
4.3. 日付部分の引数とのコンパレーターの相互作用

Not all comparators are suitable with all date-part arguments. In general, the date-parts can be compared and tested for equality with either "i;ascii-casemap" (the default) or "i;octet", but there are two exceptions:

すべてのコンパレータがすべての日付パートの引数に適しているわけではありません。一般に、日付部品を比較して、「i; ascii-casemap」(デフォルト)または「i;オクテット」のいずれかで平等をテストできますが、2つの例外があります。

julian This is an integer, and may or may not have leading zeros. As such, "i;ascii-numeric" is almost certainly the best comparator to use with it.

ジュリアンこれは整数であり、主要なゼロを持っているかもしれません。このように、「i; ascii-numeric」は、ほぼ間違いなく使用するのに最適なコンパレータです。

std11 This is provided as a means to obtain date/time values in a format appropriate for inclusion in email header fields. The wide range of possible syntaxes for a std11 date/time -- which implementations of this extension are free to use when composing a std11 string -- makes this format a poor choice for comparisons. Nevertheless, if a comparison must be performed, this is case-insensitive, and therefore "i;ascii-casemap" needs to be used.

STD11これは、電子メールヘッダーフィールドに含めるのに適した形式で日付/時刻の値を取得する手段として提供されます。STD11日付/時刻の幅広い可能な構文(この拡張機能の実装がSTD11文字列を作成するときに自由に使用できる)は、比較のためにこの形式が不十分な選択肢になります。それにもかかわらず、比較を実行する必要がある場合、これはケースに依存しないため、「i; ascii-casemap」を使用する必要があります。

"year", "month", "day", "hour", "minute", "second" and "weekday" all use fixed-width string representations of integers, and can therefore be compared with "i;octet", "i;ascii-casemap", and "i;ascii-numeric" with equivalent results.

「年」、「月」、「日」、「時間」、「分」、「セカンド」、「平日」はすべて、整数の固定幅の文字列表現を使用しているため、「I; Octet」、「」と比較できます。i; ascii-casemap "、および「i; ascii-numeric」と同等の結果。

"date" and "time" also use fixed-width string representations of integers, and can therefore be compared with "i;octet" and "i;ascii-casemap"; however, "i;ascii-numeric" can't be used with it, as "i;ascii-numeric" doesn't allow for non-digit characters.

「日付」と「時間」は、整数の固定された幅の文字列表現も使用するため、「i; octet」および「i; ascii-casemap」と比較できます。ただし、「I; Ascii-Numeric」は、「I; Ascii-Numeric」が非桁のキャラクターを許可していないため、使用することはできません。

4.4. Examples
4.4. 例

The Date: field can be checked to test when the sender claims to have created the message and act accordingly:

日付:送信者がメッセージを作成し、それに応じて行動したと主張したときにフィールドを確認することができます。

     require ["date", "relational", "fileinto"];
     if allof(header :is "from" "boss@example.com",
              date :value "ge" :originalzone "date" "hour" "09",
              date :value "lt" :originalzone "date" "hour" "17")
     { fileinto "urgent"; }
        

Testing the initial Received: field can provide an indication of when a message was actually received by the local system:

最初の受信をテストする:フィールドは、ローカルシステムによって実際にメッセージが受信された時期を示すことができます。

     require ["date", "relational", "fileinto"];
     if anyof(date :is "received" "weekday" "0",
              date :is "received" "weekday" "6")
     { fileinto "weekend"; }
        
5. Currentdate Test
5. CurrentDateテスト
   Usage:   currentdate [":zone" <time-zone: string>]
                        [COMPARATOR] [MATCH-TYPE]
                        <date-part: string>
                        <key-list: string-list>
        

The currentdate test is similar to the date test, except that it operates on the current date/time rather than a value extracted from the message header. In particular, the ":zone" and date-part arguments are the same as those in the date test.

CurrentDateテストは、メッセージヘッダーから抽出された値ではなく、現在の日付/時刻で動作することを除いて、日付テストに似ています。特に、「:ゾーン」と日付パートの引数は、日付テストの引数と同じです。

All currentdate tests in a single Sieve script MUST refer to the same point in time during execution of the script.

単一のふるいスクリプトのすべての現在のテストは、スクリプトの実行中の同じ時点を参照する必要があります。

The :count value of a currentdate test is always 1.

:currentdateテストのカウント値は常に1です。

5.1. Examples
5.1. 例

The simplest use of currentdate is to have an action that only operates at certain times. For example, a user might want to have messages redirected to their pager after business hours and on weekends:

CurrentDateの最も単純な使用は、特定の時間にのみ動作するアクションを持つことです。たとえば、ユーザーは、営業時間後および週末にメッセージをポケットベルにリダイレクトしたい場合があります。

     require ["date", "relational"];
     if anyof(currentdate :is "weekday" "0",
              currentdate :is "weekday" "6",
              currentdate :value "lt" "hour" "09",
              currentdate :value "ge" "hour" "17")
     { redirect "pager@example.com"; }
        

Currentdate can be used to set up vacation [RFC5230] responses in advance and to stop response generation automatically:

CurrentDateを使用して、事前に休暇[RFC5230]応答をセットアップし、応答生成を自動的に停止することができます。

     require ["date", "relational", "vacation"];
     if allof(currentdate :value "ge" "date" "2007-06-30",
              currentdate :value "le" "date" "2007-07-07")
     { vacation :days 7  "I'm away during the first week in July."; }
        

Currentdate may also be used in conjunction with the variables extension to pass time-dependent arguments to other tests and actions. The following Sieve places messages in a folder named according to the current month and year:

CurrentDateは、変数拡張と組み合わせて使用して、時間依存の引数を他のテストやアクションに渡すこともできます。次のふるいは、今月と年に従って名前が付けられたフォルダーにメッセージを配置します。

     require ["date", "variables", "fileinto"];
     if currentdate :matches "month" "*" { set "month" "${1}"; }
     if currentdate :matches "year"  "*" { set "year"  "${1}"; }
     fileinto "${month}-${year}";
        

Finally, currentdate can be used in conjunction with the editheader extension to insert a header-field containing date/time information:

最後に、CurrentDateをEditheAder拡張機能と組み合わせて使用して、日付/時刻情報を含むヘッダーフィールドを挿入できます。

      require ["variables", "date", "editheader"];
      if currentdate :matches "std11" "*"
        {addheader "Processing-date" "${0}";}
        
6. Index Extension
6. インデックス拡張機能

The "index" extension, if specified, adds optional :index and :last arguments to the header, address, and date tests as follows:

「インデックス」拡張機能は、指定されている場合、オプションを追加します。インデックスと:次のように、ヘッダー、アドレス、および日付テストに最後の引数を追加します。

   Syntax:   date [":index" <fieldno: number> [":last"]]
                  [<":zone" <time-zone: string>> / ":originalzone"]
                  [COMPARATOR] [MATCH-TYPE] <header-name: string>
                  <date-part: string> <key-list: string-list>
        
   Syntax:   header [":index" <fieldno: number> [":last"]]
                    [COMPARATOR] [MATCH-TYPE]
                    <header-names: string-list> <key-list: string-list>
        
   Syntax:   address [":index" <fieldno: number> [":last"]]
                     [ADDRESS-PART] [COMPARATOR] [MATCH-TYPE]
                     <header-list: string-list> <key-list: string-list>
        

If :index <fieldno> is specified, the attempts to match a value are limited to the header field fieldno (beginning at 1, the first named header field). If :last is also specified, the count is backwards; 1 denotes the last named header field, 2 the second to last, and so on. Specifying :last without :index is an error.

インデックス<fieldno>が指定されている場合、値を一致させる試みは、ヘッダーフィールドFieldno(最初の名前のヘッダーフィールド1から始まる)に限定されます。場合:最後に指定されている場合、カウントは後方になります。1は、最後の名前のヘッダーフィールド、2つの最後まで2つなどを示します。指定:Last withe:indexはエラーです。

:index only counts separate header fields, not multiple occurrences within a single field. In particular, :index cannot be used to test a specific address in an address list contained within a single header field.

:インデックスは、単一のフィールド内の複数の発生ではなく、個別のヘッダーフィールドのみをカウントします。特に、インデックスを使用して、単一のヘッダーフィールドに含まれるアドレスリストで特定のアドレスをテストすることはできません。

Both header and address allow the specification of more than one header field name. If more than one header field name is specified, all the named header fields are counted in the order specified by the header-list.

ヘッダーとアドレスの両方で、複数のヘッダーフィールド名を仕様を付けることができます。複数のヘッダーフィールド名が指定されている場合、すべての名前付きヘッダーフィールドは、ヘッダーリストによって指定された順序でカウントされます。

6.1. Example
6.1. 例

Mail delivery may involve multiple hops, resulting in the Received: field containing information about when a message first entered the local administrative domain being the second or subsequent field in the message. As long as the field offset is consistent, it can be tested:

メール配信には複数のホップが含まれる場合があり、その結果、受信したものになります。メッセージが最初にローカル管理ドメインを入力したときの情報を含むフィールドが、メッセージ内の2番目または後続のフィールドです。フィールドオフセットが一貫している限り、テストすることができます。

     # Implement the Internet-Draft cutoff date check assuming the
     # second Received: field specifies when the message first
     # entered the local email infrastructure.
     require ["date", "relational", "index"];
     if date :value "gt" :index 2 :zone "-0500" "received"
             "iso8601" "2007-02-26T09:00:00-05:00",
     { redirect "aftercutoff@example.org"; }
        
7. Security Considerations
7. セキュリティに関する考慮事項

The facilities defined here, like the facilities in the base Sieve specification, operate on message header information that can easily be forged. Note, however, that some fields are inherently more reliable than others. For example, the Date: field is typically inserted by the message sender and can be altered at any point. By contrast, the uppermost Received: field is typically inserted by the local mail system and is therefore difficult for the sender or an intermediary to falsify.

ここで定義されている施設は、ベースふるいの仕様の施設と同様に、簡単に偽造できるメッセージヘッダー情報で動作します。ただし、一部のフィールドは他のフィールドよりも本質的に信頼性が高いことに注意してください。たとえば、日付:フィールドは通常、メッセージ送信者によって挿入され、任意の時点で変更できます。対照的に、受信した最上部:フィールドは通常、ローカルメールシステムによって挿入されるため、送信者または仲介者が偽造するのは困難です。

Use of the currentdate test makes script behavior inherently less predictable and harder to analyze. This may have consequences for systems that use script analysis to try and spot problematic scripts.

CurrentDateテストを使用すると、スクリプトの動作は本質的に予測の可能性が低く、分析が難しくなります。これは、スクリプト分析を使用して問題のあるスクリプトを見つけようとするシステムに影響を与える可能性があります。

All of the security considerations given in the base Sieve specification also apply to these extensions.

ベースふるいの仕様に記載されているセキュリティの考慮事項はすべて、これらの拡張機能にも適用されます。

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

The following templates specify the IANA registrations of the two Sieve extensions specified in this document:

次のテンプレートでは、このドキュメントで指定された2つのふるい拡張機能のIANA登録を指定します。

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

宛先:iana@iana.org件名:新しいSive拡張機能の登録

      Capability name: date
      Description:     The "date" extension gives Sieve the ability
                       to test date and time values.
      RFC number:      RFC 5260
      Contact address: Sieve discussion list <ietf-mta-filters@imc.org>
        

Capability name: index Description: The "index" extension provides a means to limit header and address tests to specific instances when more than one field of a given type is present. RFC number: RFC 5260 Contact address: Sieve discussion list <ietf-mta-filters@imc.org>

機能名:インデックスの説明:「インデックス」拡張機能は、特定のタイプの複数のフィールドが存在する場合、ヘッダーとアドレステストを特定のインスタンスに制限する手段を提供します。RFC番号:RFC 5260連絡先住所:ふるいディスカッションリスト<IETF-MTA-filters@imc.org>

9. References
9. 参考文献
9.1. Normative References
9.1. 引用文献

[CALGO199] Tantzen, R., "Algorithm 199: Conversions Between Calendar Date and Julian Day Number", Collected Algorithms from CACM 199.

[Calgo199] Tantzen、R。、「アルゴリズム199:カレンダーの日付とジュリアンの日数の間の変換」は、CACM 199から収集されたアルゴリズムを収集しました。

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

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

[RFC2822] Resnick, P., "Internet Message Format", RFC 2822, April 2001.

[RFC2822] Resnick、P。、「インターネットメッセージ形式」、RFC 2822、2001年4月。

[RFC3339] Klyne, G., Ed. and C. Newman, "Date and Time on the Internet: Timestamps", RFC 3339, July 2002.

[RFC3339] Klyne、G.、ed。C.ニューマン、「インターネット上の日時:タイムスタンプ」、RFC 3339、2002年7月。

[RFC5228] Guenther, P. and T. Showalter, "Sieve: An Email Filtering Language", RFC 5228, January 2008.

[RFC5228] Guenther、P。およびT. Showalter、「Sive:An Email Filtering Language」、RFC 5228、2008年1月。

[RFC5231] Segmuller, W. and B. Leiba, "Sieve Email Filtering: Relational Extension", RFC 5231, January 2008.

[RFC5231] Segmuller、W。およびB. Leiba、「Sieve Emailフィルタリング:リレーショナルエクステンション」、RFC 5231、2008年1月。

[RFC5234] Crocker, D. and P. Overell, "Augmented BNF for Syntax Specifications: ABNF", STD 68, RFC 5234, January 2008.

[RFC5234] Crocker、D。およびP. Overell、「構文仕様のためのBNFの増強」、STD 68、RFC 5234、2008年1月。

9.2. Informative References
9.2. 参考引用

[RFC3501] Crispin, M., "INTERNET MESSAGE ACCESS PROTOCOL - VERSION 4rev1", RFC 3501, March 2003.

[RFC3501] CRISPIN、M。、「インターネットメッセージアクセスプロトコル - バージョン4REV1」、RFC 3501、2003年3月。

[RFC5230] Showalter, T. and N. Freed, "Sieve Email Filtering: Vacation Extension", RFC 5230, January 2008.

[RFC5230] Showalter、T。and N. Freed、「Sieve Emailフィルタリング:休暇拡張」、RFC 5230、2008年1月。

Appendix A. Julian Date Conversions
付録A. ジュリアンデート変換

The following C routines show how to translate day/month/year information to and from modified Julian dates. These routines are straightforward translations of the Algol routines specified in CACM Algorithm 199 [CALGO199].

次のCルーチンは、変更されたジュリアンの日付との間で日/年の情報を翻訳する方法を示しています。これらのルーチンは、CACMアルゴリズム199 [Calgo199]で指定されたアルゴルルーチンの簡単な翻訳です。

Given the day, month, and year, jday returns the modified Julian date.

日、月、年を考えると、JDayは変更されたジュリアンデートを返します。

int jday(int year, int month, int day) { int j, c, ya;

int jday(int year、int month、int day){int j、c、ya;

       if (month > 2)
           month -= 3;
       else
       {
           month += 9;
           year--;
       }
       c = year / 100;
       ya = year - c * 100;
       return (c * 146097 / 4 + ya * 1461 / 4 + (month * 153 + 2) / 5 +
               day + 1721119);
   }
      Given j, the modified Julian date, jdate returns the day, month, and
   year.
        
   void jdate(int j, int *year, int *month, int *day)
   {
       int y, m, d;
        
       j -= 1721119;
       y = (j * 4 - 1) / 146097;
       j = j * 4 - y * 146097 - 1;
       d = j / 4;
       j = (d * 4 + 3) / 1461;
       d = d * 4 - j * 1461 + 3;
       d = (d + 4) / 4;
       m = (d * 5 - 3) / 153;
       d = d * 5 - m * 153 - 3;
       *day = (d + 5) / 5;
       *year = y * 100 + j;
       if (m < 10)
           *month = m + 3;
       else
       {
           *month = m - 9;
           *year += 1;
       }
   }
        
Appendix B. Acknowledgements
付録B. 謝辞

Dave Cridland contributed the text describing the proper comparators to use with different date-parts. Cyrus Daboo, Frank Ellerman, Alexey Melnikov, Chris Newman, Dilyan Palauzov, and Aaron Stone provided helpful suggestions and corrections.

Dave Cridlandは、異なる日付部品で使用する適切なコンパレータを説明するテキストに貢献しました。Cyrus Daboo、Frank Ellerman、Alexey Melnikov、Chris Newman、Dilyan Palauzov、およびAaron Stoneは、有益な提案と修正を提供しました。

Author's Address

著者の連絡先

Ned Freed Sun Microsystems 800 Royal Oaks Monrovia, CA 91016-6347 USA

Ned Freed Sun Microsystems 800 Royal Oaks Monrovia、CA 91016-6347 USA

   Phone: +1 909 457 4293
   EMail: ned.freed@mrochek.com
        

Full Copyright Statement

完全な著作権声明

Copyright (C) The IETF Trust (2008).

著作権(c)The IETF Trust(2008)。

This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights.

この文書は、BCP 78に含まれる権利、ライセンス、および制限の対象となり、そこに記載されている場合を除き、著者はすべての権利を保持しています。

This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM 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.

このドキュメントとここに含まれる情報は、「現状のまま」に基づいて提供され、貢献者、彼/彼女が代表する組織(もしあれば)、インターネット協会、IETFトラスト、インターネットエンジニアリングタスクフォースがすべてを否認します。明示的または黙示的な保証。ここでの情報の使用は、特定の目的に対する商品性または適合性の権利または暗黙の保証を侵害しないという保証を含むがこれらに限定されない。

Intellectual Property

知的財産

The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79.

IETFは、知的財産権またはその他の権利の有効性または範囲に関して、本書に記載されている技術の実装または使用、またはそのような権利に基づくライセンスに基づくライセンスの範囲に関連すると主張される可能性のある他の権利に関しては、立場を取得しません。利用可能になります。また、そのような権利を特定するために独立した努力をしたことも表明していません。RFCドキュメントの権利に関する手順に関する情報は、BCP 78およびBCP 79に記載されています。

Copies of IPR disclosures made to the IETF Secretariat and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr.

IETF事務局に行われたIPR開示のコピーと、利用可能にするライセンスの保証、またはこの仕様の実装者またはユーザーによるそのような独自の権利の使用のための一般的なライセンスまたは許可を取得するための試みの結果を取得できます。http://www.ietf.org/iprのIETFオンラインIPRリポジトリから。

The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org.

IETFは、関心のある当事者に、著作権、特許、または特許出願、またはこの基準を実装するために必要なテクノロジーをカバーする可能性のあるその他の独自の権利を注意深く招待します。ietf-ipr@ietf.orgのIETFへの情報をお問い合わせください。