123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507 |
- Network Working Group M. Gahrns
- Request for Comments: 2193 Microsoft
- Category: Standards Track September 1997
- IMAP4 Mailbox Referrals
- Status of this Memo
- This document specifies an Internet standards track protocol for the
- Internet community, and requests discussion and suggestions for
- improvements. Please refer to the current edition of the "Internet
- Official Protocol Standards" (STD 1) for the standardization state
- and status of this protocol. Distribution of this memo is unlimited.
- 1. Abstract
- When dealing with large amounts of users, messages and geographically
- dispersed IMAP4 [RFC-2060] servers, it is often desirable to
- distribute messages amongst different servers within an organization.
- For example an administrator may choose to store user's personal
- mailboxes on a local IMAP4 server, while storing shared mailboxes
- remotely on another server. This type of configuration is common
- when it is uneconomical to store all data centrally due to limited
- bandwidth or disk resources.
- Mailbox referrals allow clients to seamlessly access mailboxes that
- are distributed across several IMAP4 servers.
- A referral mechanism can provide efficiencies over the alternative
- "proxy method", in which the local IMAP4 server contacts the remote
- server on behalf of the client, and then transfers the data from the
- remote server to itself, and then on to the client. The referral
- mechanism's direct client connection to the remote server is often a
- more efficient use of bandwidth, and does not require the local
- server to impersonate the client when authenticating to the remote
- server.
- 2. Conventions used in this document
- In examples, "C:" and "S:" indicate lines sent by the client and
- server respectively.
- A home server, is an IMAP4 server that contains the user's inbox.
- A remote mailbox is a mailbox that is not hosted on the user's home
- server.
- Gahrns Standards Track [Page 1]
- RFC 2193 IMAP4 Mailbox Referrals September 1997
- A remote server is a server that contains remote mailboxes.
- A shared mailbox, is a mailbox that multiple users have access to.
- An IMAP mailbox referral is when the server directs the client to
- another IMAP mailbox.
- The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
- "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
- document are to be interpreted as described in [RFC-2119].
- 3. Introduction and Overview
- IMAP4 servers that support this extension MUST list the keyword
- MAILBOX-REFERRALS in their CAPABILITY response. No client action is
- needed to invoke the MAILBOX-REFERRALS capability in a server.
- A MAILBOX-REFERRALS capable IMAP4 server MUST NOT return referrals
- that result in a referrals loop.
- A referral response consists of a tagged NO response and a REFERRAL
- response code. The REFERRAL response code MUST contain as an
- argument a one or more valid URLs separated by a space as defined in
- [RFC-1738]. If a server replies with multiple URLs for a particular
- object, they MUST all be of the same type. In this case, the URL MUST
- be an IMAP URL as defined in [RFC-2192]. A client that supports the
- REFERRALS extension MUST be prepared for a URL of any type, but it
- need only be able to process IMAP URLs.
- A server MAY respond with multiple IMAP mailbox referrals if there is
- more than one replica of the mailbox. This allows the implementation
- of a load balancing or failover scheme. How a server keeps multiple
- replicas of a mailbox in sync is not addressed by this document.
- If the server has a preferred order in which the client should
- attempt to access the URLs, the preferred URL SHOULD be listed in the
- first, with the remaining URLs presented in descending order of
- preference. If multiple referrals are given for a mailbox, a server
- should be aware that there are synchronization issues for a client if
- the UIDVALIDITY of the referred mailboxes are different.
- An IMAP mailbox referral may be given in response to an IMAP command
- that specifies a mailbox as an argument.
- Gahrns Standards Track [Page 2]
- RFC 2193 IMAP4 Mailbox Referrals September 1997
- Example:
- A001 NO [REFERRAL IMAP://user;AUTH=*@SERVER2/REMOTE]Remote Mailbox
- NOTE: user;AUTH=* is specified as required by [RFC-2192] to avoid a
- client falling back to anonymous login.
- Remote mailboxes and their inferiors, that are accessible only via
- referrals SHOULD NOT appear in LIST and LSUB responses issued against
- the user's home server. They MUST appear in RLIST and RLSUB
- responses issued against the user's home server. Hierarchy referrals,
- in which a client would be required to connect to the remote server
- to issue a LIST to discover the inferiors of a mailbox are not
- addressed in this document.
- For example, if shared mailboxes were only accessible via referrals
- on a remote server, a RLIST "" "#SHARED/%" command would return the
- same response if issued against the user's home server or the remote
- server.
- Note: Mailboxes that are available on the user's home server do not
- need to be available on the remote server. In addition, there may be
- additional mailboxes available on the remote server, but they will
- not accessible to the client via referrals unless they appear in the
- LIST response to the RLIST command against the user's home server.
- A MAILBOX-REFERRALS capable client will issue the RLIST and RLSUB
- commands in lieu of LIST and LSUB. The RLIST and RLSUB commands
- behave identically to their LIST and LSUB counterparts, except remote
- mailboxes are returned in addition to local mailboxes in the LIST and
- LSUB responses. This avoids displaying to a non MAILBOX-REFERRALS
- enabled client inaccessible remote mailboxes.
- 4.1. SELECT, EXAMINE, DELETE, SUBSCRIBE, UNSUBSCRIBE, STATUS and APPEND
- Referrals
- An IMAP4 server MAY respond to the SELECT, EXAMINE, DELETE,
- SUBSCRIBE, UNSUBSCRIBE, STATUS or APPEND command with one or more
- IMAP mailbox referrals to indicate to the client that the mailbox is
- hosted on a remote server.
- When a client processes an IMAP mailbox referral, it will open a new
- connection or use an existing connection to the remote server so that
- it is able to issue the commands necessary to process the remote
- mailbox.
- Gahrns Standards Track [Page 3]
- RFC 2193 IMAP4 Mailbox Referrals September 1997
- Example: <IMAP4 connection to home server>
- C: A001 DELETE "SHARED/FOO"
- S: A001 NO [REFERRAL IMAP://user;AUTH=*@SERVER2/SHARED/FOO]
- Remote mailbox. Try SERVER2.
- <Client established a second connection to SERVER2 and
- issues the DELETE command on the referred mailbox>
- S: * OK IMAP4rev1 server ready
- C: B001 AUTHENTICATE KERBEROS_V4
- <authentication exchange>
- S: B001 OK user is authenticated
- C: B002 DELETE "SHARED/FOO"
- S: B002 OK DELETE completed
- Example: <IMAP4 connection to home server>
- C: A001 SELECT REMOTE
- S: A001 NO [REFERRAL IMAP://user;AUTH=*@SERVER2/REMOTE
- IMAP://user;AUTH=*@SERVER3/REMOTE] Remote mailbox.
- Try SERVER2 or SERVER3.
- <Client opens second connection to remote server, and
- issues the commands needed to process the items in the
- remote mailbox>
- S: * OK IMAP4rev1 server ready
- C: B001 AUTHENTICATE KERBEROS_V4
- <authentication exchange>
- S: B001 OK user is authenticated
- C: B002 SELECT REMOTE
- S: * 12 EXISTS
- S: * 1 RECENT
- S: * OK [UNSEEN 10] Message 10 is first unseen
- S: * OK [UIDVALIDITY 123456789]
- S: * FLAGS (Answered Flagged Deleted Seen Draft)
- S: * OK [PERMANENTFLAGS (Answered Deleted Seen ]
- S: B002 OK [READ-WRITE] Selected completed
- C: B003 FETCH 10:12 RFC822
- S: * 10 FETCH . . .
- S: * 11 FETCH . . .
- S: * 12 FETCH . . .
- S: B003 OK FETCH Completed
- Gahrns Standards Track [Page 4]
- RFC 2193 IMAP4 Mailbox Referrals September 1997
- <Client is finished processing the REMOTE mailbox and
- wants to process a mailbox on its home server>
- C: B004 LOGOUT
- S: * BYE IMAP4rev1 server logging out
- S: B004 OK LOGOUT Completed
- <Client continues with first connection>
- C: A002 SELECT INBOX
- S: * 16 EXISTS
- S: * 2 RECENT
- S: * OK [UNSEEN 10] Message 10 is first unseen
- S: * OK [UIDVALIDITY 123456789]
- S: * FLAGS (Answered Flagged Deleted Seen Draft)
- S: * OK [PERMANENTFLAGS (Answered Deleted Seen ]
- S: A002 OK [READ-WRITE] Selected completed
- 4.2. CREATE Referrals
- An IMAP4 server MAY respond to the CREATE command with one or more
- IMAP mailbox referrals, if it wishes to direct the client to issue
- the CREATE against another server. The server can employ any means,
- such as examining the hierarchy of the specified mailbox name, in
- determining which server the mailbox should be created on.
- Example:
- C: A001 CREATE "SHARED/FOO"
- S: A001 NO [REFERRAL IMAP://user;AUTH=*@SERVER2/SHARED/FOO]
- Mailbox should be created on remote server
- Alternatively, because a home server is required to maintain a
- listing of referred remote mailboxes, a server MAY allow the creation
- of a mailbox that will ultimately reside on a remote server against
- the home server, and provide referrals on subsequent commands that
- manipulate the mailbox.
- Example:
- C: A001 CREATE "SHARED/FOO"
- S: A001 OK CREATE succeeded
- C: A002 SELECT "SHARED/FOO"
- S: A002 NO [REFERRAL IMAP://user;AUTH=*@SERVER2/SHARED/FOO]
- Remote mailbox. Try SERVER2
- Gahrns Standards Track [Page 5]
- RFC 2193 IMAP4 Mailbox Referrals September 1997
- 4.3. RENAME Referrals
- An IMAP4 server MAY respond to the RENAME command with one or more
- pairs of IMAP mailbox referrals. In each pair of IMAP mailbox
- referrals, the first one is an URL to the existing mailbox name and
- the second is an URL to the requested new mailbox name.
- If within an IMAP mailbox referral pair, the existing and new mailbox
- URLs are on different servers, the remote servers are unable to
- perform the RENAME operation. To achieve the same behavior of
- server RENAME, the client MAY issue the constituent CREATE, FETCH,
- APPEND, and DELETE commands against both servers.
- If within an IMAP mailbox referral pair, the existing and new mailbox
- URLs are on the same server it is an indication that the currently
- connected server is unable to perform the operation. The client can
- simply re-issue the RENAME command on the remote server.
- Example:
- C: A001 RENAME FOO BAR
- S: A001 NO [REFERRAL IMAP://user;AUTH=*@SERVER1/FOO
- IMAP://user;AUTH=*@SERVER2/BAR] Unable to rename mailbox
- across servers
- Since the existing and new mailbox names are on different servers,
- the client would be required to make a connection to both servers and
- issue the constituent commands require to achieve the RENAME.
- Example:
- C: A001 RENAME FOO BAR
- S: A001 NO [REFERRAL IMAP://user;AUTH=*@SERVER2/FOO
- IMAP://user;AUTH=*@SERVER2/BAR] Unable to rename mailbox
- located on SERVER2
- Since both the existing and new mailbox are on the same remote
- server, the client can simply make a connection to the remote server
- and re-issue the RENAME command.
- 4.4. COPY Referrals
- An IMAP4 server MAY respond to the COPY command with one or more IMAP
- mailbox referrals. This indicates that the destination mailbox is on
- a remote server. To achieve the same behavior of a server COPY, the
- client MAY issue the constituent FETCH and APPEND commands against
- both servers.
- Gahrns Standards Track [Page 6]
- RFC 2193 IMAP4 Mailbox Referrals September 1997
- Example:
- C: A001 COPY 1 "SHARED/STUFF"
- S: A001 NO [REFERRAL IMAP://user;AUTH=*@SERVER2/SHARED/STUFF]
- Unable to copy message(s) to SERVER2.
- 5.1 RLIST command
- Arguments: reference name
- mailbox name with possible wildcards
- Responses: untagged responses: LIST
- Result: OK - RLIST Completed
- NO - RLIST Failure
- BAD - command unknown or arguments invalid
- The RLIST command behaves identically to its LIST counterpart, except
- remote mailboxes are returned in addition to local mailboxes in the
- LIST responses.
- 5.2 RLSUB Command
- Arguments: reference name
- mailbox name with possible wildcards
- Responses: untagged responses: LSUB
- Result: OK - RLSUB Completed
- NO - RLSUB Failure
- BAD - command unknown or arguments invalid
- The RLSUB command behaves identically to its LSUB counterpart, except
- remote mailboxes are returned in addition to local mailboxes in the
- LSUB responses.
- 6. Formal Syntax
- The following syntax specification uses the augmented Backus-Naur
- Form (BNF) as described in [ABNF].
- list_mailbox = <list_mailbox> as defined in [RFC-2060]
- mailbox = <mailbox> as defined in [RFC-2060]
- mailbox_referral = <tag> SPACE "NO" SPACE
- <referral_response_code> (text / text_mime2)
- ; See [RFC-2060] for <tag>, text and text_mime2 definition
- Gahrns Standards Track [Page 7]
- RFC 2193 IMAP4 Mailbox Referrals September 1997
- referral_response_code = "[" "REFERRAL" 1*(SPACE <url>) "]"
- ; See [RFC-1738] for <url> definition
- rlist = "RLIST" SPACE mailbox SPACE list_mailbox
- rlsub = "RLSUB" SPACE mailbox SPACE list_mailbox
- 6. Security Considerations
- The IMAP4 referral mechanism makes use of IMAP URLs, and as such,
- have the same security considerations as general internet URLs [RFC-
- 1738], and in particular IMAP URLs [RFC-2192].
- With the MAILBOX-REFERRALS capability, it is potentially easier to
- write a rogue server that injects a bogus referral response that
- directs a user to an incorrect mailbox. Although referrals reduce
- the effort to write such a server, the referral response makes
- detection of the intrusion easier.
- 7. References
- [RFC-2060], Crispin, M., "Internet Message Access Protocol - Version
- 4rev1", RFC 2060, University of Washington, December 1996.
- [RFC-2192], Newman, C., "IMAP URL Scheme", RFC 2192, Innosoft,
- September 1997.
- [RFC-1738], Berners-Lee, T., Masinter, L., and M. McCahill, "Uniform
- Resource Locators (URL)", RFC 1738, CERN, Xerox Corporation,
- University of Minnesota, December 1994.
- [RFC-2119], Bradner, S., "Key words for use in RFCs to Indicate
- Requirement Levels", RFC 2119, Harvard University, March 1997.
- [ABNF], DRUMS working group, Dave Crocker Editor, "Augmented BNF for
- Syntax Specifications: ABNF", Work in Progress, Internet Mail
- Consortium, April 1997.
- 8. Acknowledgments
- Many valuable suggestions were received from private discussions and
- the IMAP4 mailing list. In particular, Raymond Cheng, Mark Crispin,
- Mark Keasling, Chris Newman and Larry Osterman made significant
- contributions to this document.
- Gahrns Standards Track [Page 8]
- RFC 2193 IMAP4 Mailbox Referrals September 1997
- 9. Author's Address
- Mike Gahrns
- Microsoft
- One Microsoft Way
- Redmond, WA, 98072
- Phone: (206) 936-9833
- EMail: mikega@microsoft.com
- Gahrns Standards Track [Page 9]
|