RFC 2359
IMAP4 UIDPLUS extension
RFC 2359: IMAP4 UIDPLUS extension ๐
Written by: J. Myers (John Gardiner Myers), Netscape Communications ๐ Category: Standards Track ๐ฆ Date: June 1998 ๐ธ Obsoletes / Updates: the title block doesn't list anything it obsoletes or updates โจ
Status of this Memo ๐
okay so this doc is an Internet standards track protocol for the Internet community ๐ it's basically asking for discussion and suggestions for improvements ๐ซถ if you want the current standardization state and status of this protocol, check the latest edition of the "Internet Official Protocol Standards" (STD 1) ๐ง and yes, you can distribute this memo as much as you want ๐ฅ
Copyright Notice ยฉ๏ธ
Copyright (C) The Internet Society (1998). All Rights Reserved. ๐
IESG NOTE ๐
so the IMAP extension in here assumes a specific way of using IMAP for disconnected operation ๐ but that method isn't documented yet ๐ and there are a bunch of competing ideas about how to do disconnected operation in IMAP, with no consensus yet on which one should become the standard ๐ญ
this doc got approved as a Proposed Standard because it doesn't look like it has technical flaws in itself โจ BUT approving it as a Proposed Standard should NOT be read as the IETF endorsing any particular disconnected-operation approach for IMAP ๐ โโ๏ธ
Table of Contents ๐๏ธ
1. Abstract .............................................. 2
2. Conventions Used in this Document ..................... 2
3. Introduction and Overview ............................. 2
4. Features .............................................. 2
4.1. UID EXPUNGE Command ................................... 2
4.2. APPENDUID response code ............................... 3
4.3. COPYUID response code ................................. 4
5. Formal Syntax ......................................... 4
6. References ............................................ 4
7. Security Considerations ............................... 5
8. Author's Address ...................................... 5
9. Full Copyright Statement .............................. 6
1. Abstract ๐
so UIDPLUS is an extension of the Internet Message Access Protocol [IMAP4] ๐ง its whole thing is cutting down the time and resources some client operations eat up โจ and the features in UIDPLUS are mainly aimed at disconnected-use clients ๐ฑ
2. Conventions Used in this Document ๐
in examples, "C:" means lines the client sends and "S:" means lines the server sends ๐ฌ
the key words "MUST", "MUST NOT", "SHOULD", "SHOULD NOT", and "MAY" in this document are meant to be read the way they're defined in "Key words for use in RFCs to Indicate Requirement Levels" [KEYWORDS] ๐ so when you see them in caps, they're load-bearing, babe ๐
3. Introduction and Overview ๐ง
UIDPLUS is there in any IMAP4 server that returns "UIDPLUS" as one of its capabilities when it gets the CAPABILITY command ๐ฆ it adds one extra command, plus some extra data that comes back with successful APPEND and COPY commands ๐ธ
if a client wants to use the new stuff, it has to check for the extension first by sending a CAPABILITY command, obviously ๐ every UIDPLUS feature is an optimization, though ๐ clients can still get the same functionality using only base-protocol commands, it's just slower ๐ and for each feature, this doc recommends a fallback approach to use when the server doesn't support UIDPLUS โจ
4. Features ๐
4.1. UID EXPUNGE Command ๐๏ธ
Arguments: message set
Data: untagged responses: EXPUNGE
Result: OK - expunge completed
NO - expunge failure (e.g. permission denied)
BAD - command unknown or arguments invalid
the UID EXPUNGE command permanently removes, from the currently selected mailbox, every message that has BOTH the \Deleted flag set AND a UID inside the specified message set ๐ฅ if a message doesn't have the \Deleted flag set, or its UID isn't in the message set, it's totally untouched ๐ซถ
this command can be used so that a replayed EXPUNGE command doesn't remove any messages that got marked \Deleted between the moment the user asked for the expunge and the moment the server actually processes the command ๐ญ main character energy, no collateral damage ๐
if the server doesn't support the UIDPLUS capability, the client SHOULD fall back to using the STORE command to temporarily remove the \Deleted flag from the messages it doesn't want removed ๐ง the client could also fall back to the EXPUNGE command, but that risks accidentally removing some messages it wanted to keep ๐
Example:
C: A003 UID EXPUNGE 3000:3002
S: * 3 EXPUNGE
S: * 3 EXPUNGE
S: * 3 EXPUNGE
S: A003 OK UID EXPUNGE completed
4.2. APPENDUID response code ๐
successful APPEND commands return an APPENDUID response code in the tagged OK response ๐ the APPENDUID response code carries two arguments: the UIDVALIDITY of the destination mailbox, and the UID assigned to the appended message ๐ธ
if the server doesn't support UIDPLUS, the client can only figure this out by selecting the destination mailbox and sending FETCH commands ๐
Example:
C: A003 APPEND saved-messages (\Seen) {310}
C: Date: Mon, 7 Feb 1994 21:52:25 -0800 (PST)
C: From: Fred Foobar <foobar@Blurdybloop.COM>
C: Subject: afternoon meeting
C: To: mooch@owatagu.siam.edu
C: Message-Id: <B27397-0100000@Blurdybloop.COM>
C: MIME-Version: 1.0
C: Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
C:
C: Hello Joe, do you think we can meet at 3:30 tomorrow?
C:
S: A003 OK [APPENDUID 38505 3955] APPEND completed
4.3. COPYUID response code ๐ฆ
successful COPY and UID COPY commands return a COPYUID response code in the tagged OK response, but only when at least one message actually got copied ๐ the COPYUID response code has three things going on: the UIDVALIDITY of the mailbox that got appended to, a message set with the UIDs of the copied messages (in the order they were copied), and a message set with the UIDs that were assigned to those copied messages (in the order they were assigned) ๐ง neither message set can contain extra UIDs or the symbol '*' ๐ โโ๏ธ
if the server doesn't support UIDPLUS, the client can only find this out by selecting the destination mailbox and sending FETCH commands ๐
Example:
C: A003 COPY 2:4 MEETING
S: A003 OK [COPYUID 38505 304,319:320 3956:3958] Done
C: A003 UID COPY 305:310 MEETING
S: A003 OK Done
5. Formal Syntax ๐งฉ
this syntax spec uses the augmented Backus-Naur Form (BNF) notation from [RFC-822], as modified by [IMAP4] ๐ค anything referenced but not defined here is defined by [IMAP4] ๐
unless noted otherwise, all alphabetic characters are case-insensitive ๐ using upper or lower case in these token strings is purely for editorial clarity ๐ซถ implementations MUST accept these strings in a case-insensitive way ๐ฅ
resp_code_apnd ::= "APPENDUID" SPACE nz_number SPACE uniqueid
resp_code_copy ::= "COPYUID" SPACE nz_number SPACE set SPACE set
uid_expunge ::= "UID" SPACE "EXPUNGE" SPACE set
6. References ๐
[IMAP4] Crispin, M., "Internet Message Access Protocol -
Version 4rev1", RFC 2060, December 1996.
[KEYWORDS] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC-822] Crocker, D., "Standard for the Format of ARPA Internet
Text Messages", STD 11, RFC 822, August 1982.
7. Security Considerations ๐จ
okay, the big moment: there are no known security issues with this extension ๐ค๐ nothing flagged, nothing sus, so no known risks to watch out for right now ๐
8. Author's Address ๐ฎ
John Gardiner Myers Netscape Communications 501 East Middlefield Road Mail Stop MV-029 Mountain View, CA 94043
EMail: jgmyers@netscape.com ๐
9. Full Copyright Statement ยฉ๏ธ
Copyright (C) The Internet Society (1998). All Rights Reserved. ๐
this document and translations of it can be copied and handed out to others ๐ฆ and people can make derivative works that comment on it, explain it, or help implement it, then prepare, copy, publish, and distribute those, in whole or in part, with no restrictions of any kind ๐ as long as the copyright notice and this paragraph stay on every copy and derivative work โจ
BUT this document itself can't be modified in any way, like removing the copyright notice or the references to the Internet Society or other Internet organizations ๐ โโ๏ธ the exceptions are when it's needed for developing Internet standards (in which case the Internet Standards process copyright procedures MUST be followed) or when it's translated into languages other than English ๐ธ
the limited permissions above are perpetual and the Internet Society or its successors or assigns won't revoke them ๐
this document and the information in it are provided on an "AS IS" basis, and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE ๐ซถ๐
๐ฆ where this page comes from
- ietf: rfc2359 1998-06
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms