📄 rfc2192.txt
字号:
Network Working Group C. NewmanRequest for Comments: 2192 InnosoftCategory: Standards Track September 1997 IMAP URL SchemeStatus 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.Abstract IMAP [IMAP4] is a rich protocol for accessing remote message stores. It provides an ideal mechanism for accessing public mailing list archives as well as private and shared message stores. This document defines a URL scheme for referencing objects on an IMAP server.1. Conventions used in this document The key words "MUST", "MUST NOT", "SHOULD", "SHOULD NOT", and "MAY" in this document are to be interpreted as defined in "Key words for use in RFCs to Indicate Requirement Levels" [KEYWORDS].2. IMAP scheme The IMAP URL scheme is used to designate IMAP servers, mailboxes, messages, MIME bodies [MIME], and search programs on Internet hosts accessible using the IMAP protocol. The IMAP URL follows the common Internet scheme syntax as defined in RFC 1738 [BASIC-URL] except that clear text passwords are not permitted. If :<port> is omitted, the port defaults to 143.Newman Standards Track [Page 1]RFC 2192 IMAP URL Scheme September 1997 An IMAP URL takes one of the following forms: imap://<iserver>/ imap://<iserver>/<enc_list_mailbox>;TYPE=<list_type> imap://<iserver>/<enc_mailbox>[uidvalidity][?<enc_search>] imap://<iserver>/<enc_mailbox>[uidvalidity]<iuid>[isection] The first form is used to refer to an IMAP server, the second form refers to a list of mailboxes, the third form refers to the contents of a mailbox or a set of messages resulting from a search, and the final form refers to a specific message or message part. Note that the syntax here is informal. The authoritative formal syntax for IMAP URLs is defined in section 11.3. IMAP User Name and Authentication Mechanism A user name and/or authentication mechanism may be supplied. They are used in the "LOGIN" or "AUTHENTICATE" commands after making the connection to the IMAP server. If no user name or authentication mechanism is supplied, the user name "anonymous" is used with the "LOGIN" command and the password is supplied as the Internet e-mail address of the end user accessing the resource. If the URL doesn't supply a user name, the program interpreting the IMAP URL SHOULD request one from the user if necessary. An authentication mechanism can be expressed by adding ";AUTH=<enc_auth_type>" to the end of the user name. When such an <enc_auth_type> is indicated, the client SHOULD request appropriate credentials from that mechanism and use the "AUTHENTICATE" command instead of the "LOGIN" command. If no user name is specified, one SHOULD be obtained from the mechanism or requested from the user as appropriate. The string ";AUTH=*" indicates that the client SHOULD select an appropriate authentication mechanism. It MAY use any mechanism listed in the CAPABILITY command or use an out of band security service resulting in a PREAUTH connection. If no user name is specified and no appropriate authentication mechanisms are available, the client SHOULD fall back to anonymous login as described above. This allows a URL which grants read-write access to authorized users, and read-only anonymous access to other users. If a user name is included with no authentication mechanism, then ";AUTH=*" is assumed.Newman Standards Track [Page 2]RFC 2192 IMAP URL Scheme September 1997 Since URLs can easily come from untrusted sources, care must be taken when resolving a URL which requires or requests any sort of authentication. If authentication credentials are supplied to the wrong server, it may compromise the security of the user's account. The program resolving the URL should make sure it meets at least one of the following criteria in this case: (1) The URL comes from a trusted source, such as a referral server which the client has validated and trusts according to site policy. Note that user entry of the URL may or may not count as a trusted source, depending on the experience level of the user and site policy. (2) Explicit local site policy permits the client to connect to the server in the URL. For example, if the client knows the site domain name, site policy may dictate that any hostname ending in that domain is trusted. (3) The user confirms that connecting to that domain name with the specified credentials and/or mechanism is permitted. (4) A mechanism is used which validates the server before passing potentially compromising client credentials. (5) An authentication mechanism is used which will not reveal information to the server which could be used to compromise future connections. URLs which do not include a user name must be treated with extra care, since they are more likely to compromise the user's primary account. A URL containing ";AUTH=*" must also be treated with extra care since it might fall back on a weaker security mechanism. Finally, clients are discouraged from using a plain text password as a fallback with ";AUTH=*" unless the connection has strong encryption (e.g. a key length of greater than 56 bits). A program interpreting IMAP URLs MAY cache open connections to an IMAP server for later re-use. If a URL contains a user name, only connections authenticated as that user may be re-used. If a URL does not contain a user name or authentication mechanism, then only an anonymous connection may be re-used. If a URL contains an authentication mechanism without a user name, then any non- anonymous connection may be re-used. Note that if unsafe or reserved characters such as " " or ";" are present in the user name or authentication mechanism, they MUST be encoded as described in RFC 1738 [BASIC-URL].Newman Standards Track [Page 3]RFC 2192 IMAP URL Scheme September 19974. IMAP server An IMAP URL referring to an IMAP server has the following form: imap://<iserver>/ A program interpreting this URL would issue the standard set of commands it uses to present a view of the contents of an IMAP server. This is likely to be semanticly equivalent to one of the following URLs: imap://<iserver>/;TYPE=LIST imap://<iserver>/;TYPE=LSUB The program interpreting this URL SHOULD use the LSUB form if it supports mailbox subscriptions.5. Lists of mailboxes An IMAP URL referring to a list of mailboxes has the following form: imap://<iserver>/<enc_list_mailbox>;TYPE=<list_type> The <list_type> may be either "LIST" or "LSUB", and is case insensitive. The field ";TYPE=<list_type>" MUST be included. The <enc_list_mailbox> is any argument suitable for the list_mailbox field of the IMAP [IMAP4] LIST or LSUB commands. The field <enc_list_mailbox> may be omitted, in which case the program interpreting the IMAP URL may use "*" or "%" as the <enc_list_mailbox>. The program SHOULD use "%" if it supports a hierarchical view, otherwise it SHOULD use "*". Note that if unsafe or reserved characters such as " " or "%" are present in <enc_list_mailbox> they MUST be encoded as described in RFC 1738 [BASIC-URL]. If the character "/" is present in enc_list_mailbox, it SHOULD NOT be encoded.6. Lists of messages An IMAP URL referring to a list of messages has the following form: imap://<iserver>/<enc_mailbox>[uidvalidity][?<enc_search>]Newman Standards Track [Page 4]RFC 2192 IMAP URL Scheme September 1997 The <enc_mailbox> field is used as the argument to the IMAP4 "SELECT" command. Note that if unsafe or reserved characters such as " ", ";", or "?" are present in <enc_mailbox> they MUST be encoded as described in RFC 1738 [BASIC-URL]. If the character "/" is present in enc_mailbox, it SHOULD NOT be encoded. The [uidvalidity] field is optional. If it is present, it MUST be the argument to the IMAP4 UIDVALIDITY status response at the time the URL was created. This SHOULD be used by the program interpreting the IMAP URL to determine if the URL is stale. The [?<enc_search>] field is optional. If it is not present, the contents of the mailbox SHOULD be presented by the program interpreting the URL. If it is present, it SHOULD be used as the arguments following an IMAP4 SEARCH command with unsafe characters such as " " (which are likely to be present in the <enc_search>) encoded as described in RFC 1738 [BASIC-URL].7. A specific message or message part An IMAP URL referring to a specific message or message part has the following form: imap://<iserver>/<enc_mailbox>[uidvalidity]<iuid>[isection] The <enc_mailbox> and [uidvalidity] are as defined above. If [uidvalidity] is present in this form, it SHOULD be used by the program interpreting the URL to determine if the URL is stale. The <iuid> refers to an IMAP4 message UID, and SHOULD be used as the <set> argument to the IMAP4 "UID FETCH" command. The [isection] field is optional. If not present, the URL refers to the entire Internet message as returned by the IMAP command "UID FETCH <uid> BODY.PEEK[]". If present, the URL refers to the object returned by a "UID FETCH <uid> BODY.PEEK[<section>]" command. The type of the object may be determined with a "UID FETCH <uid> BODYSTRUCTURE" command and locating the appropriate part in the resulting BODYSTRUCTURE. Note that unsafe characters in [isection] MUST be encoded as described in [BASIC-URL].Newman Standards Track [Page 5]RFC 2192 IMAP URL Scheme September 19978. Relative IMAP URLs Relative IMAP URLs are permitted and are resolved according to the rules defined in RFC 1808 [REL-URL] with one exception. In IMAP URLs, parameters are treated as part of the normal path with respect to relative URL resolution. This is believed to be the behavior of the installed base and is likely to be documented in a future revision of the relative URL specification. The following observations are also important: The <iauth> grammar element is considered part of the user name for purposes of resolving relative IMAP URLs. This means that unless a new login/server specification is included in the relative URL, the
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -