rev |
line source |
yuuji@0
|
1
|
yuuji@0
|
2
|
yuuji@0
|
3
|
yuuji@0
|
4
|
yuuji@0
|
5
|
yuuji@0
|
6
|
yuuji@0
|
7 Network Working Group Chris Newman
|
yuuji@0
|
8 Internet-Draft Sun Microsystems
|
yuuji@0
|
9 Intended Status: Proposed Standard Arnt Gulbrandsen
|
yuuji@0
|
10 Oryx Mail Systems GmhH
|
yuuji@0
|
11 Alexey Melnikov
|
yuuji@0
|
12 Isode Limited
|
yuuji@0
|
13 February 1, 2008
|
yuuji@0
|
14
|
yuuji@0
|
15 Internet Message Access Protocol Internationalization
|
yuuji@0
|
16 draft-ietf-imapext-i18n-15.txt
|
yuuji@0
|
17
|
yuuji@0
|
18
|
yuuji@0
|
19 Status of this Memo
|
yuuji@0
|
20 By submitting this Internet-Draft, each author represents that any
|
yuuji@0
|
21 applicable patent or other IPR claims of which he or she is aware
|
yuuji@0
|
22 have been or will be disclosed, and any of which he or she becomes
|
yuuji@0
|
23 aware will be disclosed, in accordance with Section 6 of BCP 79.
|
yuuji@0
|
24
|
yuuji@0
|
25 Internet-Drafts are working documents of the Internet Engineering
|
yuuji@0
|
26 Task Force (IETF), its areas, and its working groups. Note that
|
yuuji@0
|
27 other groups may also distribute working documents as Internet-
|
yuuji@0
|
28 Drafts.
|
yuuji@0
|
29
|
yuuji@0
|
30 Internet-Drafts are draft documents valid for a maximum of six
|
yuuji@0
|
31 months and may be updated, replaced, or obsoleted by other documents
|
yuuji@0
|
32 at any time. It is inappropriate to use Internet-Drafts as
|
yuuji@0
|
33 reference material or to cite them other than as "work in progress".
|
yuuji@0
|
34
|
yuuji@0
|
35 The list of current Internet-Drafts can be accessed at
|
yuuji@0
|
36 http://www.ietf.org/ietf/1id-abstracts.txt. The list of Internet-
|
yuuji@0
|
37 Draft Shadow Directories can be accessed at
|
yuuji@0
|
38 http://www.ietf.org/shadow.html.
|
yuuji@0
|
39
|
yuuji@0
|
40 This Internet-Draft expires in August 2008.
|
yuuji@0
|
41
|
yuuji@0
|
42
|
yuuji@0
|
43 Copyright Notice
|
yuuji@0
|
44
|
yuuji@0
|
45 Copyright (C) The IETF Trust (2008).
|
yuuji@0
|
46
|
yuuji@0
|
47
|
yuuji@0
|
48 Abstract
|
yuuji@0
|
49
|
yuuji@0
|
50 Internet Message Access Protocol (IMAP) version 4rev1 has basic
|
yuuji@0
|
51 support for non-ASCII characters in mailbox names and search
|
yuuji@0
|
52 substrings. It also supports non-ASCII message headers and content
|
yuuji@0
|
53 encoded as specified by Multipurpose Internet Mail Extensions
|
yuuji@0
|
54 (MIME). This specification defines a collection of IMAP extensions
|
yuuji@0
|
55
|
yuuji@0
|
56
|
yuuji@0
|
57
|
yuuji@0
|
58 Newman & Co Expires August 2008 FF[Page 1]
|
yuuji@0
|
59
|
yuuji@0
|
60
|
yuuji@0
|
61
|
yuuji@0
|
62
|
yuuji@0
|
63
|
yuuji@0
|
64 Internet-draft February 2008
|
yuuji@0
|
65
|
yuuji@0
|
66
|
yuuji@0
|
67 which improve international support including comparator negotiation
|
yuuji@0
|
68 for search, sort and thread, language negotiation for international
|
yuuji@0
|
69 error text, and translations for namespace prefixes.
|
yuuji@0
|
70
|
yuuji@0
|
71
|
yuuji@0
|
72 Table of Contents
|
yuuji@0
|
73
|
yuuji@0
|
74 1. Conventions Used in this Document . . . . . . . . . . . . . . 2
|
yuuji@0
|
75 2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
|
yuuji@0
|
76 3. LANGUAGE Extension . . . . . . . . . . . . . . . . . . . . . 3
|
yuuji@0
|
77 3.1 LANGUAGE Extension Requirements . . . . . . . . . . . . . . . 3
|
yuuji@0
|
78 3.2 LANGUAGE Command . . . . . . . . . . . . . . . . . . . . . . 4
|
yuuji@0
|
79 3.3 LANGUAGE Response . . . . . . . . . . . . . . . . . . . . . . 6
|
yuuji@0
|
80 3.4 TRANSLATION Extension to the NAMESPACE Response . . . . . . . 6
|
yuuji@0
|
81 3.5 Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 6
|
yuuji@0
|
82 4. I18NLEVEL=1 and I18NLEVEL=2 Extensions . . . . . . . . . . . 7
|
yuuji@0
|
83 4.1 Introduction and Overview . . . . . . . . . . . . . . . . . . 8
|
yuuji@0
|
84 4.2 Requirements common to both I18NLEVEL=1 and I18NLEVEL=2 . . .
|
yuuji@0
|
85 4.3 I18NLEVEL=1 Extension Requirements . . . . . . . . . . . . . 8
|
yuuji@0
|
86 4.4 I18NLEVEL=2 Extension Requirements . . . . . . . . . . . . . 8
|
yuuji@0
|
87 4.5 Compatibility Notes
|
yuuji@0
|
88 4.6 Comparators and Charsets . . . . . . . . . . . . . . . . . . 9
|
yuuji@0
|
89 4.7 COMPARATOR Command . . . . . . . . . . . . . . . . . . . . . 9
|
yuuji@0
|
90 4.8 COMPARATOR Response . . . . . . . . . . . . . . . . . . . . . 10
|
yuuji@0
|
91 4.9 BADCOMPARATOR Response Code . . . . . . . . . . . . . . . . .
|
yuuji@0
|
92 4.10 Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . 10
|
yuuji@0
|
93 5. Other IMAP Internationalization Issues . . . . . . . . . . . 11
|
yuuji@0
|
94 5.1 UTF-8 Userids and Passwords . . . . . . . . . . . . . . . . . 11
|
yuuji@0
|
95 5.2 UTF-8 Mailbox Names . . . . . . . . . . . . . . . . . . . . . 11
|
yuuji@0
|
96 5.3 UTF-8 Domains, Addresses and Mail Headers . . . . . . . . . . 11
|
yuuji@0
|
97 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12
|
yuuji@0
|
98 7. Security Considerations . . . . . . . . . . . . . . . . . . . 12
|
yuuji@0
|
99 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 12
|
yuuji@0
|
100 9. Relevant Standards for i18n IMAP Implementations . . . . . . 13
|
yuuji@0
|
101 Normative References . . . . . . . . . . . . . . . . . . . . 13
|
yuuji@0
|
102 Informative References . . . . . . . . . . . . . . . . . . . 14
|
yuuji@0
|
103 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 15
|
yuuji@0
|
104 Intellectual Property and Copyright Statements . . . . . . . 16
|
yuuji@0
|
105
|
yuuji@0
|
106
|
yuuji@0
|
107 Conventions Used in This Document
|
yuuji@0
|
108
|
yuuji@0
|
109 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
|
yuuji@0
|
110 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
|
yuuji@0
|
111 document are to be interpreted as described in [RFC2119].
|
yuuji@0
|
112
|
yuuji@0
|
113 The formal syntax use the Augmented Backus-Naur Form (ABNF)
|
yuuji@0
|
114 [RFC4234] notation including the core rules defined in Appendix A.
|
yuuji@0
|
115
|
yuuji@0
|
116
|
yuuji@0
|
117
|
yuuji@0
|
118 Newman & Co Expires August 2008 FF[Page 2]
|
yuuji@0
|
119
|
yuuji@0
|
120
|
yuuji@0
|
121
|
yuuji@0
|
122
|
yuuji@0
|
123
|
yuuji@0
|
124 Internet-draft February 2008
|
yuuji@0
|
125
|
yuuji@0
|
126
|
yuuji@0
|
127 The UTF8-related productions are defined in [RFC3629].
|
yuuji@0
|
128
|
yuuji@0
|
129 In examples, "C:" and "S:" indicate lines sent by the client and
|
yuuji@0
|
130 server respectively. If a single "C:" or "S:" label applies to
|
yuuji@0
|
131 multiple lines, then the line breaks between those lines are for
|
yuuji@0
|
132 editorial clarity only and are not part of the actual protocol
|
yuuji@0
|
133 exchange.
|
yuuji@0
|
134
|
yuuji@0
|
135
|
yuuji@0
|
136 2. Introduction
|
yuuji@0
|
137
|
yuuji@0
|
138 This specification defines two IMAP4rev1 [RFC3501] extensions to
|
yuuji@0
|
139 enhance international support. These extensions can be advertised
|
yuuji@0
|
140 and implemented separately.
|
yuuji@0
|
141
|
yuuji@0
|
142 The LANGUAGE extension allows the client to request a suitable
|
yuuji@0
|
143 language for protocol error messages and in combination with the
|
yuuji@0
|
144 NAMESPACE extension [RFC2342] enables namespace translations.
|
yuuji@0
|
145
|
yuuji@0
|
146 The I18NLEVEL=2 extension allows the client to request a suitable
|
yuuji@0
|
147 collation which will modify the behavior of the base specification's
|
yuuji@0
|
148 SEARCH command as well as the SORT and THREAD extensions [SORT].
|
yuuji@0
|
149 This leverages the collation registry [RFC4790].
|
yuuji@0
|
150
|
yuuji@0
|
151
|
yuuji@0
|
152 3. LANGUAGE Extension
|
yuuji@0
|
153
|
yuuji@0
|
154 IMAP allows server responses to include human-readable text that in
|
yuuji@0
|
155 many cases needs to be presented to the user. But that text is
|
yuuji@0
|
156 limited to US-ASCII by the IMAP specification [RFC3501] in order to
|
yuuji@0
|
157 preserve backwards compatibility with deployed IMAP implementations.
|
yuuji@0
|
158 This section specifies a way for an IMAP client to negotiate which
|
yuuji@0
|
159 language the server should use when sending human-readable text.
|
yuuji@0
|
160
|
yuuji@0
|
161 The LANGUAGE extension only provides a mechanism for altering fixed
|
yuuji@0
|
162 server strings such as response text and NAMESPACE folder names.
|
yuuji@0
|
163 Assigning localized language aliases to shared mailboxes would be
|
yuuji@0
|
164 done with a separate mechanism such as the proposed METADATA
|
yuuji@0
|
165 extension (see [METADATA]).
|
yuuji@0
|
166
|
yuuji@0
|
167
|
yuuji@0
|
168 3.1 LANGUAGE Extension Requirements
|
yuuji@0
|
169
|
yuuji@0
|
170 IMAP servers that support this extension MUST list the keyword
|
yuuji@0
|
171 LANGUAGE in their CAPABILITY response as well as in the greeting
|
yuuji@0
|
172 CAPABILITY data.
|
yuuji@0
|
173
|
yuuji@0
|
174 A server that advertises this extension MUST use the language "i-
|
yuuji@0
|
175
|
yuuji@0
|
176
|
yuuji@0
|
177
|
yuuji@0
|
178 Newman & Co Expires August 2008 FF[Page 3]
|
yuuji@0
|
179
|
yuuji@0
|
180
|
yuuji@0
|
181
|
yuuji@0
|
182
|
yuuji@0
|
183
|
yuuji@0
|
184 Internet-draft February 2008
|
yuuji@0
|
185
|
yuuji@0
|
186
|
yuuji@0
|
187 default" as described in [RFC2277] as its default language until
|
yuuji@0
|
188 another supported language is negotiated by the client. A server
|
yuuji@0
|
189 MUST include "i-default" as one of its supported languages.
|
yuuji@0
|
190
|
yuuji@0
|
191 Clients and servers that support this extension MUST also support
|
yuuji@0
|
192 the NAMESPACE extension [RFC2342].
|
yuuji@0
|
193
|
yuuji@0
|
194 The LANGUAGE command is valid in all states. Clients are urged to
|
yuuji@0
|
195 issue LANGUAGE before authentication, since some servers send
|
yuuji@0
|
196 valuable user information as part of authentication (e.g. "password
|
yuuji@0
|
197 is correct, but expired"). If a security layer (such as SASL or
|
yuuji@0
|
198 TLS) is subsequently negotiated by the client, it MUST re-issue the
|
yuuji@0
|
199 LANGUAGE command in order to make sure that no previous active
|
yuuji@0
|
200 attack (if any) on LANGUAGE negotiation has effect on subsequent
|
yuuji@0
|
201 error messages. (See Section 7 for a more detailed explanation of
|
yuuji@0
|
202 the attack.)
|
yuuji@0
|
203
|
yuuji@0
|
204
|
yuuji@0
|
205
|
yuuji@0
|
206 3.2 LANGUAGE Command
|
yuuji@0
|
207
|
yuuji@0
|
208 Arguments: Optional language range arguments.
|
yuuji@0
|
209
|
yuuji@0
|
210 Response: A possible LANGUAGE response (see section 3.3).
|
yuuji@0
|
211 A possible NAMESPACE response (see section 3.4).
|
yuuji@0
|
212
|
yuuji@0
|
213 Result: OK - Command completed
|
yuuji@0
|
214 NO - Could not complete command
|
yuuji@0
|
215 BAD - arguments invalid
|
yuuji@0
|
216
|
yuuji@0
|
217 The LANGUAGE command requests that human-readable text emitted by
|
yuuji@0
|
218 the server be localized to a language matching one of the language
|
yuuji@0
|
219 range argument as described by section 2 of [RFC4647].
|
yuuji@0
|
220
|
yuuji@0
|
221 If the command succeeds, the server will return human-readable
|
yuuji@0
|
222 responses in the first supported language specified. These
|
yuuji@0
|
223 responses will be in UTF-8 [RFC3629]. The server MUST send a
|
yuuji@0
|
224 LANGUAGE response specifying the language used, and the change takes
|
yuuji@0
|
225 effect immediately after the LANGUAGE response.
|
yuuji@0
|
226
|
yuuji@0
|
227 If the command fails, the server continues to return human-readable
|
yuuji@0
|
228 responses in the language it was previously using.
|
yuuji@0
|
229
|
yuuji@0
|
230 The special "default" language range argument indicates a request to
|
yuuji@0
|
231 use a language designated as preferred by the server administrator.
|
yuuji@0
|
232 The preferred language MAY vary based on the currently active user.
|
yuuji@0
|
233
|
yuuji@0
|
234 If a language range does not match a known language tag exactly but
|
yuuji@0
|
235
|
yuuji@0
|
236
|
yuuji@0
|
237
|
yuuji@0
|
238 Newman & Co Expires August 2008 FF[Page 4]
|
yuuji@0
|
239
|
yuuji@0
|
240
|
yuuji@0
|
241
|
yuuji@0
|
242
|
yuuji@0
|
243
|
yuuji@0
|
244 Internet-draft February 2008
|
yuuji@0
|
245
|
yuuji@0
|
246
|
yuuji@0
|
247 does match a language by the rules of [RFC4647], the server MUST
|
yuuji@0
|
248 send an untagged LANGUAGE response indicating the language selected.
|
yuuji@0
|
249
|
yuuji@0
|
250 If there aren't any arguments, the server SHOULD send an untagged
|
yuuji@0
|
251 LANGUAGE response listing the languages it supports. If the server
|
yuuji@0
|
252 is unable to enumerate the list of languages it supports it MAY
|
yuuji@0
|
253 return a tagged NO response to the enumeration request.
|
yuuji@0
|
254
|
yuuji@0
|
255 < The server defaults to using English i-default responses until
|
yuuji@0
|
256 the user explicitly changes the language. >
|
yuuji@0
|
257
|
yuuji@0
|
258 C: A001 LOGIN KAREN PASSWORD
|
yuuji@0
|
259 S: A001 OK LOGIN completed
|
yuuji@0
|
260
|
yuuji@0
|
261 < Client requested MUL language, which no server supports. >
|
yuuji@0
|
262
|
yuuji@0
|
263 C: A002 LANGUAGE MUL
|
yuuji@0
|
264 S: A002 NO Unsupported language MUL
|
yuuji@0
|
265
|
yuuji@0
|
266 < A LANGUAGE command with no arguments is a request to enumerate
|
yuuji@0
|
267 the list of languages the server supports. >
|
yuuji@0
|
268
|
yuuji@0
|
269 C: A003 LANGUAGE
|
yuuji@0
|
270 S: * LANGUAGE (EN DE IT i-default)
|
yuuji@0
|
271 S: A003 OK Supported languages have been enumerated
|
yuuji@0
|
272
|
yuuji@0
|
273 C: B001 LANGUAGE
|
yuuji@0
|
274 S: B001 NO Server is unable to enumerate supported languages
|
yuuji@0
|
275
|
yuuji@0
|
276 < Once the client changes the language, all responses will be in
|
yuuji@0
|
277 that language starting after the LANGUAGE response. Note that
|
yuuji@0
|
278 this includes the NAMESPACE response. Because RFCs are in US-
|
yuuji@0
|
279 ASCII, this document uses an ASCII transcription rather than
|
yuuji@0
|
280 UTF-8 text, e.g. ue in the word "ausgefuehrt" >
|
yuuji@0
|
281
|
yuuji@0
|
282 C: C001 LANGUAGE DE
|
yuuji@0
|
283 S: * LANGUAGE (DE)
|
yuuji@0
|
284 S: * NAMESPACE (("" "/")) (("Other Users/" "/" "TRANSLATION"
|
yuuji@0
|
285 ("Andere Ben&APw-tzer/"))) (("Public Folders/" "/"
|
yuuji@0
|
286 "TRANSLATION" ("Gemeinsame Postf&AM8-cher/")))
|
yuuji@0
|
287 S: C001 OK Sprachwechsel durch LANGUAGE-Befehl ausgefuehrt
|
yuuji@0
|
288
|
yuuji@0
|
289 < If a server does not support the requested primary language,
|
yuuji@0
|
290 responses will continue to be returned in the current language
|
yuuji@0
|
291 the server is using. >
|
yuuji@0
|
292
|
yuuji@0
|
293 C: D001 LANGUAGE FR
|
yuuji@0
|
294 S: D001 NO Diese Sprache ist nicht unterstuetzt
|
yuuji@0
|
295
|
yuuji@0
|
296
|
yuuji@0
|
297
|
yuuji@0
|
298 Newman & Co Expires August 2008 FF[Page 5]
|
yuuji@0
|
299
|
yuuji@0
|
300
|
yuuji@0
|
301
|
yuuji@0
|
302
|
yuuji@0
|
303
|
yuuji@0
|
304 Internet-draft February 2008
|
yuuji@0
|
305
|
yuuji@0
|
306
|
yuuji@0
|
307 C: D002 LANGUAGE DE-IT
|
yuuji@0
|
308 S: * LANGUAGE (DE-IT)
|
yuuji@0
|
309 S: * NAMESPACE (("" "/"))(("Other Users/" "/" "TRANSLATION"
|
yuuji@0
|
310 ("Andere Ben&APw-tzer/"))) (("Public Folders/" "/"
|
yuuji@0
|
311 "TRANSLATION" ("Gemeinsame Postf&AM8-cher/")))
|
yuuji@0
|
312 S: D002 OK Sprachwechsel durch LANGUAGE-Befehl ausgefuehrt
|
yuuji@0
|
313 C: D003 LANGUAGE "default"
|
yuuji@0
|
314 S: * LANGUAGE (DE)
|
yuuji@0
|
315 S: D003 OK Sprachwechsel durch LANGUAGE-Befehl ausgefuehrt
|
yuuji@0
|
316
|
yuuji@0
|
317 < Server does not speak French, but does speak English. User
|
yuuji@0
|
318 speaks Canadian French and Canadian English. >
|
yuuji@0
|
319
|
yuuji@0
|
320 C: E001 LANGUAGE FR-CA EN-CA
|
yuuji@0
|
321 S: * LANGUAGE (EN)
|
yuuji@0
|
322 S: E001 OK Now speaking English
|
yuuji@0
|
323
|
yuuji@0
|
324
|
yuuji@0
|
325
|
yuuji@0
|
326 3.3 LANGUAGE Response
|
yuuji@0
|
327
|
yuuji@0
|
328 Contents: A list of one or more language tags.
|
yuuji@0
|
329
|
yuuji@0
|
330 The LANGUAGE response occurs as a result of a LANGUAGE command. A
|
yuuji@0
|
331 LANGUAGE response with a list containing a single language tag
|
yuuji@0
|
332 indicates that the server is now using that language. A LANGUAGE
|
yuuji@0
|
333 response with a list containing multiple language tags indicates the
|
yuuji@0
|
334 server is communicating a list of available languages to the client,
|
yuuji@0
|
335 and no change in the active language has been made.
|
yuuji@0
|
336
|
yuuji@0
|
337
|
yuuji@0
|
338 3.4 TRANSLATION Extension to the NAMESPACE Response
|
yuuji@0
|
339
|
yuuji@0
|
340 If localized representations of the namespace prefixes are available
|
yuuji@0
|
341 in the selected language, the server SHOULD include these in the
|
yuuji@0
|
342 TRANSLATION extension to the NAMESPACE response.
|
yuuji@0
|
343
|
yuuji@0
|
344 The TRANSLATION extension to the NAMESPACE response returns a single
|
yuuji@0
|
345 string, containing the modified UTF-7 [RFC3501] encoded translation
|
yuuji@0
|
346 of the namespace prefix. It is the responsibility of the client to
|
yuuji@0
|
347 convert between the namespace prefix and the translation of the
|
yuuji@0
|
348 namespace prefix when presenting mailbox names to the user.
|
yuuji@0
|
349
|
yuuji@0
|
350 In this example a server supports the IMAP4 NAMESPACE command. It
|
yuuji@0
|
351 uses no prefix to the user's Personal Namespace, a prefix of "Other
|
yuuji@0
|
352 Users" to its Other Users' Namespace and a prefix of "Public
|
yuuji@0
|
353 Folders" to its only Shared Namespace. Since a client will often
|
yuuji@0
|
354 display these prefixes to the user, the server includes a
|
yuuji@0
|
355
|
yuuji@0
|
356
|
yuuji@0
|
357
|
yuuji@0
|
358 Newman & Co Expires August 2008 FF[Page 6]
|
yuuji@0
|
359
|
yuuji@0
|
360
|
yuuji@0
|
361
|
yuuji@0
|
362
|
yuuji@0
|
363
|
yuuji@0
|
364 Internet-draft February 2008
|
yuuji@0
|
365
|
yuuji@0
|
366
|
yuuji@0
|
367 translation of them that can be presented to the user.
|
yuuji@0
|
368
|
yuuji@0
|
369 C: A001 LANGUAGE DE-IT
|
yuuji@0
|
370 S: * NAMESPACE (("" "/")) (("Other Users/" "/" "TRANSLATION"
|
yuuji@0
|
371 ("Andere Ben&APw-tzer/"))) (("Public Folders/" "/"
|
yuuji@0
|
372 "TRANSLATION" ("Gemeinsame Postf&AM8-cher/")))
|
yuuji@0
|
373 S: A001 OK LANGUAGE-Befehl ausgefuehrt
|
yuuji@0
|
374
|
yuuji@0
|
375
|
yuuji@0
|
376 3.5 Formal Syntax
|
yuuji@0
|
377
|
yuuji@0
|
378 The following syntax specification inherits ABNF [RFC4234] rules
|
yuuji@0
|
379 from IMAP4rev1 [RFC3501], IMAP4 Namespace [RFC2342], Tags for the
|
yuuji@0
|
380 Identifying Languages [RFC4646], UTF-8 [RFC3629] and Collected
|
yuuji@0
|
381 Extensions to IMAP4 ABNF [RFC4466].
|
yuuji@0
|
382
|
yuuji@0
|
383 command-any =/ language-cmd
|
yuuji@0
|
384 ; LANGUAGE command is valid in all states
|
yuuji@0
|
385
|
yuuji@0
|
386 language-cmd = "LANGUAGE" *(SP lang-range-quoted)
|
yuuji@0
|
387
|
yuuji@0
|
388 response-payload =/ language-data
|
yuuji@0
|
389
|
yuuji@0
|
390 language-data = "LANGUAGE" SP "(" lang-tag-quoted *(SP
|
yuuji@0
|
391 lang-tag-quoted) ")"
|
yuuji@0
|
392
|
yuuji@0
|
393 namespace-trans = SP DQUOTE "TRANSLATION" DQUOTE SP "(" string ")"
|
yuuji@0
|
394 ; the string is encoded in Modified UTF-7.
|
yuuji@0
|
395 ; this is a subset of the syntax permitted by
|
yuuji@0
|
396 ; the Namespace-Response-Extension rule in [RFC4466]
|
yuuji@0
|
397
|
yuuji@0
|
398 lang-range-quoted = astring
|
yuuji@0
|
399 ; Once any literal wrapper or quoting is removed, this
|
yuuji@0
|
400 ; follows the language-range rule in [RFC4647]
|
yuuji@0
|
401
|
yuuji@0
|
402 lang-tag-quoted = astring
|
yuuji@0
|
403 ; Once any literal wrapper or quoting is removed, this follows
|
yuuji@0
|
404 ; the Language-Tag rule in [RFC4646]
|
yuuji@0
|
405
|
yuuji@0
|
406 resp-text = ["[" resp-text-code "]" SP ] UTF8-TEXT-CHAR
|
yuuji@0
|
407 *(UTF8-TEXT-CHAR / "[")
|
yuuji@0
|
408 ; After the server is changed to a language other than
|
yuuji@0
|
409 ; i-default, this resp-text rule replaces the resp-text
|
yuuji@0
|
410 ; rule from [RFC3501].
|
yuuji@0
|
411
|
yuuji@0
|
412 UTF8-TEXT-CHAR = %x20-5A / %x5C-7E / UTF8-2 / UTF8-3 / UTF8-4
|
yuuji@0
|
413 ; UTF-8 excluding 7-bit control characters and "["
|
yuuji@0
|
414
|
yuuji@0
|
415
|
yuuji@0
|
416
|
yuuji@0
|
417
|
yuuji@0
|
418 Newman & Co Expires August 2008 FF[Page 7]
|
yuuji@0
|
419
|
yuuji@0
|
420
|
yuuji@0
|
421
|
yuuji@0
|
422
|
yuuji@0
|
423
|
yuuji@0
|
424 Internet-draft February 2008
|
yuuji@0
|
425
|
yuuji@0
|
426
|
yuuji@0
|
427 4. I18NLEVEL=1 and I18NLEVEL=2 Extensions
|
yuuji@0
|
428
|
yuuji@0
|
429
|
yuuji@0
|
430 4.1 Introduction and Overview
|
yuuji@0
|
431
|
yuuji@0
|
432 IMAP4rev1 [RFC3501] includes the SEARCH command which can be used to
|
yuuji@0
|
433 locate messages matching criteria including human-readable text.
|
yuuji@0
|
434 The SORT extension [SORT] to IMAP allows the client to ask the
|
yuuji@0
|
435 server to determine the order of messages based on criteria
|
yuuji@0
|
436 including human-readable text. These mechanisms require the ability
|
yuuji@0
|
437 to support non-English search and sort functions.
|
yuuji@0
|
438
|
yuuji@0
|
439 Section 4 defines two IMAP extensions for internationalizing IMAP
|
yuuji@0
|
440 SEARCH, SORT and THREAD [SORT] using the comparator framework
|
yuuji@0
|
441 [RFC4790].
|
yuuji@0
|
442
|
yuuji@0
|
443 The I18NLEVEL=1 extension updates SEARCH/SORT/THREAD to use
|
yuuji@0
|
444 i;unicode-casemap comparator, as defined in [UCM]. See Sections 4.2
|
yuuji@0
|
445 and 4.3 for more details.
|
yuuji@0
|
446
|
yuuji@0
|
447 The I18NLEVEL=2 extension is a superset of the I18NLEVEL=1
|
yuuji@0
|
448 extension. It adds to I18NLEVEL=1 extension the ability to determine
|
yuuji@0
|
449 the active comparator (see definition below) and negotiate use of
|
yuuji@0
|
450 comparators using the COMPARATOR command. It also adds the
|
yuuji@0
|
451 COMPARATOR response that indicates the active comparator and
|
yuuji@0
|
452 possibly other available comparators. See Sections 4.2 and 4.4 for
|
yuuji@0
|
453 more details.
|
yuuji@0
|
454
|
yuuji@0
|
455
|
yuuji@0
|
456 4.2 Requirements common to both I18NLEVEL=1 and I18NLEVEL=2
|
yuuji@0
|
457
|
yuuji@0
|
458 The term "default comparator" refers to the comparator which is used
|
yuuji@0
|
459 by SEARCH and SORT absent any negotiation using the COMPARATOR (see
|
yuuji@0
|
460 Section 4.7) command. The term "active comparator" refers to the
|
yuuji@0
|
461 comparator which will be used within a session e.g. by SEARCH and
|
yuuji@0
|
462 SORT. The COMPARATOR command is used to change the active
|
yuuji@0
|
463 comparator.
|
yuuji@0
|
464
|
yuuji@0
|
465 The active comparator applies to the following SEARCH keys: "BCC",
|
yuuji@0
|
466 "BODY", "CC", "FROM", "SUBJECT", "TEXT", "TO" and "HEADER". If the
|
yuuji@0
|
467 server also advertises the "SORT" extension, then the active
|
yuuji@0
|
468 comparator applies to the following SORT keys: "CC", "FROM",
|
yuuji@0
|
469 "SUBJECT" and "TO". If the server advertises THREAD=ORDEREDSUBJECT,
|
yuuji@0
|
470 then the active comparator applies to the ORDEREDSUBJECT threading
|
yuuji@0
|
471 algorithm. If the server advertises THREAD=REFERENCES, then the
|
yuuji@0
|
472 active comparator applies to the subject field comparisons done by
|
yuuji@0
|
473 REFERENCES threading algorithm. Future extensions may choose to
|
yuuji@0
|
474 apply the active comparator to their SEARCH keys.
|
yuuji@0
|
475
|
yuuji@0
|
476
|
yuuji@0
|
477
|
yuuji@0
|
478 Newman & Co Expires August 2008 FF[Page 8]
|
yuuji@0
|
479
|
yuuji@0
|
480
|
yuuji@0
|
481
|
yuuji@0
|
482
|
yuuji@0
|
483
|
yuuji@0
|
484 Internet-draft February 2008
|
yuuji@0
|
485
|
yuuji@0
|
486
|
yuuji@0
|
487 For SORT and THREAD, the pre-processing necessary to extract the
|
yuuji@0
|
488 base subject text from a Subject header occurs prior to the
|
yuuji@0
|
489 application of a comparator.
|
yuuji@0
|
490
|
yuuji@0
|
491 A server that advertises I18NLEVEL=1 or I18NLEVEL=2 extension MUST
|
yuuji@0
|
492 implement the i;unicode-casemap comparator, as defined in [UCM].
|
yuuji@0
|
493
|
yuuji@0
|
494 A server that advertises I18NLEVEL=1 or I18NLEVEL=2 extension MUST
|
yuuji@0
|
495 support UTF-8 as a SEARCH charset.
|
yuuji@0
|
496
|
yuuji@0
|
497
|
yuuji@0
|
498 4.3 I18NLEVEL=1 Extension Requirements
|
yuuji@0
|
499
|
yuuji@0
|
500 An IMAP server that satisfies all requirements specified in sections
|
yuuji@0
|
501 4.2 and 4.6 (and doesn't support/advertise any other I18NLEVEL=<n>
|
yuuji@0
|
502 extension, where n > 1) MUST list the keyword I18NLEVEL=1 in its
|
yuuji@0
|
503 CAPABILITY data once IMAP enters the authenticated state, and MAY
|
yuuji@0
|
504 list that keyword in other states.
|
yuuji@0
|
505
|
yuuji@0
|
506
|
yuuji@0
|
507
|
yuuji@0
|
508 4.4 I18NLEVEL=2 Extension Requirements
|
yuuji@0
|
509
|
yuuji@0
|
510 IMAP server that satisfies all requirements specified in sections
|
yuuji@0
|
511 4.2, 4.4, 4.6-4.10 (and doesn't support/advertise any other
|
yuuji@0
|
512 I18NLEVEL=<n> extension, where n > 2) MUST list the keyword
|
yuuji@0
|
513 I18NLEVEL=2 in its CAPABILITY data once IMAP enters the
|
yuuji@0
|
514 authenticated state, and MAY list that keyword in other states.
|
yuuji@0
|
515
|
yuuji@0
|
516 A server that advertises this extension MUST implement the
|
yuuji@0
|
517 i;unicode-casemap comparator, as defined in [UCM]. It MAY implement
|
yuuji@0
|
518 other comparators from the IANA registry established by [RFC4790].
|
yuuji@0
|
519 See also section 4.5 of this document.
|
yuuji@0
|
520
|
yuuji@0
|
521 A server that advertises this extension SHOULD use i;unicode-casemap
|
yuuji@0
|
522 as the default comparator. (Note that i;unicode-casemap is the
|
yuuji@0
|
523 default comparator for I18NLEVEL=1, but not necessarily the default
|
yuuji@0
|
524 for I18NLEVEL=2.) The selection of the default comparator MAY be
|
yuuji@0
|
525 adjustable by the server administrator, and MAY be sensitive to the
|
yuuji@0
|
526 current user. Once the IMAP connection enters authenticated state,
|
yuuji@0
|
527 the default comparator MUST remain static for the remainder of that
|
yuuji@0
|
528 connection.
|
yuuji@0
|
529
|
yuuji@0
|
530 Note that since SEARCH uses the substring operation, IMAP servers
|
yuuji@0
|
531 can only implement collations that offer the substring operation
|
yuuji@0
|
532 (see [RFC4790 section 4.2.2). Since SORT uses ordering operation
|
yuuji@0
|
533 (and by implication equality), IMAP servers which advertise the SORT
|
yuuji@0
|
534 extension can only implement collations that offer all three
|
yuuji@0
|
535
|
yuuji@0
|
536
|
yuuji@0
|
537
|
yuuji@0
|
538 Newman & Co Expires August 2008 FF[Page 9]
|
yuuji@0
|
539
|
yuuji@0
|
540
|
yuuji@0
|
541
|
yuuji@0
|
542
|
yuuji@0
|
543
|
yuuji@0
|
544 Internet-draft February 2008
|
yuuji@0
|
545
|
yuuji@0
|
546
|
yuuji@0
|
547 operations (see [RFC4790] sections 4.2.2-4).
|
yuuji@0
|
548
|
yuuji@0
|
549 If the active collation does not provide the operations needed by an
|
yuuji@0
|
550 IMAP command, the server MUST respond with a tagged BAD.
|
yuuji@0
|
551
|
yuuji@0
|
552
|
yuuji@0
|
553 4.5 Compatibility Notes
|
yuuji@0
|
554
|
yuuji@0
|
555 Several server implementations deployed prior to the publication of
|
yuuji@0
|
556 this specification comply with I18NLEVEL=1 (see section 4.3), but do
|
yuuji@0
|
557 not advertise that. Other legacy servers use the i;ascii-casemap
|
yuuji@0
|
558 (see [RFC4790]) comparator.
|
yuuji@0
|
559
|
yuuji@0
|
560 There is no good way for a client to know which comparator that a
|
yuuji@0
|
561 legacy server uses. If the client has to assume the worst, it may
|
yuuji@0
|
562 end up doing expensive local operations to obtain i;unicode-casemap
|
yuuji@0
|
563 comparisons even though the server implements it.
|
yuuji@0
|
564
|
yuuji@0
|
565 Legacy server implementations which comply with I18NLEVEL=1 should
|
yuuji@0
|
566 be updated to advertise I18NLEVEL=1. All server implementations
|
yuuji@0
|
567 should eventually be updated to comply with the I18NLEVEL=2
|
yuuji@0
|
568 extension.
|
yuuji@0
|
569
|
yuuji@0
|
570
|
yuuji@0
|
571 4.6 Comparators and Character Encodings
|
yuuji@0
|
572
|
yuuji@0
|
573 RFC 3501, section 6.4.4 says:
|
yuuji@0
|
574
|
yuuji@0
|
575 In all search keys that use strings, a message matches
|
yuuji@0
|
576 the key if the string is a substring of the field. The
|
yuuji@0
|
577 matching is case-insensitive.
|
yuuji@0
|
578
|
yuuji@0
|
579 When performing the SEARCH operation, the active comparator is
|
yuuji@0
|
580 applied instead of the case-insensitive matching specified above.
|
yuuji@0
|
581
|
yuuji@0
|
582 An IMAP server which performs collation operations (e.g., as part of
|
yuuji@0
|
583 commands such as SEARCH, SORT, THREAD) does so according to the
|
yuuji@0
|
584 following procedure:
|
yuuji@0
|
585
|
yuuji@0
|
586 (a) MIME encoding (for example see [RFC2047] for headers and
|
yuuji@0
|
587 [RFC2045] for body parts) MUST be removed in the texts being
|
yuuji@0
|
588 collated.
|
yuuji@0
|
589
|
yuuji@0
|
590 If MIME encoding removal fails for a message (e.g., a body part
|
yuuji@0
|
591 of the message has an unsupported Content-Transfer-Encoding,
|
yuuji@0
|
592 uses characters not allowed by the Content-Transfer-Encoding,
|
yuuji@0
|
593 etc.), the collation of this message is undefined by this
|
yuuji@0
|
594 specification, and is handled in an implementation-dependent
|
yuuji@0
|
595
|
yuuji@0
|
596
|
yuuji@0
|
597
|
yuuji@0
|
598 Newman & Co Expires August 2008 FF[Page 10]
|
yuuji@0
|
599
|
yuuji@0
|
600
|
yuuji@0
|
601
|
yuuji@0
|
602
|
yuuji@0
|
603
|
yuuji@0
|
604 Internet-draft February 2008
|
yuuji@0
|
605
|
yuuji@0
|
606
|
yuuji@0
|
607 manner.
|
yuuji@0
|
608
|
yuuji@0
|
609 (b) The decoded text from (a) MUST be converted to the charset
|
yuuji@0
|
610 expected by the active comparator.
|
yuuji@0
|
611
|
yuuji@0
|
612 (c) For the substring operation:
|
yuuji@0
|
613 If step (b) failed (e.g., the text is in an unknown charset,
|
yuuji@0
|
614 contains a sequence which is not valid according in that
|
yuuji@0
|
615 charset, etc.), the original decoded text from (a) (i.e.,
|
yuuji@0
|
616 before the charset conversion attempt) is collated using the
|
yuuji@0
|
617 i;octet comparator (see [RFC4790]).
|
yuuji@0
|
618
|
yuuji@0
|
619 If step (b) was successful, the converted text from (b) is
|
yuuji@0
|
620 collated according to the active comparator.
|
yuuji@0
|
621
|
yuuji@0
|
622
|
yuuji@0
|
623 For the ordering operation:
|
yuuji@0
|
624
|
yuuji@0
|
625 All strings that were successfully converted by step (b) are
|
yuuji@0
|
626 separated from all strings that failed step (b). Strings in
|
yuuji@0
|
627 each group are collated independently. All strings successfully
|
yuuji@0
|
628 converted by step (b) are then validated by the active
|
yuuji@0
|
629 comparator. Strings that pass validation are collated using the
|
yuuji@0
|
630 active comparator. All strings that either fail step (b) or fail
|
yuuji@0
|
631 the active collation's validity operation are collated (after
|
yuuji@0
|
632 applying step (a)) using the i;octet comparator (see [RFC4790]).
|
yuuji@0
|
633 The resulting sorted list is produced by appending all collated
|
yuuji@0
|
634 "failed" strings after all strings collated using the active
|
yuuji@0
|
635 comparator.
|
yuuji@0
|
636
|
yuuji@0
|
637
|
yuuji@0
|
638 Example: The following example demonstrates ordering of 4
|
yuuji@0
|
639 different strings using i;unicode-casemap [UCM] comparator.
|
yuuji@0
|
640 Strings are represented using hexadecimal notation used by
|
yuuji@0
|
641 ABNF [RFC4234].
|
yuuji@0
|
642
|
yuuji@0
|
643 (1) %xD0 %xC0 %xD0 %xBD %xD0 %xB4 %xD1 %x80 %xD0 %xB5
|
yuuji@0
|
644 %xD0 %xB9 (labeled with charset=UTF-8)
|
yuuji@0
|
645 (2) %xD1 %x81 %xD0 %x95 %xD0 %xA0 %xD0 %x93 %xD0 %x95
|
yuuji@0
|
646 %xD0 %x99 (labeled with charset=UTF-8)
|
yuuji@0
|
647 (3) %xD0 %x92 %xD0 %xB0 %xD1 %x81 %xD0 %xB8 %xD0 %xBB
|
yuuji@0
|
648 %xD0 %xB8 %xFF %xB9 (labeled with charset=UTF-8)
|
yuuji@0
|
649 (4) %xE1 %xCC %xC5 %xCB %xD3 %xC5 %xCA (labeled with
|
yuuji@0
|
650 charset=KOI8-R)
|
yuuji@0
|
651
|
yuuji@0
|
652 Step (b) will convert string # 4 to the following
|
yuuji@0
|
653 sequence of octets (in UTF-8):
|
yuuji@0
|
654
|
yuuji@0
|
655
|
yuuji@0
|
656
|
yuuji@0
|
657
|
yuuji@0
|
658 Newman & Co Expires August 2008 FF[Page 11]
|
yuuji@0
|
659
|
yuuji@0
|
660
|
yuuji@0
|
661
|
yuuji@0
|
662
|
yuuji@0
|
663
|
yuuji@0
|
664 Internet-draft February 2008
|
yuuji@0
|
665
|
yuuji@0
|
666
|
yuuji@0
|
667 %xD0 %x90 %xD0 %xBB %xD0 %xB5 %xD0 %xBA %xD1 %x81 %xD0
|
yuuji@0
|
668 %xB5 %xD0 %xB9
|
yuuji@0
|
669
|
yuuji@0
|
670 and will reject strings (1) and (3), as they contain
|
yuuji@0
|
671 octets not allowed in charset=UTF-8.
|
yuuji@0
|
672 After that, using the i;unicode-casemap collation,
|
yuuji@0
|
673 string (4) will collate before string (2). Using the
|
yuuji@0
|
674 i;octet collation on the original strings, string (3)
|
yuuji@0
|
675 will collate before string (1). So the final ordering
|
yuuji@0
|
676 is as follows: (4) (2) (3) (1).
|
yuuji@0
|
677
|
yuuji@0
|
678 If the substring operation (e.g., IMAP SEARCH) of the active
|
yuuji@0
|
679 comparator returns the "undefined" result (see section 4.2.3 of
|
yuuji@0
|
680 [RFC4790]) for either the text specified in the SEARCH command or
|
yuuji@0
|
681 the message text, then the operation is repeated on the result of
|
yuuji@0
|
682 step (a) using the i;octet comparator.
|
yuuji@0
|
683
|
yuuji@0
|
684 The ordering operation (e.g., IMAP SORT and THREAD) SHOULD collate
|
yuuji@0
|
685 the following together: strings encoded using unknown or invalid
|
yuuji@0
|
686 character encodings, strings in unrecognized charsets, and invalid
|
yuuji@0
|
687 input (as defined by the active collation).
|
yuuji@0
|
688
|
yuuji@0
|
689
|
yuuji@0
|
690
|
yuuji@0
|
691 4.7 COMPARATOR Command
|
yuuji@0
|
692
|
yuuji@0
|
693 Arguments: Optional comparator order arguments.
|
yuuji@0
|
694
|
yuuji@0
|
695 Response: A possible COMPARATOR response (see Section 4.8).
|
yuuji@0
|
696
|
yuuji@0
|
697 Result: OK - Command completed
|
yuuji@0
|
698 NO - No matching comparator found
|
yuuji@0
|
699 BAD - arguments invalid
|
yuuji@0
|
700
|
yuuji@0
|
701 The COMPARATOR command is valid in authenticated and selected
|
yuuji@0
|
702 states.
|
yuuji@0
|
703
|
yuuji@0
|
704 The COMPARATOR command is used to determine or change the active
|
yuuji@0
|
705 comparator. When issued with no arguments, it results in a
|
yuuji@0
|
706 COMPARATOR response indicating the currently active comparator.
|
yuuji@0
|
707
|
yuuji@0
|
708 When issued with one or more comparator argument, it changes the
|
yuuji@0
|
709 active comparator as directed. (If more than one installed
|
yuuji@0
|
710 comparator is matched by an argument, the first argument wins.) The
|
yuuji@0
|
711 COMPARATOR response lists all matching comparators if more than one
|
yuuji@0
|
712 matches the specified patterns.
|
yuuji@0
|
713
|
yuuji@0
|
714 The argument "default" refers to the server's default comparator.
|
yuuji@0
|
715
|
yuuji@0
|
716
|
yuuji@0
|
717
|
yuuji@0
|
718 Newman & Co Expires August 2008 FF[Page 12]
|
yuuji@0
|
719
|
yuuji@0
|
720
|
yuuji@0
|
721
|
yuuji@0
|
722
|
yuuji@0
|
723
|
yuuji@0
|
724 Internet-draft February 2008
|
yuuji@0
|
725
|
yuuji@0
|
726
|
yuuji@0
|
727 Otherwise each argument is an collation specification as defined in
|
yuuji@0
|
728 the Internet Application Protocol Comparator Registry [RFC4790].
|
yuuji@0
|
729
|
yuuji@0
|
730 < The client requests activating a Czech comparator if possible,
|
yuuji@0
|
731 or else a generic international comparator which it considers
|
yuuji@0
|
732 suitable for Czech. The server picks the first supported
|
yuuji@0
|
733 comparator. >
|
yuuji@0
|
734
|
yuuji@0
|
735 C: A001 COMPARATOR "cz;*" i;basic
|
yuuji@0
|
736 S: * COMPARATOR i;basic
|
yuuji@0
|
737 S: A001 OK Will use i;basic for collation
|
yuuji@0
|
738
|
yuuji@0
|
739
|
yuuji@0
|
740 4.8 COMPARATOR Response
|
yuuji@0
|
741
|
yuuji@0
|
742 Contents: The active comparator.
|
yuuji@0
|
743 An optional list of available matching comparators
|
yuuji@0
|
744
|
yuuji@0
|
745 The COMPARATOR response occurs as a result of a COMPARATOR command.
|
yuuji@0
|
746 The first argument in the comparator response is the name of the
|
yuuji@0
|
747 active comparator. The second argument is a list of comparators
|
yuuji@0
|
748 which matched any of the arguments to the COMPARATOR command and is
|
yuuji@0
|
749 present only if more than one match is found.
|
yuuji@0
|
750
|
yuuji@0
|
751
|
yuuji@0
|
752 4.9 BADCOMPARATOR response code
|
yuuji@0
|
753
|
yuuji@0
|
754 This response code SHOULD be returned as a result of server failing
|
yuuji@0
|
755 an IMAP command (returning NO), when the server knows that none of
|
yuuji@0
|
756 the specified comparators match the requested comparator(s).
|
yuuji@0
|
757
|
yuuji@0
|
758
|
yuuji@0
|
759 4.10 Formal Syntax
|
yuuji@0
|
760
|
yuuji@0
|
761 The following syntax specification inherits ABNF [RFC4234] rules
|
yuuji@0
|
762 from IMAP4rev1 [RFC3501], and Internet Application Protocol
|
yuuji@0
|
763 Comparator Registry [RFC4790].
|
yuuji@0
|
764
|
yuuji@0
|
765 command-auth =/ comparator-cmd
|
yuuji@0
|
766
|
yuuji@0
|
767 resp-text-code =/ "BADCOMPARATOR"
|
yuuji@0
|
768
|
yuuji@0
|
769 comparator-cmd = "COMPARATOR" *(SP comp-order-quoted)
|
yuuji@0
|
770
|
yuuji@0
|
771 response-payload =/ comparator-data
|
yuuji@0
|
772
|
yuuji@0
|
773 comparator-data = "COMPARATOR" SP comp-sel-quoted [SP "("
|
yuuji@0
|
774 comp-id-quoted *(SP comp-id-quoted) ")"]
|
yuuji@0
|
775
|
yuuji@0
|
776
|
yuuji@0
|
777
|
yuuji@0
|
778 Newman & Co Expires August 2008 FF[Page 13]
|
yuuji@0
|
779
|
yuuji@0
|
780
|
yuuji@0
|
781
|
yuuji@0
|
782
|
yuuji@0
|
783
|
yuuji@0
|
784 Internet-draft February 2008
|
yuuji@0
|
785
|
yuuji@0
|
786
|
yuuji@0
|
787 comp-id-quoted = astring
|
yuuji@0
|
788 ; Once any literal wrapper or quoting is removed, this
|
yuuji@0
|
789 ; follows the collation-id rule from [RFC4790]
|
yuuji@0
|
790
|
yuuji@0
|
791 comp-order-quoted = astring
|
yuuji@0
|
792 ; Once any literal wrapper or quoting is removed, this
|
yuuji@0
|
793 ; follows the collation-order rule from [RFC4790]
|
yuuji@0
|
794
|
yuuji@0
|
795 comp-sel-quoted = astring
|
yuuji@0
|
796 ; Once any literal wrapper or quoting is removed, this
|
yuuji@0
|
797 ; follows the collation-selected rule from [RFC4790]
|
yuuji@0
|
798
|
yuuji@0
|
799
|
yuuji@0
|
800 5. Other IMAP Internationalization Issues
|
yuuji@0
|
801
|
yuuji@0
|
802 The following sections provide an overview of various other IMAP
|
yuuji@0
|
803 internationalization issues. These issues are not resolved by this
|
yuuji@0
|
804 specification, but could be resolved by other standards work, such
|
yuuji@0
|
805 as that being done by the EAI group (see [IMAP-EAI]).
|
yuuji@0
|
806
|
yuuji@0
|
807
|
yuuji@0
|
808 5.1 Unicode Userids and Passwords
|
yuuji@0
|
809
|
yuuji@0
|
810 IMAP4rev1 currently restricts the userid and password fields of the
|
yuuji@0
|
811 LOGIN command to US-ASCII. The "userid" and "password" fields of the
|
yuuji@0
|
812 IMAP LOGIN command are restricted to US-ASCII only until a future
|
yuuji@0
|
813 standards track RFC states otherwise. Servers are encouraged to
|
yuuji@0
|
814 validate both fields to make sure they conform to the formal syntax
|
yuuji@0
|
815 of UTF-8 and to reject the LOGIN command if that syntax is violated.
|
yuuji@0
|
816 Servers MAY reject the use of any 8-bit in the "userid" or
|
yuuji@0
|
817 "password" field.
|
yuuji@0
|
818
|
yuuji@0
|
819 When AUTHENTICATE is used, some servers may support userids and
|
yuuji@0
|
820 passwords in Unicode [RFC3490] since SASL (see [RFC4422]) allows
|
yuuji@0
|
821 that. However, such userids cannot be used as part of email
|
yuuji@0
|
822 addresses.
|
yuuji@0
|
823
|
yuuji@0
|
824
|
yuuji@0
|
825 5.2 UTF-8 Mailbox Names
|
yuuji@0
|
826
|
yuuji@0
|
827 The modified UTF-7 mailbox naming convention described in section
|
yuuji@0
|
828 5.1.3 of RFC 3501 is best viewed as an transition from the status
|
yuuji@0
|
829 quo in 1996 when modified UTF-7 was first specified. At that time,
|
yuuji@0
|
830 there was widespread unofficial use of local character sets such as
|
yuuji@0
|
831 ISO-8859-1 and Shift-JIS for non-ASCII mailbox names, with resultant
|
yuuji@0
|
832 non-interoperability.
|
yuuji@0
|
833
|
yuuji@0
|
834 The requirements in section 5.1 of RFC 3501 are very important if
|
yuuji@0
|
835
|
yuuji@0
|
836
|
yuuji@0
|
837
|
yuuji@0
|
838 Newman & Co Expires August 2008 FF[Page 14]
|
yuuji@0
|
839
|
yuuji@0
|
840
|
yuuji@0
|
841
|
yuuji@0
|
842
|
yuuji@0
|
843
|
yuuji@0
|
844 Internet-draft February 2008
|
yuuji@0
|
845
|
yuuji@0
|
846
|
yuuji@0
|
847 we're ever going to be able to deploy UTF-8 mailbox names. Servers
|
yuuji@0
|
848 are encouraged to enforce them.
|
yuuji@0
|
849
|
yuuji@0
|
850
|
yuuji@0
|
851 5.3 UTF-8 Domains, Addresses and Mail Headers
|
yuuji@0
|
852
|
yuuji@0
|
853 There is now an IETF standard for Internationalizing Domain Names in
|
yuuji@0
|
854 Applications [RFC3490]. While IMAP clients are free to support this
|
yuuji@0
|
855 standard, an argument can be made that it would be helpful to simple
|
yuuji@0
|
856 clients if the IMAP server could perform this conversion (the same
|
yuuji@0
|
857 argument would apply to MIME header encoding [RFC2047]). However,
|
yuuji@0
|
858 it would be unwise to move forward with such work until the work in
|
yuuji@0
|
859 progress to define the format of international email addresses is
|
yuuji@0
|
860 complete.
|
yuuji@0
|
861
|
yuuji@0
|
862
|
yuuji@0
|
863 6. IANA Considerations
|
yuuji@0
|
864
|
yuuji@0
|
865 The IANA is requested to add LANGUAGE, I18NLEVEL=1 and I18NLEVEL=2
|
yuuji@0
|
866 to the IMAP4 Capabilities Registry. [Note to IANA:
|
yuuji@0
|
867 http://www.iana.org/assignments/imap4-capabilities]
|
yuuji@0
|
868
|
yuuji@0
|
869
|
yuuji@0
|
870 7. Security Considerations
|
yuuji@0
|
871
|
yuuji@0
|
872 The LANGUAGE extension makes a new command available in "Not
|
yuuji@0
|
873 Authenticated" state in IMAP. Some IMAP implementations run with
|
yuuji@0
|
874 root privilege when the server is in "Not Authenticated" state and
|
yuuji@0
|
875 do not revoke that privilege until after authentication is complete.
|
yuuji@0
|
876 Such implementations are particularly vulnerable to buffer overflow
|
yuuji@0
|
877 security errors at this stage and need to implement parsing of this
|
yuuji@0
|
878 command with extra care.
|
yuuji@0
|
879
|
yuuji@0
|
880 A LANGUAGE command issued prior to activation of a security layer is
|
yuuji@0
|
881 subject to an active attack which suppresses or modifies the
|
yuuji@0
|
882 negotiation and thus makes STARTTLS or authentication error messages
|
yuuji@0
|
883 more difficult to interpret. This is not a new attack as the error
|
yuuji@0
|
884 messages themselves are subject to active attack. Clients MUST re-
|
yuuji@0
|
885 issue the LANGUAGE command once a security layer is active, so this
|
yuuji@0
|
886 does not impact subsequent protocol operations.
|
yuuji@0
|
887
|
yuuji@0
|
888 LANGUAGE, I18NLEVEL=1 and I18NLEVEL=2 extensions use the UTF-8
|
yuuji@0
|
889 charset, thus the security considerations for UTF-8 [RFC3629] are
|
yuuji@0
|
890 relevent. However, neither uses UTF-8 for identifiers so the most
|
yuuji@0
|
891 serious concerns do not apply.
|
yuuji@0
|
892
|
yuuji@0
|
893
|
yuuji@0
|
894 8. Acknowledgements
|
yuuji@0
|
895
|
yuuji@0
|
896
|
yuuji@0
|
897
|
yuuji@0
|
898 Newman & Co Expires August 2008 FF[Page 15]
|
yuuji@0
|
899
|
yuuji@0
|
900
|
yuuji@0
|
901
|
yuuji@0
|
902
|
yuuji@0
|
903
|
yuuji@0
|
904 Internet-draft February 2008
|
yuuji@0
|
905
|
yuuji@0
|
906
|
yuuji@0
|
907 The LANGUAGE extension is based on a previous Internet draft by Mike
|
yuuji@0
|
908 Gahrns, a substantial portion of the text in that section was
|
yuuji@0
|
909 written by him. Many people have participated in discussions about
|
yuuji@0
|
910 an IMAP Language extension in the various fora of the IETF and
|
yuuji@0
|
911 Internet working groups, so any list of contributors is bound to be
|
yuuji@0
|
912 incomplete. However, the authors would like to thank Andrew McCown
|
yuuji@0
|
913 for early work on the original proposal, John Myers for suggestions
|
yuuji@0
|
914 regarding the namespace issue, along with Jutta Degener, Mark
|
yuuji@0
|
915 Crispin, Mark Pustilnik, Larry Osterman, Cyrus Daboo, Martin Duerst,
|
yuuji@0
|
916 Timo Sirainen, Ben Campbell and Magnus Nystrom for their many
|
yuuji@0
|
917 suggestions that have been incorporated into this document.
|
yuuji@0
|
918
|
yuuji@0
|
919 Initial discussion of the I18NLEVEL=2 extension involved input from
|
yuuji@0
|
920 Mark Crispin and other participants of the IMAP Extensions WG.
|
yuuji@0
|
921
|
yuuji@0
|
922
|
yuuji@0
|
923 9. Relevant Standards for i18n IMAP Implementations
|
yuuji@0
|
924
|
yuuji@0
|
925 This is a non-normative list of standards to consider when
|
yuuji@0
|
926 implementing i18n aware IMAP software.
|
yuuji@0
|
927
|
yuuji@0
|
928 o The LANGUAGE and I18NLEVEL=2 extensions to IMAP (this
|
yuuji@0
|
929 specification).
|
yuuji@0
|
930 o The 8-bit rules for mailbox naming in section 5.1 of RFC 3501.
|
yuuji@0
|
931 o The Mailbox International Naming Convention in section 5.1.3 of
|
yuuji@0
|
932 RFC 3501.
|
yuuji@0
|
933 o MIME [RFC2045] for message bodies.
|
yuuji@0
|
934 o MIME header encoding [RFC2047] for message headers.
|
yuuji@0
|
935 o The IETF EAI working group.
|
yuuji@0
|
936 o MIME Parameter Value and Encoded Word Extensions [RFC2231] for
|
yuuji@0
|
937 filenames. Quality IMAP server implementations will
|
yuuji@0
|
938 automatically combine multipart parameters when generating the
|
yuuji@0
|
939 BODYSTRUCTURE. There is also some deployed non-standard use of
|
yuuji@0
|
940 MIME header encoding inside double-quotes for filenames.
|
yuuji@0
|
941 o IDNA [RFC3490] and punycode [RFC3492] for domain names
|
yuuji@0
|
942 (currently only relevant to IMAP clients).
|
yuuji@0
|
943 o The UTF-8 charset [RFC3629].
|
yuuji@0
|
944 o The IETF policy on Character Sets and Languages [RFC2277].
|
yuuji@0
|
945
|
yuuji@0
|
946
|
yuuji@0
|
947 Normative References
|
yuuji@0
|
948
|
yuuji@0
|
949 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
|
yuuji@0
|
950 Requirement Levels", BCP 14, RFC 2119, March 1997.
|
yuuji@0
|
951
|
yuuji@0
|
952 [RFC2277] Alvestrand, "IETF Policy on Character Sets and
|
yuuji@0
|
953 Languages", BCP 18, RFC 2277, January 1998.
|
yuuji@0
|
954
|
yuuji@0
|
955
|
yuuji@0
|
956
|
yuuji@0
|
957
|
yuuji@0
|
958 Newman & Co Expires August 2008 FF[Page 16]
|
yuuji@0
|
959
|
yuuji@0
|
960
|
yuuji@0
|
961
|
yuuji@0
|
962
|
yuuji@0
|
963
|
yuuji@0
|
964 Internet-draft February 2008
|
yuuji@0
|
965
|
yuuji@0
|
966
|
yuuji@0
|
967 [RFC2342] Gahrns, Newman, "IMAP4 Namespace", RFC 2342, May 1998.
|
yuuji@0
|
968
|
yuuji@0
|
969 [RFC3501] Crispin, "INTERNET MESSAGE ACCESS PROTOCOL - VERSION
|
yuuji@0
|
970 4rev1", RFC 3501, March 2003.
|
yuuji@0
|
971
|
yuuji@0
|
972 [RFC3629] Yergeau, "UTF-8, a transformation format of ISO 10646",
|
yuuji@0
|
973 STD 63, RFC 3629, November 2003.
|
yuuji@0
|
974
|
yuuji@0
|
975 [RFC4234] Crocker, Overell, "Augmented BNF for Syntax
|
yuuji@0
|
976 Specifications: ABNF", RFC 4234, Brandenburg
|
yuuji@0
|
977 Internetworking, Demon Internet Ltd, October 2005.
|
yuuji@0
|
978
|
yuuji@0
|
979 [RFC4422] Melnikov, Zeilenga, "Simple Authentication and Security
|
yuuji@0
|
980 Layer (SASL)", RFC 4422, June 2006.
|
yuuji@0
|
981
|
yuuji@0
|
982 [RFC4466] Melnikov, Daboo, "Collected Extensions to IMAP4 ABNF",
|
yuuji@0
|
983 RFC 4466, Isode Ltd., April 2006.
|
yuuji@0
|
984
|
yuuji@0
|
985 [RFC4646] Philips, Davis, "Tags for Identifying Languages", BCP 47,
|
yuuji@0
|
986 RFC 4646, September 2006.
|
yuuji@0
|
987
|
yuuji@0
|
988 [RFC4647] Philips, Davis, "Matching of Language Tags", BCP 47, RFC
|
yuuji@0
|
989 4647, September 2006.
|
yuuji@0
|
990
|
yuuji@0
|
991 [RFC4790] Newman, Duerst, Gulbrandsen, "Internet Application
|
yuuji@0
|
992 Protocol Comparator Registry", RFC 4790, February 2007.
|
yuuji@0
|
993
|
yuuji@0
|
994 [SORT] Crispin, M. and K. Murchison, "INTERNET MESSAGE ACCESS
|
yuuji@0
|
995 PROTOCOL - SORT AND THREAD EXTENSION", draft-ietf-
|
yuuji@0
|
996 imapext-sort-19 (work in progress), November 2006.
|
yuuji@0
|
997
|
yuuji@0
|
998 [UCM] Crispin, "i;unicode-casemap - Simple Unicode Collation
|
yuuji@0
|
999 Algorithm", RFC 5051, October 2007.
|
yuuji@0
|
1000
|
yuuji@0
|
1001 [RFC2045] Freed, Borenstein, "Multipurpose Internet Mail Extensions
|
yuuji@0
|
1002 (MIME) Part One: Format of Internet Message Bodies", RFC
|
yuuji@0
|
1003 2045, November 1996.
|
yuuji@0
|
1004
|
yuuji@0
|
1005 [RFC2047] Moore, "MIME (Multipurpose Internet Mail Extensions) Part
|
yuuji@0
|
1006 Three: Message Header Extensions for Non-ASCII Text", RFC
|
yuuji@0
|
1007 2047, November 1996.
|
yuuji@0
|
1008
|
yuuji@0
|
1009
|
yuuji@0
|
1010 Informative References
|
yuuji@0
|
1011
|
yuuji@0
|
1012
|
yuuji@0
|
1013 [RFC2231] Freed, Moore, "MIME Parameter Value and Encoded Word
|
yuuji@0
|
1014 Extensions: Character Sets, Languages, and
|
yuuji@0
|
1015
|
yuuji@0
|
1016
|
yuuji@0
|
1017
|
yuuji@0
|
1018 Newman & Co Expires August 2008 FF[Page 17]
|
yuuji@0
|
1019
|
yuuji@0
|
1020
|
yuuji@0
|
1021
|
yuuji@0
|
1022
|
yuuji@0
|
1023
|
yuuji@0
|
1024 Internet-draft February 2008
|
yuuji@0
|
1025
|
yuuji@0
|
1026
|
yuuji@0
|
1027 Continuations", RFC 2231, November 1997.
|
yuuji@0
|
1028
|
yuuji@0
|
1029 [RFC3490] Faltstrom, Hoffman, Costello, "Internationalizing Domain
|
yuuji@0
|
1030 Names in Applications (IDNA)", RFC 3490, March 2003.
|
yuuji@0
|
1031
|
yuuji@0
|
1032 [RFC3492] Costello, "Punycode: A Bootstring encoding of Unicode for
|
yuuji@0
|
1033 Internationalized Domain Names in Applications (IDNA)",
|
yuuji@0
|
1034 RFC 3492, March 2003.
|
yuuji@0
|
1035
|
yuuji@0
|
1036 [METADATA] Daboo, C., "IMAP METADATA Extension", draft-daboo-imap-
|
yuuji@0
|
1037 annotatemore-12 (work in progress), December 2007.
|
yuuji@0
|
1038
|
yuuji@0
|
1039 [IMAP-EAI] Resnick, Newman, "IMAP Support for UTF-8", draft-ietf-
|
yuuji@0
|
1040 eai-imap-utf8 (work in progress), May 2006.
|
yuuji@0
|
1041
|
yuuji@0
|
1042
|
yuuji@0
|
1043
|
yuuji@0
|
1044 Authors' Addresses
|
yuuji@0
|
1045
|
yuuji@0
|
1046 Chris Newman
|
yuuji@0
|
1047 Sun Microsystems
|
yuuji@0
|
1048 3401 Centrelake Dr., Suite 410
|
yuuji@0
|
1049 Ontario, CA 91761
|
yuuji@0
|
1050 US
|
yuuji@0
|
1051
|
yuuji@0
|
1052 Email: chris.newman@sun.com
|
yuuji@0
|
1053
|
yuuji@0
|
1054
|
yuuji@0
|
1055 Arnt Gulbrandsen
|
yuuji@0
|
1056 Oryx Mail Systems GmbH
|
yuuji@0
|
1057 Schweppermannstr. 8
|
yuuji@0
|
1058 D-81671 Muenchen
|
yuuji@0
|
1059 Germany
|
yuuji@0
|
1060
|
yuuji@0
|
1061 Email: arnt@oryx.com
|
yuuji@0
|
1062
|
yuuji@0
|
1063 Fax: +49 89 4502 9758
|
yuuji@0
|
1064
|
yuuji@0
|
1065
|
yuuji@0
|
1066 Alexey Melnikov
|
yuuji@0
|
1067 Isode Limited
|
yuuji@0
|
1068 5 Castle Business Village, 36 Station Road,
|
yuuji@0
|
1069 Hampton, Middlesex, TW12 2BX, UK
|
yuuji@0
|
1070
|
yuuji@0
|
1071 Email: Alexey.Melnikov@isode.com
|
yuuji@0
|
1072
|
yuuji@0
|
1073
|
yuuji@0
|
1074
|
yuuji@0
|
1075
|
yuuji@0
|
1076
|
yuuji@0
|
1077
|
yuuji@0
|
1078 Newman & Co Expires August 2008 FF[Page 18]
|
yuuji@0
|
1079
|
yuuji@0
|
1080
|
yuuji@0
|
1081
|
yuuji@0
|
1082
|
yuuji@0
|
1083
|
yuuji@0
|
1084 Internet-draft February 2008
|
yuuji@0
|
1085
|
yuuji@0
|
1086
|
yuuji@0
|
1087 Intellectual Property Statement
|
yuuji@0
|
1088
|
yuuji@0
|
1089 The IETF takes no position regarding the validity or scope of any
|
yuuji@0
|
1090 Intellectual Property Rights or other rights that might be claimed to
|
yuuji@0
|
1091 pertain to the implementation or use of the technology described in
|
yuuji@0
|
1092 this document or the extent to which any license under such rights
|
yuuji@0
|
1093 might or might not be available; nor does it represent that it has
|
yuuji@0
|
1094 made any independent effort to identify any such rights. Information
|
yuuji@0
|
1095 on the procedures with respect to rights in RFC documents can be found
|
yuuji@0
|
1096 in BCP 78 and BCP 79.
|
yuuji@0
|
1097
|
yuuji@0
|
1098 Copies of IPR disclosures made to the IETF Secretariat and any
|
yuuji@0
|
1099 assurances of licenses to be made available, or the result of an
|
yuuji@0
|
1100 attempt made to obtain a general license or permission for the use of
|
yuuji@0
|
1101 such proprietary rights by implementers or users of this specification
|
yuuji@0
|
1102 can be obtained from the IETF on-line IPR repository at
|
yuuji@0
|
1103 http://www.ietf.org/ipr.
|
yuuji@0
|
1104
|
yuuji@0
|
1105 The IETF invites any interested party to bring to its attention any
|
yuuji@0
|
1106 copyrights, patents or patent applications, or other proprietary
|
yuuji@0
|
1107 rights that may cover technology that may be required to implement
|
yuuji@0
|
1108 this standard. Please address the information to the IETF at
|
yuuji@0
|
1109 ietf-ipr@ietf.org.
|
yuuji@0
|
1110
|
yuuji@0
|
1111
|
yuuji@0
|
1112 Full Copyright Statement
|
yuuji@0
|
1113
|
yuuji@0
|
1114 Copyright (C) The IETF Trust (2008). This document is subject to
|
yuuji@0
|
1115 the rights, licenses and restrictions contained in BCP 78, and
|
yuuji@0
|
1116 except as set forth therein, the authors retain all their rights.
|
yuuji@0
|
1117
|
yuuji@0
|
1118 This document and the information contained herein are provided on
|
yuuji@0
|
1119 an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE
|
yuuji@0
|
1120 REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE
|
yuuji@0
|
1121 IETF TRUST AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL
|
yuuji@0
|
1122 WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY
|
yuuji@0
|
1123 WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE
|
yuuji@0
|
1124 ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS
|
yuuji@0
|
1125 FOR A PARTICULAR PURPOSE.
|
yuuji@0
|
1126
|
yuuji@0
|
1127
|
yuuji@0
|
1128 Acknowledgment
|
yuuji@0
|
1129
|
yuuji@0
|
1130 Funding for the RFC Editor function is currently provided by the
|
yuuji@0
|
1131 Internet Society.
|
yuuji@0
|
1132
|
yuuji@0
|
1133
|
yuuji@0
|
1134
|
yuuji@0
|
1135
|
yuuji@0
|
1136
|
yuuji@0
|
1137
|
yuuji@0
|
1138 Newman & Co Expires August 2008 FF[Page 19]
|
yuuji@0
|
1139
|
yuuji@0
|
1140
|