rfc5182.IMAP_extension_last_SEARCH_result.txt 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731
  1. Network Working Group A. Melnikov
  2. Request for Comments: 5182 Isode Ltd.
  3. Updates: 3501 March 2008
  4. Category: Standards Track
  5. IMAP Extension for Referencing the Last SEARCH Result
  6. Status of This Memo
  7. This document specifies an Internet standards track protocol for the
  8. Internet community, and requests discussion and suggestions for
  9. improvements. Please refer to the current edition of the "Internet
  10. Official Protocol Standards" (STD 1) for the standardization state
  11. and status of this protocol. Distribution of this memo is unlimited.
  12. Abstract
  13. Many IMAP clients use the result of a SEARCH command as the input to
  14. perform another operation, for example, fetching the found messages,
  15. deleting them, or copying them to another mailbox.
  16. This can be achieved using standard IMAP operations described in RFC
  17. 3501; however, this would be suboptimal. The server will send the
  18. list of found messages to the client; after that, the client will
  19. have to parse the list, reformat it, and send it back to the server.
  20. The client can't pipeline the SEARCH command with the subsequent
  21. command, and, as a result, the server might not be able to perform
  22. some optimizations.
  23. This document proposes an IMAP extension that allows a client to tell
  24. a server to use the result of a SEARCH (or Unique Identifier (UID)
  25. SEARCH) command as an input to any subsequent command.
  26. 1. Introduction
  27. Many IMAP clients use the result of a SEARCH command as the input to
  28. perform another operation, for example, fetching the found messages,
  29. deleting them, or copying them to another mailbox.
  30. This document proposes an IMAP extension that allows a client to tell
  31. a server to use the result of a SEARCH (or UID SEARCH) command as an
  32. input to any subsequent command.
  33. The SEARCH result reference extension defines a new SEARCH result
  34. option [IMAPABNF] "SAVE" that tells the server to remember the result
  35. of the SEARCH or UID SEARCH command (as well as any command based on
  36. SEARCH, e.g., SORT and THREAD [SORT]) and store it in an internal
  37. Melnikov Standards Track [Page 1]
  38. RFC 5182 Last SEARCH Result Reference March 2008
  39. variable that we will reference as the "search result variable". The
  40. client can use the "$" marker to reference the content of this
  41. internal variable. The "$" marker can be used instead of message
  42. sequence or UID sequence in order to indicate that the server should
  43. substitute it with the list of messages from the search result
  44. variable. Thus, the client can use the result of the latest
  45. remembered SEARCH command as a parameter to another command. The
  46. search result marker has several advantages:
  47. * it avoids wasted bandwidth and associated delay;
  48. * it allows the client to pipeline a SEARCH [IMAP4] command with a
  49. subsequent FETCH/STORE/COPY/SEARCH [IMAP4] or UID EXPUNGE
  50. [UIDPLUS] command;
  51. * the client doesn't need to spend time reformatting the result of
  52. a SEARCH command into a message set used in the subsequent
  53. command;
  54. * it allows the server to perform optimizations. For example, if
  55. the server can execute several pipelined commands in parallel
  56. (or out of order), presence of the search result marker can
  57. allow the server to decide which commands may or may not be
  58. executed out of order.
  59. In absence of any other SEARCH result option, the SAVE result option
  60. also suppresses any SEARCH response that would have been otherwise
  61. returned by the SEARCH command.
  62. 1.1. Conventions Used in This Document
  63. In examples, "C:" indicates lines sent by a client that is connected
  64. to a server. "S:" indicates lines sent by the server to the client.
  65. The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
  66. "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
  67. document are to be interpreted as described in [KEYWORDS].
  68. Explanatory comments in examples start with // and are not part of
  69. the protocol.
  70. Melnikov Standards Track [Page 2]
  71. RFC 5182 Last SEARCH Result Reference March 2008
  72. 2. Overview
  73. 2.1. Normative Description of the SEARCHRES Extension
  74. The SEARCH result reference extension described in this document is
  75. present in any IMAP4 server implementation that returns "SEARCHRES"
  76. as one of the supported capabilities in the CAPABILITY command
  77. response. Any such server MUST also implement the [ESEARCH]
  78. extension.
  79. Upon successful completion of a SELECT or an EXAMINE command (after
  80. the tagged OK response), the current search result variable is reset
  81. to the empty sequence.
  82. A successful SEARCH command with the SAVE result option sets the
  83. value of the search result variable to the list of messages found in
  84. the SEARCH command. For example, if no messages were found, the
  85. search result variable will contain the empty list.
  86. Any of the following SEARCH commands MUST NOT change the search
  87. result variable:
  88. o a SEARCH command that caused the server to return the BAD tagged
  89. response,
  90. o a SEARCH command with no SAVE result option that caused the
  91. server to return NO tagged response,
  92. o a successful SEARCH command with no SAVE result option.
  93. A SEARCH command with the SAVE result option that caused the server
  94. to return the NO tagged response sets the value of the search result
  95. variable to the empty sequence.
  96. When a message listed in the search result variable is EXPUNGEd, it
  97. is automatically removed from the list. Implementors are reminded
  98. that if the server stores the list as a list of message numbers, it
  99. MUST automatically adjust them when notifying the client about
  100. expunged messages, as described in Section 7.4.1 of [IMAP4].
  101. If the server decides to send a new UIDVALIDITY value while the
  102. mailbox is opened, this causes resetting of the search variable to
  103. the empty list.
  104. Melnikov Standards Track [Page 3]
  105. RFC 5182 Last SEARCH Result Reference March 2008
  106. Note that even if the "$" marker contains the empty list of messages,
  107. it must be treated by all commands accepting message sets as
  108. parameters as a valid, but non-matching list of messages. For
  109. example, the "FETCH $" command would return a tagged OK response and
  110. no FETCH responses. See also the Example 5 below.
  111. Note that even if the "$" marker contains the empty list of messages,
  112. it must be treated as a valid but non-matching list of messages, by
  113. all commands that accept message sets as parameters.
  114. Implementation note: server implementors should note that "$" can
  115. reference IMAP message sequences or UID sequences, depending on the
  116. context where it is used. For example, the "$" marker can be set as
  117. a result of a SEARCH (SAVE) command and used as a parameter to a UID
  118. FETCH command (which accepts a UID sequence, not a message sequence),
  119. or the "$" marker can be set as a result of a UID SEARCH (SAVE)
  120. command and used as a parameter to a FETCH command (which accepts a
  121. message sequence, not a UID sequence).
  122. 2.2. Examples
  123. 1) The following example demonstrates how the client can use the
  124. result of a SEARCH command to FETCH headers of interesting
  125. messages:
  126. Example 1:
  127. C: A282 SEARCH RETURN (SAVE) FLAGGED SINCE 1-Feb-1994
  128. NOT FROM "Smith"
  129. S: A282 OK SEARCH completed, result saved
  130. C: A283 FETCH $ (UID INTERNALDATE FLAGS RFC822.HEADER)
  131. S: * 2 FETCH (UID 14 ...
  132. S: * 84 FETCH (UID 100 ...
  133. S: * 882 FETCH (UID 1115 ...
  134. S: A283 OK completed
  135. The client can also pipeline the two commands:
  136. Example 2:
  137. C: A282 SEARCH RETURN (SAVE) FLAGGED SINCE 1-Feb-1994
  138. NOT FROM "Smith"
  139. C: A283 FETCH $ (UID INTERNALDATE FLAGS RFC822.HEADER)
  140. S: A282 OK SEARCH completed
  141. S: * 2 FETCH (UID 14 ...
  142. S: * 84 FETCH (UID 100 ...
  143. S: * 882 FETCH (UID 1115 ...
  144. S: A283 OK completed
  145. Melnikov Standards Track [Page 4]
  146. RFC 5182 Last SEARCH Result Reference March 2008
  147. 2) The following example demonstrates that the result of one SEARCH
  148. command can be used as input to another SEARCH command:
  149. Example 3:
  150. C: A300 SEARCH RETURN (SAVE) SINCE 1-Jan-2004
  151. NOT FROM "Smith"
  152. S: A300 OK SEARCH completed
  153. C: A301 UID SEARCH UID $ SMALLER 4096
  154. S: * SEARCH 17 900 901
  155. S: A301 OK completed
  156. Note that the second command in Example 3 can be replaced with:
  157. C: A301 UID SEARCH $ SMALLER 4096
  158. and the result of the command would be the same.
  159. 3) The following example shows that the "$"
  160. marker can be combined with other message numbers using the OR
  161. SEARCH criterion.
  162. Example 4:
  163. C: P282 SEARCH RETURN (SAVE) SINCE 1-Feb-1994
  164. NOT FROM "Smith"
  165. S: P282 OK SEARCH completed
  166. C: P283 SEARCH CHARSET UTF-8 (OR $ 1,3000:3021) TEXT {8}
  167. C: YYYYYYYY
  168. S: * SEARCH 882 1102 3003 3005 3006
  169. S: P283 OK completed
  170. Note: Since this document format is restricted to 7-bit ASCII text,
  171. it is not possible to show actual UTF-8 data. The "YYYYYYYY" is a
  172. placeholder for what would be 8 octets of 8-bit data in an actual
  173. transaction.
  174. Melnikov Standards Track [Page 5]
  175. RFC 5182 Last SEARCH Result Reference March 2008
  176. 4) The following example demonstrates that a failed SEARCH sets the
  177. search result variable to the empty list.
  178. Example 5:
  179. C: B282 SEARCH RETURN (SAVE) SINCE 1-Feb-1994
  180. NOT FROM "Smith"
  181. S: B282 OK SEARCH completed
  182. C: B283 SEARCH CHARSET KOI8-R (OR $ 1,3000:3021) TEXT {4}
  183. C: XXXX
  184. S: B283 NO [BADCHARSET UTF-8] KOI8-R is not supported
  185. //After this command the saved result variable contains
  186. //no messages. A client that wants to reissue the B283
  187. //SEARCH command with another CHARSET would have to reissue
  188. //the B282 command as well. One possible workaround for
  189. //this is to include the desired CHARSET parameter
  190. //in the earliest SEARCH RETURN (SAVE) command in a
  191. //sequence of related SEARCH commands.
  192. //A better approach might be to always use CHARSET UTF-8
  193. //instead.
  194. Note: Since this document format is restricted to 7-bit ASCII text,
  195. it is not possible to show actual KOI8-R data. The "XXXX" is a
  196. placeholder for what would be 4 octets of 8-bit data in an actual
  197. transaction.
  198. 5) The following example demonstrates that it is not an error to use
  199. the "$" marker when it contains no messages.
  200. Example 6:
  201. C: E282 SEARCH RETURN (SAVE) SINCE 28-Oct-2006
  202. NOT FROM "Eric"
  203. C: E283 COPY $ "Other Messages"
  204. //The "$" contains no messages
  205. S: E282 OK SEARCH completed
  206. S: E283 OK COPY completed, nothing copied
  207. 2.3. Multiple Commands in Progress
  208. Use of a SEARCH RETURN (SAVE) command followed by a command using the
  209. "$" marker creates direct dependency between the two commands. As
  210. directed by Section 5.5 of [IMAP4], a server MUST execute the two
  211. commands in the order they were received. (A server capable of
  212. out-of-order execution can in some cases execute the two commands in
  213. parallel, for example, if a SEARCH RETURN (SAVE) is followed by
  214. "SEARCH $", the search criteria from the first command can be
  215. directly substituted into the second command.)
  216. Melnikov Standards Track [Page 6]
  217. RFC 5182 Last SEARCH Result Reference March 2008
  218. A client supporting this extension MAY pipeline a SEARCH RETURN
  219. (SAVE) command with one or more command using the "$" marker, as long
  220. as this doesn't create an ambiguity, as described in Section 5.5 of
  221. [IMAP4].
  222. Example 7:
  223. C: F282 SEARCH RETURN (SAVE) KEYWORD $Junk
  224. C: F283 COPY $ "Junk"
  225. C: F284 STORE $ +FLAGS.Silent (\Deleted)
  226. S: F282 OK SEARCH completed
  227. S: F283 OK COPY completed
  228. S: F284 OK STORE completed
  229. Example 8:
  230. C: G282 SEARCH RETURN (SAVE) KEYWORD $Junk
  231. C: G283 SEARCH RETURN (ALL) SINCE 28-Oct-2006
  232. FROM "Eric"
  233. //The server can execute the two SEARCH commands
  234. //in any order, as they don't have any dependency.
  235. //Note that the second command is making use of
  236. //the [ESEARCH] extension.
  237. S: * ESEARCH (TAG "G283") ALL 3:15,27,29:103
  238. S: G283 OK SEARCH completed
  239. S: G282 OK SEARCH completed
  240. The following example demonstrates that the result of the second
  241. SEARCH always overrides the result of the first.
  242. Example 9:
  243. C: H282 SEARCH RETURN (SAVE) KEYWORD $Junk
  244. C: H283 SEARCH RETURN (SAVE) SINCE 28-Oct-2006
  245. FROM "Eric"
  246. S: H282 OK SEARCH completed
  247. S: H283 OK SEARCH completed
  248. 2.4. Interaction with ESEARCH Extension
  249. Servers that implement the extension defined in this document MUST
  250. implement [ESEARCH] and conform to additional requirements listed in
  251. this section.
  252. The SAVE result option doesn't change whether the server would return
  253. items corresponding to MIN, MAX, ALL, or COUNT [ESEARCH] result
  254. options.
  255. Melnikov Standards Track [Page 7]
  256. RFC 5182 Last SEARCH Result Reference March 2008
  257. When the SAVE result option is combined with the MIN or MAX [ESEARCH]
  258. result option, and none of the other ESEARCH result options are
  259. present, the corresponding MIN/MAX is returned (if the search result
  260. is not empty), but the "$" marker would contain a single message as
  261. returned in the MIN/MAX return item.
  262. If the SAVE result option is combined with both MIN and MAX result
  263. options, and none of the other ESEARCH result options are present,
  264. the "$" marker would contain one or two messages as returned in the
  265. MIN/MAX return items.
  266. If the SAVE result option is combined with the ALL and/or COUNT
  267. result option(s), the "$" marker would always contain all messages
  268. found by the SEARCH or UID SEARCH command. (Note that the last rule
  269. might affect ESEARCH implementations that optimize how the COUNT
  270. result is constructed.)
  271. The following table summarizes the additional requirement on ESEARCH
  272. server implementations described in this section.
  273. +----------------+-------------------+
  274. | Combination of | "$" marker value |
  275. | Result option | |
  276. +----------------+-------------------+
  277. | SAVE MIN | MIN |
  278. +----------------+-------------------+
  279. | SAVE MAX | MAX |
  280. +----------------+-------------------+
  281. | SAVE MIN MAX | MIN & MAX |
  282. +----------------+-------------------+
  283. | SAVE * [m] | all found messages|
  284. +----------------+-------------------+
  285. where '*' means "ALL" and/or "COUNT"
  286. '[m]' means optional "MIN" and/or "MAX"
  287. Melnikov Standards Track [Page 8]
  288. RFC 5182 Last SEARCH Result Reference March 2008
  289. The following example demonstrates behavioral difference for
  290. different combinations of ESEARCH result options. Explanatory
  291. comments start with // and are not part of the protocol:
  292. Example 10:
  293. C: C282 SEARCH RETURN (ALL) SINCE 12-Feb-2006
  294. NOT FROM "Smith"
  295. S: * ESEARCH (TAG "C283") ALL 2,10:15,21
  296. //$ value hasn't changed
  297. S: C282 OK SEARCH completed
  298. C: C283 SEARCH RETURN (ALL SAVE) SINCE 12-Feb-2006
  299. NOT FROM "Smith"
  300. S: * ESEARCH (TAG "C283") ALL 2,10:15,21
  301. //$ value is 2,10:15,21
  302. S: C283 OK SEARCH completed
  303. C: C284 SEARCH RETURN (SAVE MIN) SINCE 12-Feb-2006
  304. NOT FROM "Smith"
  305. S: * ESEARCH (TAG "C284") MIN 2
  306. //$ value is 2
  307. S: C284 OK SEARCH completed
  308. C: C285 SEARCH RETURN (MAX SAVE MIN) SINCE
  309. 12-Feb-2006 NOT FROM "Smith"
  310. S: * ESEARCH (TAG "C285") MIN 2 MAX 21
  311. //$ value is 2,21
  312. S: C285 OK SEARCH completed
  313. C: C286 SEARCH RETURN (MAX SAVE MIN COUNT)
  314. SINCE 12-Feb-2006 NOT FROM "Smith"
  315. S: * ESEARCH (TAG "C286") MIN 2 MAX 21 COUNT 8
  316. //$ value is 2,10:15,21
  317. S: C286 OK SEARCH completed
  318. C: C286 SEARCH RETURN (ALL SAVE MIN) SINCE
  319. 12-Feb-2006 NOT FROM "Smith"
  320. S: * ESEARCH (TAG "C286") MIN 2 ALL 2,10:15,21
  321. //$ value is 2,10:15,21
  322. S: C286 OK SEARCH completed
  323. Melnikov Standards Track [Page 9]
  324. RFC 5182 Last SEARCH Result Reference March 2008
  325. 2.5. Refusing to Save Search Results
  326. In some cases, the server MAY refuse to save a SEARCH (SAVE) result,
  327. for example, if an internal limit on the number of saved results is
  328. reached.
  329. In this case, the server MUST return a tagged NO response containing
  330. the NOTSAVED response code and set the search result variable to the
  331. empty sequence, as described in Section 2.1.
  332. 3. Formal Syntax
  333. The following syntax specification uses the Augmented Backus-Naur
  334. Form (ABNF) notation as specified in [ABNF]. Non-terminals
  335. referenced but not defined below are as defined in [IMAP4] or
  336. [IMAPABNF].
  337. Except as noted otherwise, all alphabetic characters are
  338. case-insensitive. The use of upper- or lower-case characters to
  339. define token strings is for editorial clarity only. Implementations
  340. MUST accept these strings in a case-insensitive fashion.
  341. capability =/ "SEARCHRES"
  342. ;; capability is defined in [IMAP4]
  343. sequence-set =/ seq-last-command
  344. ;; extends sequence-set to allow for
  345. ;; "result of the last command" indicator.
  346. seq-last-command = "$"
  347. search-return-opt = "SAVE"
  348. ;; conforms to generic search-return-opt
  349. ;; syntax defined in [IMAPABNF]
  350. resp-text-code =/ "NOTSAVED"
  351. ;; <resp-text-code> from [IMAP4]
  352. Melnikov Standards Track [Page 10]
  353. RFC 5182 Last SEARCH Result Reference March 2008
  354. 4. Security Considerations
  355. This extension requires the server to keep additional state, that may
  356. be used to simplify Denial of Service attacks. In order to minimize
  357. damage from such attacks, server implementations MAY limit the number
  358. of saved searches they allow across all connections at any given time
  359. and return the tagged NO response containing the NOTSAVED response
  360. code (see Section 2.5) to a SEARCH RETURN (SAVE) command when this
  361. limit is exceeded.
  362. Apart from that, it is believed that this extension doesn't raise any
  363. additional security concerns not already discussed in [IMAP4].
  364. 5. IANA Considerations
  365. This document defines the "SEARCHRES" IMAP capability. IANA has
  366. added it to the IMAP4 Capabilities Registry, which is currently
  367. located at:
  368. http://www.iana.org/assignments/imap4-capabilities
  369. 6. Acknowledgments
  370. The author would like to thank Mark Crispin, Cyrus Daboo, and Curtis
  371. King for remembering that this document had to be written, as well as
  372. for comments and corrections received.
  373. The author would also like to thank Dave Cridland, Mark Crispin,
  374. Chris Newman, Dan Karp, and Spencer Dawkins for comments and
  375. corrections received.
  376. Valuable comments, both in agreement and in dissent, were received
  377. from Arnt Gulbrandsen.
  378. Melnikov Standards Track [Page 11]
  379. RFC 5182 Last SEARCH Result Reference March 2008
  380. 7. References
  381. 7.1. Normative References
  382. [KEYWORDS] Bradner, S., "Key words for use in RFCs to Indicate
  383. Requirement Levels", BCP 14, RFC 2119, March 1997.
  384. [ABNF] Crocker, D., Ed., and P. Overell, "Augmented BNF for
  385. Syntax Specifications: ABNF", STD 68, RFC 5234, January
  386. 2008.
  387. [IMAP4] Crispin, M., "INTERNET MESSAGE ACCESS PROTOCOL - VERSION
  388. 4rev1", RFC 3501, March 2003.
  389. [IMAPABNF] Melnikov, A. and C. Daboo, "Collected Extensions to IMAP4
  390. ABNF", RFC 4466, April 2006.
  391. [ESEARCH] Melnikov, A. and D. Cridland, "IMAP4 Extension to SEARCH
  392. Command for Controlling What Kind of Information Is
  393. Returned", RFC 4731, November 2006.
  394. 7.2. Informative References
  395. [UIDPLUS] Crispin, M., "Internet Message Access Protocol (IMAP) -
  396. UIDPLUS extension", RFC 4315, December 2005.
  397. [SORT] Crispin, M. and K. Murchison, "INTERNET MESSAGE ACCESS
  398. PROTOCOL - SORT AND THREAD EXTENSIONS", Work in Progress,
  399. Septemeber 2007.
  400. Author's Address
  401. Alexey Melnikov
  402. Isode Ltd.
  403. 5 Castle Business Village,
  404. 36 Station Road,
  405. Hampton, Middlesex,
  406. TW12 2BX, United Kingdom
  407. EMail: Alexey.Melnikov@isode.com
  408. Melnikov Standards Track [Page 12]
  409. RFC 5182 Last SEARCH Result Reference March 2008
  410. Full Copyright Statement
  411. Copyright (C) The IETF Trust (2008).
  412. This document is subject to the rights, licenses and restrictions
  413. contained in BCP 78, and except as set forth therein, the authors
  414. retain all their rights.
  415. This document and the information contained herein are provided on an
  416. "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
  417. OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
  418. THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS
  419. OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
  420. THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
  421. WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
  422. Intellectual Property
  423. The IETF takes no position regarding the validity or scope of any
  424. Intellectual Property Rights or other rights that might be claimed to
  425. pertain to the implementation or use of the technology described in
  426. this document or the extent to which any license under such rights
  427. might or might not be available; nor does it represent that it has
  428. made any independent effort to identify any such rights. Information
  429. on the procedures with respect to rights in RFC documents can be
  430. found in BCP 78 and BCP 79.
  431. Copies of IPR disclosures made to the IETF Secretariat and any
  432. assurances of licenses to be made available, or the result of an
  433. attempt made to obtain a general license or permission for the use of
  434. such proprietary rights by implementers or users of this
  435. specification can be obtained from the IETF on-line IPR repository at
  436. http://www.ietf.org/ipr.
  437. The IETF invites any interested party to bring to its attention any
  438. copyrights, patents or patent applications, or other proprietary
  439. rights that may cover technology that may be required to implement
  440. this standard. Please address the information to the IETF at
  441. ietf-ipr@ietf.org.
  442. Melnikov Standards Track [Page 13]