RFC 3691

Internet Message Access Protocol (IMAP) UNSELECT command

๐Ÿ“… published February 2004, from ietf

RFC 3691: Internet Message Access Protocol (IMAP) UNSELECT command ๐ŸŽ€

okay bestie, so this one is RFC 3691, and it's a Standards Track doc from February 2004 ๐Ÿ“…. A. Melnikov from Isode Ltd. wrote it ๐Ÿ’–. Its job is adding an UNSELECT command to IMAP, and it doesn't say anything about obsoleting or updating other RFCs โœจ.

Status of This Memo โœจ

this is an Internet standards track protocol for the Internet community ๐Ÿ’… it's asking everyone to talk about it and send ideas for making it better ๐Ÿซถ. if you want to know where it stands in the standardization process, check the current "Internet Official Protocol Standards" (STD 1) ๐Ÿ“š. and distribution is unlimited, so share away ๐Ÿฆ‹

Copyright (C) The Internet Society (2004). All Rights Reserved.

Abstract ๐Ÿงš

this doc defines an UNSELECT command that lets you close the current mailbox in an Internet Message Access Protocol - version 4 (IMAP4) session without expunging it ๐Ÿ™ˆ. some kinds of IMAP clients need to free up resources tied to the selected mailbox without picking a different one ๐Ÿ’œ. IMAP4 already has ways to do this (a SELECT with a nonexistent mailbox name, or reselecting the same mailbox with EXAMINE), but ngl that's messy, so a cleaner solution is what everyone wants ๐Ÿ”ฅ

Table of Contents ๐Ÿ“–

1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  2
2.  UNSELECT command . . . . . . . . . . . . . . . . . . . . . . .  2
3.  Security Considerations. . . . . . . . . . . . . . . . . . . .  3
4.  Formal Syntax. . . . . . . . . . . . . . . . . . . . . . . . .  3
5.  IANA Considerations. . . . . . . . . . . . . . . . . . . . . .  3
6.  Acknowledgments. . . . . . . . . . . . . . . . . . . . . . . .  3
7.  Normative References . . . . . . . . . . . . . . . . . . . . .  4
8.  Author's Address . . . . . . . . . . . . . . . . . . . . . . .  4
9.  Full Copyright Statement . . . . . . . . . . . . . . . . . . .  5

1. Introduction ๐Ÿ’–

okay so some IMAP clients need to let go of resources tied to the selected mailbox without switching to another one ๐Ÿซถ. IMAP4 technically handles it (SELECT with a nonexistent mailbox name, or EXAMINE on the same mailbox), but it's clunky, and a cleaner fix is lowkey overdue โœจ

[IMAP4] already has a CLOSE command. it closes the selected mailbox and permanently removes every message flagged \Deleted ๐Ÿ’€. but IMAP4 doesn't have anything that just closes the mailbox without expunging, so this doc adds UNSELECT for exactly that ๐ŸŽ€

a server that supports this extension says so with a capability name of UNSELECT ๐Ÿฆ‹

in the examples, C: means lines the client sends and S: means lines the server sends ๐Ÿ’…

the keywords "MUST", "MUST NOT", "SHOULD", "SHOULD NOT", and "MAY" in this document, when they're typed in uppercase, get read the way they're defined in "Key words for use in RFCs to Indicate Requirement Levels" [KEYWORDS] ๐Ÿ“š

2. UNSELECT Command ๐Ÿ“

Arguments: none

Responses: no specific responses for this command

Result:

OK - unselect completed, now in authenticated state
BAD - no mailbox selected, or argument supplied but
      none permitted

the UNSELECT command frees the server's resources tied to the selected mailbox and sends the server back to the authenticated state ๐ŸŒˆ it does the same stuff as CLOSE, except no messages get permanently removed from the mailbox that's currently selected ๐Ÿ™Œ

example, bestie:

C: A341 UNSELECT
S: A341 OK Unselect completed

3. Security Considerations ๐Ÿ”

It is believed that this extension doesn't raise any additional security concerns not already discussed in [IMAP4]. ๐Ÿšจ (so yeah, go read [IMAP4]'s security stuff, it's the same tea โ˜•)

4. Formal Syntax ๐Ÿงฉ

this part uses the Augmented Backus-Naur Form (ABNF) notation from [ABNF] โœจ any non-terminals that are referenced but not defined here are defined by [IMAP4] ๐Ÿ’œ

unless noted otherwise, all the alphabetic characters are case-insensitive ๐Ÿ™ˆ. using upper or lower case to define token strings is just for editorial clarity, and implementations MUST accept these strings in a case-insensitive fashion ๐Ÿ”ฅ

command-select  /= "UNSELECT"

5. IANA Considerations ๐ŸŒธ

IMAP4 capabilities get registered by publishing a standards track or IESG approved experimental RFC ๐Ÿ“ฎ the registry currently lives at:

http://www.iana.org/assignments/imap4-capabilities

this doc defines the UNSELECT IMAP capabilities, and IANA has added this capability to the registry ๐ŸŽ€

6. Acknowledgments ๐Ÿซถ

UNSELECT was originally implemented by Tim Showalter in the Cyrus IMAP server ๐Ÿ‘‘

the author also wants to thank Vladimir Butenko and Mark Crispin for reminding everyone that UNSELECT needed to be documented ๐Ÿ’– and Simon Josefsson gets a shoutout for pointing out that there are multiple ways to implement UNSELECT ๐Ÿงš

7. Normative References ๐Ÿ“š

  • [KEYWORDS] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
  • [IMAP4] Crispin, M., "Internet Message Access Protocol - Version 4rev1", RFC 3501, March 2003.
  • [ABNF] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax Specifications: ABNF", RFC 2234, November 1997.

8. Author's Address ๐Ÿ’Œ

Alexey Melnikov
Isode Limited
5 Castle Business Village
Hampton, Middlesex TW12 2BX

EMail: Alexey.Melnikov@isode.com
URI: http://www.melnikov.ca/

Copyright (C) The Internet Society (2004). This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors keep all their rights ๐Ÿ’…

this document and the info in it are provided on an "AS IS" basis, and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE ๐Ÿ’€

Intellectual Property ๐Ÿฆ‹

The IETF takes no position on the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document, or on the extent to which any license under such rights might or might not be available ๐ŸŒˆ it also doesn't claim to have made any independent effort to find those rights. info about how RFC documents handle rights is in BCP 78 and BCP 79 ๐Ÿ“–

copies of IPR disclosures made to the IETF Secretariat, any assurances of licenses to be made available, or the results of an attempt to get a general license or permission for implementers or users to use these proprietary rights can be found in the IETF's online IPR repository at http://www.ietf.org/ipr ๐Ÿ”— (that's a text link, not a clickable one, but you can type it in ๐Ÿ’…)

the IETF invites any interested party to bring to its attention any copyrights, patents, patent applications, or other proprietary rights that may cover technology required to implement this standard ๐Ÿ™Œ send that info to the IETF at ietf-ipr@ietf.org ๐Ÿ“ฌ

Acknowledgement ๐ŸŒท

Funding for the RFC Editor function is currently provided by the Internet Society ๐Ÿ’œ

๐Ÿ“ฆ where this page comes from