rfc2971.IMAP4_ID_extension.txt 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451
  1. Network Working Group T. Showalter
  2. Request for Comments: 2971 Mirapoint, Inc.
  3. Category: Standards Track October 2000
  4. IMAP4 ID extension
  5. Status of this Memo
  6. This document specifies an Internet standards track protocol for the
  7. Internet community, and requests discussion and suggestions for
  8. improvements. Please refer to the current edition of the "Internet
  9. Official Protocol Standards" (STD 1) for the standardization state
  10. and status of this protocol. Distribution of this memo is unlimited.
  11. Copyright Notice
  12. Copyright (C) The Internet Society (2000). All Rights Reserved.
  13. Abstract
  14. The ID extension to the Internet Message Access Protocol - Version
  15. 4rev1 (IMAP4rev1) protocol allows the server and client to exchange
  16. identification information on their implementation in order to make
  17. bug reports and usage statistics more complete.
  18. 1. Introduction
  19. The IMAP4rev1 protocol described in [IMAP4rev1] provides a method for
  20. accessing remote mail stores, but it provides no facility to
  21. advertise what program a client or server uses to provide service.
  22. This makes it difficult for implementors to get complete bug reports
  23. from users, as it is frequently difficult to know what client or
  24. server is in use.
  25. Additionally, some sites may wish to assemble usage statistics based
  26. on what clients are used, but in an an environment where users are
  27. permitted to obtain and maintain their own clients this is difficult
  28. to accomplish.
  29. The ID command provides a facility to advertise information on what
  30. programs are being used along with contact information (should bugs
  31. ever occur).
  32. Showalter Standards Track [Page 1]
  33. RFC 2971 IMAP4 ID extension October 2000
  34. 2. Conventions Used in this Document
  35. The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
  36. "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
  37. document are to be interpreted as described in [KEYWORDS].
  38. The conventions used in this document are the same as specified in
  39. [IMAP4rev1]. In examples, "C:" and "S:" indicate lines sent by the
  40. client and server respectively. Line breaks have been inserted for
  41. readability.
  42. 3. Specification
  43. The sole purpose of the ID extension is to enable clients and servers
  44. to exchange information on their implementations for the purposes of
  45. statistical analysis and problem determination.
  46. This information is be submitted to a server by any client wishing to
  47. provide information for statistical purposes, provided the server
  48. advertises its willingness to take the information with the atom "ID"
  49. included in the list of capabilities returned by the CAPABILITY
  50. command.
  51. Implementations MUST NOT make operational changes based on the data
  52. sent as part of the ID command or response. The ID command is for
  53. human consumption only, and is not to be used in improving the
  54. performance of clients or servers.
  55. This includes, but is not limited to, the following:
  56. Servers MUST NOT attempt to work around client bugs by using
  57. information from the ID command. Clients MUST NOT attempt to work
  58. around server bugs based on the ID response.
  59. Servers MUST NOT provide features to a client or otherwise
  60. optimize for a particular client by using information from the ID
  61. command. Clients MUST NOT provide features to a server or
  62. otherwise optimize for a particular server based on the ID
  63. response.
  64. Servers MUST NOT deny access to or refuse service for a client
  65. based on information from the ID command. Clients MUST NOT refuse
  66. to operate or limit their operation with a server based on the ID
  67. response.
  68. Showalter Standards Track [Page 2]
  69. RFC 2971 IMAP4 ID extension October 2000
  70. Rationale: It is imperative that this extension not supplant IMAP's
  71. CAPABILITY mechanism with a ad-hoc approach where implementations
  72. guess each other's features based on who they claim to be.
  73. Implementations MUST NOT send false information in an ID command.
  74. Implementations MAY send less information than they have available or
  75. no information at all. Such behavior may be useful to preserve user
  76. privacy. See Security Considerations, section 7.
  77. 3.1. ID Command
  78. Arguments: client parameter list or NIL
  79. Responses: OPTIONAL untagged response: ID
  80. Result: OK identification information accepted
  81. BAD command unknown or arguments invalid
  82. Implementation identification information is sent by the client with
  83. the ID command.
  84. This command is valid in any state.
  85. The information sent is in the form of a list of field/value pairs.
  86. Fields are permitted to be any IMAP4 string, and values are permitted
  87. to be any IMAP4 string or NIL. A value of NIL indicates that the
  88. client can not or will not specify this information. The client may
  89. also send NIL instead of the list, indicating that it wants to send
  90. no information, but would still accept a server response.
  91. The available fields are defined in section 3.3.
  92. Example: C: a023 ID ("name" "sodr" "version" "19.34" "vendor"
  93. "Pink Floyd Music Limited")
  94. S: * ID NIL
  95. S: a023 OK ID completed
  96. 3.2. ID Response
  97. Contents: server parameter list
  98. In response to an ID command issued by the client, the server replies
  99. with a tagged response containing information on its implementation.
  100. The format is the same as the client list.
  101. Showalter Standards Track [Page 3]
  102. RFC 2971 IMAP4 ID extension October 2000
  103. Example: C: a042 ID NIL
  104. S: * ID ("name" "Cyrus" "version" "1.5" "os" "sunos"
  105. "os-version" "5.5" "support-url"
  106. "mailto:cyrus-bugs+@andrew.cmu.edu")
  107. S: a042 OK ID command completed
  108. A server MUST send a tagged ID response to an ID command. However, a
  109. server MAY send NIL in place of the list.
  110. 3.3. Defined Field Values
  111. Any string may be sent as a field, but the following are defined to
  112. describe certain values that might be sent. Implementations are free
  113. to send none, any, or all of these. Strings are not case-sensitive.
  114. Field strings MUST NOT be longer than 30 octets. Value strings MUST
  115. NOT be longer than 1024 octets. Implementations MUST NOT send more
  116. than 30 field-value pairs.
  117. name Name of the program
  118. version Version number of the program
  119. os Name of the operating system
  120. os-version Version of the operating system
  121. vendor Vendor of the client/server
  122. support-url URL to contact for support
  123. address Postal address of contact/vendor
  124. date Date program was released, specified as a date-time
  125. in IMAP4rev1
  126. command Command used to start the program
  127. arguments Arguments supplied on the command line, if any
  128. if any
  129. environment Description of environment, i.e., UNIX environment
  130. variables or Windows registry settings
  131. Implementations MUST NOT use contact information to submit automatic
  132. bug reports. Implementations may include information from an ID
  133. response in a report automatically prepared, but are prohibited from
  134. sending the report without user authorization.
  135. It is preferable to find the name and version of the underlying
  136. operating system at runtime in cases where this is possible.
  137. Information sent via an ID response may violate user privacy. See
  138. Security Considerations, section 7.
  139. Implementations MUST NOT send the same field name more than once.
  140. Showalter Standards Track [Page 4]
  141. RFC 2971 IMAP4 ID extension October 2000
  142. 4. Formal Syntax
  143. This syntax is intended to augment the grammar specified in
  144. [IMAP4rev1] in order to provide for the ID command. This
  145. specification uses the augmented Backus-Naur Form (BNF) notation as
  146. used in [IMAP4rev1].
  147. command_any ::= "CAPABILITY" / "LOGOUT" / "NOOP" / x_command / id
  148. ;; adds id command to command_any in [IMAP4rev1]
  149. id ::= "ID" SPACE id_params_list
  150. id_response ::= "ID" SPACE id_params_list
  151. id_params_list ::= "(" #(string SPACE nstring) ")" / nil
  152. ;; list of field value pairs
  153. response_data ::= "*" SPACE (resp_cond_state / resp_cond_bye /
  154. mailbox_data / message_data / capability_data / id_response)
  155. 5. Use of the ID extension with Firewalls and Other Intermediaries
  156. There exist proxies, firewalls, and other intermediary systems that
  157. can intercept an IMAP session and make changes to the data exchanged
  158. in the session. Such intermediaries are not anticipated by the IMAP4
  159. protocol design and are not within the scope of the IMAP4 standard.
  160. However, in order for the ID command to be useful in the presence of
  161. such intermediaries, those intermediaries need to take special note
  162. of the ID command and response. In particular, if an intermediary
  163. changes any part of the IMAP session it must also change the ID
  164. command to advertise its presence.
  165. A firewall MAY act to block transmission of specific information
  166. fields in the ID command and response that it believes reveal
  167. information that could expose a security vulnerability. However, a
  168. firewall SHOULD NOT disable the extension, when present, entirely,
  169. and SHOULD NOT unconditionally remove either the client or server
  170. list.
  171. Finally, it should be noted that a firewall, when handling a
  172. CAPABILITY response, MUST NOT allow the names of extensions to be
  173. returned to the client that the firewall has no knowledge of.
  174. Showalter Standards Track [Page 5]
  175. RFC 2971 IMAP4 ID extension October 2000
  176. 6. References
  177. [KEYWORDS] Bradner, S., "Key words for use in RFCs to Indicate
  178. Requirement Levels", RFC 2119, March 1997.
  179. [IMAP4rev1] Crispin, M., "Internet Message Access Protocol - Version
  180. 4rev1", RFC 2060, October 1996.
  181. [RFC-822] Crocker, D., "Standard for the Format of ARPA Internet
  182. Text Messages", STD 11, RFC 822, August 1982.
  183. 7. Security Considerations
  184. This extension has the danger of violating the privacy of users if
  185. misused. Clients and servers should notify users that they implement
  186. and enable the ID command.
  187. It is highly desirable that implementations provide a method of
  188. disabling ID support, perhaps by not sending ID at all, or by sending
  189. NIL as the argument to the ID command or response.
  190. Implementors must exercise extreme care in adding fields sent as part
  191. of an ID command or response. Some fields, including a processor ID
  192. number, Ethernet address, or other unique (or mostly unique)
  193. identifier allow tracking of users in ways that violate user privacy
  194. expectations.
  195. Having implementation information of a given client or server may
  196. make it easier for an attacker to gain unauthorized access due to
  197. security holes.
  198. Since this command includes arbitrary data and does not require the
  199. user to authenticate, server implementations are cautioned to guard
  200. against an attacker sending arbitrary garbage data in order to fill
  201. up the ID log. In particular, if a server naively logs each ID
  202. command to disk without inspecting it, an attacker can simply fire up
  203. thousands of connections and send a few kilobytes of random data.
  204. Servers have to guard against this. Methods include truncating
  205. abnormally large responses; collating responses by storing only a
  206. single copy, then keeping a counter of the number of times that
  207. response has been seen; keeping only particularly interesting parts
  208. of responses; and only logging responses of users who actually log
  209. in.
  210. Security is affected by firewalls which modify the IMAP protocol
  211. stream; see section 5, Use of the ID Extension with Firewalls and
  212. Other Intermediaries, for more information.
  213. Showalter Standards Track [Page 6]
  214. RFC 2971 IMAP4 ID extension October 2000
  215. 8. Author's Address
  216. Tim Showalter
  217. Mirapoint, Inc.
  218. 909 Hermosa Ct.
  219. Sunnyvale, CA 94095
  220. EMail: tjs@mirapoint.com
  221. Showalter Standards Track [Page 7]
  222. RFC 2971 IMAP4 ID extension October 2000
  223. 9. Full Copyright Statement
  224. Copyright (C) The Internet Society (2000). All Rights Reserved.
  225. This document and translations of it may be copied and furnished to
  226. others, and derivative works that comment on or otherwise explain it
  227. or assist in its implementation may be prepared, copied, published
  228. and distributed, in whole or in part, without restriction of any
  229. kind, provided that the above copyright notice and this paragraph are
  230. included on all such copies and derivative works. However, this
  231. document itself may not be modified in any way, such as by removing
  232. the copyright notice or references to the Internet Society or other
  233. Internet organizations, except as needed for the purpose of
  234. developing Internet standards in which case the procedures for
  235. copyrights defined in the Internet Standards process must be
  236. followed, or as required to translate it into languages other than
  237. English.
  238. The limited permissions granted above are perpetual and will not be
  239. revoked by the Internet Society or its successors or assigns.
  240. This document and the information contained herein is provided on an
  241. "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
  242. TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
  243. BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
  244. HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
  245. MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
  246. Acknowledgement
  247. Funding for the RFC Editor function is currently provided by the
  248. Internet Society.
  249. Showalter Standards Track [Page 8]