1
2
3
4
5
6
7Network Working Group D. Cridland, Ed.
8Request for Comments: 5550 A. Melnikov, Ed.
9Obsoletes: 4550 Isode Limited
10Updates: 4469, 4467 S. Maes, Ed.
11Category: Standards Track Oracle
12 August 2009
13
14
15 The Internet Email to
16 Support Diverse Service Environments (Lemonade) Profile
17
18Abstract
19
20 This document describes a profile (a set of required extensions,
21 restrictions, and usage modes), dubbed Lemonade, of the IMAP, mail
22 submission, and Sieve protocols. This profile allows clients
23 (especially those that are constrained in memory, bandwidth,
24 processing power, or other areas) to efficiently use IMAP and
25 Submission to access and submit mail. This includes the ability to
26 forward received mail without needing to download and upload the
27 mail, to optimize submission, and to efficiently resynchronize in
28 case of loss of connectivity with the server.
29
30 The Lemonade Profile relies upon several extensions to IMAP, Sieve,
31 and Mail Submission protocols. The document also defines a new IMAP
32 extension and registers several new IMAP keywords.
33
34Status of This Memo
35
36 This document specifies an Internet standards track protocol for the
37 Internet community, and requests discussion and suggestions for
38 improvements. Please refer to the current edition of the "Internet
39 Official Protocol Standards" (STD 1) for the standardization state
40 and status of this protocol. Distribution of this memo is unlimited.
41
42Copyright Notice
43
44 Copyright (c) 2009 IETF Trust and the persons identified as the
45 document authors. All rights reserved.
46
47 This document is subject to BCP 78 and the IETF Trust's Legal
48 Provisions Relating to IETF Documents in effect on the date of
49 publication of this document (http://trustee.ietf.org/license-info).
50 Please review these documents carefully, as they describe your rights
51 and restrictions with respect to this document.
52
53
54
55
56
57
58Cridland, et al. Standards Track [Page 1]
59
60RFC 5550 Lemonade Profile August 2009
61
62
63 This document may contain material from IETF Documents or IETF
64 Contributions published or made publicly available before November
65 10, 2008. The person(s) controlling the copyright in some of this
66 material may not have granted the IETF Trust the right to allow
67 modifications of such material outside the IETF Standards Process.
68 Without obtaining an adequate license from the person(s) controlling
69 the copyright in such materials, this document may not be modified
70 outside the IETF Standards Process, and derivative works of it may
71 not be created outside the IETF Standards Process, except to format
72 it for publication as an RFC or to translate it into languages other
73 than English.
74
75Table of Contents
76
77 1. Introduction ....................................................3
78 2. Conventions Used in This Document ...............................4
79 3. Summary of the Required Support .................................4
80 3.1. Lemonade Submission Servers ................................4
81 3.2. Lemonade Message Stores ....................................5
82 3.3. Lemonade Message Delivery Agents ...........................7
83 4. Lemonade Submission Servers .....................................7
84 4.1. Forward without Download ...................................7
85 4.2. Pipelining .................................................8
86 4.3. DSN Support ................................................8
87 4.4. Message Size Declaration ...................................8
88 4.5. Enhanced Status Code Support ...............................8
89 4.6. Encryption and Compression .................................8
90 5. Lemonade Message Stores .........................................9
91 5.1. Quick Resynchronization ....................................9
92 5.2. Message Part Handling ......................................9
93 5.3. Compression ...............................................10
94 5.4. Notifications .............................................10
95 5.5. Searching and View Filters ................................12
96 5.6. Mailbox Handling ..........................................12
97 5.7. Forward without Download ..................................12
98 5.8. Additional IMAP Extensions ................................13
99 5.9. Registration of $Forwarded IMAP Keyword ...................13
100 5.10. Registration of $SubmitPending and $Submitted
101 IMAP Keywords ............................................13
102 5.11. Related IMAP Extensions ..................................14
103 6. Lemonade Message Delivery Agents ...............................14
104 7. Lemonade Message User Agents ...................................15
105 8. Forward without Download .......................................16
106 8.1. Motivations ...............................................16
107 8.2. Message Sending Overview ..................................16
108 8.3. Traditional Strategy ......................................17
109 8.4. A New Strategy ............................................18
110 8.5. Security Considerations for Pawn-Tickets ..................27
111
112
113
114Cridland, et al. Standards Track [Page 2]
115
116RFC 5550 Lemonade Profile August 2009
117
118
119 8.6. Copies of Sent Messages: The fcc Problem ..................27
120 9. Deployment Considerations ......................................28
121 10. Security Considerations .......................................28
122 10.1. Confidentiality Protection of Submitted Messages .........28
123 10.2. TLS ......................................................29
124 10.3. Additional Extensions and Deployment Models ..............29
125 11. IANA Considerations ...........................................30
126 12. Changes since RFC 4550 ........................................30
127 13. Acknowledgements ..............................................31
128 14. References ....................................................31
129 14.1. Normative References .....................................31
130 14.2. Informative References ...................................35
131 Appendix A. Errata ..............................................37
132
1331. Introduction
134
135 The Lemonade Profile, or simply Lemonade, provides enhancements to
136 Internet email to support diverse service environments. Lemonade
137 mail servers provide both a Lemonade Submission Server and a Lemonade
138 Message Store, which are based on the existing [SUBMIT] and [IMAP]
139 protocols, respectively. They MAY also include a Lemonade Message
140 Delivery Agent, which provides delivery-time filtering services based
141 on [SIEVE].
142
143 This document describes the Lemonade Profile that includes:
144
145 o General common enhancements to Internet Mail, described in 5 and
146 4.
147
148 o "Forward without download" that describes exchanges between
149 Lemonade clients and servers to allow submitting new email
150 messages incorporating content that resides on locations external
151 to the client, described in Section 8.
152
153 o Quick mailbox resynchronization, described in Section 5.1.
154
155 o Extensions to support more precise, and broader, notifications
156 from the store in support of notifications and view filters,
157 described in 5.4.1 and 5.5.
158
159 o Delivery-time filtering in support of typical mail management use
160 cases, as described in Section 3.3.
161
162 The LEMONADE WG used the architecture shown in [LEMONADE-ARCH] to
163 develop the Lemonade Profile.
164
165
166
167
168
169
170Cridland, et al. Standards Track [Page 3]
171
172RFC 5550 Lemonade Profile August 2009
173
174
175 It is intended that the Lemonade Profile support realizations of the
176 OMA's mobile email enabler (MEM) (see [OMA-MEM-REQ] and
177 [OMA-MEM-ARCH]) using Internet Mail protocols defined by the IETF.
178
1792. Conventions Used in This Document
180
181 In examples, "M:", "I:", and "S:" indicate lines sent by the client
182 Message User Agent, IMAP email server, and SMTP submit server,
183 respectively.
184
185 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
186 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
187 document are to be interpreted as described in [KEYWORDS].
188
189 Other capitalized words are typically names of extensions or commands
190 -- these are uppercased for clarity only, and are case-insensitive.
191
192 This document uses terminology defined in [RFC5598]. See [RFC5598]
193 for further details on Email Architecture.
194
195 All examples in this document are optimized for Lemonade use and
196 might not represent examples of proper protocol usage for a general
197 use Submit/IMAP client. In particular, examples assume that Submit
198 and IMAP servers support all Lemonade extensions described in this
199 document, so they do not demonstrate fallbacks in the absence of an
200 extension.
201
2023. Summary of the Required Support
203
2043.1. Lemonade Submission Servers
205
206 Lemonade Submission Servers MUST provide a service as described in
207 [SUBMIT], and MUST support the following. Note that the Lemonade
208 Profile imposes further requirements for some cases, detailed in the
209 sections cited.
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226Cridland, et al. Standards Track [Page 4]
227
228RFC 5550 Lemonade Profile August 2009
229
230
231 +---------------------+--------------------+--------------+
232 | SMTP extension | Reference | Requirements |
233 +---------------------+--------------------+--------------+
234 | 8BITMIME | [SMTP-8BITMIME] | [SMTP-BURL] |
235 | AUTH | [SMTP-AUTH] | [SUBMIT] |
236 | BINARYMIME | [SMTP-BINARYMIME] | Section 4.1 |
237 | BURL imap | [SMTP-BURL] | Section 8 |
238 | CHUNKING | [SMTP-BINARYMIME] | Section 4.1 |
239 | DSN | [SMTP-DSN] | Section 4.3 |
240 | ENHANCEDSTATUSCODES | [SMTP-STATUSCODES] | Section 4.5 |
241 | PIPELINING | [SMTP-PIPELINING] | Section 4.2 |
242 | SIZE | [SMTP-SIZE] | Section 4.4 |
243 | STARTTLS | [SMTP-TLS] | Section 4.6 |
244 +---------------------+--------------------+--------------+
245
2463.2. Lemonade Message Stores
247
248 Lemonade Message Stores MUST provide a service as described in
249 [IMAP], and MUST support the following. Note that the Lemonade
250 Profile imposes further requirements for some cases, detailed in the
251 sections cited.
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282Cridland, et al. Standards Track [Page 5]
283
284RFC 5550 Lemonade Profile August 2009
285
286
287 +------------------------+------------------+---------------+
288 | IMAP extension | Reference | Requirements |
289 +------------------------+------------------+---------------+
290 | BINARY | [IMAP-BINARY] | Section 5.2 |
291 | CATENATE | [IMAP-CATENATE] | Section 5.7 |
292 | COMPRESS=DEFLATE | [IMAP-COMPRESS] | Section 5.3 |
293 | CONDSTORE | [IMAP-CONDSTORE] | Section 5.1 |
294 | CONTEXT=SEARCH | [IMAP-CONTEXT] | Section 5.5 |
295 | CONTEXT=SORT | [IMAP-CONTEXT] | Section 5.5 |
296 | CONVERT | [IMAP-CONVERT] | Section 5.2 |
297 | ENABLE | [IMAP-ENABLE] | Section 5.1 |
298 | ESEARCH | [IMAP-ESEARCH] | Section 5.5 |
299 | ESORT | [IMAP-CONTEXT] | Section 5.5 |
300 | I18NLEVEL=1 | [IMAP-I18N] | Section 5.8 |
301 | IDLE | [IMAP-IDLE] | Section 5.4.1 |
302 | LITERAL+ | [IMAP-LITERAL+] | Section 5.8 |
303 | NAMESPACE | [IMAP-NAMESPACE] | Section 5.6 |
304 | NOTIFY | [IMAP-NOTIFY] | Section 5.4.1 |
305 | QRESYNC | [IMAP-QRESYNC] | Section 5.1 |
306 | SASL-IR | [IMAP-SASL-IR] | Section 5.8 |
307 | SORT | [IMAP-SORT] | Section 5.5 |
308 | STARTTLS | [IMAP] | - |
309 | UIDPLUS | [IMAP-UIDPLUS] | Section 5.7 |
310 | URLAUTH | [IMAP-URLAUTH] | Section 5.7 |
311 | URL-PARTIAL | Section 5.7.1 | Section 5.7 |
312 | $Forwarded keyword | - | Section 5.9 |
313 | $SubmitPending keyword | - | Section 5.10 |
314 | $Submitted keyword | - | Section 5.10 |
315 +------------------------+------------------+---------------+
316
317 In addition to this list, any Lemonade Message Stores MUST send the
318 CAPABILITY response code (see Section 7.1 of [IMAP]) in the initial
319 server greeting and after the LOGIN/AUTHENTICATE commands.
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338Cridland, et al. Standards Track [Page 6]
339
340RFC 5550 Lemonade Profile August 2009
341
342
3433.3. Lemonade Message Delivery Agents
344
345 Lemonade Message Delivery Agents MUST support Sieve mail filtering
346 language as described in [SIEVE], and MUST support the following
347 Sieve extensions. Note that the Lemonade Profile imposes further
348 requirements for some cases, detailed in the sections cited.
349
350 +------------------------------+--------------------+--------------+
351 | Sieve extension | Reference | Requirements |
352 +------------------------------+--------------------+--------------+
353 | ENOTIFY | [SIEVE-NOTIFY] | Section 6 |
354 | IMAP4FLAGS | [SIEVE-IMAP4FLAGS] | Section 6 |
355 | RELATIONAL | [SIEVE-RELATIONAL] | Section 6 |
356 | VACATION | [SIEVE-VACATION] | Section 6 |
357 | VARIABLES | [SIEVE-VARIABLES] | Section 6 |
358 | comparator-i;unicode-casemap | [UNICODE-CASEMAP] | Section 6 |
359 +------------------------------+--------------------+--------------+
360
361 Lemonade Message Delivery Agents should also consider supporting a
362 Sieve script management protocol, such as [MANAGESIEVE].
363
3644. Lemonade Submission Servers
365
366 All Lemonade Submission Servers implement the Mail Submission
367 protocol described in [SUBMIT], which is in turn a specific profile
368 of [ESMTP]. Therefore, any MUA designed to submit email via [SUBMIT]
369 or [ESMTP] will interoperate with Lemonade Submission Servers.
370
371 In addition, Lemonade Submission Servers implement the following set
372 of SMTP and Submission extensions to increase message submission
373 efficiency.
374
3754.1. Forward without Download
376
377 In order to optimize network usage for the typical case where message
378 content is copied to, or sourced from, the IMAP store, Lemonade
379 provides support for a suite of extensions collectively known as
380 "forward without download", discussed in detail in Section 8.
381
382 Lemonade Submission Servers MUST support BURL [SMTP-BURL], 8BITMIME
383 [SMTP-8BITMIME], BINARYMIME [SMTP-BINARYMIME], and CHUNKING
384 [SMTP-BINARYMIME] SMTP extensions.
385
386 BURL MUST support URLAUTH type URLs [IMAP-URLAUTH], and thus MUST
387 advertise the "imap" option following the BURL EHLO keyword (see
388 [SMTP-BURL] for more details).
389
390
391
392
393
394Cridland, et al. Standards Track [Page 7]
395
396RFC 5550 Lemonade Profile August 2009
397
398
3994.2. Pipelining
400
401 Some clients regularly use networks with a relatively high latency,
402 such as mobile or satellite-based networks. Avoidance of round trips
403 within a transaction has a great advantage for the reduction in both
404 bandwidth and total transaction time. For this reason, Lemonade-
405 compliant mail Submission Servers MUST support the SMTP service
406 extensions for command pipelining [SMTP-PIPELINING].
407
4084.3. DSN Support
409
410 Lemonade-compliant mail Submission Servers MUST support SMTP service
411 extensions for delivery status notifications [SMTP-DSN].
412
4134.4. Message Size Declaration
414
415 There is a distinct advantage in detecting failure cases as early as
416 possible in many cases, such as where the user is charged per octet,
417 or where bandwidth is low. This is especially true of large message
418 sizes.
419
420 Lemonade Submission Servers MUST support the SMTP service extension
421 for message size declaration [SMTP-SIZE].
422
423 Lemonade Submission Servers MUST expand all BURL parts before
424 evaluating if the supplied message size is acceptable.
425
426 A Lemonade-capable client SHOULD use message size declaration. In
427 particular, the client MUST NOT send a message to a mail Submission
428 Server if it knows that the message exceeds the maximal message size
429 advertised by the Submission Server. When including a message size
430 in the MAIL FROM command, the client MUST use a value that is at
431 least as large as the size of the assembled message data after
432 resolution of all BURL parts.
433
4344.5. Enhanced Status Code Support
435
436 Lemonade-compliant mail Submission Servers MUST support the SMTP
437 service extension for returning enhanced error codes
438 [SMTP-STATUSCODES]. These allow a client to determine the precise
439 cause of failure.
440
4414.6. Encryption and Compression
442
443 Lemonade-compliant mail Submission Servers MUST support the SMTP
444 service extension for secure SMTP over Transport Layer Security (TLS)
445 [SMTP-TLS].
446
447
448
449
450Cridland, et al. Standards Track [Page 8]
451
452RFC 5550 Lemonade Profile August 2009
453
454
455 Support for the DEFLATE compression method, as described in
456 [TLS-COMP], is RECOMMENDED.
457
4585. Lemonade Message Stores
459
460 All Lemonade Message Stores implement the Internet Message Access
461 Protocol, as defined in [IMAP]. Therefore, any MUA written to access
462 messages using the facilities described in [IMAP] will interoperate
463 with a Lemonade Message Store.
464
465 In addition, Lemonade Message Stores provide a set of extensions to
466 address the limitations of some clients and networks.
467
4685.1. Quick Resynchronization
469
470 Resynchronization is a costly part of an IMAP session, and mobile
471 networks are generally more prone to unintended disconnection, which
472 in turn makes this problem more acute. Therefore, Lemonade Message
473 Stores provide a suite of extensions to reduce the synchronization
474 cost.
475
476 Lemonade-compliant IMAP servers MUST support the CONDSTORE
477 [IMAP-CONDSTORE], the QRESYNC [IMAP-QRESYNC], and the ENABLE
478 [IMAP-ENABLE] extensions. These allow a client to quickly
479 resynchronize any mailbox by asking the server to return all flag
480 changes and expunges that have occurred since a previously recorded
481 state. This can also speed up client reconnect in case the transport
482 layer is cut, whether accidentally or as part of a change in network.
483
484 When implementing QRESYNC [IMAP-QRESYNC], client and servers need to
485 also comply with errata submitted for this document (see Appendix A).
486
487 [IMAP-SYNC-HOWTO] details how clients perform efficient mailbox
488 resynchronization.
489
4905.2. Message Part Handling
491
492 The handling of message parts, especially attachments, represents a
493 set of challenges to limited devices, both in terms of the bandwidth
494 used and the capability of the device.
495
496 Lemonade-compliant IMAP servers MUST support the BINARY [IMAP-BINARY]
497 extension. This moves MIME body part decoding operations from the
498 client to the server. The decoded data is equal to or less in size
499 than the encoded representation, so this reduces bandwidth
500 effectively.
501
502
503
504
505
506Cridland, et al. Standards Track [Page 9]
507
508RFC 5550 Lemonade Profile August 2009
509
510
511 [IMAP-BINARY] allows for servers to refuse to accept uploaded
512 messages containing binary data, by not accepting the Binary content-
513 transfer-encoding; however, Lemonade-compliant IMAP servers SHALL
514 always accept binary encoded MIME messages in APPEND commands for any
515 folder.
516
517 [IMAP-CONVERT] MUST also be supported by servers, which allows
518 clients to request conversions between media types, and allows for
519 scaling images, etc. This provides the ability to view attachments
520 (and sometimes body parts) without the facility to cope with a wide
521 range of media types, or to efficiently view attachments.
522
5235.3. Compression
524
525 Lemonade Message Stores SHOULD support the Deflate compression
526 algorithm for TLS, as defined in [TLS-COMP], in order to facilitate
527 compression at as low a level as possible.
528
529 However, the working group acknowledges that for many endpoints, this
530 is a rarely deployed technology, and as such, Lemonade Message Stores
531 MUST provide [IMAP-COMPRESS] support for fallback application-level
532 stream compression, where TLS is not actively providing compression.
533
5345.4. Notifications
535
536 The addition of server-to-client notifications transforms the
537 Lemonade Profile into an event-based synchronization protocol.
538 Whenever an event occurs that interests the MUA, a notification can
539 be generated. The Lemonade WG used the notifications architecture
540 shown in [LEMONADE-NOTIFICATIONS] to develop the Lemonade Profile.
541
542 If the MUA is connected to the IMAP server, inband notifications are
543 generated using the facilities outlined in Section 5.4.1.
544
545 When the MUA is not connected, the notification filter generates an
546 outband notification. The notification filter may be considered as
547 acting on a push email repository.
548
549 If the MUA is not connected, and outband notification is disabled,
550 the client must perform a quick-sync on reconnect to determine
551 mailbox changes, using the mechanisms outlined in Section 5.1.
552
553
554
555
556
557
558
559
560
561
562Cridland, et al. Standards Track [Page 10]
563
564RFC 5550 Lemonade Profile August 2009
565
566
5675.4.1. IMAP Notifications
568
569 Lemonade Message Stores MUST support the IDLE [IMAP-IDLE] extension.
570 The extension allows clients to receive unsolicited notifications
571 about changes in the selected mailbox, without needing to poll for
572 changes. The responses forming these notifications MUST be sent in a
573 timely manner when such changes happen.
574
575 Lemonade Message Stores also provide the NOTIFY extension described
576 in [IMAP-NOTIFY], which allows clients to request specific event
577 types to be sent immediately to the client, both for the currently
578 selected folder and others. Such event types include message
579 delivery and mailbox renames.
580
5815.4.2. External Notifications
582
583 Lemonade and TCP provide for long-lived idle connections between the
584 client and mail store, allowing the server to push notifications
585 within IMAP. Some mobile networks support dormancy, which shuts down
586 the radio traffic channel during idle periods to conserve handset and
587 network resources, while maintaining IP and TCP state. (See the
588 [LEMONADE-DEPLOYMENTS] document for more information.)
589
590 However, there are environments where the email client cannot remain
591 active indefinitely, or where it is not advisable (or even always
592 possible) for TCP connections to the server to remain up while idle
593 for extended periods. In these situations, a good user experience
594 requires that when "interesting" events occur in the mail store, the
595 client be informed so that it can connect and resynchronize. At an
596 absolute minimum, this requires that at least the arrival of new mail
597 generate some sort of wake-up to the email client. A number of
598 vendors have implemented various solutions to this. As examples of
599 what has been done, for many years (long pre-dating cellular
600 handsets) the technique described in [FINGER-HACK] has been
601 supported. Today, a number of email vendors include facilities to
602 send SMS or other simple non-stream messages to clients on handsets
603 when new mail arrives. The Open Mobile Alliance (OMA) has published
604 a mechanism that uses WAP PUSH to send a basic message containing a
605 URL [OMA-EMN]. The IETF is investigating ways to standardize
606 enhanced functionality in this area.
607
608 A "push email" user experience can be achieved using any number of
609 techniques, ranging from always-on TCP connectivity to the server and
610 the NOTIFY extension described above, to OMA EMN, or even a non-
611 standard trigger message over SMS. In any technique, the client
612 learns of the existence of new mail, and decides to fetch information
613 about it, some part of it, or all of it, and then presents this to
614 the user.
615
616
617
618Cridland, et al. Standards Track [Page 11]
619
620RFC 5550 Lemonade Profile August 2009
621
622
6235.5. Searching and View Filters
624
625 Lemonade Message Stores MUST support the ESEARCH [IMAP-ESEARCH]
626 extension. The extension allows clients to efficiently find the
627 first or last messages, find a count of matching messages, and obtain
628 a list of matching messages in a considerably more compact
629 representation.
630
631 Lemonade Message Stores also provide a mechanism for clients to avoid
632 handling an entire mailbox, instead accessing a view of the mailbox.
633 This technique, common in many desktop clients as a client-side
634 capability, is useful for constrained clients to minimize the
635 quantity of messages and notification data.
636
637 Lemonade Message Stores therefore MUST implement the CONTEXT=SEARCH,
638 ESORT, and CONTEXT=SORT extensions defined in [IMAP-CONTEXT], as well
639 as the SORT extension defined in [IMAP-SORT].
640
6415.6. Mailbox Handling
642
643 Lemonade Message Stores MUST support the NAMESPACE [IMAP-NAMESPACE]
644 extension. The extension allows clients to discover shared mailboxes
645 and mailboxes belonging to other users, and provide a normalized
646 hierarchy view of the mailboxes available.
647
648 Lemonade Message Stores MUST support the I18NLEVEL=<n> [IMAP-I18N]
649 extension, with <n> having the value 1 or 2. It adds support for
650 non-English (internationalized) search and sort functions. (Note
651 that I18NLEVEL=2 implies support for I18NLEVEL=1, so a Lemonade-
652 compliant client that makes use of this extension MUST recognize
653 either one.)
654
6555.7. Forward without Download
656
657 In order to optimize network usage for the typical case where message
658 content is copied to, or sourced from, the IMAP store, Lemonade
659 provides support for a suite of extensions collectively known as
660 "forward without download", discussed in detail in Section 8.
661
662 Lemonade Message Stores MUST support CATENATE [IMAP-CATENATE],
663 UIDPLUS [IMAP-UIDPLUS], and URLAUTH [IMAP-URLAUTH]. Lemonade Message
664 Stores MUST also support URL-PARTIAL as described in Section 5.7.1.
665
6665.7.1. Support for PARTIAL in CATENATE and URLAUTH
667
668 [IMAP-URL] introduced a new syntactic element for referencing a byte
669 range of a message/body part. This is done using the ;PARTIAL=
670 field. If an IMAP server supports PARTIAL in IMAP URL used in
671
672
673
674Cridland, et al. Standards Track [Page 12]
675
676RFC 5550 Lemonade Profile August 2009
677
678
679 CATENATE and URLAUTH extensions, then it MUST advertise the URL-
680 PARTIAL capability in both the CAPABILITY response and the equivalent
681 response-code.
682
6835.8. Additional IMAP Extensions
684
685 Lemonade Message Stores MUST support the LITERAL+ [IMAP-LITERAL+]
686 extension. The extension allows clients to save a round trip each
687 time a non-synchronizing literal is sent.
688
689 Lemonade Message Stores MUST also implement the SASL-IR
690 [IMAP-SASL-IR] extension, which allows clients to save a round trip
691 during authentication, potentially pipelining the entire
692 authentication sequence.
693
694 Lemonade-compliant IMAP servers MUST support IMAP over TLS [IMAP] as
695 required by [IMAP]. As noted above in Section 5.3, servers SHOULD
696 support the deflate compression algorithm for TLS, as specified in
697 [TLS-COMP].
698
6995.9. Registration of $Forwarded IMAP Keyword
700
701 The $Forwarded IMAP keyword is used by several IMAP clients to
702 specify that the marked message was forwarded to another email
703 address, embedded within or attached to a new message. A mail client
704 sets this keyword when it successfully forwards the message to
705 another email address. Typical usage of this keyword is to show a
706 different (or additional) icon for a message that has been forwarded.
707 Once set, the flag SHOULD NOT be cleared.
708
709 Lemonade Message Stores MUST be able to store the $Forwarded keyword.
710 They MUST preserve it on the COPY operation. The servers MUST
711 support the SEARCH KEYWORD $Forwarded.
712
7135.10. Registration of $SubmitPending and $Submitted IMAP Keywords
714
715 The $SubmitPending IMAP keyword designates the message as awaiting to
716 be submitted. This keyword allows storing messages waiting to be
717 submitted in the same mailbox where messages that were already
718 submitted and/or are being edited are stored. A mail client sets
719 this keyword when it decides that the message needs to be sent out.
720 When a client (it might be a different client from the one that
721 decided that the message is pending submission) starts sending the
722 message, it atomically (using "STORE (UNCHANGEDSINCE)") adds the
723 $Submitted keyword. Once submission is successful, the
724 $SubmitPending keyword is atomically cleared. The two keywords allow
725 messages being actively submitted (messages that have both $Submitted
726 and $SubmitPending keywords set) to be distinguished from messages
727
728
729
730Cridland, et al. Standards Track [Page 13]
731
732RFC 5550 Lemonade Profile August 2009
733
734
735 awaiting to be submitted, or from messages already submitted. They
736 also allow all messages that were supposed to be submitted to be
737 found, if the client submitting them crashes or quits before
738 submitting them.
739
740 Lemonade Message Stores MUST be able to store the $SubmitPending and
741 the $Submitted keyword. Lemonade Message Stores MUST preserve them
742 on the COPY operation. The servers MUST support the SEARCH KEYWORD
743 $SubmitPending and SEARCH KEYWORD $Submitted.
744
7455.11. Related IMAP Extensions
746
747 Section 5.11 is non-normative.
748
749 Server implementations targeting to fulfill OMA MEM requirements
750 [OMA-MEM-REQ] should consider implementing the [IMAP-FILTERS], which
751 provides a way to persist definition of virtual mailboxes on the
752 server. They should also consider implementing the METADATA-SERVER
753 [METADATA] extension, which provides a way of storing user-defined
754 data associated with a user account.
755
7566. Lemonade Message Delivery Agents
757
758 Lemonade Message Delivery Agents MUST support the [SIEVE] filtering
759 language at the point of delivery, allowing the user to control which
760 messages are accepted, and where they are filed.
761
762 Lemonade Message Delivery Agents MUST support the Sieve Vacation
763 extension [SIEVE-VACATION], which allows the client to set up an
764 auto-responder, typically to report being on vacation (thus the name
765 of the Sieve extension).
766
767 Lemonade Message Delivery Agents MUST support the Sieve Enotify
768 extension [SIEVE-NOTIFY], which allows a Sieve script to generate
769 notifications (such as XMPP, SIP, or email) about received messages.
770
771 Lemonade Message Delivery Agents MUST support the Sieve Variables
772 extension [SIEVE-VARIABLES], which adds support for variables to the
773 Sieve scripting language. This extension is typically used with
774 Sieve Enotify or Vacation to customize responses/notifications.
775
776 Lemonade Message Delivery Agents MUST support the Sieve Relational
777 extension [SIEVE-RELATIONAL], which adds support for relational
778 comparisons to the Sieve scripting language. This extension is
779 typically used together with Sieve Enotify.
780
781
782
783
784
785
786Cridland, et al. Standards Track [Page 14]
787
788RFC 5550 Lemonade Profile August 2009
789
790
791 Lemonade Message Delivery Agents MUST support the Sieve Imap4Flags
792 extension [SIEVE-IMAP4FLAGS], which allows a Sieve script to set IMAP
793 flags/keywords when delivering a message to a mailbox. For example,
794 this can be used to automatically mark certain messages as
795 interesting, urgent, etc.
796
797 Lemonade Message Delivery Agents MUST support the i;unicode-casemap
798 comparator in Sieve [UNICODE-CASEMAP], which is declared as
799 "comparator-i;unicode-casemap" in the Sieve "require" statement. The
800 comparator allows for case-insensitive matching of Unicode
801 characters.
802
803 Lemonade Message Delivery Agents should consider supporting Sieve
804 script management using the [MANAGESIEVE] protocol. If they do, they
805 MUST also advertise in [MANAGESIEVE] all Sieve extensions listed in
806 this section.
807
8087. Lemonade Message User Agents
809
810 Although all existing IMAP MUAs are Lemonade compliant in as much as
811 all Lemonade services are based on the existing [IMAP] and [SUBMIT]
812 protocols, client implementors are encouraged to take full advantage
813 of the facilities provided by Lemonade Submission Servers and
814 Lemonade Message Stores, as described in 4 and 5, respectively.
815
816 When opening a connection to the Submission Server, clients MUST do
817 so using port 587 unless explicitly configured to use an alternate
818 port [RFC5068]. (Note that this requirement is somewhat stronger
819 than the one specified in [SUBMIT], as [SUBMIT] didn't prescribe the
820 exact procedure to be used by submission clients.) If the TCP
821 connection to the submission server fails to open using port 587, the
822 client MAY then immediately retry using a different port, such as 25.
823 See [SUBMIT] for information on why using port 25 is likely to fail
824 depending on the current location of the client, and may result in a
825 failure code during the SMTP transaction.
826
827 In addition, some specifications are useful to support interoperable
828 messaging with an enhanced user experience.
829
830 Lemonade-capable clients SHOULD support the Format and DelSp
831 parameters to the text/plain media type described in [FLOWED], and
832 generate this format for messages.
833
834 Lemonade-capable clients SHOULD support, and use, the $Forwarded
835 keyword described in Section 5.9.
836
837
838
839
840
841
842Cridland, et al. Standards Track [Page 15]
843
844RFC 5550 Lemonade Profile August 2009
845
846
8478. Forward without Download
848
8498.1. Motivations
850
851 The advent of client/server email using the [IMAP] and [SUBMIT]
852 protocols changed what formerly were local disk operations to become
853 repetitive network data transmissions.
854
855 Lemonade "forward without download" makes use of the [SMTP-BURL]
856 extension to enable access to external sources during the submission
857 of a message. In combination with the [IMAP-URLAUTH] extension,
858 inclusion of message parts or even entire messages from the IMAP mail
859 store is possible with a minimal trust relationship between the IMAP
860 and SMTP SUBMIT servers.
861
862 Lemonade "forward without download" has the advantage of maintaining
863 one submission protocol, and thus avoids the risk of having multiple
864 parallel and possibly divergent mechanisms for submission. The
865 client can use [SUBMIT] extensions without these being added to IMAP.
866 Furthermore, by keeping the details of message submission in the SMTP
867 SUBMIT server, Lemonade "forward without download" can work with
868 other message retrieval protocols such as POP, NNTP, or whatever else
869 may be designed in the future.
870
8718.2. Message Sending Overview
872
873 The act of sending an email message can be thought of as involving
874 multiple steps: initiation of a new draft, draft editing, message
875 assembly, and message submission.
876
877 Initiation of a new draft and draft editing takes place in the MUA.
878 Frequently, users choose to save more complex messages on an [IMAP]
879 server (via the APPEND command with the \Draft flag) for later recall
880 by the MUA and resumption of the editing process.
881
882 Message assembly is the process of producing a complete message from
883 the final revision of the draft and external sources. At assembly
884 time, external data is retrieved and inserted in the message.
885
886 Message submission is the process of inserting the assembled message
887 into the [ESMTP] infrastructure, typically using the [SUBMIT]
888 protocol.
889
890
891
892
893
894
895
896
897
898Cridland, et al. Standards Track [Page 16]
899
900RFC 5550 Lemonade Profile August 2009
901
902
9038.3. Traditional Strategy
904
905 Traditionally, messages are initiated, edited, and assembled entirely
906 within an MUA, although drafts may be saved to an [IMAP] server and
907 later retrieved from the server. The completed text is then
908 transmitted to a Message Submission Agent (MSA) for delivery.
909
910 There is often no clear boundary between the editing and assembly
911 processes. If a message is forwarded, its content is often retrieved
912 immediately and inserted into the message text. Similarly, when
913 external content is inserted or attached, the content is usually
914 retrieved immediately and made part of the draft.
915
916 As a consequence, each save of a draft and subsequent retrieval of
917 the draft transmits that entire (possibly large) content, as does
918 message submission.
919
920 In the past, this was not much of a problem, because drafts, external
921 data, and the message submission mechanism were typically located on
922 the same system as the MUA. The most common problem was running out
923 of disk quota.
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954Cridland, et al. Standards Track [Page 17]
955
956RFC 5550 Lemonade Profile August 2009
957
958
9598.4. A New Strategy
960
961 The model distinguishes between a Message User Agent (MUA), an
962 IMAPv4Rev1 Server ([IMAP]), and an SMTP submit server ([SUBMIT]), as
963 illustrated in Figure 1.
964
965 +--------------------+ +--------------+
966 | | <------------ | |
967 | MUA (M) | | IMAPv4Rev1 |
968 | | | Server |
969 | | ------------> | (Server I) |
970 +--------------------+ +--------------+
971 ^ | ^ |
972 | | | |
973 | | | |
974 | | | |
975 | | | |
976 | | | |
977 | | | v
978 | | +--------------+
979 | |----------------------> | SMTP |
980 | | Submit |
981 |-----------------------------| Server |
982 | (Server S) |
983 +--------------+
984
985 Figure 1: Lemonade "forward without download"
986
987 Lemonade "forward without download" allows a Message User Agent to
988 compose and forward an email combining fragments that are located in
989 an IMAP server, without having to download these fragments to the
990 client.
991
992 This section informatively describes two ways to perform "forward
993 without download" based on where the message assembly takes place.
994 The first uses the extended APPEND command [IMAP-CATENATE] to edit a
995 draft message in the message store and cause the message assembly on
996 the IMAP server. This is most often used when a copy of the message
997 is to be retained on the IMAP server, as discussed in Section 8.6.
998
999 The second uses a succession of BURL and BDAT commands to submit and
1000 assemble through concatenation, message data from the client and
1001 external data fetched from the provided URL. The two subsequent
1002 sections provide step-by-step instructions on how "forward without
1003 download" is achieved.
1004
1005
1006
1007
1008
1009
1010Cridland, et al. Standards Track [Page 18]
1011
1012RFC 5550 Lemonade Profile August 2009
1013
1014
10158.4.1. Message Assembly Using IMAP CATENATE Extension
1016
1017 In the [SMTP-BURL]/[IMAP-CATENATE] variant of the Lemonade "forward
1018 without download" strategy, messages are initially composed and
1019 edited within an MUA. The [IMAP-CATENATE] extension to [IMAP] is
1020 then used to create the messages on the IMAP server by transmitting
1021 new text and assembling them. The UIDPLUS [IMAP-UIDPLUS] IMAP
1022 extension is used by the client in order to learn the UID of the
1023 created messages. Finally, an [IMAP-URLAUTH] format URL is given to
1024 a [SUBMIT] server for submission using the BURL [SMTP-BURL]
1025 extension.
1026
1027 The flow involved to support such a use case consists of:
1028
1029 M: {to I -- Optional} The client connects to the IMAP server,
1030 optionally starts TLS (if data confidentiality is required),
1031 authenticates, opens a mailbox ("INBOX" in the example below), and
1032 fetches body structures (see [IMAP]).
1033
1034 Example:
1035
1036 M: A0051 UID FETCH 25627 (UID BODYSTRUCTURE)
1037 I: * 161 FETCH (UID 25627 BODYSTRUCTURE (("TEXT" "PLAIN"
1038 ("CHARSET" "US-ASCII") NIL NIL "7BIT" 1152 23)(
1039 "TEXT" "PLAIN" ("CHARSET" "US-ASCII" "NAME"
1040 "trip.txt")
1041 "<960723163407.20117h@washington.example.com>"
1042 "Your trip details" "BASE64" 4554 73) "MIXED"))
1043 I: A0051 OK completed
1044
1045 M: {to I} The client invokes CATENATE (see [IMAP-CATENATE] for
1046 details of the semantics and steps) -- this allows the MUA to create
1047 messages on the IMAP server using new data combined with one or more
1048 message parts already present on the IMAP server.
1049
1050 Note that the example for this step doesn't use the LITERAL+
1051 [IMAP-LITERAL+] extension. Without LITERAL+ the new message is
1052 constructed using three round trips. If LITERAL+ is used, the new
1053 message can be constructed using one round trip.
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066Cridland, et al. Standards Track [Page 19]
1067
1068RFC 5550 Lemonade Profile August 2009
1069
1070
1071 M: A0052 APPEND Sent FLAGS (\Draft \Seen $MDNSent)
1072 CATENATE (TEXT {475}
1073 I: + Ready for literal data
1074 M: Message-ID: <419399E1.6000505@caernarfon.example.org>
1075 M: Date: Thu, 12 Nov 2004 16:57:05 +0000
1076 M: From: Bob Ar <bar@example.org>
1077 M: MIME-Version: 1.0
1078 M: To: foo@example.net
1079 M: Subject: About our holiday trip
1080 M: Content-Type: multipart/mixed;
1081 M: boundary="------------030308070208000400050907"
1082 M:
1083 M: --------------030308070208000400050907
1084 M: Content-Type: text/plain; format=flowed
1085 M:
1086 M: Our travel agent has sent the updated schedule.
1087 M:
1088 M: Cheers,
1089 M: Bob
1090 M: --------------030308070208000400050907
1091 M: URL "/INBOX;UIDVALIDITY=385759045/;
1092 UID=25627/;Section=2.MIME" URL "/INBOX;
1093 UIDVALIDITY=385759045/;UID=25627/;Section=2" TEXT {44}
1094 I: + Ready for literal data
1095 M:
1096 M: --------------030308070208000400050907--
1097 M: )
1098 I: A0052 OK [APPENDUID 387899045 45] CATENATE Completed
1099
1100 M: {to I} The client uses the GENURLAUTH command to request a URLAUTH
1101 URL (see [IMAP-URLAUTH]).
1102 I: {to M} The IMAP server returns a URLAUTH URL suitable for later
1103 retrieval with URLFETCH (see [IMAP-URLAUTH] for details of the
1104 semantics and steps).
1105
1106 M: A0053 GENURLAUTH "imap://bob.ar@example.org/Sent;
1107 UIDVALIDITY=387899045/;uid=45;expire=2005-10-
1108 28T23:59:59Z;urlauth=submit+bob.ar" INTERNAL
1109 I: * GENURLAUTH "imap://bob.ar@example.org/Sent;
1110 UIDVALIDITY=387899045/;uid=45;expire=
1111 2005-10-28T23:59:59Z;urlauth=submit+bob.ar:
1112 internal:91354a473744909de610943775f92038"
1113 I: A0053 OK GENURLAUTH completed
1114
1115 M: {to S} The client connects to the mail Submission Server and
1116 starts a new mail transaction. It uses BURL to let the SMTP submit
1117 server fetch the content of the message from the IMAP server (see
1118 [IMAP-URLAUTH] for details of the semantics and steps -- this allows
1119
1120
1121
1122Cridland, et al. Standards Track [Page 20]
1123
1124RFC 5550 Lemonade Profile August 2009
1125
1126
1127 the MUA to authorize the SMTP submit server to access the message
1128 composed as a result of the CATENATE step). Note that the second
1129 EHLO command is required after a successful STARTTLS command. Also
1130 note that there might be a third required EHLO command if the second
1131 EHLO response doesn't list any BURL options. Section 8.4.2
1132 demonstrates this.
1133
1134 S: 220 owlry.example.org ESMTP
1135 M: EHLO potter.example.org
1136 S: 250-owlry.example.com
1137 S: 250-8BITMIME
1138 S: 250-BINARYMIME
1139 S: 250-PIPELINING
1140 S: 250-BURL imap
1141 S: 250-CHUNKING
1142 S: 250-AUTH PLAIN
1143 S: 250-DSN
1144 S: 250-SIZE 10240000
1145 S: 250-STARTTLS
1146 S: 250 ENHANCEDSTATUSCODES
1147 M: STARTTLS
1148 S: 220 Ready to start TLS
1149 ...TLS negotiation, subsequent data is encrypted...
1150 M: EHLO potter.example.org
1151 S: 250-owlry.example.com
1152 S: 250-8BITMIME
1153 S: 250-BINARYMIME
1154 S: 250-PIPELINING
1155 S: 250-BURL imap
1156 S: 250-CHUNKING
1157 S: 250-AUTH PLAIN
1158 S: 250-DSN
1159 S: 250-SIZE 10240000
1160 S: 250 ENHANCEDSTATUSCODES
1161 M: AUTH PLAIN aGFycnkAaGFycnkAYWNjaW8=
1162 M: MAIL FROM:<bob.ar@example.org>
1163 M: RCPT TO:<foo@example.net>
1164 S: 235 2.7.0 PLAIN authentication successful.
1165 S: 250 2.5.0 Address Ok.
1166 S: 250 2.1.5 foo@example.net OK.
1167 M: BURL imap://bob.ar@example.org/Sent;UIDVALIDITY=387899045/;
1168 uid=45/;urlauth=submit+bar:internal:
1169 91354a473744909de610943775f92038 LAST
1170
1171 S: {to I} The mail Submission Server uses URLFETCH to fetch the
1172 message to be sent. (See [IMAP-URLAUTH] for details of the semantics
1173 and steps. The so-called "pawn-ticket" authorization mechanism uses
1174 a URI that contains its own authorization credentials.)
1175
1176
1177
1178Cridland, et al. Standards Track [Page 21]
1179
1180RFC 5550 Lemonade Profile August 2009
1181
1182
1183 I: {to S} Provides the message composed as a result of the CATENATE
1184 step).
1185
1186 The mail Submission Server opens an IMAP connection to the IMAP
1187 server:
1188
1189 I: * OK [CAPABILITY IMAP4REV1 STARTTLS NAMESPACE LITERAL+
1190 CATENATE URLAUTH UIDPLUS CONDSTORE IDLE] imap.example.com
1191 IMAP server ready
1192 S: a000 STARTTLS
1193 I: a000 Start TLS negotiation now
1194 ...TLS negotiation, if successful - subsequent data
1195 is encrypted...
1196 S: a001 LOGIN submitserver secret
1197 I: a001 OK submitserver logged in
1198 S: a002 URLFETCH "imap://bob.ar@example.org/Sent;
1199 UIDVALIDITY=387899045/;uid=45/;urlauth=submit+bob.ar:
1200 internal:91354a473744909de610943775f92038"
1201 I: * URLFETCH "imap://bob.ar@example.org/Sent;
1202 UIDVALIDITY=387899045/;uid=45/;urlauth=submit+bob.ar:
1203 internal:91354a473744909de610943775f92038" {15065}
1204 ...message body follows...
1205 I: a002 OK URLFETCH completed
1206 S: a003 LOGOUT
1207 I: * BYE See you later
1208 I: a003 OK Logout successful
1209
1210 Note that if data confidentiality is not required, the mail
1211 Submission Server may omit the STARTTLS command before issuing the
1212 LOGIN command.
1213
1214 S: {to M} Submission server assembles the complete message; if the
1215 assembly succeeds, it returns OK to the MUA:
1216
1217 S: 250 2.5.0 Ok.
1218
1219 M: {to I} The client marks the message containing the forwarded
1220 attachment on the IMAP server.
1221
1222 M: A0054 UID STORE 25627 +FLAGS.SILENT ($Forwarded)
1223 I: * 215 FETCH (UID 25627 MODSEQ (12121231000))
1224 I: A0054 OK STORE completed
1225
1226 Note: the UID STORE command shown above will only work if the marked
1227 message is in the currently selected mailbox; otherwise, it requires
1228 a SELECT. This command can be omitted, as it simply changes non-
1229 operational metadata not essential to client operations or
1230
1231
1232
1233
1234Cridland, et al. Standards Track [Page 22]
1235
1236RFC 5550 Lemonade Profile August 2009
1237
1238
1239 interoperability. The untagged FETCH response is due to
1240 [IMAP-CONDSTORE]. The $Forwarded IMAP keyword is described in
1241 Section 5.9.
1242
12438.4.2. Message Assembly Using SMTP CHUNKING and BURL Extensions
1244
1245 In the [IMAP-URLAUTH]/[SMTP-BURL] variant of the Lemonade "forward
1246 without download" strategy, messages are initially composed and
1247 edited within an MUA. During submission [SUBMIT], BURL [SMTP-BURL]
1248 and BDAT [SMTP-BINARYMIME] commands are used to create the messages
1249 from multiple parts. New body parts are supplied using BDAT
1250 commands, while existing body parts are referenced using
1251 [IMAP-URLAUTH] format URLs in BURL commands.
1252
1253 The flow involved to support such a use case consists of:
1254 M: {to I -- Optional} The client connects to the IMAP server,
1255 optionally starts TLS (if data confidentiality is required),
1256 authenticates, opens a mailbox ("INBOX" in the example below), and
1257 fetches body structures (see [IMAP]).
1258
1259 Example:
1260
1261 M: B0051 UID FETCH 25627 (UID BODYSTRUCTURE)
1262 I: * 161 FETCH (UID 25627 BODYSTRUCTURE (("TEXT" "PLAIN"
1263 ("CHARSET" "US-ASCII") NIL NIL "7BIT" 1152 23)(
1264 "TEXT" "PLAIN" ("CHARSET" "US-ASCII" "NAME"
1265 "trip.txt")
1266 "<960723163407.20117h@washington.example.com>"
1267 "Your trip details" "BASE64" 4554 73) "MIXED"))
1268 I: B0051 OK completed
1269
1270 M: {to I} The client uses the GENURLAUTH command to request URLAUTH
1271 URLs (see [IMAP-URLAUTH]) referencing pieces of the message to be
1272 assembled.
1273 I: {to M} The IMAP server returns URLAUTH URLs suitable for later
1274 retrieval with URLFETCH (see [IMAP-URLAUTH] for details of the
1275 semantics and steps).
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290Cridland, et al. Standards Track [Page 23]
1291
1292RFC 5550 Lemonade Profile August 2009
1293
1294
1295 M: B0052 GENURLAUTH "imap://bob.ar@example.org/INBOX;
1296 UIDVALIDITY=385759045/;UID=25627/;Section=2.MIME;
1297 expire=2006-10-28T23:59:59Z;urlauth=submit+bob.ar"
1298 INTERNAL "imap://bob.ar@example.org/INBOX;
1299 UIDVALIDITY=385759045/;UID=25627/;Section=2;
1300 expire=2006-10-28T23:59:59Z;urlauth=submit+bob.ar" INTERNAL
1301 I: * GENURLAUTH "imap://bob.ar@example.org/INBOX;
1302 UIDVALIDITY=385759045/;UID=25627/;Section=2.MIME;
1303 expire=2006-10-28T23:59:59Z;urlauth=submit+bob.ar:
1304 internal:A0DEAD473744909de610943775f9BEEF"
1305 "imap://bob.ar@example.org/INBOX;
1306 UIDVALIDITY=385759045/;UID=25627/;Section=2;
1307 expire=2006-10-28T23:59:59Z;urlauth=submit+bob.ar:
1308 internal:BEEFA0DEAD473744909de610943775f9"
1309 I: B0052 OK GENURLAUTH completed
1310
1311 M: {to S} The client connects to the mail Submission Server and
1312 starts a new mail transaction. It uses BURL to instruct the SMTP
1313 submit server to fetch from the IMAP server pieces of the message to
1314 be sent (see [SMTP-BURL] for details of the semantics and steps).
1315
1316 Note that the second EHLO command is required after a successful
1317 STARTTLS command. The third EHLO command is required if and only if
1318 the second EHLO response doesn't list any BURL options. See
1319 Section 8.4.1 for an example of submission where the third EHLO
1320 command/response is not present.
1321
1322 S: 220 owlry.example.org ESMTP
1323 M: EHLO potter.example.org
1324 S: 250-owlry.example.com
1325 S: 250-8BITMIME
1326 S: 250-BINARYMIME
1327 S: 250-PIPELINING
1328 S: 250-BURL
1329 S: 250-CHUNKING
1330 S: 250-AUTH DIGEST-MD5
1331 S: 250-DSN
1332 S: 250-SIZE 10240000
1333 S: 250-STARTTLS
1334 S: 250 ENHANCEDSTATUSCODES
1335 M: STARTTLS
1336 S: 220 Ready to start TLS
1337 ...TLS negotiation, subsequent data is encrypted...
1338 M: EHLO potter.example.org
1339 S: 250-owlry.example.com
1340 S: 250-8BITMIME
1341 S: 250-BINARYMIME
1342 S: 250-PIPELINING
1343
1344
1345
1346Cridland, et al. Standards Track [Page 24]
1347
1348RFC 5550 Lemonade Profile August 2009
1349
1350
1351 S: 250-BURL
1352 S: 250-CHUNKING
1353 S: 250-AUTH DIGEST-MD5 CRAM-MD5 PLAIN EXTERNAL
1354 S: 250-DSN
1355 S: 250-SIZE 10240000
1356 S: 250 ENHANCEDSTATUSCODES
1357 M: AUTH PLAIN aGFycnkAaGFycnkAYWNjaW8=
1358 S: 235 2.7.0 PLAIN authentication successful.
1359 M: EHLO potter.example.org
1360 S: 250-owlry.example.com
1361 S: 250-8BITMIME
1362 S: 250-BINARYMIME
1363 S: 250-PIPELINING
1364 S: 250-BURL imap imap://imap.example.org
1365 S: 250-CHUNKING
1366 S: 250-AUTH DIGEST-MD5 CRAM-MD5 PLAIN EXTERNAL
1367 S: 250-DSN
1368 S: 250-SIZE 10240000
1369 S: 250 ENHANCEDSTATUSCODES
1370 M: MAIL FROM:<bob.ar@example.org> BODY=BINARY
1371 S: 250 2.5.0 Address Ok.
1372 M: RCPT TO:<foo@example.net>
1373 S: 250 2.1.5 foo@example.net OK.
1374 M: BDAT 475
1375 M: Message-ID: <419399E1.6000505@caernarfon.example.org>
1376 M: Date: Thu, 12 Nov 2004 16:57:05 +0000
1377 M: From: Bob Ar <bar@example.org>
1378 M: MIME-Version: 1.0
1379 M: To: foo@example.net
1380 M: Subject: About our holiday trip
1381 M: Content-Type: multipart/mixed;
1382 M: boundary="------------030308070208000400050907"
1383 M:
1384 M: --------------030308070208000400050907
1385 M: Content-Type: text/plain; format=flowed
1386 M:
1387 M: Our travel agent has sent the updated schedule.
1388 M:
1389 M: Cheers,
1390 M: Bob
1391 M: --------------030308070208000400050907
1392 S: 250 2.5.0 OK
1393 M: BURL imap://bob.ar@example.org/INBOX;
1394 UIDVALIDITY=385759045/;UID=25627/;Section=2.MIME;
1395 expire=2006-10-28T23:59:59Z;urlauth=submit+bob.ar:
1396 internal:A0DEAD473744909de610943775f9BEEF
1397 S: 250 2.5.0 OK
1398 M: BURL imap://bob.ar@example.org/INBOX;
1399
1400
1401
1402Cridland, et al. Standards Track [Page 25]
1403
1404RFC 5550 Lemonade Profile August 2009
1405
1406
1407 UIDVALIDITY=385759045/;UID=25627/;Section=2;
1408 expire=2006-10-28T23:59:59Z;urlauth=submit+bob.ar:
1409 internal:BEEFA0DEAD473744909de610943775f9
1410 S: 250 2.5.0 OK
1411 M: BDAT 44 LAST
1412 M:
1413 M: --------------030308070208000400050907--
1414
1415 S: {to I} The mail Submission Server uses URLFETCH to fetch the
1416 pieces of the message to be sent. (See [SMTP-BURL] for details of
1417 the semantics and steps. The so-called "pawn-ticket" authorization
1418 mechanism uses a URI which contains its own authorization
1419 credentials.).
1420 I: {to S} Returns the requested body parts.
1421
1422 The mail Submission Server opens an IMAP connection to the IMAP
1423 server:
1424
1425 I: * OK [CAPABILITY IMAP4REV1 STARTTLS NAMESPACE LITERAL+
1426 CATENATE URLAUTH UIDPLUS CONDSTORE IDLE] imap.example.com
1427 IMAP server ready
1428 S: b000 STARTTLS
1429 I: b000 Start TLS negotiation now
1430 ...TLS negotiation, if successful - subsequent data
1431 is encrypted...
1432 S: b001 LOGIN submitserver secret
1433 I: b001 OK submitserver logged in
1434 S: b002 URLFETCH "imap://bob.ar@example.org/INBOX;
1435 UIDVALIDITY=385759045/;UID=25627/;Section=2.MIME;
1436 expire=2006-10-28T23:59:59Z;urlauth=submit+bob.ar:
1437 internal:A0DEAD473744909de610943775f9BEEF" "imap://
1438 bob.ar@example.org/INBOX;
1439 UIDVALIDITY=385759045/;UID=25627/;Section=2;
1440 expire=2006-10-28T23:59:59Z;urlauth=submit+bob.ar:
1441 internal:BEEFA0DEAD473744909de610943775f9"
1442 I: * URLFETCH "imap://bob.ar@example.org/INBOX;
1443 UIDVALIDITY=385759045/;UID=25627/;Section=2.MIME;
1444 expire=2006-10-28T23:59:59Z;urlauth=submit+bob.ar:
1445 internal:A0DEAD473744909de610943775f9BEEF" {84}
1446 ...message section follows...
1447 "imap://bob.ar@example.org/INBOX;
1448 UIDVALIDITY=385759045/;UID=25627/;Section=2;
1449 expire=2006-10-28T23:59:59Z;urlauth=submit+bob.ar:
1450 internal:BEEFA0DEAD473744909de610943775f9" {15065}
1451 ...message section follows...
1452 I: b002 OK URLFETCH completed
1453 S: b003 LOGOUT
1454 I: * BYE See you later
1455
1456
1457
1458Cridland, et al. Standards Track [Page 26]
1459
1460RFC 5550 Lemonade Profile August 2009
1461
1462
1463 I: b003 OK Logout successful
1464
1465 Note that if data confidentiality is not required, the mail
1466 Submission Server may omit the STARTTLS command before issuing the
1467 LOGIN command.
1468
1469 S: {to M} Submission Server assembles the complete message; if the
1470 assembly succeeds, it acknowledges acceptance of the message by
1471 sending 250 response to the last BDAT command:
1472
1473 S: 250 2.5.0 Ok, message accepted.
1474
1475 M: {to I} The client marks the message containing the forwarded
1476 attachment on the IMAP server.
1477
1478 M: B0053 UID STORE 25627 +FLAGS.SILENT ($Forwarded)
1479 I: * 215 FETCH (UID 25627 MODSEQ (12121231000))
1480 I: B0053 OK STORE completed
1481
1482 Note: the UID STORE command shown above will only work if the marked
1483 message is in the currently selected mailbox; otherwise, it requires
1484 a SELECT. As in the previous example, this command is not critical,
1485 and can be omitted. The untagged FETCH response is due to
1486 [IMAP-CONDSTORE]. The $Forwarded IMAP keyword is described in
1487 Section 5.9.
1488
14898.5. Security Considerations for Pawn-Tickets
1490
1491 The so-called "pawn-ticket" authorization mechanism uses a URI, which
1492 contains its own authorization credentials using [IMAP-URLAUTH]. The
1493 advantage of this mechanism is that the SMTP submit [SUBMIT] server
1494 cannot access any data on the [IMAP-URLAUTH] server without a "pawn-
1495 ticket" created by the client.
1496
1497 The "pawn-ticket" grants access only to the specific data that the
1498 SMTP submit [SUBMIT] server is authorized to access, can be revoked
1499 by the client, and can have a time-limited validity.
1500
15018.6. Copies of Sent Messages: The fcc Problem
1502
1503 The "fcc problem" refers to delivering a copy of a message to a
1504 mailbox, or "file carbon copy". By far, the most common case of fcc
1505 is a client leaving a copy of outgoing mail in a "Sent Mail" or
1506 "Outbox" mailbox.
1507
1508 In the traditional strategy, the MUA duplicates the effort spent in
1509 transmitting to the MSA by writing the message to the fcc destination
1510 in a separate step. This may be a write to a local disk file or an
1511
1512
1513
1514Cridland, et al. Standards Track [Page 27]
1515
1516RFC 5550 Lemonade Profile August 2009
1517
1518
1519 APPEND to a mailbox on an IMAP server. The latter is one of the
1520 "repetitive network data transmissions" that represents the "problem"
1521 aspect of the "fcc problem".
1522
1523 The BURL [SMTP-BURL] extension can be used to eliminate the
1524 additional transmission. The final message is uploaded to the
1525 mailbox designed for outgoing mail by the APPEND command of [IMAP].
1526 Note that when doing so, the client ought to use the $SubmitPending
1527 and $Submitted IMAP keywords described in Section 5.10. Also note
1528 that APPEND, including when enhanced by [IMAP-CATENATE], can only
1529 create a single copy of the message and this is only of use on the
1530 server that stages the outgoing message for submission. Additional
1531 copies of the message on the same server can be created by using one
1532 or more COPY commands.
1533
15349. Deployment Considerations
1535
1536 Deployment considerations are discussed extensively in
1537 [LEMONADE-DEPLOYMENTS].
1538
153910. Security Considerations
1540
1541 Implementors are advised to examine the security considerations of
1542 all the referenced documents. This section merely highlights these,
1543 and advises implementors on specific issues relating to the
1544 combination of extensions.
1545
1546 Security considerations on Lemonade "forward without download" are
1547 discussed throughout Section 8. Additional security considerations
1548 can be found in [IMAP], [SUBMIT], [SIEVE], and other documents
1549 describing other SMTP, IMAP, and Sieve extension comprising the
1550 Lemonade Profile.
1551
1552 Note that the mandatory-to-implement authentication mechanism for
1553 SMTP submission is described in [SMTP-AUTH]. The mandatory-to-
1554 implement authentication mechanism for IMAP is described in [IMAP].
1555
155610.1. Confidentiality Protection of Submitted Messages
1557
1558 When clients submit new messages, link protection such as [TLS]
1559 guards against an eavesdropper seeing the contents of the submitted
1560 message. It is worth noting, however, that even if TLS is not used,
1561 the security risks are no worse if BURL is used to reference the text
1562 than if the text is submitted directly. If BURL is not used, an
1563 eavesdropper gains access to the full text of the message. If BURL
1564 is used, the eavesdropper may or may not be able to gain such access,
1565
1566
1567
1568
1569
1570Cridland, et al. Standards Track [Page 28]
1571
1572RFC 5550 Lemonade Profile August 2009
1573
1574
1575 depending on the form of BURL used. For example, some forms restrict
1576 use of the URL to an entity authorized as a Submission Server or a
1577 specific user.
1578
157910.2. TLS
1580
1581 When Lemonade clients use the BURL extension for mail submission, an
1582 extension that requires sending a URLAUTH token to the mail
1583 Submission Server, such a token should be protected from interception
1584 to avoid a replay attack that may disclose the contents of the
1585 message to an attacker. [TLS]-based encryption of both the IMAP
1586 session that issues GENURLAUTH and the mail submission path will
1587 provide protection against this attack.
1588
1589 Lemonade-compliant mail Submission Servers SHOULD use TLS-protected
1590 IMAP connections when fetching message content using the URLAUTH
1591 token provided by the Lemonade client.
1592
1593 When a client uses SMTP STARTTLS to send a BURL command that
1594 references non-public information, there is a user expectation that
1595 the entire message content will be treated confidentially. To meet
1596 this expectation, the message Submission Server SHOULD use STARTTLS
1597 or a mechanism providing equivalent data confidentiality when
1598 fetching the content referenced by that URL.
1599
160010.3. Additional Extensions and Deployment Models
1601
1602 This specification provides no additional security measures beyond
1603 those in the referenced Internet Mail and Lemonade documents.
1604
1605 We note, however, the security risks associated with:
1606
1607 o Outband notifications
1608
1609 o Server configuration by client
1610
1611 o Client configuration by server
1612
1613 o Presence of proxy servers
1614
1615 o Presence of servers as intermediaries
1616
1617 o In general, the deployment models considered by OMA MEM that are
1618 not conventional IETF deployment models
1619
1620 o Measures to address a perceived need to traverse firewalls and
1621 mobile network intermediaries
1622
1623
1624
1625
1626Cridland, et al. Standards Track [Page 29]
1627
1628RFC 5550 Lemonade Profile August 2009
1629
1630
1631 Deployments that provide these additional services or operate in
1632 these environments need to consult the security considerations for
1633 the relevant standards and organizational security practices.
1634
163511. IANA Considerations
1636
1637 IMAP4 capabilities are registered by IETF Review, as defined in
1638 [RFC5226]. This document defines the URL-PARTIAL IMAP capability
1639 (Section 5.7.1). IANA added this extension to the IANA IMAP
1640 Capability registry.
1641
164212. Changes since RFC 4550
1643
1644 When compared to RFC 4550, this document adds the following
1645 additional requirements on a Lemonade compliant IMAP server:
1646
1647 IMAP extensions: BINARY, COMPRESS=DEFLATE, CONTEXT=SEARCH,
1648 CONTEXT=SORT, CONVERT, ENABLE, ESEARCH, ESORT, I18NLEVEL=1,
1649 NOTIFY, QRESYNC, SASL-IR, SORT, URL-PARTIAL;
1650
1651 IMAP keywords: $SubmitPending, $Submitted.
1652
1653 Other requirements: Require any Lemonade compliant IMAP server to
1654 support the CAPABILITY response code.
1655
1656 When compared to RFC 4550, this document adds the following new
1657 requirements on a Lemonade compliant Message Delivery Agents:
1658
1659 Support for the Sieve filtering language, together with the following
1660 Sieve extensions:
1661
1662 ENOTIFY, IMAP4FLAGS, RELATIONAL, VACATION, VARIABLES, comparator-
1663 i;unicode-casemap.
1664
1665 When compared to RFC 4550, this document recommends use of the
1666 DEFLATE compression method for TLS. All other requirements remain
1667 the same.
1668
1669 Additionally, the following changes/improvments were done to RFC 4550
1670 (the list might be incomplete):
1671
1672 A new section with some additional requirements on Lemonade Mail
1673 User Agents was added, in particular they are required to support
1674 Format=flowed parameter to the text/plain media type.
1675
1676 Usage of the $Forwarded IMAP keyword was clarified.
1677
1678 Forward-without-download examples were corrected and extended.
1679
1680
1681
1682Cridland, et al. Standards Track [Page 30]
1683
1684RFC 5550 Lemonade Profile August 2009
1685
1686
1687 Added a new section describing in-band and out-of-band
1688 notifications from a Lemonade compliant mailstore.
1689
169013. Acknowledgements
1691
1692 The editors acknowledge and appreciate the work and comments of the
1693 IETF Lemonade working group and the OMA MEM working group.
1694
1695 In particular, the editors would like to thank Eric Burger, Glenn
1696 Parsons, Randall Gellens, Filip Navara, Zoltan Ordogh, Greg
1697 Vaudreuil, and Fan Xiaohui for their comments and reviews.
1698
169914. References
1700
170114.1. Normative References
1702
1703 [FLOWED] Gellens, R., "The Text/Plain Format and DelSp Parameters",
1704 RFC 3676, February 2004.
1705
1706 [IMAP] Crispin, M., "INTERNET MESSAGE ACCESS PROTOCOL - VERSION
1707 4rev1", RFC 3501, March 2003.
1708
1709 [IMAP-BINARY]
1710 Nerenberg, L., "IMAP4 Binary Content Extension", RFC 3516,
1711 April 2003.
1712
1713 [IMAP-CATENATE]
1714 Resnick, P., "Internet Message Access Protocol (IMAP)
1715 CATENATE Extension", RFC 4469, April 2006.
1716
1717 [IMAP-COMPRESS]
1718 Gulbrandsen, A., "The IMAP COMPRESS Extension", RFC 4978,
1719 August 2007.
1720
1721 [IMAP-CONDSTORE]
1722 Melnikov, A. and S. Hole, "IMAP Extension for Conditional
1723 STORE Operation or Quick Flag Changes Resynchronization",
1724 RFC 4551, June 2006.
1725
1726 [IMAP-CONTEXT]
1727 Cridland, D. and C. King, "Contexts for IMAP4", RFC 5267,
1728 July 2008.
1729
1730 [IMAP-CONVERT]
1731 Melnikov, A. and P. Coates, "Internet Message Access
1732 Protocol - CONVERT Extension", RFC 5259, July 2008.
1733
1734
1735
1736
1737
1738Cridland, et al. Standards Track [Page 31]
1739
1740RFC 5550 Lemonade Profile August 2009
1741
1742
1743 [IMAP-ENABLE]
1744 Gulbrandsen, A. and A. Melnikov, "The IMAP ENABLE
1745 Extension", RFC 5161, March 2008.
1746
1747 [IMAP-ESEARCH]
1748 Melnikov, A. and D. Cridland, "IMAP4 Extension to SEARCH
1749 Command for Controlling What Kind of Information Is
1750 Returned", RFC 4731, November 2006.
1751
1752 [IMAP-I18N]
1753 Newman, C., Gulbrandsen, A., and A. Melnikov, "Internet
1754 Message Access Protocol Internationalization", RFC 5255,
1755 June 2008.
1756
1757 [IMAP-IDLE]
1758 Leiba, B., "IMAP4 IDLE command", RFC 2177, June 1997.
1759
1760 [IMAP-LITERAL+]
1761 Myers, J., "IMAP4 non-synchronizing literals", RFC 2088,
1762 January 1997.
1763
1764 [IMAP-NAMESPACE]
1765 Gahrns, M. and C. Newman, "IMAP4 Namespace", RFC 2342,
1766 May 1998.
1767
1768 [IMAP-NOTIFY]
1769 Gulbrandsen, A., King, C., and A. Melnikov, "The IMAP
1770 NOTIFY Extension", RFC 5465, February 2009.
1771
1772 [IMAP-QRESYNC]
1773 Melnikov, A., Cridland, D., and C. Wilson, "IMAP4
1774 Extensions for Quick Mailbox Resynchronization", RFC 5162,
1775 March 2008.
1776
1777 [IMAP-SASL-IR]
1778 Siemborski, R. and A. Gulbrandsen, "IMAP Extension for
1779 Simple Authentication and Security Layer (SASL) Initial
1780 Client Response", RFC 4959, September 2007.
1781
1782 [IMAP-SORT]
1783 Crispin, M. and K. Murchison, "Internet Message Access
1784 Protocol - SORT and THREAD Extensions", RFC 5256,
1785 June 2008.
1786
1787 [IMAP-UIDPLUS]
1788 Crispin, M., "Internet Message Access Protocol (IMAP) -
1789 UIDPLUS extension", RFC 4315, December 2005.
1790
1791
1792
1793
1794Cridland, et al. Standards Track [Page 32]
1795
1796RFC 5550 Lemonade Profile August 2009
1797
1798
1799 [IMAP-URL]
1800 Melnikov, A. and C. Newman, "IMAP URL Scheme", RFC 5092,
1801 November 2007.
1802
1803 [IMAP-URLAUTH]
1804 Crispin, M., "Internet Message Access Protocol (IMAP) -
1805 URLAUTH Extension", RFC 4467, May 2006.
1806
1807 [KEYWORDS]
1808 Bradner, S., "Key words for use in RFCs to Indicate
1809 Requirement Levels", BCP 14, RFC 2119, March 1997.
1810
1811 [SIEVE] Guenther, P. and T. Showalter, "Sieve: An Email Filtering
1812 Language", RFC 5228, January 2008.
1813
1814 [SIEVE-IMAP4FLAGS]
1815 Melnikov, A., "Sieve Email Filtering: Imap4flags
1816 Extension", RFC 5232, January 2008.
1817
1818 [SIEVE-NOTIFY]
1819 Melnikov, A., Leiba, B., Segmuller, W., and T. Martin,
1820 "Sieve Email Filtering: Extension for Notifications",
1821 RFC 5435, January 2009.
1822
1823 [SIEVE-RELATIONAL]
1824 Segmuller, W. and B. Leiba, "Sieve Email Filtering:
1825 Relational Extension", RFC 5231, January 2008.
1826
1827 [SIEVE-VACATION]
1828 Showalter, T. and N. Freed, "Sieve Email Filtering:
1829 Vacation Extension", RFC 5230, January 2008.
1830
1831 [SIEVE-VARIABLES]
1832 Homme, K., "Sieve Email Filtering: Variables Extension",
1833 RFC 5229, January 2008.
1834
1835 [SMTP-8BITMIME]
1836 Klensin, J., Freed, N., Rose, M., Stefferud, E., and D.
1837 Crocker, "SMTP Service Extension for 8bit-MIMEtransport",
1838 RFC 1652, July 1994.
1839
1840 [SMTP-AUTH]
1841 Siemborski, R. and A. Melnikov, "SMTP Service Extension
1842 for Authentication", RFC 4954, July 2007.
1843
1844
1845
1846
1847
1848
1849
1850Cridland, et al. Standards Track [Page 33]
1851
1852RFC 5550 Lemonade Profile August 2009
1853
1854
1855 [SMTP-BINARYMIME]
1856 Vaudreuil, G., "SMTP Service Extensions for Transmission
1857 of Large and Binary MIME Messages", RFC 3030,
1858 December 2000.
1859
1860 [SMTP-BURL]
1861 Newman, C., "Message Submission BURL Extension", RFC 4468,
1862 May 2006.
1863
1864 [SMTP-DSN]
1865 Moore, K., "Simple Mail Transfer Protocol (SMTP) Service
1866 Extension for Delivery Status Notifications (DSNs)",
1867 RFC 3461, January 2003.
1868
1869 [SMTP-PIPELINING]
1870 Freed, N., "SMTP Service Extension for Command
1871 Pipelining", STD 60, RFC 2920, September 2000.
1872
1873 [SMTP-SIZE]
1874 Klensin, J., Freed, N., and K. Moore, "SMTP Service
1875 Extension for Message Size Declaration", STD 10, RFC 1870,
1876 November 1995.
1877
1878 [SMTP-STATUSCODES]
1879 Freed, N., "SMTP Service Extension for Returning Enhanced
1880 Error Codes", RFC 2034, October 1996.
1881
1882 [SMTP-TLS]
1883 Hoffman, P., "SMTP Service Extension for Secure SMTP over
1884 the Transport Layer Security", RFC 3207, February 2002.
1885
1886 [SUBMIT] Gellens, R. and J. Klensin, "Message Submission for Mail",
1887 RFC 4409, April 2006.
1888
1889 [TLS] Dierks, T. and E. Rescorla, "The Transport Layer Security
1890 (TLS) Protocol Version 1.2", RFC 5246, August 2008.
1891
1892 [TLS-COMP]
1893 Hollenbeck, S., "Transport Layer Security Protocol
1894 Compression Methods", RFC 3749, May 2004.
1895
1896 [UNICODE-CASEMAP]
1897 Crispin, M., "i;unicode-casemap - Simple Unicode Collation
1898 Algorithm", RFC 5051, October 2007.
1899
1900
1901
1902
1903
1904
1905
1906Cridland, et al. Standards Track [Page 34]
1907
1908RFC 5550 Lemonade Profile August 2009
1909
1910
191114.2. Informative References
1912
1913 [ESMTP] Klensin, J., "Simple Mail Transfer Protocol", RFC 5321,
1914 October 2008.
1915
1916 [Err1807] RFC Errata, Errata ID 1807, RFC 5162,
1917 <http://www.rfc-editor.org>.
1918
1919 [Err1808] RFC Errata, Errata ID 1808, RFC 5162,
1920 <http://www.rfc-editor.org>.
1921
1922 [Err1809] RFC Errata, Errata ID 1809, RFC 5162,
1923 <http://www.rfc-editor.org>.
1924
1925 [Err1810] RFC Errata, Errata ID 1810, RFC 5162,
1926 <http://www.rfc-editor.org>.
1927
1928 [FINGER-HACK]
1929 Gellens, R., "Simple New Mail Notification", RFC 4146,
1930 August 2005.
1931
1932 [IMAP-FILTERS]
1933 Melnikov, A. and C. King, "IMAP4 Extension for Named
1934 Searches (Filters)", RFC 5466, February 2009.
1935
1936 [IMAP-SYNC-HOWTO]
1937 Melnikov, A., "Synchronization Operations for Disconnected
1938 IMAP4 Clients", RFC 4549, June 2006.
1939
1940 [LEMONADE-ARCH]
1941 Burger, E. and G. Parsons, "LEMONADE Architecture -
1942 Supporting Open Mobile Alliance (OMA) Mobile Email (MEM)
1943 Using Internet Mail", RFC 5442, March 2009.
1944
1945 [LEMONADE-DEPLOYMENTS]
1946 Gellens, R., "Deployment Considerations for Lemonade-
1947 Compliant Mobile Email", BCP 143, RFC 5383, October 2008.
1948
1949 [LEMONADE-NOTIFICATIONS]
1950 Gellens, R., Ed., "Lemonade Notifications Architecture",
1951 RFC 5551, August 2009.
1952
1953 [MANAGESIEVE]
1954 Melnikov, A. and T. Martin, "A Protocol for Remotely
1955 Managing Sieve Scripts", Work in Progress, September 2008.
1956
1957
1958
1959
1960
1961
1962Cridland, et al. Standards Track [Page 35]
1963
1964RFC 5550 Lemonade Profile August 2009
1965
1966
1967 [METADATA]
1968 Daboo, C., "The IMAP METADATA Extension", RFC 5464,
1969 February 2009.
1970
1971 [OMA-EMN] Open Mobile Alliance, "Open Mobile Alliance Email
1972 Notification Version 1.0", OMA http://
1973 www.openmobilealliance.org/Technical/release_program/
1974 emn_v10.aspx, October 2007.
1975
1976 [OMA-MEM-ARCH]
1977 Open Mobile Alliance, "Mobile Email Architecture
1978 Document", OMA (Work in Progress),
1979 http://www.openmobilealliance.org/, October 2005.
1980
1981 [OMA-MEM-REQ]
1982 Open Mobile Alliance, "Mobile Email Requirements
1983 Document", OMA http://www.openmobilealliance.org/
1984 release_program/docs/RD/
1985 OMA-RD-MobileEmail-V1_0_20051018-C.pdf, Oct 2005.
1986
1987 [RFC5068] Hutzler, C., Crocker, D., Resnick, P., Allman, E., and T.
1988 Finch, "Email Submission Operations: Access and
1989 Accountability Requirements", BCP 134, RFC 5068,
1990 November 2007.
1991
1992 [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an
1993 IANA Considerations Section in RFCs", BCP 26, RFC 5226,
1994 May 2008.
1995
1996 [RFC5598] Crocker, D., "Internet Mail Architecture", RFC 5598,
1997 July 2009.
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018Cridland, et al. Standards Track [Page 36]
2019
2020RFC 5550 Lemonade Profile August 2009
2021
2022
2023Appendix A. Errata
2024
2025 Errata ID: 1807 [Err1807]
2026
2027 Status: Verified
2028 Type: Technical
2029
2030 Reported By: Timo Sirainen
2031 Date Reported: 2009-07-14
2032 Verifier Name: Alexey Melnikov
2033 Date Verified: 2009-07-18
2034
2035 Section 1 says:
2036
2037 It should say:
2038
2039 Once a "CONDSTORE enabling command" is issued by the client, the
2040 server MUST automatically include both UID and mod-sequence data in
2041 all subsequent untagged FETCH responses (until the connection is
2042 closed), whether they were caused by a regular STORE/UID STORE, a
2043 STORE/UID STORE with UNCHANGEDSINCE modifier, or an external agent.
2044 Note that this rule doesn't affect untagged FETCH responses caused by
2045 a FETCH command that doesn't include UID and/or MODSEQ FETCH data
2046 item, or UID FETCH without the MODSEQ FETCH data item.
2047
2048 Notes:
2049
2050 Rationale:
2051
2052 It's very difficult for clients to make use of unsolicited FETCH
2053 responses without the UID field. This is made even worse by the text
2054 that says "servers SHOULD NOT send UIDs for previously expunged
2055 messages [in VANISHED replies]". Since it's not a MUST NOT, a
2056 conversation with an RFC compliant server could be for example:
2057
2058 A1 NOOP
2059 * 0 EXISTS
2060 A1 OK
2061 A2 NOOP
2062 * 10 EXISTS
2063 * VANISHED 1000:2000
2064 * 3 FETCH (FLAGS (\Seen) MODSEQ (14749))
2065 * 5 FETCH (FLAGS (\Seen) MODSEQ (14749))
2066 * VANISHED 2000:3000
2067 A2 OK NOOP Completed
2068
2069 The client couldn't do anything with the information from FETCH
2070 replies, because it can't know what messages they refer to.
2071
2072
2073
2074Cridland, et al. Standards Track [Page 37]
2075
2076RFC 5550 Lemonade Profile August 2009
2077
2078
2079 Errata ID: 1808 [Err1808]
2080
2081 Status: Verified
2082 Type: Technical
2083
2084 Reported By: Timo Sirainen
2085 Date Reported: 2009-07-14
2086 Verifier Name: Alexey Melnikov
2087 Date Verified: 2009-07-18
2088
2089 Section 3.4 says:
2090
2091 If at least one message got expunged, the server MUST send
2092 the updated per-mailbox modification
2093 sequence using the HIGHESTMODSEQ response code (defined in
2094 [CONDSTORE]) in the tagged OK response.
2095
2096 Example: C: A202 CLOSE
2097 S: A202 OK [HIGHESTMODSEQ 20010715194045319] done
2098
2099 It should say:
2100
2101 The server MUST NOT send the updated per-mailbox modification
2102 sequence using the HIGHESTMODSEQ response code (defined in
2103 [CONDSTORE]) in the tagged OK response, as this might cause loss of
2104 synchronization on the client.
2105
2106 Example: C: A202 CLOSE
2107 S: A202 OK done
2108
2109 Notes:
2110
2111 Rationale:
2112
2113 The HIGHESTMODSEQ can't be used reliably unless server sends to client
2114 all changes done by other clients. Even then it's difficult for both
2115 clients and servers to implement this. For example:
2116
2117 C1: 2 STORE 1 +FLAGS.SILENT \Deleted
2118 S1: * 1 FETCH (MODSEQ 1)
2119 S1: 2 OK
2120
2121 C2: 1 STORE 2 +FLAGS.SILENT \Deleted
2122 S1: * 2 FETCH (MODSEQ 2)
2123 S2: 1 OK
2124
2125 C1: 3 CLOSE
2126 S1: 3 [HIGHESTMODSEQ 3]
2127
2128
2129
2130Cridland, et al. Standards Track [Page 38]
2131
2132RFC 5550 Lemonade Profile August 2009
2133
2134
2135 The client probably thought that only message 1 was expunged, so it
2136 doesn't register the second expunge. And it probably never will if it
2137 uses QRESYNC to find out only about new expunges.
2138
2139 And even worse example would be if the second client had also removed
2140 the \Deleted flag from message 1. Then the first client would have
2141 registered wrong message to be expunged.
2142
2143
2144 Errata ID: 1809 [Err1809]
2145
2146 Status: Verified
2147 Type: Technical
2148
2149 Reported By: Timo Sirainen
2150 Date Reported: 2009-07-14
2151 Verifier Name: Alexey Melnikov
2152 Date Verified: 2009-07-18
2153
2154 Section 5 says:
2155
2156 After completing a full synchronization, the client MUST also take
2157 note of any unsolicited MODSEQ FETCH data items received from the
2158 server. Whenever the client receives a tagged response to a command,
2159 it calculates the highest value among all MODSEQ FETCH data items
2160 received since the last tagged response. If this value is bigger
2161 than the client's copy of the HIGHESTMODSEQ value, then the client
2162 MUST use this value as its new HIGHESTMODSEQ value.
2163
2164 Note: It is not safe to update the client's copy of the HIGHESTMODSEQ
2165 value with a MODSEQ FETCH data item value as soon as it is received
2166 because servers are not required to send MODSEQ FETCH data items in
2167 increasing modseqence order. This can lead to the client missing
2168 some changes in case of connectivity loss.
2169
2170 It should say:
2171
2172 After completing a full synchronization, the client MUST also take
2173 note of any unsolicited MODSEQ FETCH data items and HIGHESTMODSEQ
2174 response codes received from the server. Whenever the client receives
2175 a tagged response to a command, it checks the received unsolicited
2176 responses to calculate the new HIGHESTMODSEQ value. If the
2177 HIGHESTMODSEQ response code is received, the client MUST use it even
2178 if it has seen higher mod-sequences. Otherwise, the client calculates
2179 the highest value among all MODSEQ FETCH data items received since the
2180 last tagged response. If this value is bigger than the client's copy
2181 of the HIGHESTMODSEQ value, then the client MUST use this value as its
2182 new HIGHESTMODSEQ value.
2183
2184
2185
2186Cridland, et al. Standards Track [Page 39]
2187
2188RFC 5550 Lemonade Profile August 2009
2189
2190
2191 Example: C: A1 STORE 1:2 (UNCHANGEDSINCE 96) +FLAGS.SILENT \Seen
2192 S: * 1 FETCH (UID 6 MODSEQ (103))
2193 S: * 2 FETCH (UID 7 MODSEQ (101))
2194 S: * OK [HIGHESTMODSEQ 99] VANISHED reply with
2195 MODSEQ 100 is delayed
2196 S: A1 OK [MODIFIED 3] done
2197
2198 C: A2 STORE 3 +FLAGS.SILENT \Seen
2199 S: * 3 FETCH (UID 8 MODSEQ (104))
2200 S: A2 OK [HIGHESTMODSEQ 99] Still delaying VANISHED
2201
2202 C: A3 NOOP
2203 S: * VANISHED 8
2204 S: A3 OK [HIGHESTMODSEQ 104] done
2205
2206 Note: It is not safe to update the client's copy of the HIGHESTMODSEQ
2207 value with a MODSEQ FETCH data item value as soon as it is received
2208 because servers are not required to send MODSEQ FETCH data items in
2209 increasing modseqence order. Some commands may also delay EXPUNGE
2210 (or VANISHED) replies with smaller mod-sequences. These can lead to
2211 the client missing some changes in case of connectivity loss.
2212
2213 Notes:
2214
2215 Rationale:
2216
2217 Otherwise clients could lose changes in case of connectivity loss.
2218
2219 Errata ID: 1810 [Err1810]
2220
2221 Status: Verified
2222 Type: Technical
2223
2224 Reported By: Timo Sirainen
2225 Date Reported: 2009-07-14
2226 Verifier Name: Alexey Melnikov
2227 Date Verified: 2009-07-18
2228
2229 Section 1 says:
2230
2231 It should say:
2232
2233 Server implementing QRESYNC MUST send untagged events to client in a
2234 way that client doesn't lose any changes in case of connectivity loss.
2235 In particular this means that if server sends MODSEQ FETCH data items
2236 while EXPUNGE (or VANISHED) replies with lower mod-sequences are being
2237 delayed, the server MUST send HIGHESTMODSEQ response code with a lower
2238 value than the EXPUNGE's mod-sequence. See example in section 5.
2239
2240
2241
2242Cridland, et al. Standards Track [Page 40]
2243
2244RFC 5550 Lemonade Profile August 2009
2245
2246
2247 Notes:
2248
2249 This is related to the other errata in section 5, which describes what
2250 the client's behavior should be. This describes what the server's
2251 behavior should be. Would have been nice to put them into the same
2252 section, but that probably would require larger changes.
2253
2254Authors' Addresses
2255
2256 Dave Cridland (editor)
2257 Isode Limited
2258 5 Castle Business Village
2259 36 Station Road
2260 Hampton, Middlesex TW12 2BX
2261 UK
2262
2263 EMail: dave.cridland@isode.com
2264
2265
2266 Alexey Melnikov (editor)
2267 Isode Limited
2268 5 Castle Business Village
2269 36 Station Road
2270 Hampton, Middlesex TW12 2BX
2271 UK
2272
2273 EMail: Alexey.Melnikov@isode.com
2274
2275
2276 Stephane H. Maes (editor)
2277 Oracle
2278 MS 4op634, 500 Oracle Parkway
2279 Redwood Shores, CA 94539
2280 USA
2281
2282 Phone: +1-203-300-7786
2283 EMail: stephane.maes@oracle.com
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298Cridland, et al. Standards Track [Page 41]
2299
2300