Network Working Group                                         M. Crispin
Request for Comments: 5256                             Panda Programming
Category: Standards Track                                   K. Murchison
                                              Carnegie Mellon University
                                                               June 2008
        
Network Working Group                                         M. Crispin
Request for Comments: 5256                             Panda Programming
Category: Standards Track                                   K. Murchison
                                              Carnegie Mellon University
                                                               June 2008
        

Internet Message Access Protocol - SORT and THREAD Extensions

Internet消息访问协议-排序和线程扩展

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 base-level server-based sorting and threading extensions to the IMAP protocol. These extensions provide substantial performance improvements for IMAP clients that offer sorted and threaded views.

本文档描述了IMAP协议的基于基本服务器的排序和线程扩展。这些扩展为提供排序视图和线程视图的IMAP客户端提供了实质性的性能改进。

1. Introduction
1. 介绍

The SORT and THREAD extensions to the [IMAP] protocol provide a means of server-based sorting and threading of messages, without requiring that the client download the necessary data to do so itself. This is particularly useful for online clients as described in [IMAP-MODELS].

[IMAP]协议的排序和线程扩展提供了一种基于服务器的消息排序和线程化方法,而无需客户机下载必要的数据来完成。这对于[IMAP-MODELS]中所述的在线客户端特别有用。

A server that supports the base-level SORT extension indicates this with a capability name which starts with "SORT". Future, upwards-compatible extensions to the SORT extension will all start with "SORT", indicating support for this base level.

支持基本级别排序扩展的服务器使用以“SORT”开头的功能名称来表示这一点。将来,对SORT扩展的向上兼容扩展都将以“SORT”开头,表示支持此基本级别。

A server that supports the THREAD extension indicates this with one or more capability names consisting of "THREAD=" followed by a supported threading algorithm name as described in this document. This provides for future upwards-compatible extensions.

支持线程扩展的服务器使用一个或多个功能名称表示这一点,这些功能名称由“THREAD=”组成,后跟本文档中描述的受支持的线程算法名称。这提供了将来向上兼容的扩展。

A server that implements the SORT and/or THREAD extensions MUST collate strings in accordance with the requirements of I18NLEVEL=1, as described in [IMAP-I18N], and SHOULD implement and advertise the I18NLEVEL=1 extension. Alternatively, a server MAY implement I18NLEVEL=2 (or higher) and comply with the rules of that level.

实现排序和/或线程扩展的服务器必须按照[IMAP-I18N]中所述的I18NLEVEL=1的要求整理字符串,并应实现和公布I18NLEVEL=1扩展。或者,服务器可以实现I18NLEVEL=2(或更高)并遵守该级别的规则。

Discussion: The SORT and THREAD extensions predate [IMAP-I18N] by several years. At the time of this writing, all known server implementations of SORT and THREAD comply with the rules of I18NLEVEL=1, but do not necessarily advertise it. As discussed in [IMAP-I18N] section 4.5, all server implementations should eventually be updated to comply with the I18NLEVEL=2 extension.

讨论:排序和线程扩展比[IMAP-I18N]早几年。在撰写本文时,所有已知的SORT和THREAD服务器实现都符合I18NLEVEL=1的规则,但不一定公布它。如[IMAP-I18N]第4.5节所述,所有服务器实现最终都应该更新,以符合I18NLEVEL=2扩展。

Historical note: The REFERENCES threading algorithm is based on the [THREADING] algorithm written and used in "Netscape Mail and News" versions 2.0 through 3.0.

历史注释:参考线程算法基于“Netscape Mail and News”2.0至3.0版中编写和使用的[threading]算法。

2. Terminology
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 [KEYWORDS].

本文件中的关键词“必须”、“不得”、“必需”、“应”、“不应”、“应”、“不应”、“建议”、“可”和“可选”应按照[关键词]中所述进行解释。

The word "can" (not "may") is used to refer to a possible circumstance or situation, as opposed to an optional facility of the protocol.

“可以”(不是“可以”)一词是指可能的情况或情况,而不是《议定书》的任择设施。

"User" is used to refer to a human user, whereas "client" refers to the software being run by the user.

“用户”是指人工用户,而“客户端”是指用户正在运行的软件。

In examples, "C:" and "S:" indicate lines sent by the client and server, respectively.

在示例中,“C:”和“S:”分别表示客户端和服务器发送的行。

2.1. Base Subject
2.1. 基础科目

Subject sorting and threading use the "base subject", which has specific subject artifacts removed. Due to the complexity of these artifacts, the formal syntax for the subject extraction rules is ambiguous. The following procedure is followed to determine the "base subject", using the [ABNF] formal syntax rules described in section 5:

主题排序和线程化使用“基本主题”,它删除了特定的主题工件。由于这些工件的复杂性,主题提取规则的形式语法是不明确的。使用第5节中描述的[ABNF]正式语法规则,遵循以下步骤确定“基本主语”:

(1) Convert any RFC 2047 encoded-words in the subject to [UTF-8] as described in "Internationalization Considerations". Convert all tabs and continuations to space. Convert all multiple spaces to a single space.

(1) 按照“国际化注意事项”中的说明,将主题中的任何RFC 2047编码字转换为[UTF-8]。将所有选项卡和连续体转换为空间。将所有多个空间转换为单个空间。

(2) Remove all trailing text of the subject that matches the subj-trailer ABNF; repeat until no more matches are possible.

(2) 删除与主题匹配的主题的所有尾随文本;重复此操作,直到无法再进行匹配。

(3) Remove all prefix text of the subject that matches the subj-leader ABNF.

(3) 删除与主题前导ABNF匹配的主题的所有前缀文本。

(4) If there is prefix text of the subject that matches the subj-blob ABNF, and removing that prefix leaves a non-empty subj-base, then remove the prefix text.

(4) 如果主题的前缀文本与sub blob ABNF匹配,并且删除该前缀会留下非空sub base,则删除前缀文本。

(5) Repeat (3) and (4) until no matches remain.

(5) 重复(3)和(4)直到没有匹配项。

Note: It is possible to defer step (2) until step (6), but this requires checking for subj-trailer in step (4).

注意:可以将步骤(2)推迟到步骤(6),但这需要在步骤(4)中检查SUB拖车。

(6) If the resulting text begins with the subj-fwd-hdr ABNF and ends with the subj-fwd-trl ABNF, remove the subj-fwd-hdr and subj-fwd-trl and repeat from step (2).

(6) 如果生成的文本以SUBK fwd hdr ABNF开头,以SUBK fwd trl ABNF结尾,则删除SUBK fwd hdr和SUBK fwd trl,并从步骤(2)重复。

(7) The resulting text is the "base subject" used in the SORT.

(7) 结果文本是排序中使用的“基本主题”。

All servers and disconnected (as described in [IMAP-MODELS]) clients MUST use exactly this algorithm to determine the "base subject". Otherwise, there is potential for a user to get inconsistent results based on whether they are running in connected or disconnected mode.

所有服务器和断开连接的(如[IMAP-MODELS]中所述)客户端必须完全使用此算法来确定“基本主题”。否则,根据用户是在连接模式下运行还是在断开连接模式下运行,用户可能会得到不一致的结果。

2.2. Sent Date
2.2. 发送日期

As used in this document, the term "sent date" refers to the date and time from the Date: header, adjusted by time zone to normalize to UTC. For example, "31 Dec 2000 16:01:33 -0800" is equivalent to the UTC date and time of "1 Jan 2001 00:01:33 +0000".

本文件中使用的术语“发送日期”是指从日期:标题开始的日期和时间,按时区进行调整以标准化为UTC。例如,“2000年12月31日16:01:33-0800”相当于UTC日期和时间“2001年1月1日00:01:33+0000”。

If the time zone is invalid, the date and time SHOULD be treated as UTC. If the time is also invalid, the time SHOULD be treated as 00:00:00. If there is no valid date or time, the date and time SHOULD be treated as 00:00:00 on the earliest possible date.

如果时区无效,则日期和时间应视为UTC。如果时间也无效,则时间应视为00:00:00。如果没有有效的日期或时间,则应将日期和时间视为最早日期的00:00:00。

This differs from the date-related criteria in the SEARCH command (described in [IMAP] section 6.4.4), which use just the date and not the time, and are not adjusted by time zone.

这与搜索命令中的日期相关标准(如[IMAP]第6.4.4节所述)不同,后者只使用日期而不使用时间,不按时区进行调整。

If the sent date cannot be determined (a Date: header is missing or cannot be parsed), the INTERNALDATE for that message is used as the sent date.

如果无法确定发送日期(date:标头缺失或无法解析),则该消息的INTERNALDATE将用作发送日期。

When comparing two sent dates that match exactly, the order in which the two messages appear in the mailbox (that is, by sequence number) is used as a tie-breaker to determine the order.

在比较两个完全匹配的发送日期时,这两封邮件在邮箱中的显示顺序(即,按序列号)将用作确定顺序的断开符。

3. Additional Commands
3. 附加命令

These commands are extensions to the [IMAP] base protocol.

这些命令是[IMAP]基本协议的扩展。

The section headings are intended to correspond with where they would be located in the main document if they were part of the base specification.

如果章节标题是基本规范的一部分,则章节标题应与它们在主文档中的位置相对应。

BASE.6.4.SORT. SORT Command

BASE.6.4.排序。排序命令

Arguments: sort program charset specification searching criteria (one or more)

参数:排序程序字符集规范搜索条件(一个或多个)

Data: untagged responses: SORT

数据:未标记的响应:排序

Result: OK - sort completed NO - sort error: can't sort that charset or criteria BAD - command unknown or arguments invalid

结果:确定-排序完成无-排序错误:无法对该字符集或条件进行排序错误-命令未知或参数无效

The SORT command is a variant of SEARCH with sorting semantics for the results. There are two arguments before the searching criteria argument: a parenthesized list of sort criteria, and the searching charset.

SORT命令是搜索的一个变体,具有结果的排序语义。搜索条件参数前有两个参数:带括号的排序条件列表和搜索字符集。

The charset argument is mandatory (unlike SEARCH) and indicates the [CHARSET] of the strings that appear in the searching criteria. The US-ASCII and [UTF-8] charsets MUST be implemented. All other charsets are optional.

charset参数是必需的(与搜索不同),它指示搜索条件中出现的字符串的[charset]。必须实现US-ASCII和[UTF-8]字符集。所有其他字符集都是可选的。

There is also a UID SORT command that returns unique identifiers instead of message sequence numbers. Note that there are separate searching criteria for message sequence numbers and UIDs; thus, the arguments to UID SORT are interpreted the same as in SORT. This is analogous to the behavior of UID SEARCH, as opposed to UID COPY, UID FETCH, or UID STORE.

还有一个UID排序命令,它返回唯一标识符,而不是消息序列号。注意,对于消息序列号和UID有单独的搜索标准;因此,UID SORT的参数的解释与SORT中的相同。这类似于UID搜索的行为,而不是UID复制、UID获取或UID存储。

The SORT command first searches the mailbox for messages that match the given searching criteria using the charset argument for the interpretation of strings in the searching criteria. It then returns the matching messages in an untagged SORT response, sorted according to one or more sort criteria.

SORT命令首先使用charset参数来解释搜索条件中的字符串,在邮箱中搜索与给定搜索条件匹配的邮件。然后,它在未标记的排序响应中返回匹配的消息,并根据一个或多个排序条件进行排序。

Sorting is in ascending order. Earlier dates sort before later dates; smaller sizes sort before larger sizes; and strings are sorted according to ascending values established by their collation algorithm (see "Internationalization Considerations").

排序是按升序进行的。较早的日期在较晚的日期之前排序;较小的尺寸优先于较大的尺寸;字符串根据排序算法建立的升序值进行排序(请参阅“国际化注意事项”)。

If two or more messages exactly match according to the sorting criteria, these messages are sorted according to the order in which they appear in the mailbox. In other words, there is an implicit sort criterion of "sequence number".

如果两封或多封邮件根据排序条件完全匹配,则这些邮件将根据它们在邮箱中的显示顺序进行排序。换言之,存在“序列号”的隐式排序标准。

When multiple sort criteria are specified, the result is sorted in the priority order that the criteria appear. For example, (SUBJECT DATE) will sort messages in order by their base subject text; and for messages with the same base subject text, it will sort by their sent date.

当指定了多个排序条件时,结果将按条件出现的优先级顺序排序。例如,(主题日期)将根据基本主题文本对消息进行排序;对于具有相同基本主题文本的邮件,它将按发送日期进行排序。

Untagged EXPUNGE responses are not permitted while the server is responding to a SORT command, but are permitted during a UID SORT command.

在服务器响应排序命令时不允许使用未标记的删除响应,但在UID排序命令期间允许使用未标记的删除响应。

The defined sort criteria are as follows. Refer to the Formal Syntax section for the precise syntactic definitions of the arguments. If the associated RFC-822 header for a particular criterion is absent, it is treated as the empty string. The empty string always collates before non-empty strings.

定义的排序标准如下所示。有关参数的精确语法定义,请参阅正式语法部分。如果特定标准的相关RFC-822标头不存在,则将其视为空字符串。空字符串总是在非空字符串之前排序。

ARRIVAL Internal date and time of the message. This differs from the ON criteria in SEARCH, which uses just the internal date.

邮件到达的内部日期和时间。这与搜索中的ON条件不同,后者仅使用内部日期。

CC [IMAP] addr-mailbox of the first "cc" address.

第一个“抄送”地址的抄送[IMAP]地址邮箱。

DATE Sent date and time, as described in section 2.2.

发送日期日期和时间,如第2.2节所述。

FROM [IMAP] addr-mailbox of the first "From" address.

第一个“发件人”地址的发件人[IMAP]地址邮箱。

REVERSE Followed by another sort criterion, has the effect of that criterion but in reverse (descending) order. Note: REVERSE only reverses a single criterion, and does not affect the implicit "sequence number" sort criterion if all other criteria are identical. Consequently, a sort of REVERSE SUBJECT is not the same as a reverse ordering of a SUBJECT sort. This can be avoided by use of additional criteria, e.g., SUBJECT DATE vs. REVERSE SUBJECT REVERSE DATE. In general, however, it's better (and faster, if the client has a "reverse current ordering" command) to reverse the results in the client instead of issuing a new SORT.

REVERSE后跟另一个排序标准,具有该标准的效果,但顺序相反(降序)。注意:反转仅反转单个条件,如果所有其他条件相同,则不影响隐式“序列号”排序条件。因此,一类反向主语与一类主语的反向顺序不同。这可以通过使用其他标准来避免,例如主题日期与反向主题日期。但是,一般来说,最好(如果客户机有“反向当前排序”命令,则速度更快)在客户机中反转结果,而不是发出新的排序。

SIZE Size of the message in octets.

消息的大小(以八位字节为单位)。

SUBJECT Base subject text.

基于主题的主题文本。

TO [IMAP] addr-mailbox of the first "To" address.

第一个“收件人”地址的收件人邮箱。

   Example:    C: A282 SORT (SUBJECT) UTF-8 SINCE 1-Feb-1994
               S: * SORT 2 84 882
               S: A282 OK SORT completed
               C: A283 SORT (SUBJECT REVERSE DATE) UTF-8 ALL
               S: * SORT 5 3 4 1 2
               S: A283 OK SORT completed
               C: A284 SORT (SUBJECT) US-ASCII TEXT "not in mailbox"
               S: * SORT
               S: A284 OK SORT completed
        
   Example:    C: A282 SORT (SUBJECT) UTF-8 SINCE 1-Feb-1994
               S: * SORT 2 84 882
               S: A282 OK SORT completed
               C: A283 SORT (SUBJECT REVERSE DATE) UTF-8 ALL
               S: * SORT 5 3 4 1 2
               S: A283 OK SORT completed
               C: A284 SORT (SUBJECT) US-ASCII TEXT "not in mailbox"
               S: * SORT
               S: A284 OK SORT completed
        

BASE.6.4.THREAD. THREAD Command

底座4.6.4.螺纹。线程命令

Arguments: threading algorithm charset specification searching criteria (one or more)

参数:线程算法字符集规范搜索条件(一个或多个)

Data: untagged responses: THREAD

数据:未标记的响应:线程

Result: OK - thread completed NO - thread error: can't thread that charset or criteria BAD - command unknown or arguments invalid

结果:确定-线程已完成无线程错误:无法线程化该字符集或条件错误-命令未知或参数无效

The THREAD command is a variant of SEARCH with threading semantics for the results. Thread has two arguments before the searching criteria argument: a threading algorithm and the searching charset.

THREAD命令是SEARCH的一个变体,它具有搜索结果的线程语义。线程在搜索条件参数之前有两个参数:线程算法和搜索字符集。

The charset argument is mandatory (unlike SEARCH) and indicates the [CHARSET] of the strings that appear in the searching criteria. The US-ASCII and [UTF-8] charsets MUST be implemented. All other charsets are optional.

charset参数是必需的(与搜索不同),它指示搜索条件中出现的字符串的[charset]。必须实现US-ASCII和[UTF-8]字符集。所有其他字符集都是可选的。

There is also a UID THREAD command that returns unique identifiers instead of message sequence numbers. Note that there are separate searching criteria for message sequence numbers and UIDs; thus the arguments to UID THREAD are interpreted the same as in THREAD. This is analogous to the behavior of UID SEARCH, as opposed to UID COPY, UID FETCH, or UID STORE.

还有一个UID线程命令,它返回唯一标识符,而不是消息序列号。注意,对于消息序列号和UID有单独的搜索标准;因此,UID线程的参数的解释与线程中的参数相同。这类似于UID搜索的行为,而不是UID复制、UID获取或UID存储。

The THREAD command first searches the mailbox for messages that match the given searching criteria using the charset argument for the interpretation of strings in the searching criteria. It then returns the matching messages in an untagged THREAD response, threaded according to the specified threading algorithm.

THREAD命令首先使用charset参数来解释搜索条件中的字符串,在邮箱中搜索与给定搜索条件匹配的邮件。然后,它在未标记的线程响应中返回匹配的消息,并根据指定的线程算法进行线程化。

All collation is in ascending order. Earlier dates collate before later dates and strings are collated according to ascending values established by their collation algorithm (see "Internationalization Considerations").

所有排序规则都是按升序排列的。较早的日期在较晚的日期之前进行整理,字符串根据其整理算法建立的升序值进行整理(请参阅“国际化注意事项”)。

Untagged EXPUNGE responses are not permitted while the server is responding to a THREAD command, but are permitted during a UID THREAD command.

服务器响应线程命令时不允许使用未标记的删除响应,但在UID线程命令期间允许使用未标记的删除响应。

The defined threading algorithms are as follows:

定义的线程算法如下所示:

ORDEREDSUBJECT

订购主题

The ORDEREDSUBJECT threading algorithm is also referred to as "poor man's threading". The searched messages are sorted by base subject and then by the sent date. The messages are then split into separate threads, with each thread containing messages with the same base subject text. Finally, the threads are sorted by the sent date of the first message in the thread.

ORDEREDSUBJECT线程算法也称为“穷人线程”。搜索的邮件按基本主题排序,然后按发送日期排序。然后将消息拆分为单独的线程,每个线程包含具有相同基本主题文本的消息。最后,根据线程中第一条消息的发送日期对线程进行排序。

The top level or "root" in ORDEREDSUBJECT threading contains the first message of every thread. All messages in the root are siblings of each other. The second message of a thread is the child of the first message, and subsequent messages of the thread are siblings of the second message and hence children of the message at the root. Hence, there are no grandchildren in ORDEREDSUBJECT threading.

ORDEREDSUBJECT线程中的顶层或“根”包含每个线程的第一条消息。根目录中的所有消息都是彼此的兄弟。线程的第二条消息是第一条消息的子消息,线程的后续消息是第二条消息的同级消息,因此是根消息的子消息。因此,ORDEREDSUBJECT线程中没有子线程。

Children in ORDEREDSUBJECT threading do not have descendents. Client implementations SHOULD treat descendents of a child in a server response as being siblings of that child.

ORDEREDSUBJECT线程中的子级没有子级。客户端实现应该将服务器响应中的子级的后代视为该子级的同级。

REFERENCES

参考资料

The REFERENCES threading algorithm threads the searched messages by grouping them together in parent/child relationships based on which messages are replies to others. The parent/child relationships are built using two methods: reconstructing a message's ancestry using the references contained within it; and checking the original (not base) subject of a message to see if it is a reply to (or forward of) another message.

引用线程算法通过在父/子关系中将搜索到的消息分组在一起来线程化,该父/子关系基于消息对其他消息的回复。父/子关系使用两种方法构建:使用消息中包含的引用重建消息的祖先;以及检查消息的原始(非基本)主题,以查看它是否是对另一消息的回复(或转发)。

Note: "Message ID" in the following description refers to a normalized form of the msg-id in [RFC2822]. The actual text in RFC 2822 may use quoting, resulting in multiple ways of expressing the same Message ID. Implementations of the REFERENCES threading algorithm MUST normalize any msg-id in order to avoid false non-matches due to differences in quoting.

注:以下描述中的“消息ID”是指[RFC2822]中消息ID的规范化形式。RFC 2822中的实际文本可能使用引号,从而导致以多种方式表示相同的消息ID。引用线程算法的实现必须规范化任何消息ID,以避免由于引号不同而导致错误的不匹配。

For example, the msg-id <"01KF8JCEOCBS0045PS"@xxx.yyy.com> and the msg-id <01KF8JCEOCBS0045PS@xxx.yyy.com> MUST be interpreted as being the same Message ID.

例如,消息id<“01KF8JCEOCBS0045PS”@xxx.yyy.com>和消息id<01KF8JCEOCBS0045PS@xxx.yyy.com>必须解释为具有相同的消息ID。

The references used for reconstructing a message's ancestry are found using the following rules:

使用以下规则可以找到用于重建消息祖先的引用:

If a message contains a References header line, then use the Message IDs in the References header line as the references.

如果消息包含引用头行,则使用引用头行中的消息ID作为引用。

If a message does not contain a References header line, or the References header line does not contain any valid Message IDs, then use the first (if any) valid Message ID found in the In-Reply-To header line as the only reference (parent) for this message.

如果邮件不包含引用标题行,或者引用标题行不包含任何有效的邮件ID,则使用回复标题行中找到的第一个(如果有)有效邮件ID作为此邮件的唯一引用(父级)。

Note: Although [RFC2822] permits multiple Message IDs in the In-Reply-To header, in actual practice this discipline has not been followed. For example, In-Reply-To headers have been observed with message addresses after the Message ID, and there are no good heuristics for software to determine the difference. This is not a problem with the References header, however.

注意:尽管[RFC2822]允许在回复报头中使用多个消息ID,但在实际操作中并未遵循此原则。例如,在回复消息时,在消息ID之后有消息地址出现,软件没有很好的启发式方法来确定差异。然而,这不是References头的问题。

If a message does not contain an In-Reply-To header line, or the In-Reply-To header line does not contain a valid Message ID, then the message does not have any references (NIL).

如果邮件不包含回复中的标题行,或者回复中的标题行不包含有效的邮件ID,则该邮件没有任何引用(NIL)。

A message is considered to be a reply or forward if the base subject extraction rules, applied to the original subject, remove any of the following: a subj-refwd, a "(fwd)" subj-trailer, or a subj-fwd-hdr and subj-fwd-trl.

如果应用于原始主题的基本主题提取规则删除了以下任何一项,则消息将被视为回复或转发:subc refwd、“fwd”subc trail或subc fwd hdr和subc fwd trl。

The REFERENCES algorithm is significantly more complex than ORDEREDSUBJECT and consists of six main steps. These steps are outlined in detail below.

参考算法比ORDEREDSUBJECT复杂得多,由六个主要步骤组成。下文详细概述了这些步骤。

(1) For each searched message:

(1) 对于每个搜索的邮件:

(A) Using the Message IDs in the message's references, link the corresponding messages (those whose Message-ID header line contains the given reference Message ID) together as parent/child. Make the first reference the parent of the second (and the second a child of the first), the second the parent of the third (and the third a child of the second), etc. The following rules govern the creation of these links:

(A) 使用消息引用中的消息ID,将相应的消息(消息ID头行包含给定引用消息ID的消息)作为父/子消息链接在一起。将第一个引用设为第二个的父级(第二个为第一个的子级),第二个为第三个的父级(第三个为第二个的子级),等等。以下规则控制这些链接的创建:

If a message does not contain a Message-ID header line, or the Message-ID header line does not contain a valid Message ID, then assign a unique Message ID to this message.

如果邮件不包含邮件ID标题行,或者邮件ID标题行不包含有效的邮件ID,请为此邮件分配唯一的邮件ID。

If two or more messages have the same Message ID, then only use that Message ID in the first (lowest sequence number) message, and assign a unique Message ID to each of the subsequent messages with a duplicate of that Message ID.

如果两条或多条消息具有相同的消息ID,则仅在第一条(最低序列号)消息中使用该消息ID,并为具有该消息ID副本的后续每条消息分配唯一的消息ID。

If no message can be found with a given Message ID, create a dummy message with this ID. Use this dummy message for all subsequent references to this ID.

如果找不到具有给定消息ID的消息,请创建具有此ID的虚拟消息。将此虚拟消息用于对此ID的所有后续引用。

If a message already has a parent, don't change the existing link. This is done because the References header line may have been truncated by a Mail User Agent (MUA). As a result, there is no guarantee that the messages corresponding to adjacent Message IDs in the References header line are parent and child.

如果邮件已具有父级,请不要更改现有链接。这样做是因为引用标题行可能已被邮件用户代理(MUA)截断。因此,无法保证与引用头行中相邻消息ID对应的消息是父消息和子消息。

Do not create a parent/child link if creating that link would introduce a loop. For example, before making message A the parent of B, make sure that A is not a descendent of B.

如果创建父/子链接会引入循环,请不要创建该链接。例如,在将消息A设置为B的父级之前,请确保A不是B的后代。

Note: Message ID comparisons are case-sensitive.

注意:邮件ID比较区分大小写。

(B) Create a parent/child link between the last reference (or NIL if there are no references) and the current message. If the current message already has a parent, it is probably the result of a truncated References header line, so break the current parent/child link before creating the new correct one. As in step 1.A,

(B) 在最后一个引用(如果没有引用,则为NIL)和当前消息之间创建父/子链接。如果当前消息已经有一个父消息,它可能是被截断的引用头行的结果,因此在创建新的正确链接之前,请先断开当前父/子链接。如步骤1.A所示,

do not create the parent/child link if creating that link would introduce a loop. Note that if this message has no references, it will now have no parent.

如果创建父/子链接会引入循环,请不要创建该链接。请注意,如果此消息没有引用,它现在将没有父级。

Note: The parent/child links created in steps 1.A and 1.B MUST be kept consistent with one another at ALL times.

注意:在步骤1.A和1.B中创建的父/子链接必须始终彼此保持一致。

(2) Gather together all of the messages that have no parents and make them all children (siblings of one another) of a dummy parent (the "root"). These messages constitute the first (head) message of the threads created thus far.

(2) 将所有没有父消息的消息聚集在一起,使它们都成为虚拟父消息(“根”)的子消息(彼此的兄弟姐妹)。这些消息构成了迄今为止创建的线程的第一条(头)消息。

(3) Prune dummy messages from the thread tree. Traverse each thread under the root, and for each message:

(3) 从线程树中删除虚拟消息。遍历根目录下的每个线程,并针对每个消息:

If it is a dummy message with NO children, delete it.

如果它是没有子项的虚拟消息,请将其删除。

If it is a dummy message with children, delete it, but promote its children to the current level. In other words, splice them in with the dummy's siblings.

如果它是带有子级的虚拟消息,请删除它,但将其子级提升到当前级别。换句话说,将它们与假人的兄弟姐妹拼接在一起。

Do not promote the children if doing so would make them children of the root, unless there is only one child.

除非只有一个孩子,否则如果这样做会使孩子成为根的孩子,就不要提拔他们。

(4) Sort the messages under the root (top-level siblings only) by sent date as described in section 2.2. In the case of a dummy message, sort its children by sent date and then use the first child for the top-level sort.

(4) 按照第2.2节所述的发送日期对根目录下的邮件(仅限顶级同级)进行排序。对于伪消息,请按发送日期对其子消息进行排序,然后使用第一个子消息进行顶级排序。

(5) Gather together messages under the root that have the same base subject text.

(5) 将具有相同基本主题文本的邮件聚集在根目录下。

(A) Create a table for associating base subjects with messages, called the subject table.

(A) 创建一个用于将基本主题与消息关联的表,称为主题表。

(B) Populate the subject table with one message per each base subject. For each child of the root:

(B) 用每个基本主题一条消息填充主题表。对于根的每个子级:

(i) Find the subject of this thread, by using the base subject from either the current message or its first child if the current message is a dummy. This is the thread subject.

(i) 通过使用来自当前消息的基本主题或其第一个子级(如果当前消息是伪消息)来查找此线程的主题。这是主题。

(ii) If the thread subject is empty, skip this message.

(ii)如果线程主题为空,则跳过此消息。

(iii) Look up the message associated with the thread subject in the subject table.

(iii)在主题表中查找与线程主题关联的消息。

(iv) If there is no message in the subject table with the thread subject, add the current message and the thread subject to the subject table.

(iv)如果主题表中没有包含线程主题的消息,则将当前消息和线程主题添加到主题表中。

Otherwise, if the message in the subject table is not a dummy, AND either of the following criteria are true:

否则,如果主题表中的消息不是伪消息,并且以下任一条件为真:

The current message is a dummy, OR

当前消息是伪消息,或

The message in the subject table is a reply or forward and the current message is not.

主题表中的消息是回复或转发,而当前消息不是。

then replace the message in the subject table with the current message.

然后用当前消息替换主题表中的消息。

(C) Merge threads with the same thread subject. For each child of the root:

(C) 合并具有相同线程主题的线程。对于根的每个子级:

(i) Find the message's thread subject as in step 5.B.i above.

(i) 按照上面的步骤5.B.i查找消息的线程主题。

(ii) If the thread subject is empty, skip this message.

(ii)如果线程主题为空,则跳过此消息。

(iii) Lookup the message associated with this thread subject in the subject table.

(iii)在主题表中查找与此线程主题关联的消息。

(iv) If the message in the subject table is the current message, skip this message.

(iv)如果主题表中的消息是当前消息,则跳过此消息。

Otherwise, merge the current message with the one in the subject table using the following rules:

否则,请使用以下规则将当前消息与主题表中的消息合并:

If both messages are dummies, append the current message's children to the children of the message in the subject table (the children of both messages become siblings), and then delete the current message.

如果两条消息都是伪消息,请将当前消息的子消息附加到主题表中消息的子消息(两条消息的子消息都成为同级消息),然后删除当前消息。

If the message in the subject table is a dummy and the current message is not, make the current message a child of the message in the subject table (a sibling of its children).

如果主题表中的消息是伪消息而当前消息不是,则将当前消息设置为主题表中消息的子级(其子级的同级)。

If the current message is a reply or forward and the message in the subject table is not, make the current message a child of the message in the subject table (a sibling of its children).

如果当前消息是回复或转发,而主题表中的消息不是,请将当前消息设置为主题表中消息的子级(其子级的同级)。

Otherwise, create a new dummy message and make both the current message and the message in the subject table children of the dummy. Then replace the message in the subject table with the dummy message.

否则,创建一个新的虚拟消息,并使当前消息和主题表中的消息都成为该虚拟消息的子消息。然后用伪消息替换subject表中的消息。

Note: Subject comparisons are case-insensitive, as described under "Internationalization Considerations".

注意:主题比较不区分大小写,如“国际化注意事项”中所述。

(6) Traverse the messages under the root and sort each set of siblings by sent date as described in section 2.2. Traverse the messages in such a way that the "youngest" set of siblings are sorted first, and the "oldest" set of siblings are sorted last (grandchildren are sorted before children, etc). In the case of a dummy message (which can only occur with top-level siblings), use its first child for sorting.

(6) 遍历根目录下的消息,并按照第2.2节所述的发送日期对每组同级进行排序。以这样一种方式遍历消息:首先对“最年轻”的一组兄弟姐妹进行排序,最后对“最年长”的一组兄弟姐妹进行排序(孙子女排序在孩子之前,等等)。对于伪消息(只能与顶级同级消息一起出现),请使用其第一个子消息进行排序。

   Example:    C: A283 THREAD ORDEREDSUBJECT UTF-8 SINCE 5-MAR-2000
               S: * THREAD (166)(167)(168)(169)(172)(170)(171)
                  (173)(174 (175)(176)(178)(181)(180))(179)(177
                  (183)(182)(188)(184)(185)(186)(187)(189))(190)
                  (191)(192)(193)(194 195)(196 (197)(198))(199)
                  (200 202)(201)(203)(204)(205)(206 207)(208)
               S: A283 OK THREAD completed
               C: A284 THREAD ORDEREDSUBJECT US-ASCII TEXT "gewp"
               S: * THREAD
               S: A284 OK THREAD completed
               C: A285 THREAD REFERENCES UTF-8 SINCE 5-MAR-2000
               S: * THREAD (166)(167)(168)(169)(172)((170)(179))
                  (171)(173)((174)(175)(176)(178)(181)(180))
                  ((177)(183)(182)(188 (184)(189))(185 186)(187))
                  (190)(191)(192)(193)((194)(195 196))(197 198)
                  (199)(200 202)(201)(203)(204)(205 206 207)(208)
               S: A285 OK THREAD completed
        
   Example:    C: A283 THREAD ORDEREDSUBJECT UTF-8 SINCE 5-MAR-2000
               S: * THREAD (166)(167)(168)(169)(172)(170)(171)
                  (173)(174 (175)(176)(178)(181)(180))(179)(177
                  (183)(182)(188)(184)(185)(186)(187)(189))(190)
                  (191)(192)(193)(194 195)(196 (197)(198))(199)
                  (200 202)(201)(203)(204)(205)(206 207)(208)
               S: A283 OK THREAD completed
               C: A284 THREAD ORDEREDSUBJECT US-ASCII TEXT "gewp"
               S: * THREAD
               S: A284 OK THREAD completed
               C: A285 THREAD REFERENCES UTF-8 SINCE 5-MAR-2000
               S: * THREAD (166)(167)(168)(169)(172)((170)(179))
                  (171)(173)((174)(175)(176)(178)(181)(180))
                  ((177)(183)(182)(188 (184)(189))(185 186)(187))
                  (190)(191)(192)(193)((194)(195 196))(197 198)
                  (199)(200 202)(201)(203)(204)(205 206 207)(208)
               S: A285 OK THREAD completed
        

Note: The line breaks in the first and third server responses are for editorial clarity and do not appear in real THREAD responses.

注意:第一个和第三个服务器响应中的换行符是为了编辑清晰,不会出现在实际的线程响应中。

4. Additional Responses
4. 其他答复

These responses are extensions to the [IMAP] base protocol.

这些响应是对[IMAP]基本协议的扩展。

The section headings of these responses are intended to correspond with where they would be located in the main document.

这些回复的章节标题旨在与它们在主文件中的位置相对应。

BASE.7.2.SORT. SORT Response

BASE.7.2.排序。排序响应

Data: zero or more numbers

数据:零个或多个数字

The SORT response occurs as a result of a SORT or UID SORT command. The number(s) refer to those messages that match the search criteria. For SORT, these are message sequence numbers; for UID SORT, these are unique identifiers. Each number is delimited by a space.

排序响应是SORT或UID SORT命令的结果。编号指的是与搜索条件匹配的邮件。对于排序,这些是消息序列号;对于UID排序,这些是唯一标识符。每个数字由空格分隔。

   Example:    S: * SORT 2 3 6
        
   Example:    S: * SORT 2 3 6
        

BASE.7.2.THREAD. THREAD Response

BASE.7.2.螺纹。线程响应

Data: zero or more threads

数据:零个或多个线程

The THREAD response occurs as a result of a THREAD or UID THREAD command. It contains zero or more threads. A thread consists of a parenthesized list of thread members.

线程响应是线程或UID线程命令的结果。它包含零个或多个线程。线程由带括号的线程成员列表组成。

Thread members consist of zero or more message numbers, delimited by spaces, indicating successive parent and child. This continues until the thread splits into multiple sub-threads, at which point, the thread nests into multiple sub-threads with the first member of each sub-thread being siblings at this level. There is no limit to the nesting of threads.

线程成员由零个或多个消息编号组成,由空格分隔,表示连续的父级和子级。这将一直持续到线程拆分为多个子线程,此时,线程嵌套为多个子线程,每个子线程的第一个成员都是此级别的同级。线程的嵌套没有限制。

The messages numbers refer to those messages that match the search criteria. For THREAD, these are message sequence numbers; for UID THREAD, these are unique identifiers.

消息编号指的是与搜索条件匹配的消息。对于线程,这些是消息序列号;对于UID线程,这些是唯一标识符。

   Example:    S: * THREAD (2)(3 6 (4 23)(44 7 96))
        
   Example:    S: * THREAD (2)(3 6 (4 23)(44 7 96))
        

The first thread consists only of message 2. The second thread consists of the messages 3 (parent) and 6 (child), after which it splits into two sub-threads; the first of which contains messages 4 (child of 6, sibling of 44) and 23 (child of 4), and the second of which contains messages 44 (child of 6, sibling of 4), 7 (child of 44), and 96 (child of 7). Since some later messages are parents of earlier messages, the messages were probably moved from some other mailbox at different times.

第一个线程只包含消息2。第二个线程由消息3(父线程)和消息6(子线程)组成,之后它分裂为两个子线程;第一个包含消息4(6的孩子,44的兄弟姐妹)和23(4的孩子),第二个包含消息44(6的孩子,4的兄弟姐妹),7(44的孩子)和96(7的孩子)。由于一些后期邮件是早期邮件的父邮件,因此这些邮件可能在不同的时间从其他邮箱移动。

-- 2

-- 2

            -- 3
               \-- 6
                   |-- 4
                   |   \-- 23
                   |
                   \-- 44
                        \-- 7
                            \-- 96
        
            -- 3
               \-- 6
                   |-- 4
                   |   \-- 23
                   |
                   \-- 44
                        \-- 7
                            \-- 96
        
   Example:    S: * THREAD ((3)(5))
        
   Example:    S: * THREAD ((3)(5))
        

In this example, 3 and 5 are siblings of a parent that does not match the search criteria (and/or does not exist in the mailbox); however they are members of the same thread.

在本例中,3和5是与搜索条件不匹配(和/或邮箱中不存在)的父级的同级;但是,它们是同一线程的成员。

5. Formal Syntax of SORT and THREAD Commands and Responses
5. 排序和线程命令及响应的形式语法

The following syntax specification uses the Augmented Backus-Naur Form (ABNF) notation as specified in [ABNF]. It also uses [ABNF] rules defined in [IMAP].

以下语法规范使用[ABNF]中指定的增广Backus Naur Form(ABNF)表示法。它还使用[IMAP]中定义的[ABNF]规则。

sort            = ["UID" SP] "SORT" SP sort-criteria SP search-criteria
        
sort            = ["UID" SP] "SORT" SP sort-criteria SP search-criteria
        
sort-criteria   = "(" sort-criterion *(SP sort-criterion) ")"
        
sort-criteria   = "(" sort-criterion *(SP sort-criterion) ")"
        
sort-criterion  = ["REVERSE" SP] sort-key
        
sort-criterion  = ["REVERSE" SP] sort-key
        
sort-key        = "ARRIVAL" / "CC" / "DATE" / "FROM" / "SIZE" /
                  "SUBJECT" / "TO"
        
sort-key        = "ARRIVAL" / "CC" / "DATE" / "FROM" / "SIZE" /
                  "SUBJECT" / "TO"
        
thread          = ["UID" SP] "THREAD" SP thread-alg SP search-criteria
        
thread          = ["UID" SP] "THREAD" SP thread-alg SP search-criteria
        
thread-alg      = "ORDEREDSUBJECT" / "REFERENCES" / thread-alg-ext
        
thread-alg      = "ORDEREDSUBJECT" / "REFERENCES" / thread-alg-ext
        

thread-alg-ext = atom ; New algorithms MUST be registered with IANA

线程alg ext=原子;新算法必须向IANA注册

search-criteria = charset 1*(SP search-key)

搜索条件=字符集1*(SP搜索键)

charset = atom / quoted ; CHARSET values MUST be registered with IANA

字符集=原子/引用;字符集值必须向IANA注册

sort-data = "SORT" *(SP nz-number)

排序数据=“排序”*(SP nz编号)

thread-data = "THREAD" [SP 1*thread-list]

thread data=“thread”[SP 1*线程列表]

thread-list     = "(" (thread-members / thread-nested) ")"
        
thread-list     = "(" (thread-members / thread-nested) ")"
        

thread-members = nz-number *(SP nz-number) [SP thread-nested]

线程成员=nz编号*(SP nz编号)[SP线程嵌套]

thread-nested = 2*thread-list

线程嵌套=2*线程列表

The following syntax describes base subject extraction rules (2)-(6):

以下语法描述基本主题提取规则(2)-(6):

subject         = *subj-leader [subj-middle] *subj-trailer
        
subject         = *subj-leader [subj-middle] *subj-trailer
        
subj-refwd      = ("re" / ("fw" ["d"])) *WSP [subj-blob] ":"
        
subj-refwd      = ("re" / ("fw" ["d"])) *WSP [subj-blob] ":"
        
subj-blob       = "[" *BLOBCHAR "]" *WSP
        
subj-blob       = "[" *BLOBCHAR "]" *WSP
        
subj-fwd        = subj-fwd-hdr subject subj-fwd-trl
        
subj-fwd        = subj-fwd-hdr subject subj-fwd-trl
        

subj-fwd-hdr = "[fwd:"

sub fwd hdr=“[fwd:”

subj-fwd-trl = "]"

sub fwd trl=“]”

subj-leader     = (*subj-blob subj-refwd) / WSP
        
subj-leader     = (*subj-blob subj-refwd) / WSP
        
subj-middle     = *subj-blob (subj-base / subj-fwd)
                    ; last subj-blob is subj-base if subj-base would
                    ; otherwise be empty
        
subj-middle     = *subj-blob (subj-base / subj-fwd)
                    ; last subj-blob is subj-base if subj-base would
                    ; otherwise be empty
        
subj-trailer    = "(fwd)" / WSP
        
subj-trailer    = "(fwd)" / WSP
        
subj-base       = NONWSP *(*WSP NONWSP)
                    ; can be a subj-blob
        
subj-base       = NONWSP *(*WSP NONWSP)
                    ; can be a subj-blob
        
BLOBCHAR        = %x01-5a / %x5c / %x5e-ff
                    ; any CHAR8 except '[' and ']'.
                    ; SHOULD comply with [UTF-8]
        
BLOBCHAR        = %x01-5a / %x5c / %x5e-ff
                    ; any CHAR8 except '[' and ']'.
                    ; SHOULD comply with [UTF-8]
        
NONWSP          = %x01-08 / %x0a-1f / %x21-ff
                    ; any CHAR8 other than WSP.
                    ; SHOULD comply with [UTF-8]
        
NONWSP          = %x01-08 / %x0a-1f / %x21-ff
                    ; any CHAR8 other than WSP.
                    ; SHOULD comply with [UTF-8]
        
6. Security Considerations
6. 安全考虑

The SORT and THREAD extensions do not raise any security considerations that are not present in the base [IMAP] protocol, and these issues are discussed in [IMAP]. Nevertheless, it is important to remember that [IMAP] protocol transactions, including message data, are sent in the clear over the network unless protection from snooping is negotiated, either by the use of STARTTLS, privacy protection in AUTHENTICATE, or some other protection mechanism.

排序和线程扩展不会引起基本[IMAP]协议中不存在的任何安全问题,这些问题将在[IMAP]中讨论。尽管如此,重要的是要记住,[IMAP]协议事务(包括消息数据)通过网络以明文形式发送,除非通过使用STARTTLS、身份验证中的隐私保护或某些其他保护机制协商防止窥探。

Although not a security consideration, it is important to recognize that sorting by REFERENCES can lead to misleading threading trees. For example, a message with false References: header data will cause a thread to be incorporated into another thread.

尽管这不是一个安全考虑,但必须认识到按引用排序可能会导致错误的线程树。例如,带有错误引用的消息:头数据将导致一个线程合并到另一个线程中。

The process of extracting the base subject may lead to incorrect collation if the extracted data was significant text as opposed to a subject artifact.

如果提取的数据是重要文本而不是主题工件,则提取基本主题的过程可能会导致不正确的排序。

7. Internationalization Considerations
7. 国际化考虑

As stated in the introduction, the rules of I18NLEVEL=1 as described in [IMAP-I18N] MUST be followed; that is, the SORT and THREAD extensions MUST collate strings according to the i;unicode-casemap collation described in [UNICASEMAP]. Servers SHOULD also advertise the I18NLEVEL=1 extension. Alternatively, a server MAY implement I18NLEVEL=2 (or higher) and comply with the rules of that level.

如引言所述,必须遵守[IMAP-I18N]中所述的I18NLEVEL=1的规则;也就是说,排序和线程扩展必须根据i来整理字符串;[unicode casemap]中描述的unicode casemap排序规则。服务器还应该公布I18NLEVEL=1扩展。或者,服务器可以实现I18NLEVEL=2(或更高)并遵守该级别的规则。

As discussed in [IMAP-I18N] section 4.5, all server implementations should eventually be updated to support the [IMAP-I18N] I18NLEVEL=2 extension.

如[IMAP-I18N]第4.5节所述,最终应更新所有服务器实现,以支持[IMAP-I18N]I18NLEVEL=2扩展。

Translations of the "re" or "fw"/"fwd" tokens are not specified for removal in the base subject extraction process. An attempt to add such translated tokens would result in a geometrically complex, and ultimately unimplementable, task.

在基本主题提取过程中,没有指定要删除的“re”或“fw”/“fwd”标记的翻译。试图添加这样的翻译标记将导致一个几何上复杂的、最终无法实现的任务。

Instead, note that [RFC2822] section 3.6.5 recommends that "re:" (from the Latin "res", meaning "in the matter of") be used to identify a reply. Although it is evident that, from the multiple forms of token to identify a forwarded message, there is considerable variation found in the wild, the variations are (still) manageable. Consequently, it is suggested that "re:" and one of the variations of the tokens for a forward supported by the base subject extraction rules be adopted for Internet mail messages, since doing so makes it a simple display-time task to localize the token language for the user.

相反,请注意[RFC2822]第3.6.5节建议使用“re:”(来自拉丁语“res”,意思是“在……方面”)来识别回复。虽然很明显,从识别转发消息的多种形式的令牌来看,在野外发现了相当大的变化,但这些变化(仍然)是可管理的。因此,建议对因特网邮件消息采用“re:”和基本主题提取规则支持的转发令牌的一种变体,因为这样做使得为用户本地化令牌语言成为一项简单的显示时间任务。

8. IANA Considerations
8. IANA考虑

[IMAP] capabilities are registered by publishing a standards track or IESG-approved experimental RFC. This document constitutes registration of the SORT and THREAD capabilities in the [IMAP] capabilities registry.

[IMAP]功能通过发布标准跟踪或IESG批准的实验RFC进行注册。本文档构成[IMAP]功能注册表中排序和线程功能的注册。

This document creates a new [IMAP] threading algorithms registry, which registers threading algorithms by publishing a standards track or IESG-approved experimental RFC. This document constitutes registration of the ORDEREDSUBJECT and REFERENCES algorithms in that registry.

本文档创建了一个新的[IMAP]线程算法注册表,该注册表通过发布标准跟踪或IESG批准的实验RFC来注册线程算法。本文档构成ORDEREDSUBJECT的注册,并引用该注册中的算法。

9. Normative References
9. 规范性引用文件

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

[ABNF]Crocker,D.,Ed.,和P.Overell,“语法规范的扩充BNF:ABNF”,STD 68,RFC 5234,2008年1月。

[CHARSET] Freed, N. and J. Postel, "IANA Charset Registration Procedures", BCP 19, RFC 2978, October 2000.

[CHARSET]Freed,N.和J.Postel,“IANA字符集注册程序”,BCP 19,RFC 2978,2000年10月。

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

[IMAP]Crispin,M.,“互联网消息访问协议-版本4rev1”,RFC 35012003年3月。

[IMAP-I18N] Newman, C., Gulbrandsen, A., and A. Melnikov, "Internet Message Access Protocol Internationalization", RFC 5255, June 2008.

[IMAP-I18N]Newman,C.,Gulbrandsen,A.,和A.Melnikov,“互联网消息访问协议国际化”,RFC 52552008年6月。

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

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

[RFC2822]Resnick,P.,Ed.,“互联网信息格式”,RFC 2822,2001年4月。

[UNICASEMAP] Crispin, M., "i;unicode-casemap - Simple Unicode Collation Algorithm", RFC 5051, October 2007.

[UNICASEMAP]Crispin,M.,“i;unicode案例地图-简单unicode排序算法”,RFC 5051,2007年10月。

[UTF-8] Yergeau, F., "UTF-8, a transformation format of ISO 10646", STD 63, RFC 3629, November 2003.

[UTF-8]Yergeau,F.,“UTF-8,ISO 10646的转换格式”,STD 63,RFC 3629,2003年11月。

10. Informative References
10. 资料性引用

[IMAP-MODELS] Crispin, M., "Distributed Electronic Mail Models in IMAP4", RFC 1733, December 1994.

[IMAP-MODELS]Crispin,M.,“IMAP4中的分布式电子邮件模型”,RFC 1733,1994年12月。

[THREADING] Zawinski, J. "Message Threading", http://www.jwz.org/doc/threading.html, 1997-2002.

[线程]Zawinski,J.“消息线程”,http://www.jwz.org/doc/threading.html, 1997-2002.

Authors' Addresses

作者地址

Mark R. Crispin Panda Programming 6158 NE Lariat Loop Bainbridge Island, WA 98110-2098

Mark R.Crispin熊猫计划6158北拉里亚特环班布里奇岛,华盛顿州98110-2098

   Phone: +1 (206) 842-2385
   EMail: IMAP+SORT+THREAD@Lingling.Panda.COM
        
   Phone: +1 (206) 842-2385
   EMail: IMAP+SORT+THREAD@Lingling.Panda.COM
        

Kenneth Murchison Carnegie Mellon University 5000 Forbes Avenue Cyert Hall 285 Pittsburgh, PA 15213

肯尼思·默奇森卡内基·梅隆大学福布斯大道5000号塞尔特厅宾夕法尼亚州匹兹堡285号,邮编15213

   Phone: +1 (412) 268-2638
   EMail: murch@andrew.cmu.edu
        
   Phone: +1 (412) 268-2638
   EMail: murch@andrew.cmu.edu
        

Full Copyright Statement

完整版权声明

Copyright (C) The IETF Trust (2008).

版权所有(C)IETF信托基金(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秘书处披露的知识产权副本和任何许可证保证,或本规范实施者或用户试图获得使用此类专有权利的一般许可证或许可的结果,可从IETF在线知识产权存储库获取,网址为http://www.ietf.org/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的IETF-ipr@ietf.org.