| < draft-gahrns-imap-namespace-04.txt | draft-gahrns-imap-namespace-05.txt > | |||
|---|---|---|---|---|
| Network Working Group M. Gahrns, Microsoft | Network Working Group M. Gahrns, Microsoft | |||
| C. Newman, Innosoft | C. Newman, Innosoft | |||
| Internet Draft | Internet Draft | |||
| Document: draft-gahrns-imap-namespace-04.txt October 1997 | Document: draft-gahrns-imap-namespace-05.txt November 1997 | |||
| IMAP4 Namespace | IMAP4 Namespace | |||
| Status of this Memo | Status of this Memo | |||
| This document is an Internet Draft. Internet Drafts are working | This document is an Internet Draft. Internet Drafts are working | |||
| documents of the Internet Engineering Task Force (IETF), its Areas, | documents of the Internet Engineering Task Force (IETF), its Areas, | |||
| and its Working Groups. Note that other groups may also distribute | and its Working Groups. Note that other groups may also distribute | |||
| working documents as Internet Drafts. | working documents as Internet Drafts. | |||
| skipping to change at line 30 ¶ | skipping to change at line 30 ¶ | |||
| "working draft" or "work in progress". | "working draft" or "work in progress". | |||
| To learn the current status of any Internet-Draft, please check the | To learn the current status of any Internet-Draft, please check the | |||
| 1id-abstracts.txt listing contained in the Internet-Drafts Shadow | 1id-abstracts.txt listing contained in the Internet-Drafts Shadow | |||
| Directories on ds.internic.net, nic.nordu.net, ftp.isi.edu, or | Directories on ds.internic.net, nic.nordu.net, ftp.isi.edu, or | |||
| munnari.oz.au. | munnari.oz.au. | |||
| A revised version of this draft document will be submitted to the | A revised version of this draft document will be submitted to the | |||
| RFC editor as a Proposed Standard for the Internet Community. | RFC editor as a Proposed Standard for the Internet Community. | |||
| Discussion and suggestions for improvement are requested. This | Discussion and suggestions for improvement are requested. This | |||
| document will expire before May 1997. Distribution of this draft is | document will expire before June 1997. Distribution of this draft is | |||
| unlimited. | unlimited. | |||
| 1. Abstract | 1. Abstract | |||
| IMAP4[RFC-2060] does not define a default server namespace. As a | IMAP4[RFC-2060] does not define a default server namespace. As a | |||
| result, two common namespace models have evolved: | result, two common namespace models have evolved: | |||
| The 'Personal Mailbox' model, in which the default namespace that is | The "Personal Mailbox" model, in which the default namespace that is | |||
| presented consists of only the user's personal mailboxes. To access | presented consists of only the user's personal mailboxes. To access | |||
| shared mailboxes, the user must use an escape mechanism to reach | shared mailboxes, the user must use an escape mechanism to reach | |||
| another namespace. | another namespace. | |||
| The 'Complete Hierarchy' model, in which the default namespace that | The "Complete Hierarchy" model, in which the default namespace that | |||
| is presented includes the user's personal mailboxes along with any | is presented includes the user's personal mailboxes along with any | |||
| other mailboxes they have access to. | other mailboxes they have access to. | |||
| These two models, create difficulties for certain client operations. | These two models, create difficulties for certain client operations. | |||
| This document defines a NAMESPACE command that allows a client to | This document defines a NAMESPACE command that allows a client to | |||
| discover the prefixes of namespaces used by a server for personal | discover the prefixes of namespaces used by a server for personal | |||
| mailboxes, other users' mailboxes, and shared mailboxes. This | mailboxes, other users' mailboxes, and shared mailboxes. This | |||
| allows a client to avoid much of the manual user configuration that | allows a client to avoid much of the manual user configuration that | |||
| is now necessary when mixing and matching IMAP4 clients and servers. | is now necessary when mixing and matching IMAP4 clients and servers. | |||
| Gahrns and Newman 1 | Gahrns and Newman 1 | |||
| IMAP4 Namespace October 1997 | IMAP4 Namespace November 1997 | |||
| 2. Conventions used in this document | 2. Conventions used in this document | |||
| In examples, "C:" and "S:" indicate lines sent by the client and | In examples, "C:" and "S:" indicate lines sent by the client and | |||
| server respectively. | server respectively. | |||
| Personal Namespace: A namespace that the server considers within the | Personal Namespace: A namespace that the server considers within the | |||
| personal scope of the authenticated user on a particular connection. | personal scope of the authenticated user on a particular connection. | |||
| Typically, only the authenticated user has access to mailboxes in | Typically, only the authenticated user has access to mailboxes in | |||
| their Personal Namespace. It is the part of the namespace that | their Personal Namespace. It is the part of the namespace that | |||
| skipping to change at line 109 ¶ | skipping to change at line 109 ¶ | |||
| In addition, users are often required to manually enter the prefixes | In addition, users are often required to manually enter the prefixes | |||
| of various namespaces in order to view the mailboxes located there. | of various namespaces in order to view the mailboxes located there. | |||
| For example, they might be required to enter the prefix of #shared | For example, they might be required to enter the prefix of #shared | |||
| to view the shared mailboxes namespace. The NAMESPACE command allows | to view the shared mailboxes namespace. The NAMESPACE command allows | |||
| a client to automatically discover the namespaces that are available | a client to automatically discover the namespaces that are available | |||
| on a server. This allows a client to present the available | on a server. This allows a client to present the available | |||
| namespaces to the user in what ever manner it deems appropriate. | namespaces to the user in what ever manner it deems appropriate. | |||
| Gahrns and Newman 2 | Gahrns and Newman 2 | |||
| IMAP4 Namespace October 1997 | IMAP4 Namespace November 1997 | |||
| For example, a client could choose to initially display only | For example, a client could choose to initially display only | |||
| personal mailboxes, or it may choose to display the complete list of | personal mailboxes, or it may choose to display the complete list of | |||
| mailboxes available, and initially position the user at the root of | mailboxes available, and initially position the user at the root of | |||
| their Personal Namespace. | their Personal Namespace. | |||
| A server MAY choose to make available to the NAMESPACE command only | A server MAY choose to make available to the NAMESPACE command only | |||
| a subset of the complete set of namespaces the server supports. To | a subset of the complete set of namespaces the server supports. To | |||
| provide the ability to access these namespaces, a client SHOULD | provide the ability to access these namespaces, a client SHOULD | |||
| allow the user the ability to manually enter a namespace prefix. | allow the user the ability to manually enter a namespace prefix. | |||
| skipping to change at line 137 ¶ | skipping to change at line 137 ¶ | |||
| state. | state. | |||
| 5. NAMESPACE Command | 5. NAMESPACE Command | |||
| Arguments: none | Arguments: none | |||
| Response: an untagged NAMESPACE response that contains the prefix | Response: an untagged NAMESPACE response that contains the prefix | |||
| and hierarchy delimiter to the server's Personal | and hierarchy delimiter to the server's Personal | |||
| Namespace(s), Other Users' Namespace(s), and Shared | Namespace(s), Other Users' Namespace(s), and Shared | |||
| Namespace(s) that the server wishes to expose. The | Namespace(s) that the server wishes to expose. The | |||
| response will contain a NIL for any namespace that is not | response will contain a NIL for any namespace class that | |||
| available. Namespace_Response_Extensions MAY be included | is not available. Namespace_Response_Extensions MAY be | |||
| in the response. Namespace_Response_Extensions which are | included in the response. Namespace_Response_Extensions | |||
| not on the IETF standards track, MUST be prefixed with an | which are not on the IETF standards track, MUST be | |||
| "X-". | prefixed with an "X-". | |||
| Result: OK - Command completed | Result: OK - Command completed | |||
| NO - Error: Can't complete command | NO - Error: Can't complete command | |||
| BAD - argument invalid | BAD - argument invalid | |||
| Example 5.1: | Example 5.1: | |||
| =========== | =========== | |||
| < A server that supports a single personal namespace. No leading | < A server that supports a single personal namespace. No leading | |||
| prefix is used on personal mailboxes and "/" is the hierarchy | prefix is used on personal mailboxes and "/" is the hierarchy | |||
| delimiter.> | delimiter.> | |||
| C: A001 NAMESPACE | C: A001 NAMESPACE | |||
| S: * NAMESPACE (("" "/")) NIL NIL | S: * NAMESPACE (("" "/")) NIL NIL | |||
| S: A001 OK NAMESPACE command completed | S: A001 OK NAMESPACE command completed | |||
| Gahrns and Newman 3 | Gahrns and Newman 3 | |||
| IMAP4 Namespace October 1997 | IMAP4 Namespace November 1997 | |||
| Example 5.2: | Example 5.2: | |||
| =========== | =========== | |||
| < A user logged on anonymously to a server. No personal | < A user logged on anonymously to a server. No personal | |||
| mailboxes are associated with the anonymous user and the user | mailboxes are associated with the anonymous user and the user | |||
| does not have access to the Other Users' Namespace. No prefix is | does not have access to the Other Users' Namespace. No prefix is | |||
| required to access shared mailboxes and the hierarchy delimiter | required to access shared mailboxes and the hierarchy delimiter | |||
| is "." > | is "." > | |||
| skipping to change at line 194 ¶ | skipping to change at line 194 ¶ | |||
| Example 5.4: | Example 5.4: | |||
| =========== | =========== | |||
| < A server that contains a Personal Namespace, Other Users' | < A server that contains a Personal Namespace, Other Users' | |||
| Namespace and multiple Shared Namespaces. Note that the | Namespace and multiple Shared Namespaces. Note that the | |||
| hierarchy delimiter used within each namespace can be | hierarchy delimiter used within each namespace can be | |||
| different. > | different. > | |||
| C: A001 NAMESPACE | C: A001 NAMESPACE | |||
| S: * NAMESPACE (("" "/")) (("~" "/")) (("#shared/" "/") | S: * NAMESPACE (("" "/")) (("~" "/")) (("#shared/" "/") | |||
| ("#public/" "/") ("#ftp/" "/") ("#news." ".")) | ("#public/" "/")("#ftp/" "/")("#news." ".")) | |||
| S: A001 OK NAMESPACE command completed | S: A001 OK NAMESPACE command completed | |||
| The prefix string allows a client to do things such as automatically | The prefix string allows a client to do things such as automatically | |||
| creating personal mailboxes or LISTing all available mailboxes | creating personal mailboxes or LISTing all available mailboxes | |||
| within a namespace. | within a namespace. | |||
| Example 5.5: | Example 5.5: | |||
| =========== | =========== | |||
| < A server that supports only the Personal Namespace, with a | < A server that supports only the Personal Namespace, with a | |||
| leading prefix of INBOX to personal mailboxes and a hierarchy | leading prefix of INBOX to personal mailboxes and a hierarchy | |||
| delimiter of "."> | delimiter of "."> | |||
| Gahrns and Newman 4 | Gahrns and Newman 4 | |||
| IMAP4 Namespace October 1997 | IMAP4 Namespace November 1997 | |||
| C: A001 NAMESPACE | C: A001 NAMESPACE | |||
| S: * NAMESPACE (("INBOX." ".")) NIL NIL | S: * NAMESPACE (("INBOX." ".")) NIL NIL | |||
| S: A001 OK NAMESPACE command completed | S: A001 OK NAMESPACE command completed | |||
| < Automatically create a mailbox to store sent items.> | < Automatically create a mailbox to store sent items.> | |||
| C: A002 CREATE "INBOX.Sent Mail" | C: A002 CREATE "INBOX.Sent Mail" | |||
| S: A002 OK CREATE command completed | S: A002 OK CREATE command completed | |||
| skipping to change at line 246 ¶ | skipping to change at line 246 ¶ | |||
| < The client is configured to save a copy of all mail sent by the | < The client is configured to save a copy of all mail sent by the | |||
| user into a mailbox called 'Sent Mail'. Furthermore, after a | user into a mailbox called 'Sent Mail'. Furthermore, after a | |||
| message is deleted from a mailbox, the client is configured to | message is deleted from a mailbox, the client is configured to | |||
| move that message to a mailbox called 'Deleted Items'.> | move that message to a mailbox called 'Deleted Items'.> | |||
| < Note that this example demonstrates how some extension flags | < Note that this example demonstrates how some extension flags | |||
| can be passed to further describe the #mh namespace. > | can be passed to further describe the #mh namespace. > | |||
| C: A001 NAMESPACE | C: A001 NAMESPACE | |||
| S: * NAMESPACE (("" "/") ("#mh/" "/" X-PARAM (FLAG1 FLAG2))) NIL | S: * NAMESPACE (("" "/")("#mh/" "/" "X-PARAM" ("FLAG1" "FLAG2"))) | |||
| NIL | NIL NIL | |||
| S: A001 OK NAMESPACE command completed | S: A001 OK NAMESPACE command completed | |||
| < It is desired to keep only one copy of sent mail. It is unclear | < It is desired to keep only one copy of sent mail. It is unclear | |||
| which Personal Namespace the client should use to create the | which Personal Namespace the client should use to create the | |||
| 'Sent Mail' mailbox. The user is prompted to select a namespace | 'Sent Mail' mailbox. The user is prompted to select a namespace | |||
| and only one 'Sent Mail' mailbox is created. > | and only one 'Sent Mail' mailbox is created. > | |||
| C: A002 CREATE "Sent Mail" | C: A002 CREATE "Sent Mail" | |||
| S: A002 OK CREATE command completed | S: A002 OK CREATE command completed | |||
| < The client is designed so that it keeps two 'Deleted Items' | < The client is designed so that it keeps two 'Deleted Items' | |||
| mailboxes, one for each namespace. > | mailboxes, one for each namespace. > | |||
| C: A003 CREATE "Delete Items" | C: A003 CREATE "Delete Items" | |||
| S: A003 OK CREATE command completed | ||||
| Gahrns and Newman 5 | Gahrns and Newman 5 | |||
| IMAP4 Namespace October 1997 | IMAP4 Namespace November 1997 | |||
| S: A003 OK CREATE command completed | ||||
| C: A004 CREATE "#mh/Deleted Items" | C: A004 CREATE "#mh/Deleted Items" | |||
| S: A004 OK CREATE command completed | S: A004 OK CREATE command completed | |||
| The next level of hierarchy following the Other Users' Namespace | The next level of hierarchy following the Other Users' Namespace | |||
| prefix SHOULD consist of <username>, where <username> is a user name | prefix SHOULD consist of <username>, where <username> is a user name | |||
| as per the IMAP4 LOGIN or AUTHENTICATE command. | as per the IMAP4 LOGIN or AUTHENTICATE command. | |||
| A client can construct a LIST command by appending a "%" to the | A client can construct a LIST command by appending a "%" to the | |||
| Other Users' Namespace prefix to discover the Personal Namespaces of | Other Users' Namespace prefix to discover the Personal Namespaces of | |||
| skipping to change at line 314 ¶ | skipping to change at line 315 ¶ | |||
| S: A002 OK LIST command completed | S: A002 OK LIST command completed | |||
| Example 5.8: | Example 5.8: | |||
| =========== | =========== | |||
| < A server that does not support providing a list of other user's | < A server that does not support providing a list of other user's | |||
| mailboxes that are accessible to the currently logged on user. | mailboxes that are accessible to the currently logged on user. | |||
| The mailboxes are listable if the client includes the name of the | The mailboxes are listable if the client includes the name of the | |||
| other user with the Other Users' Namespace prefix. > | other user with the Other Users' Namespace prefix. > | |||
| C: A001 NAMESPACE | ||||
| Gahrns and Newman 6 | Gahrns and Newman 6 | |||
| IMAP4 Namespace October 1997 | IMAP4 Namespace November 1997 | |||
| C: A001 NAMESPACE | ||||
| S: * NAMESPACE (("" "/")) (("#Users/" "/")) NIL | S: * NAMESPACE (("" "/")) (("#Users/" "/")) NIL | |||
| S: A001 OK NAMESPACE command completed | S: A001 OK NAMESPACE command completed | |||
| < In this example, the currently logged on user has access to the | < In this example, the currently logged on user has access to the | |||
| Personal Namespace of user Mike, but the server chose to suppress | Personal Namespace of user Mike, but the server chose to suppress | |||
| this information in the LIST response. However, by appending the | this information in the LIST response. However, by appending the | |||
| user name Mike (received through user input) to the Other Users' | user name Mike (received through user input) to the Other Users' | |||
| Namespace prefix, the client is able to get a listing of the | Namespace prefix, the client is able to get a listing of the | |||
| personal mailboxes of user Mike. > | personal mailboxes of user Mike. > | |||
| skipping to change at line 367 ¶ | skipping to change at line 367 ¶ | |||
| S: A002 OK LIST command completed | S: A002 OK LIST command completed | |||
| Historical convention has been to start all namespaces with the "#" | Historical convention has been to start all namespaces with the "#" | |||
| character. Namespaces that include the "#" character are not IMAP | character. Namespaces that include the "#" character are not IMAP | |||
| URL [IMAP-URL] friendly requiring the "#" character to be | URL [IMAP-URL] friendly requiring the "#" character to be | |||
| represented as %23 when within URLs. As such, server implementers | represented as %23 when within URLs. As such, server implementers | |||
| MAY instead consider using namespace prefixes that do not contain | MAY instead consider using namespace prefixes that do not contain | |||
| the "#" character. | the "#" character. | |||
| Gahrns and Newman 7 | Gahrns and Newman 7 | |||
| IMAP4 Namespace October 1997 | IMAP4 Namespace November 1997 | |||
| 6. Formal Syntax | 6. Formal Syntax | |||
| The following syntax specification uses the augmented Backus-Naur | The following syntax specification uses the augmented Backus-Naur | |||
| Form (BNF) as described in [ABNF]. | Form (BNF) as described in [ABNF]. | |||
| atom = <atom> | atom = <atom> | |||
| ; <atom> as defined in [RFC-2060] | ; <atom> as defined in [RFC-2060] | |||
| Namespace = nil / "(" 1*( "(" string SP (<"> QUOTED_CHAR <"> / | Namespace = nil / "(" 1*( "(" string SP (<"> QUOTED_CHAR <"> / | |||
| nil) *(Namespace_Response_Extension) ")" ) ")" | nil) *(Namespace_Response_Extension) ")" ) ")" | |||
| Namespace_Command = "NAMESPACE" | Namespace_Command = "NAMESPACE" | |||
| Namespace_Response_Extension = SP atom SP "(" string *(SP string) | Namespace_Response_Extension = SP string SP "(" string *(SP string) | |||
| ")" | ")" | |||
| Namespace_Response = "*" SP "NAMESPACE" SP Namespace SP Namespace SP | Namespace_Response = "*" SP "NAMESPACE" SP Namespace SP Namespace SP | |||
| Namespace | Namespace | |||
| ; The first Namespace is the Personal Namespace(s) | ; The first Namespace is the Personal Namespace(s) | |||
| ; The second Namespace is the Other Users' Namespace(s) | ; The second Namespace is the Other Users' Namespace(s) | |||
| ; The third Namespace is the Shared Namespace(s) | ; The third Namespace is the Shared Namespace(s) | |||
| nil = <nil> | nil = <nil> | |||
| ; <nil> as defined in [RFC-2060] | ; <nil> as defined in [RFC-2060] | |||
| QUOTED_CHAR = <QUOTED_CHAR> | QUOTED_CHAR = <QUOTED_CHAR> | |||
| ; <QUOTED_CHAR> as defined in [RFC-2060] | ; <QUOTED_CHAR> as defined in [RFC-2060] | |||
| string = <string> | string = <string> | |||
| ; <string> as defined in [RFC-2060] | ; <string> as defined in [RFC-2060] | |||
| ; Note that the namespace prefix is to a mailbox and following | ||||
| ; IMAP4 convention, any international string in the NAMESPACE | ||||
| ; response MUST be of modified UTF-7 format as described in | ||||
| ; [RFC-2060]. | ||||
| 7. Security Considerations | 7. Security Considerations | |||
| In response to a LIST command containing an argument of the Other | In response to a LIST command containing an argument of the Other | |||
| Users' Namespace prefix, a server SHOULD NOT list users that have | Users' Namespace prefix, a server SHOULD NOT list users that have | |||
| not granted access to their personal mailboxes to the currently | not granted access to their personal mailboxes to the currently | |||
| authenticated user. Providing such a list, could compromise | authenticated user. Providing such a list, could compromise | |||
| security by potentially disclosing confidential information of who | security by potentially disclosing confidential information of who | |||
| is located on the server, or providing a starting point of a list of | is located on the server, or providing a starting point of a list of | |||
| user accounts to attack. | user accounts to attack. | |||
| 8. References | 8. References | |||
| [RFC-2060], Crispin, M., "Internet Message Access Protocol – Version | [RFC-2060], Crispin, M., "Internet Message Access Protocol – Version | |||
| 4rev1", RFC 2060, University of Washington, December 1996. | 4rev1", RFC 2060, University of Washington, December 1996. | |||
| Gahrns and Newman 8 | ||||
| IMAP4 Namespace November 1997 | ||||
| [RFC-2119], Bradner, S, "Key words for use in RFCs to Indicate | [RFC-2119], Bradner, S, "Key words for use in RFCs to Indicate | |||
| Requirement Levels", RFC 2119, Harvard University, March 1997 | Requirement Levels", RFC 2119, Harvard University, March 1997 | |||
| Gahrns and Newman 8 | ||||
| IMAP4 Namespace October 1997 | ||||
| [ABNF], DRUMS working group, Dave Crocker Editor, "Augmented BNF for | [ABNF], DRUMS working group, Dave Crocker Editor, "Augmented BNF for | |||
| Syntax Specifications: ABNF", draft-drums-abnf-04.txt (work in | Syntax Specifications: ABNF", draft-drums-abnf-04.txt (work in | |||
| progress), Internet Mail Consortium, September 1997 | progress), Internet Mail Consortium, September 1997 | |||
| [IMAP-URL], Newman, C., "IMAP URL Scheme", RFC 2192, Innosoft, | [IMAP-URL], Newman, C., "IMAP URL Scheme", RFC 2192, Innosoft, | |||
| September 1997 | September 1997 | |||
| 9. Acknowledgments | 9. Acknowledgments | |||
| Many people have participated in the discussion of IMAP namespaces | Many people have participated in the discussion of IMAP namespaces | |||
| End of changes. 22 change blocks. | ||||
| 27 lines changed or deleted | 31 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||