1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123 |
- Network Working Group C. Newman
- Request for Comments: 5255 Sun Microsystems
- Category: Standards Track A. Gulbrandsen
- Oryx Mail Systems GmhH
- A. Melnikov
- Isode Limited
- June 2008
- Internet Message Access Protocol Internationalization
- 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.
- Abstract
- Internet Message Access Protocol (IMAP) version 4rev1 has basic
- support for non-ASCII characters in mailbox names and search
- substrings. It also supports non-ASCII message headers and content
- encoded as specified by Multipurpose Internet Mail Extensions (MIME).
- This specification defines a collection of IMAP extensions that
- improve international support including language negotiation for
- international error text, translations for namespace prefixes, and
- comparator negotiation for search, sort, and thread.
- Newman, et al. Standards Track [Page 1]
- RFC 5255 IMAP Internationalization June 2008
- Table of Contents
- 1. Introduction ....................................................3
- 2. Conventions Used in This Document ...............................3
- 3. LANGUAGE Extension ..............................................3
- 3.1. LANGUAGE Extension Requirements ............................4
- 3.2. LANGUAGE Command ...........................................4
- 3.3. LANGUAGE Response ..........................................6
- 3.4. TRANSLATION Extension to the NAMESPACE Response ............7
- 3.5. Formal Syntax ..............................................8
- 4. I18NLEVEL=1 and I18NLEVEL=2 Extensions ..........................9
- 4.1. Introduction and Overview ..................................9
- 4.2. Requirements Common to Both I18NLEVEL=1 and I18NLEVEL=2 ....9
- 4.3. I18NLEVEL=1 Extension Requirements ........................10
- 4.4. I18NLEVEL=2 Extension Requirements ........................10
- 4.5. Compatibility Notes .......................................11
- 4.6. Comparators and Character Encodings .......................11
- 4.7. COMPARATOR Command ........................................13
- 4.8. COMPARATOR Response .......................................14
- 4.9. BADCOMPARATOR Response Code ...............................14
- 4.10. Formal Syntax ............................................14
- 5. Other IMAP Internationalization Issues .........................15
- 5.1. Unicode Userids and Passwords .............................15
- 5.2. UTF-8 Mailbox Names .......................................15
- 5.3. UTF-8 Domains, Addresses, and Mail Headers ................15
- 6. IANA Considerations ............................................16
- 7. Security Considerations ........................................16
- 8. Acknowledgements ...............................................16
- 9. Relevant Sources of Documents for Internationalized IMAP
- Implementations ................................................17
- 10. Normative References ..........................................17
- 11. Informative References ........................................18
- Newman, et al. Standards Track [Page 2]
- RFC 5255 IMAP Internationalization June 2008
- 1. Introduction
- This specification defines two IMAP4rev1 [RFC3501] extensions to
- enhance international support. These extensions can be advertised
- and implemented separately.
- The LANGUAGE extension allows the client to request a suitable
- language for protocol error messages and in combination with the
- NAMESPACE extension [RFC2342] enables namespace translations.
- The I18NLEVEL=2 extension allows the client to request a suitable
- collation that will modify the behavior of the base specification's
- SEARCH command as well as the SORT and THREAD extensions [SORT].
- This leverages the collation registry [RFC4790]. The I18NLEVEL=1
- extension updates SEARCH/SORT/THREAD to use i;unicode-casemap
- comparator, as defined in [UCM]. I18NLEVEL=1 is a simpler version of
- I18NLEVEL=2 with no ability to select a different collation.
- 2. Conventions Used in This Document
- 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 [RFC2119].
- The formal syntax uses the Augmented Backus-Naur Form (ABNF)
- [RFC5234] notation including the core rules defined in Appendix A.
- The UTF-8-related productions are defined in [RFC3629].
- In examples, "C:" and "S:" indicate lines sent by the client and
- server respectively. If a single "C:" or "S:" label applies to
- multiple lines, then the line breaks between those lines are for
- editorial clarity only and are not part of the actual protocol
- exchange.
- 3. LANGUAGE Extension
- IMAP allows server responses to include human-readable text that in
- many cases needs to be presented to the user. But that text is
- limited to US-ASCII by the IMAP specification [RFC3501] in order to
- preserve backwards compatibility with deployed IMAP implementations.
- This section specifies a way for an IMAP client to negotiate which
- language the server should use when sending human-readable text.
- Newman, et al. Standards Track [Page 3]
- RFC 5255 IMAP Internationalization June 2008
- The LANGUAGE extension only provides a mechanism for altering fixed
- server strings such as response text and NAMESPACE folder names.
- Assigning localized language aliases to shared mailboxes would be
- done with a separate mechanism such as the proposed METADATA
- extension (see [METADATA]).
- 3.1. LANGUAGE Extension Requirements
- IMAP servers that support this extension MUST list the keyword
- LANGUAGE in their CAPABILITY response as well as in the greeting
- CAPABILITY data.
- A server that advertises this extension MUST use the language
- "i-default" as described in [RFC2277] as its default language until
- another supported language is negotiated by the client. A server
- MUST include "i-default" as one of its supported languages. IMAP
- servers SHOULD NOT advertise the LANGUAGE extension if they discover
- that they only support "i-default".
- Clients and servers that support this extension MUST also support the
- NAMESPACE extension [RFC2342].
- The LANGUAGE command is valid in all states. Clients SHOULD issue
- LANGUAGE before authentication, since some servers send valuable user
- information as part of authentication (e.g., "password is correct,
- but expired"). If a security layer (such as SASL or TLS) is
- subsequently negotiated by the client, it MUST re-issue the LANGUAGE
- command in order to make sure that no previous active attack (if any)
- on LANGUAGE negotiation has effect on subsequent error messages.
- (See Section 7 for a more detailed explanation of the attack.)
- 3.2. LANGUAGE Command
- Arguments: Optional language range arguments.
- Response: A possible LANGUAGE response (see Section 3.3).
- A possible NAMESPACE response (see Section 3.4).
- Result: OK - Command completed
- NO - Could not complete command
- BAD - Arguments invalid
- The LANGUAGE command requests that human-readable text emitted by the
- server be localized to a language matching one of the language range
- argument as described by Section 2 of [RFC4647].
- Newman, et al. Standards Track [Page 4]
- RFC 5255 IMAP Internationalization June 2008
- If the command succeeds, the server will return human-readable
- responses in the first supported language specified. These responses
- will be in UTF-8 [RFC3629]. The server MUST send a LANGUAGE response
- specifying the language used, and the change takes effect immediately
- after the LANGUAGE response.
- If the command fails, the server continues to return human-readable
- responses in the language it was previously using.
- The special "default" language range argument indicates a request to
- use a language designated as preferred by the server administrator.
- The preferred language MAY vary based on the currently active user.
- If a language range does not match a known language tag exactly but
- does match a language by the rules of [RFC4647], the server MUST send
- an untagged LANGUAGE response indicating the language selected.
- If there aren't any arguments, the server SHOULD send an untagged
- LANGUAGE response listing the languages it supports. If the server
- is unable to enumerate the list of languages it supports it MAY
- return a tagged NO response to the enumeration request. If, after
- receiving a LANGUAGE request, the server discovers that it doesn't
- support any language other than i-default, it MUST return a tagged NO
- response to the enumeration request.
- < The server defaults to using English i-default responses until
- the user explicitly changes the language. >
- C: A001 LOGIN KAREN PASSWORD
- S: A001 OK LOGIN completed
- < Client requested MUL language, which no server supports. >
- C: A002 LANGUAGE MUL
- S: A002 NO Unsupported language MUL
- < A LANGUAGE command with no arguments is a request to enumerate
- the list of languages the server supports. >
- C: A003 LANGUAGE
- S: * LANGUAGE (EN DE IT i-default)
- S: A003 OK Supported languages have been enumerated
- C: B001 LANGUAGE
- S: B001 NO Server is unable to enumerate supported languages
- Newman, et al. Standards Track [Page 5]
- RFC 5255 IMAP Internationalization June 2008
- < Once the client changes the language, all responses will be in
- that language starting after the LANGUAGE response. Note that
- this includes the NAMESPACE response. Because RFCs are in US-
- ASCII, this document uses an ASCII transcription rather than
- UTF-8 text, e.g., "ue" in the word "ausgefuehrt" >
- C: C001 LANGUAGE DE
- S: * LANGUAGE (DE)
- S: * NAMESPACE (("" "/")) (("Other Users/" "/" "TRANSLATION"
- ("Andere Ben&APw-tzer/"))) (("Public Folders/" "/"
- "TRANSLATION" ("Gemeinsame Postf&AM8-cher/")))
- S: C001 OK Sprachwechsel durch LANGUAGE-Befehl ausgefuehrt
- < If a server does not support the requested primary language,
- responses will continue to be returned in the current language
- the server is using. >
- C: D001 LANGUAGE FR
- S: D001 NO Diese Sprache ist nicht unterstuetzt
- C: D002 LANGUAGE DE-IT
- S: * LANGUAGE (DE-IT)
- S: * NAMESPACE (("" "/"))(("Other Users/" "/" "TRANSLATION"
- ("Andere Ben&APw-tzer/"))) (("Public Folders/" "/"
- "TRANSLATION" ("Gemeinsame Postf&AM8-cher/")))
- S: D002 OK Sprachwechsel durch LANGUAGE-Befehl ausgefuehrt
- C: D003 LANGUAGE "default"
- S: * LANGUAGE (DE)
- S: D003 OK Sprachwechsel durch LANGUAGE-Befehl ausgefuehrt
- < Server does not speak French, but does speak English. User
- speaks Canadian French and Canadian English. >
- C: E001 LANGUAGE FR-CA EN-CA
- S: * LANGUAGE (EN)
- S: E001 OK Now speaking English
- 3.3. LANGUAGE Response
- Contents: A list of one or more language tags.
- The LANGUAGE response occurs as a result of a LANGUAGE command. A
- LANGUAGE response with a list containing a single language tag
- indicates that the server is now using that language. A LANGUAGE
- response with a list containing multiple language tags indicates the
- server is communicating a list of available languages to the client,
- and no change in the active language has been made.
- Newman, et al. Standards Track [Page 6]
- RFC 5255 IMAP Internationalization June 2008
- 3.4. TRANSLATION Extension to the NAMESPACE Response
- If localized representations of the namespace prefixes are available
- in the selected language, the server SHOULD include these in the
- TRANSLATION extension to the NAMESPACE response.
- The TRANSLATION extension to the NAMESPACE response returns a single
- string, containing the modified UTF-7 [RFC3501] encoded translation
- of the namespace prefix. It is the responsibility of the client to
- convert between the namespace prefix and the translation of the
- namespace prefix when presenting mailbox names to the user.
- In this example, a server supports the IMAP4 NAMESPACE command. It
- uses no prefix to the user's Personal Namespace, a prefix of "Other
- Users" to its Other Users' Namespace, and a prefix of "Public
- Folders" to its only Shared Namespace. Since a client will often
- display these prefixes to the user, the server includes a translation
- of them that can be presented to the user.
- C: A001 LANGUAGE DE-IT
- S: * NAMESPACE (("" "/")) (("Other Users/" "/" "TRANSLATION"
- ("Andere Ben&APw-tzer/"))) (("Public Folders/" "/"
- "TRANSLATION" ("Gemeinsame Postf&AM8-cher/")))
- S: A001 OK LANGUAGE-Befehl ausgefuehrt
- Newman, et al. Standards Track [Page 7]
- RFC 5255 IMAP Internationalization June 2008
- 3.5. Formal Syntax
- The following syntax specification inherits ABNF [RFC5234] rules from
- IMAP4rev1 [RFC3501], IMAP4 Namespace [RFC2342], Tags for the
- Identifying Languages [RFC4646], UTF-8 [RFC3629], and Collected
- Extensions to IMAP4 ABNF [RFC4466].
- command-any =/ language-cmd
- ; LANGUAGE command is valid in all states
- language-cmd = "LANGUAGE" *(SP lang-range-quoted)
- response-payload =/ language-data
- language-data = "LANGUAGE" SP "(" lang-tag-quoted *(SP
- lang-tag-quoted) ")"
- namespace-trans = SP DQUOTE "TRANSLATION" DQUOTE SP "(" string ")"
- ; the string is encoded in Modified UTF-7.
- ; this is a subset of the syntax permitted by
- ; the Namespace-Response-Extension rule in [RFC4466]
- lang-range-quoted = astring
- ; Once any literal wrapper or quoting is removed, this
- ; follows the language-range rule in [RFC4647]
- lang-tag-quoted = astring
- ; Once any literal wrapper or quoting is removed, this follows
- ; the Language-Tag rule in [RFC4646]
- resp-text = ["[" resp-text-code "]" SP ] UTF8-TEXT-CHAR
- *(UTF8-TEXT-CHAR / "[")
- ; After the server is changed to a language other than
- ; i-default, this resp-text rule replaces the resp-text
- ; rule from [RFC3501].
- UTF8-TEXT-CHAR = %x20-5A / %x5C-7E / UTF8-2 / UTF8-3 / UTF8-4
- ; UTF-8 excluding 7-bit control characters and "["
- Newman, et al. Standards Track [Page 8]
- RFC 5255 IMAP Internationalization June 2008
- 4. I18NLEVEL=1 and I18NLEVEL=2 Extensions
- 4.1. Introduction and Overview
- IMAP4rev1 [RFC3501] includes the SEARCH command that can be used to
- locate messages matching criteria including human-readable text. The
- SORT extension [SORT] to IMAP allows the client to ask the server to
- determine the order of messages based on criteria including human-
- readable text. These mechanisms require the ability to support non-
- English search and sort functions.
- Section 4 defines two IMAP extensions for internationalizing IMAP
- SEARCH, SORT, and THREAD [SORT] using the comparator framework
- [RFC4790].
- The I18NLEVEL=1 extension updates SEARCH/SORT/THREAD to use
- i;unicode-casemap comparator, as defined in [UCM]. See Sections 4.2
- and 4.3 for more details.
- The I18NLEVEL=2 extension is a superset of the I18NLEVEL=1 extension.
- It adds to I18NLEVEL=1 extension the ability to determine the active
- comparator (see definition below) and to negotiate use of comparators
- using the COMPARATOR command. It also adds the COMPARATOR response
- that indicates the active comparator and possibly other available
- comparators. See Sections 4.2 and 4.4 for more details.
- 4.2. Requirements Common to Both I18NLEVEL=1 and I18NLEVEL=2
- The term "default comparator" refers to the comparator that is used
- by SEARCH and SORT absent any negotiation using the COMPARATOR
- command (see Section 4.7). The term "active comparator" refers to
- the comparator which will be used within a session, e.g., by SEARCH
- and SORT. The COMPARATOR command is used to change the active
- comparator.
- The active comparator applies to the following SEARCH keys: "BCC",
- "BODY", "CC", "FROM", "SUBJECT", "TEXT", "TO", and "HEADER". If the
- server also advertises the "SORT" extension, then the active
- comparator applies to the following SORT keys: "CC", "FROM",
- "SUBJECT", and "TO". If the server advertises THREAD=ORDEREDSUBJECT,
- then the active comparator applies to the ORDEREDSUBJECT threading
- algorithm. If the server advertises THREAD=REFERENCES, then the
- active comparator applies to the subject field comparisons done by
- REFERENCES threading algorithm. Future extensions may choose to
- apply the active comparator to their SEARCH keys.
- Newman, et al. Standards Track [Page 9]
- RFC 5255 IMAP Internationalization June 2008
- For SORT and THREAD, the pre-processing necessary to extract the base
- subject text from a Subject header occurs prior to the application of
- a comparator.
- A server that advertises I18NLEVEL=1 or I18NLEVEL=2 extension MUST
- implement the i;unicode-casemap comparator, as defined in [UCM].
- A server that advertises I18NLEVEL=1 or I18NLEVEL=2 extension MUST
- support UTF-8 as a SEARCH charset.
- 4.3. I18NLEVEL=1 Extension Requirements
- An IMAP server that satisfies all requirements specified in Sections
- 4.2 and 4.6 (and that doesn't support/advertise any other
- I18NLEVEL=<n> extension, where n > 1) MUST list the keyword
- I18NLEVEL=1 in its CAPABILITY data once IMAP enters the authenticated
- state, and MAY list that keyword in other states.
- 4.4. I18NLEVEL=2 Extension Requirements
- An IMAP server that satisfies all requirements specified in Sections
- 4.2, 4.4, and 4.6-4.10 (and that doesn't support/advertise any other
- I18NLEVEL=<n> extension, where n > 2) MUST list the keyword
- I18NLEVEL=2 in its CAPABILITY data once IMAP enters the authenticated
- state, and MAY list that keyword in other states.
- A server that advertises this extension MUST implement the
- i;unicode-casemap comparator, as defined in [UCM]. It MAY implement
- other comparators from the IANA registry established by [RFC4790].
- See also Section 4.5 of this document.
- A server that advertises this extension SHOULD use i;unicode-casemap
- as the default comparator. (Note that i;unicode-casemap is the
- default comparator for I18NLEVEL=1, but not necessarily the default
- for I18NLEVEL=2.) The selection of the default comparator MAY be
- adjustable by the server administrator, and MAY be sensitive to the
- current user. Once the IMAP connection enters authenticated state,
- the default comparator MUST remain static for the remainder of that
- connection.
- Note that since SEARCH uses the substring operation, IMAP servers can
- only implement collations that offer the substring operation (see
- [RFC4790], Section 4.2.2). Since SORT uses the ordering operation
- (which in turn uses the equality operation), IMAP servers that
- advertise the SORT extension can only implement collations that offer
- all three operations (see [RFC4790], Sections 4.2.2-4.2.4).
- Newman, et al. Standards Track [Page 10]
- RFC 5255 IMAP Internationalization June 2008
- If the active collation does not provide the operations needed by an
- IMAP command, the server MUST respond with a tagged BAD.
- 4.5. Compatibility Notes
- Several server implementations deployed prior to the publication of
- this specification comply with I18NLEVEL=1 (see Section 4.3), but do
- not advertise that. Other legacy servers use the i;ascii-casemap
- comparator (see [RFC4790]).
- There is no good way for a client to know which comparator a legacy
- server uses. If the client has to assume the worst, it may end up
- doing expensive local operations to obtain i;unicode-casemap
- comparisons even though the server implements it.
- Legacy server implementations which comply with I18NLEVEL=1 should be
- updated to advertise I18NLEVEL=1. All server implementations should
- eventually be updated to comply with the I18NLEVEL=2 extension.
- 4.6. Comparators and Character Encodings
- RFC 3501, Section 6.4.4, says:
- In all search keys that use strings, a message matches the key
- if the string is a substring of the field. The matching is
- case-insensitive.
- When performing the SEARCH operation, the active comparator is
- applied instead of the case-insensitive matching specified above.
- An IMAP server which performs collation operations (e.g., as part of
- commands such as SEARCH, SORT, and THREAD) does so according to the
- following procedure:
- (a) MIME encoding (for example, see [RFC2047] for headers and
- [RFC2045] for body parts) MUST be removed in the texts being
- collated.
- If MIME encoding removal fails for a message (e.g., a body part
- of the message has an unsupported Content-Transfer-Encoding, uses
- characters not allowed by the Content-Transfer-Encoding, etc.),
- the collation of this message is undefined by this specification,
- and is handled in an implementation-dependent manner.
- (b) The decoded text from (a) MUST be converted to the charset
- expected by the active comparator.
- Newman, et al. Standards Track [Page 11]
- RFC 5255 IMAP Internationalization June 2008
- (c) For the substring operation:
- If step (b) failed (e.g., the text is in an unknown charset,
- contains a sequence that is not valid according in that charset,
- etc.), the original decoded text from (a) (i.e., before the
- charset conversion attempt) is collated using the i;octet
- comparator (see [RFC4790]).
- If step (b) was successful, the converted text from (b) is
- collated according to the active comparator.
- For the ordering operation:
- All strings that were successfully converted by step (b) are
- separated from all strings that failed step (b). Strings in each
- group are collated independently. All strings successfully
- converted by step (b) are then validated by the active
- comparator. Strings that pass validation are collated using the
- active comparator. All strings that either fail step (b) or fail
- the active collation's validity operation are collated (after
- applying step (a)) using the i;octet comparator (see [RFC4790]).
- The resulting sorted list is produced by appending all collated
- "failed" strings after all strings collated using the active
- comparator.
- Example: The following example demonstrates ordering of 4
- different strings using the i;unicode-casemap [UCM] comparator.
- Strings are represented using hexadecimal notation used by ABNF
- [RFC5234].
- (1) %xD0 %xC0 %xD0 %xBD %xD0 %xB4 %xD1 %x80 %xD0 %xB5
- %xD0 %xB9 (labeled with charset=UTF-8)
- (2) %xD1 %x81 %xD0 %x95 %xD0 %xA0 %xD0 %x93 %xD0 %x95
- %xD0 %x99 (labeled with charset=UTF-8)
- (3) %xD0 %x92 %xD0 %xB0 %xD1 %x81 %xD0 %xB8 %xD0 %xBB
- %xD0 %xB8 %xFF %xB9 (labeled with charset=UTF-8)
- (4) %xE1 %xCC %xC5 %xCB %xD3 %xC5 %xCA (labeled with
- charset=KOI8-R)
- Step (b) will convert string (4) to the following sequence of
- octets (in UTF-8):
- %xD0 %x90 %xD0 %xBB %xD0 %xB5 %xD0 %xBA %xD1 %x81 %xD0
- %xB5 %xD0 %xB9
- and will reject strings (1) and (3), as they contain octets not
- allowed in charset=UTF-8.
- Newman, et al. Standards Track [Page 12]
- RFC 5255 IMAP Internationalization June 2008
- After that, using the i;unicode-casemap collation, string (4)
- will collate before string (2). Using the i;octet collation on
- the original strings, string (3) will collate before string (1).
- So the final ordering is as follows: (4) (2) (3) (1).
- If the substring operation (e.g., IMAP SEARCH) of the active
- comparator returns the "undefined" result (see Section 4.2.3 of
- [RFC4790]) for either the text specified in the SEARCH command or the
- message text, then the operation is repeated on the result of step
- (a) using the i;octet comparator.
- The ordering operation (e.g., IMAP SORT and THREAD) SHOULD collate
- the following together: strings encoded using unknown or invalid
- character encodings, strings in unrecognized charsets, and invalid
- input (as defined by the active collation).
- 4.7. COMPARATOR Command
- Arguments: Optional comparator order arguments.
- Response: A possible COMPARATOR response (see Section 4.8).
- Result: OK - Command completed
- NO - No matching comparator found
- BAD - Arguments invalid
- The COMPARATOR command is valid in authenticated and selected states.
- The COMPARATOR command is used to determine or change the active
- comparator. When issued with no arguments, it results in a
- COMPARATOR response indicating the currently active comparator.
- When issued with one or more comparator arguments, it changes the
- active comparator as directed. (If more than one installed
- comparator is matched by an argument, the first argument wins.) The
- COMPARATOR response lists all matching comparators if more than one
- matches the specified patterns.
- The argument "default" refers to the server's default comparator.
- Otherwise, each argument is a collation specification as defined in
- the Internet Application Protocol Comparator Registry [RFC4790].
- < The client requests activating a Czech comparator if possible,
- or else a generic international comparator which it considers
- suitable for Czech. The server picks the first supported
- comparator. >
- Newman, et al. Standards Track [Page 13]
- RFC 5255 IMAP Internationalization June 2008
- C: A001 COMPARATOR "cz;*" i;basic
- S: * COMPARATOR i;basic
- S: A001 OK Will use i;basic for collation
- 4.8. COMPARATOR Response
- Contents: The active comparator. An optional list of available
- matching comparators
- The COMPARATOR response occurs as a result of a COMPARATOR command.
- The first argument in the comparator response is the name of the
- active comparator. The second argument is a list of comparators
- which matched any of the arguments to the COMPARATOR command and is
- present only if more than one match is found.
- 4.9. BADCOMPARATOR Response Code
- This response code SHOULD be returned as a result of server failing
- an IMAP command (returning NO), when the server knows that none of
- the specified comparators match the requested comparator(s).
- 4.10. Formal Syntax
- The following syntax specification inherits ABNF [RFC5234] rules from
- IMAP4rev1 [RFC3501] and the Internet Application Protocol Comparator
- Registry [RFC4790].
- command-auth =/ comparator-cmd
- resp-text-code =/ "BADCOMPARATOR"
- comparator-cmd = "COMPARATOR" *(SP comp-order-quoted)
- response-payload =/ comparator-data
- comparator-data = "COMPARATOR" SP comp-sel-quoted [SP "("
- comp-id-quoted *(SP comp-id-quoted) ")"]
- comp-id-quoted = astring
- ; Once any literal wrapper or quoting is removed, this
- ; follows the collation-id rule from [RFC4790]
- comp-order-quoted = astring
- ; Once any literal wrapper or quoting is removed, this
- ; follows the collation-order rule from [RFC4790]
- Newman, et al. Standards Track [Page 14]
- RFC 5255 IMAP Internationalization June 2008
- comp-sel-quoted = astring
- ; Once any literal wrapper or quoting is removed, this
- ; follows the collation-selected rule from [RFC4790]
- 5. Other IMAP Internationalization Issues
- The following sections provide an overview of various other IMAP
- internationalization issues. These issues are not resolved by this
- specification, but could be resolved by other standards work, such as
- that being done by the EAI working group (see [IMAP-EAI]).
- 5.1. Unicode Userids and Passwords
- IMAP4rev1 currently restricts the userid and password fields of the
- LOGIN command to US-ASCII. The "userid" and "password" fields of the
- IMAP LOGIN command are restricted to US-ASCII only until a future
- standards track RFC states otherwise. Servers are encouraged to
- validate both fields to make sure they conform to the formal syntax
- of UTF-8 and to reject the LOGIN command if that syntax is violated.
- Servers MAY reject the LOGIN command if either the "userid" or
- "password" field contains an octet with the highest bit set.
- When AUTHENTICATE is used, some servers may support userids and
- passwords in Unicode [RFC3490] since SASL (see [RFC4422]) allows
- that. However, such userids cannot be used as part of email
- addresses.
- 5.2. UTF-8 Mailbox Names
- The modified UTF-7 mailbox naming convention described in Section
- 5.1.3 of RFC 3501 is best viewed as an transition from the status quo
- in 1996 when modified UTF-7 was first specified. At that time, there
- was widespread unofficial use of local character sets such as ISO-
- 8859-1 and Shift-JIS for non-ASCII mailbox names, with resultant
- non-interoperability.
- The requirements in Section 5.1 of RFC 3501 are very important if
- we're ever going to be able to deploy UTF-8 mailbox names. Servers
- are encouraged to enforce them.
- 5.3. UTF-8 Domains, Addresses, and Mail Headers
- There is now an IETF standard for "Internationalizing Domain Names in
- Applications (IDNA)" [RFC3490]. While IMAP clients are free to
- support this standard, an argument can be made that it would be
- helpful to simple clients if the IMAP server could perform this
- conversion (the same argument would apply to MIME header encoding
- Newman, et al. Standards Track [Page 15]
- RFC 5255 IMAP Internationalization June 2008
- [RFC2047]). However, it would be unwise to move forward with such
- work until the work in progress to define the format of international
- email addresses is complete.
- 6. IANA Considerations
- IANA added LANGUAGE, I18NLEVEL=1, and I18NLEVEL=2 to the IMAP4
- Capabilities Registry.
- 7. Security Considerations
- The LANGUAGE extension makes a new command available in "Not
- Authenticated" state in IMAP. Some IMAP implementations run with
- root privilege when the server is in "Not Authenticated" state and do
- not revoke that privilege until after authentication is complete.
- Such implementations are particularly vulnerable to buffer overflow
- security errors at this stage and need to implement parsing of this
- command with extra care.
- A LANGUAGE command issued prior to activation of a security layer is
- subject to an active attack that suppresses or modifies the
- negotiation, and thus makes STARTTLS or authentication error messages
- more difficult to interpret. This is not a new attack as the error
- messages themselves are subject to active attack. Clients MUST re-
- issue the LANGUAGE command once a security layer is active, in order
- to prevent this attack from impacting subsequent protocol operations.
- LANGUAGE, I18NLEVEL=1, and I18NLEVEL=2 extensions use the UTF-8
- charset; thus, the security considerations for UTF-8 [RFC3629] are
- relevant. However, neither uses UTF-8 for identifiers, so the most
- serious concerns do not apply.
- 8. Acknowledgements
- The LANGUAGE extension is based on a previous document by Mike
- Gahrns, a substantial portion of the text in that section was written
- by him. Many people have participated in discussions about an IMAP
- Language extension in the various fora of the IETF and Internet
- working groups, so any list of contributors is bound to be
- incomplete. However, the authors would like to thank Andrew McCown
- for early work on the original proposal, John Myers for suggestions
- regarding the namespace issue, along with Jutta Degener, Mark
- Crispin, Mark Pustilnik, Larry Osterman, Cyrus Daboo, Martin Duerst,
- Timo Sirainen, Ben Campbell, and Magnus Nystrom for their many
- suggestions that have been incorporated into this document.
- Initial discussion of the I18NLEVEL=2 extension involved input from
- Mark Crispin and other participants of the IMAP Extensions WG.
- Newman, et al. Standards Track [Page 16]
- RFC 5255 IMAP Internationalization June 2008
- 9. Relevant Sources of Documents for Internationalized IMAP
- Implementations
- This is a non-normative list of sources to consider when implementing
- i18n-aware IMAP software.
- o The LANGUAGE and I18NLEVEL=2 extensions to IMAP (this
- specification).
- o The 8-bit rules for mailbox naming in Section 5.1 of RFC 3501.
- o The Mailbox International Naming Convention in Section 5.1.3 of
- RFC 3501.
- o MIME [RFC2045] for message bodies.
- o MIME header encoding [RFC2047] for message headers.
- o The IETF EAI working group.
- o MIME Parameter Value and Encoded Word Extensions [RFC2231] for
- filenames. Quality IMAP server implementations will
- automatically combine multipart parameters when generating the
- BODYSTRUCTURE. There is also some deployed non-standard use of
- MIME header encoding inside double quotes for filenames.
- o IDNA [RFC3490] and punycode [RFC3492] for domain names
- (currently only relevant to IMAP clients).
- o The UTF-8 charset [RFC3629].
- o The IETF policy on Character Sets and Languages [RFC2277].
- 10. Normative References
- [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
- Requirement Levels", BCP 14, RFC 2119, March 1997.
- [RFC2277] Alvestrand, H., "IETF Policy on Character Sets and
- Languages", BCP 18, RFC 2277, January 1998.
- [RFC2342] Gahrns, M. and C. Newman, "IMAP4 Namespace", RFC 2342, May
- 1998.
- [RFC3501] Crispin, M., "INTERNET MESSAGE ACCESS PROTOCOL - VERSION
- 4rev1", RFC 3501, March 2003.
- Newman, et al. Standards Track [Page 17]
- RFC 5255 IMAP Internationalization June 2008
- [RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO
- 10646", STD 63, RFC 3629, November 2003.
- [RFC5234] Crocker, D., Ed., and P. Overell, "Augmented BNF for
- Syntax Specifications: ABNF", STD 68, RFC 5234, January
- 2008.
- [RFC4422] Melnikov, A., Ed., and K. Zeilenga, Ed., "Simple
- Authentication and Security Layer (SASL)", RFC 4422, June
- 2006.
- [RFC4466] Melnikov, A. and C. Daboo, "Collected Extensions to IMAP4
- ABNF", RFC 4466, April 2006.
- [RFC4646] Phillips, A. and M. Davis, "Tags for Identifying
- Languages", BCP 47, RFC 4646, September 2006.
- [RFC4647] Phillips, A. and M. Davis, "Matching of Language Tags",
- BCP 47, RFC 4647, September 2006.
- [RFC4790] Newman, C., Duerst, M., and A. Gulbrandsen, "Internet
- Application Protocol Collation Registry", RFC 4790, March
- 2007.
- [SORT] Crispin, M. and K. Murchison, "Internet Message Access
- Protocol - SORT and THREAD Extensions", RFC 5256, June
- 2008.
- [UCM] Crispin, M., "i;unicode-casemap - Simple Unicode Collation
- Algorithm", RFC 5051, October 2007.
- [RFC2045] Freed, N. and N. Borenstein, "Multipurpose Internet Mail
- Extensions (MIME) Part One: Format of Internet Message
- Bodies", RFC 2045, November 1996.
- [RFC2047] Moore, K., "MIME (Multipurpose Internet Mail Extensions)
- Part Three: Message Header Extensions for Non-ASCII Text",
- RFC 2047, November 1996.
- 11. Informative References
- [RFC2231] Freed, N. and K. Moore, "MIME Parameter Value and Encoded
- Word Extensions: Character Sets, Languages, and
- Continuations", RFC 2231, November 1997.
- [RFC3490] Faltstrom, P., Hoffman, P., and A. Costello,
- "Internationalizing Domain Names in Applications (IDNA)",
- RFC 3490, March 2003.
- Newman, et al. Standards Track [Page 18]
- RFC 5255 IMAP Internationalization June 2008
- [RFC3492] Costello, A., "Punycode: A Bootstring encoding of Unicode
- for Internationalized Domain Names in Applications
- (IDNA)", RFC 3492, March 2003.
- [METADATA] Daboo, C., "IMAP METADATA Extension", Work in Progress,
- April 2008.
- [IMAP-EAI] Resnick, P., and C. Newman, "IMAP Support for UTF-8", Work
- in Progress, November 2007.
- Authors' Addresses
- Chris Newman
- Sun Microsystems
- 3401 Centrelake Dr., Suite 410
- Ontario, CA 91761
- US
- EMail: chris.newman@sun.com
- Arnt Gulbrandsen
- Oryx Mail Systems GmbH
- Schweppermannstr. 8
- D-81671 Muenchen
- Germany
- EMail: arnt@oryx.com
- Fax: +49 89 4502 9758
- Alexey Melnikov
- Isode Limited
- 5 Castle Business Village, 36 Station Road,
- Hampton, Middlesex, TW12 2BX, UK
- EMail: Alexey.Melnikov@isode.com
- Newman, et al. Standards Track [Page 19]
- RFC 5255 IMAP Internationalization June 2008
- Full Copyright Statement
- Copyright (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.
- 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.
- 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.
- 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.
- 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.
- Newman, et al. Standards Track [Page 20]
|