[要約] RFC 6558は、メッセージを配信前に変換するためのSieve拡張についての規格です。このRFCの目的は、メッセージの配信前に特定の操作を実行するための標準的な方法を提供することです。

Internet Engineering Task Force (IETF)                       A. Melnikov
Request for Comments: 6558                                 Isode Limited
Category: Standards Track                                       B. Leiba
ISSN: 2070-1721                                                    K. Li
                                                     Huawei Technologies
                                                              March 2012
        

Sieve Extension for Converting Messages before Delivery

配信前にメッセージを変換するためのふるい拡張

Abstract

概要

This document describes how the "CONVERT" IMAP extension can be used within the Sieve mail filtering language to transform messages before final delivery.

このドキュメントでは、最終配信前にメッセージを変換するためにSieve Mailフィルタリング言語内で「変換」IMAP拡張機能を使用する方法について説明します。

Status of This Memo

本文書の位置付け

This is an Internet Standards Track document.

これは、インターネット標準トラックドキュメントです。

This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 5741.

このドキュメントは、インターネットエンジニアリングタスクフォース(IETF)の製品です。IETFコミュニティのコンセンサスを表しています。公開レビューを受けており、インターネットエンジニアリングステアリンググループ(IESG)からの出版が承認されています。インターネット標準の詳細については、RFC 5741のセクション2で入手できます。

Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at http://www.rfc-editor.org/info/rfc6558.

このドキュメントの現在のステータス、任意のERRATA、およびそのフィードバックを提供する方法に関する情報は、http://www.rfc-editor.org/info/rfc6558で取得できます。

Copyright Notice

著作権表示

Copyright (c) 2012 IETF Trust and the persons identified as the document authors. All rights reserved.

Copyright(c)2012 IETF Trustおよび文書著者として特定された人。全著作権所有。

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.

このドキュメントは、BCP 78およびIETFドキュメント(http://trustee.ietf.org/license-info)に関連するIETF Trustの法的規定の対象となります。この文書に関するあなたの権利と制限を説明するので、これらの文書を注意深く確認してください。このドキュメントから抽出されたコードコンポーネントには、セクション4.Eで説明されている法的規定のセクション4.Eで説明されており、単純化されたBSDライセンスで説明されているように保証なしで提供される簡略化されたBSDライセンステキストを含める必要があります。

Table of Contents

目次

   1. Introduction ....................................................2
      1.1. Conventions Used in This Document ..........................2
   2. "convert" Action ................................................2
      2.1. Interaction with Other Tests and Actions ...................3
      2.2. "convert" as a Test ........................................4
   3. Examples ........................................................5
      3.1. Example 1 ..................................................5
      3.2. Example 2 ..................................................5
      3.3. Example 3 ..................................................5
      3.4. Example 4 ..................................................6
   4. Security Considerations .........................................7
   5. IANA Considerations .............................................7
   6. Acknowledgements ................................................7
   7. Normative References ............................................7
        
1. Introduction
1. はじめに

The IMAP "CONVERT" extension [RFC5259] adds an IMAP command for performing client-controlled conversions on whole messages or their body parts. This document defines a similar extension to the Sieve mail filtering language [RFC5228], which reuses the conversion parameters and framework established by IMAP CONVERT.

IMAPは、拡張機能[RFC5259]を「変換」します。これは、メッセージ全体またはその身体部分でクライアント制御変換を実行するためのIMAPコマンドを追加します。このドキュメントでは、Sieve Mailフィルタリング言語[RFC5228]と同様の拡張機能を定義します。これは、IMAP Convertによって確立された変換パラメーターとフレームワークを再利用します。

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

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]で説明されているように解釈されます。

Conventions for notations are as in Sieve [RFC5228], Section 1.1.

表記の規則は、Sieve [RFC5228]、セクション1.1のようです。

2. "convert" Action
2. 「変換」アクション
   Usage: convert  <quoted-from-media-type: string>
                   <quoted-to-media-type: string>
                   <transcoding-params: string-list>
        

The "convert" action specifies that all body parts with a media type [RFC2046] (sometimes called "MIME type") equal to <quoted-from-media-type> be converted to the media type in <quoted-to-media-type> using conversion parameters specified in <transcoding-params>. Each conversion parameter value has the following syntax: "<transcoding-param-name>=<transcoding-param-value>", where <transcoding-param-name> and <transcoding-param-value> are defined in CONVERT [RFC5259]. Messages that don't have any body parts with the <quoted-from-media-type> media type are not affected by the conversion.

「コンバート」アクションは、メディアタイプ[RFC2046](「MIMEタイプ」と呼ばれることもある)を持つすべての体の部分が<引用-From-Media-Type>に等しい<引用型からメディアタイプに変換されることを指定します。タイプ> <transcoding-params>で指定された変換パラメーターを使用します。各変換パラメーター値には、次の構文があります: "<transcoding-param-name> = <transcoding-param-value>"、<transcoding-param-name>および<transcoding-param-value>はconvertで定義されます[RFC5259]。<Quoted-from-media-type>メディアタイプの身体部分がないメッセージは、変換の影響を受けません。

The "convert" action can be used with Sieve MIME Part Tests [RFC5703], in the case that some, but not all of the body parts need to be converted, or where different body parts might require different conversions. When the "convert" action appears in a "foreverypart" loop, it applies only to the body part being processed, and not to any other body parts (see Section 3.2 for an example).

「コンバート」アクションは、身体の部分のすべてを変換する必要がある場合、または異なる身体部分が異なる変換を必要とする場合がある場合、一部の場合、または一部の場合、Sieve Mimeパーツテスト[RFC5703]で「コンバート」アクションを使用できます。「コンバート」アクションが「Forverypart」ループに表示されると、処理されている身体部分のみに適用され、他の身体部分には適用されません(例についてはセクション3.2を参照)。

When the "convert" action appears outside a "foreverypart" loop, the conversion applies equally to all body parts -- that is, all body parts that have the "quoted-from-media-type" are converted, using the same transcoding parameters.

「コンバート」アクションが「Forverypart」ループの外側に表示されると、変換はすべての体の部分に等しく適用されます。つまり、同じトランスコーディングパラメーターを使用して、「Media-typeから引用された」すべての体の部分が変換されます。。

A single "convert" action will only apply once to any body part. If, for example, << convert "image/jpeg" "image/jpeg" ["pix-x=100","pix-y=120"] >> converts a larger JPEG image to the smaller 100 x 120 size, that will be the end of that "convert" action on that body part. The action will not see a "new" JPEG body part to process, resulting from the conversion.

単一の「変換」アクションは、任意の身体部分に一度だけ適用されます。たとえば、<< "Image/jpeg" "image/jpeg" ["pix-x = 100"、 "pix-y = 120"] >>を変換する場合、より大きなjpeg画像を100 x 120サイズに変換します。それが、その身体部分に対するその「変換」アクションの終わりになります。アクションには、変換に起因する「新しい」JPEGボディの部分が処理されません。

If a "convert" action cannot be completed -- perhaps because the conversion failed, or because the requested conversion is not available -- that "convert" action MUST terminate and leave the message unchanged, rolling back any other conversions done by that action. The script processing continues, and prior or subsequent "convert" actions are not affected. No error condition is raised, and no partial conversions from a single "convert" action are allowed.

「変換」アクションを完了できない場合 - おそらく変換が失敗したため、または要求された変換が利用できないため - 「変換」アクションは終了し、メッセージを変更して、そのアクションによって行われた他の変換をロールバックする必要があります。スクリプト処理は継続され、以前またはその後の「変換」アクションが影響を受けません。エラー状態は発生しておらず、単一の「変換」アクションからの部分的な変換は許可されていません。

Implementations might defer any actual conversion until the results of the conversion are needed for script processing, to avoid doing conversions unnecessarily. Consider the case wherein a "convert" action is processed but a "discard" action results without the need to actually perform the conversion.

実装は、不必要に変換を行わないように、スクリプト処理に変換の結果が必要になるまで実際の変換を延期する場合があります。実際に変換を実行する必要なく、「変換」アクションが処理されますが、「廃棄」アクションの結果を考慮してください。

When conversions actually need to be done, they can put a significant load on the server. Computationally expensive conversions of a lot of body parts can constitute an attack vector; even if done legitimately, they can create an unacceptable load. Servers MAY refuse conversions, or do them at lower priority, effectively slowing the requesting process in order to avoid negative effects on service to other processes.

実際にコンバージョンを実行する必要がある場合、サーバーに大きな負荷をかけることができます。多くの身体部分の計算的に高価な変換は、攻撃ベクトルを構成できます。合法的に行われたとしても、容認できない負荷を作成できます。サーバーは、変換を拒否するか、より低い優先度でそれらを行い、他のプロセスへのサービスへのマイナスの影響を回避するために、要求プロセスを効果的に遅くすることができます。

2.1. Interaction with Other Tests and Actions
2.1. 他のテストやアクションとの相互作用

Whether or not the actual conversion has been done yet, a successful "convert" action effectively changes the message, and all subsequent actions, including any other "convert" actions, apply to the changed

実際の変換がまだ行われているかどうかにかかわらず、成功した「変換」アクションがメッセージを効果的に変更し、その他の「変換」アクションを含むすべての後続のアクションが変更されたものに適用されます

message. The "convert" action does not affect the applicability of other actions; any action that was applicable before the "convert" is equally applicable to the changed message afterward.

メッセージ。「変換」アクションは、他のアクションの適用性に影響しません。「変換」の前に適用されたアクションは、その後変更されたメッセージに等しく適用できます。

When a disposition-type action, such as "fileinto" or "redirect", is encountered, the state of the message with respect to conversions is "locked in" for that disposition-type action. Whether the implementation performs the action at that point or batches it for later, it MUST perform the action on the message as it stood at the time, and MUST NOT include subsequent conversions encountered later in the script processing. Therefore, the sequence "convert, fileinto, convert, fileinto" will store two different versions of the message: the first "fileinto" uses only the first conversion, while the second uses both. See Section 3.4 for an example of how this can be used.

「fileinto」や「リダイレクト」などの処分型アクションが遭遇すると、変換に関するメッセージの状態がその処分型アクションに対して「ロックされている」。実装がその時点でアクションを実行するか、後でバッチするかどうかにかかわらず、その時点で存在していたメッセージのアクションを実行する必要があり、スクリプト処理で発生した後続の変換を含めてはなりません。したがって、シーケンス「Convert、FileInto、Convert、FileInto」は、2つの異なるバージョンのメッセージを保存します。最初の「FileInto」は最初の変換のみを使用し、2番目は両方を使用します。これを使用する方法の例については、セクション3.4を参照してください。

In addition, any tests done on the message and its parts will test the message after prior conversions have been done. The fourth block of Section 3.4 shows an example of this situation.

さらに、メッセージとその部分で行われたテストは、以前の変換が行われた後にメッセージをテストします。セクション3.4の4番目のブロックは、この状況の例を示しています。

Convert actions are cumulative, and each conversion operates on the message as it stands after all prior conversions. See the fourth block of Section 3.4 for an example of how this might be tricky.

コンバートアクションは累積的であり、各変換はすべての以前の変換の後に表示されるようにメッセージで動作します。これがどのようにトリッキーであるかの例については、セクション3.4の4番目のブロックを参照してください。

Because the implicit keep (see Section 2.10.2 of [RFC5228]), if it is in effect, acts on the final state of the message, all conversions are performed before any implicit keep.

暗黙のキープ([RFC5228]のセクション2.10.2を参照)が有効な場合、メッセージの最終状態に作用すると、すべての変換が暗黙のキープの前に実行されます。

2.2. "convert" as a Test
2.2. テストとして「変換」します

To simplify testing for supported and successful conversions, the "convert" action can also be used as a test. As such, it will attempt to perform the requested conversion(s) and will evaluate to "false" if and only if at least one conversion failed. The failure can be because a conversion was unsupported or because the data could not be converted (perhaps it had been corrupted in transit or mislabeled at its origin).

サポートされた成功した変換のテストを簡素化するために、「変換」アクションをテストとして使用することもできます。そのため、要求された変換を実行しようとし、少なくとも1つの変換が失敗した場合にのみ「False」に評価されます。障害は、変換がサポートされていなかったか、データを変換できなかったためである可能性があります(おそらく、輸送中に破損していたか、その起源で誤ってラベル付けされていました)。

This creates a new type of Sieve action, a "testable action". The usage as a test is exactly the same as for an action, and it doubles as an action and a test of the action's result at the same time. See Section 3.2 for an example of how this test can be used.

これにより、新しいタイプのふるいアクション、「テスト可能なアクション」が作成されます。テストとしての使用法は、アクションの場合とまったく同じであり、アクションとアクションの結果のテストを同時に兼ねます。このテストの使用方法については、セクション3.2を参照してください。

Note that defining this new testable action does not change the definitions of any other actions -- it does not imply that other actions can be used as tests. Future extensions might define other testable actions, but those specifications would be responsible for clearly specifying that.

この新しいテスト可能なアクションを定義しても、他のアクションの定義は変更されないことに注意してください。他のアクションをテストとして使用できることを意味するものではありません。将来の拡張は他のテスト可能なアクションを定義するかもしれませんが、それらの仕様はそれを明確に指定する責任があります。

3. Examples
3. 例
3.1. Example 1
3.1. 例1

In the following example, all "image/tiff" body parts of the message are converted to "image/jpeg" with image resolution of 320x240 pixels. The converted message is then subject to the implicit keep.

次の例では、メッセージのすべての「画像/TIFF」ボディ部分は、320x240ピクセルの画像解像度で「画像/JPEG」に変換されます。変換されたメッセージは、暗黙のキープの対象となります。

       require ["convert"];
       convert "image/tiff" "image/jpeg" ["pix-x=320","pix-y=240"];
        
3.2. Example 2
3.2. 例2

In the following example, all "image/tiff" body parts of the message are converted to "image/jpeg", as in Example 1. If the conversions were successful, those messages are then filed into a mailbox called "INBOX.pics". Other messages (those with no image/tiff body parts) are subject to the implicit keep, and have not been converted.

次の例では、メッセージのすべての「画像/TIFF」ボディ部分は、例1のように「画像/JPEG」に変換されます。変換が成功した場合、それらのメッセージは「inbox.pics」と呼ばれるメールボックスにファイルされます。。他のメッセージ(画像/TIFFボディの部分がないもの)は、暗黙のキープの対象であり、変換されていません。

       require ["mime", "fileinto", "convert"];
       if header :mime :anychild :contenttype
                 "Content-Type" "image/tiff"
       {
        if (convert "image/tiff" "image/jpeg" ["pix-x=320","pix-y=240"])
        {
         fileinto "INBOX.pics";
        }
       }
        
3.3. Example 3
3.3. 例3

In the following example, only "image/tiff" body parts with a Content-Disposition of "inline" are converted. Matching parts that are larger than 500 kilobytes are converted using an image resolution of 640x480 pixels, and those smaller are converted to 320x240 pixels. The message disposition is not changed, so the implicit keep will be in effect unless something else in the script changes that.

次の例では、「インライン」のコンテンツディスポジションを持つ「画像/TIFF」ボディ部分のみが変換されます。500キロバイトを超える一致する部品は、640x480ピクセルの画像解像度を使用して変換され、小さいものは320x240ピクセルに変換されます。メッセージの処分は変更されていないため、スクリプト内の何かが変更されない限り、暗黙のキープは有効になります。

       require ["mime", "foreverypart", "fileinto", "convert"];
       foreverypart
       {
         if header :mime :param "filename" :contains
                   "Content-Disposition" "inline"
         {
           if size :over "500K"
           {
            convert "image/tiff" "image/jpeg" ["pix-x=640","pix-y=480"];
           } else {
        
            convert "image/tiff" "image/jpeg" ["pix-x=320","pix-y=240"];
           }
         }
       }
        

[... script continues ...]

[...スクリプトが続く...]

3.4. Example 4
3.4. 例4

The following example shows some tricky interactions between multiple "convert" actions and other disposition-type actions.

次の例は、複数の「変換」アクションと他の処分型アクションの間のいくつかのトリッキーな相互作用を示しています。

require ["mime", "foreverypart", "fileinto", "redirect", "convert"];

["mime"、 "foreverypart"、 "fileinto"、 "redirect"、 "convert"]を必要とします。

       # The first "if" block will convert all image/tiff body parts
       # to 640x480 jpegs and will file the message
       # into the "INBOX.pics" mailbox as converted at this point.
       if header :mime :anychild :contenttype
                 "Content-Type" "image/tiff"
       {
         convert "image/tiff" "image/jpeg" ["pix-x=640","pix-y=480"];
         fileinto "INBOX.pics";
       }
        
       # The second block, the "foreverypart" loop, will convert all
       # inline jpegs to 320x240 resolution... including any tiff body
       # parts that had been converted in the first block, above.
       # Therefore, any tiff that had been converted to a 640x480 jpeg
       # will be re-converted to a 320x240 jpeg here if its
       # Content-Disposition is specified as "inline".
       foreverypart
       {
         if header :mime :param "filename" :contains
                   "Content-Disposition" "inline"
         {
           convert "image/jpeg" "image/jpeg" ["pix-x=320","pix-y=240"];
         }
       }
        
       # The third block will take any message that contains a header
       # field called "Mobile-Link" and redirect it to the user's
       # mobile address.  The redirected message will include both
       # conversions above, from block one and block two.
       if exists "Mobile-Link"
       {
         redirect "joe@mobile.example.com";
       }
        
       # The fourth block will file the message into "Tiff" if it
       # contains any tiff body parts.  But because of the earlier
       # conversion (in the first block), there will never be any
       # tiff body parts, so this "fileinto" will never happen.
       if header :mime :anychild :contenttype
                 "Content-Type" "image/tiff"
       {
         fileinto "Tiff";
       }
        

# Now, at the end of the script processing, the Sieve # processor will perform an implicit keep if none of # the "fileinto" and "redirect" actions were taken. # The kept message will include any conversions that # were done (that is, any from the second block).

#これで、スクリプト処理の最後に、#「fileinto」と「リダイレクト」アクションが実行されなかった場合、Sieve#プロセッサは暗黙のキープを実行します。#Peepメッセージには、#が実行された変換(つまり、2番目のブロックからのいずれか)が含まれます。

4. Security Considerations
4. セキュリティに関する考慮事項

Security considerations given in IMAP CONVERT [RFC5259] and Sieve [RFC5228] are relevant to this document. There are no additional security considerations resulting from combining the two.

IMAP変換[RFC5259]およびふるい[RFC5228]に与えられたセキュリティ上の考慮事項は、このドキュメントに関連しています。2つを組み合わせることから生じる追加のセキュリティ上の考慮事項はありません。

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

IANA has added the following registration to the "Sieve Extensions" registry, as defined in RFC 5228:

IANAは、RFC 5228で定義されているように、「Sieve Extensions」レジストリに次の登録を追加しました。

Capability name: convert Description: adds a new Sieve test and action that enable Sieve scripts to perform data conversions on the message being delivered. RFC number: RFC 6558 Contact address: The Sieve discussion list <sieve@ietf.org>

機能名:コンバート説明:新しいふるいテストとアクションを追加して、シーブスクリプトが配信されるメッセージでデータ変換を実行できるようにします。RFC番号:RFC 6558連絡先住所:シーブディスカッションリスト<sieve@ietf.org>

6. Acknowledgements
6. 謝辞

The authors also want to thank all who have contributed key insight and extensively reviewed and discussed the concepts of CONVERT.

著者はまた、重要な洞察に貢献し、改宗者の概念を広範囲にレビューし、議論したすべての人に感謝したいと考えています。

Qian Sun contributed text to this document.

Qian Sunはこの文書にテキストを寄付しました。

7. Normative References
7. 引用文献

[RFC2046] Freed, N. and N. Borenstein, "Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types", RFC 2046, November 1996.

[RFC2046] Freed、N。およびN. Borenstein、「多目的インターネットメールエクステンション(MIME)パート2:メディアタイプ」、RFC 2046、1996年11月。

[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月。

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

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

[RFC5259] Melnikov, A. and P. Coates, "Internet Message Access Protocol - CONVERT Extension", RFC 5259, July 2008.

[RFC5259] Melnikov、A。およびP. Coates、「インターネットメッセージアクセスプロトコル - 拡張機能の変換」、RFC 5259、2008年7月。

[RFC5703] Hansen, T. and C. Daboo, "Sieve Email Filtering: MIME Part Tests, Iteration, Extraction, Replacement, and Enclosure", RFC 5703, October 2009.

[RFC5703] Hansen、T。およびC. Daboo、「Sieve Emailフィルタリング:MIMEパーツテスト、反復、抽出、交換、エンクロージャー」、RFC 5703、2009年10月。

Authors' Addresses

著者のアドレス

Alexey Melnikov Isode Limited 5 Castle Business Village 36 Station Road Hampton, Middlesex TW12 2BX UK

Alexey Melnikov Isode Limited 5 Castle Business Village 36 Station Road Hampton、Middlesex TW12 2BX UK

   EMail: Alexey.Melnikov@isode.com
   URI:   http://www.melnikov.ca/
        

Barry Leiba Huawei Technologies

Barry Leiba Huawei Technologies

   Phone: +1 646 827 0648
   EMail: barryleiba@computer.org
   URI:   http://internetmessagingtechnology.org/
        

Kepeng Li Huawei Technologies Huawei Base, Bantian, Longgang District Shenzhen, Guangdong 518129 P. R. China

Kepeng Li Huawei Technologies Huawei Base、Bantian、Longgang District Shenzhen、Guangdong 518129 P. R. China

   Phone: +86-755-28974289
   EMail: likepeng@huawei.com