home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1997 December / Internet_Info_CD-ROM_Walnut_Creek_December_1997.iso / drafts / draft_s_z / draft-zawinski-posted-to-00.txt < prev    next >
Text File  |  1997-10-15  |  22KB  |  539 lines

  1.  
  2. Internet Draft                                           Jamie Zawinski
  3. draft-zawinski-posted-to-00.txt                 Netscape Communications
  4. Category-to-be: Proposed standard                          October 1997
  5.                                                     Expires: April 1998
  6.  
  7.  
  8.      Identification of messages delivered via both mail and news
  9.  
  10.                          Status of this Memo
  11.  
  12. This document is an Internet-Draft. Internet-Drafts are working
  13. documents of the Internet Engineering Task Force (IETF), its areas, and
  14. its working groups. Note that other groups may also distribute working
  15. documents as Internet-Drafts.
  16.  
  17. Internet-Drafts are draft documents valid for a maximum of six months
  18. and may be updated, replaced, or obsoleted by other documents at any
  19. time. It is inappropriate to use Internet- Drafts as reference material
  20. or to cite them other than as ``work in progress.''
  21.  
  22. To learn the current status of any Internet-Draft, please check the
  23. ``1id-abstracts.txt'' listing contained in the Internet- Drafts Shadow
  24. Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe),
  25. munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or
  26. ftp.isi.edu (US West Coast).
  27.  
  28.  
  29.                             Abstract
  30.  
  31. This draft defines a format to be used when delivering a single message
  32. to multiple destinations, where some destinations are newsgroups and
  33. some destinations are email mailboxes.
  34.  
  35.  
  36. Table of contents
  37.  
  38. 1. Introduction
  39. 2. Terminology
  40. 3. Definitions of new message elements
  41.    3.1. The Posted-To header
  42.    3.2. The message body prolog
  43.    3.3. The Followup-Host header
  44. 4. Clarifications of the semantics of existing headers
  45.    4.1. References and In-Reply-To
  46.    4.2. Message-ID
  47.    4.3. Followup-To
  48.    4.4. Newsgroups
  49. 5. Security considerations
  50. 6. Acknowledgments
  51. 7. References
  52. 8. Author's Addresses
  53. Appendix A: Examples
  54. Appendix B: Recommendations for generating Message IDs
  55.  
  56. 1. Introduction
  57.  
  58. Most news readers include facilities for generating replies which are
  59. either posted to news, or mailed directly to the author.  An increasing
  60. number of news readers have the ability to do both simultaneously: to
  61. post one copy of the message to news, and to send a copy of that same
  62. message to a set of recipients via email.
  63.  
  64. When one receives an email message, there is currently no reliable way
  65. to identify that message as being one which has also been posted.  This
  66. draft specifies a mechanism by which such messages may be identified.
  67.  
  68. The model used in this document is that a single message is prepared,
  69. and then delivered on multiple transports to its various destinations.
  70. This is not intended to dictate anything about the mechanism by which
  71. message delivery must be implemented.  But, it is rather intended to
  72. convey the intent that both messages should, as far as is possible, have
  73. identical bodies and headers.
  74.  
  75. Obviously, various transports (including, but not limited to, [SMTP] and
  76. [NNTP]) will add various headers to the messages they carry, and so it
  77. will never be the case that two copies of the same message which are
  78. received via different transports will be identical.  However, excepting
  79. the headers added by the transports, it is likely that the two copies of
  80. the message will have identical headers, and is also likely that they
  81. will have identical bodies.
  82.  
  83. It is also recognized that certain elements of the transport (including,
  84. but not limited to, mail-news gateways, mailing list reflectors, and
  85. newsgroup or mailing list moderators) might modify messages.  The
  86. modification might be in form only, such as the Content-Transfer-
  87. Encoding [MIME] being changed; or it might be substantive, such as a
  88. standard disclaimer, or standard set of instructions, being appended to
  89. the bodies.  This means that software conforming to this document cannot
  90. guarantee that the two messages will have identical bodies.  It can,
  91. however, hold that as a goal, with the recognition that the goal will
  92. not always be reachable.
  93.  
  94.  
  95. 2. Terminology
  96.  
  97. In this document, we will discuss several "views" on the same logical
  98. message.
  99.  
  100. Unless otherwise specified, when this document refers to a "mail
  101. message", it refers to a message that was sent to both mail and news
  102. destinations, and that has been received by someone via email.
  103.  
  104. Likewise, unless otherwise specified, when this document refers to a
  105. "news message", it refers to a message that was sent to both mail and
  106. news destinations, and that has been received by someone via news.
  107.  
  108. This document assumes familiarity with the mail and news message
  109. formats, as documented in [MAIL] and [NEWS].
  110.  
  111.  
  112. 3. Definitions of new message elements
  113.  
  114. 3.1. The Posted-To header
  115.  
  116. When a message is sent to both mail and news destinations, it MUST
  117. include a Posted-To header.  The "Posted-To" header shall have the same
  118. syntax as the "Newsgroups" header as defined in [NEWS].
  119.  
  120. This field, if present, MUST be identical to the "Newsgroups" field in
  121. the copy that was posted to news (See section 4.4, "Newsgroups" below).
  122. In particular, this field MUST NOT be used instead of the Followup-To
  123. field to alter the groups a followup to the mail copy will be posted to
  124. (See section 4.3, "Followup-To" below).
  125.  
  126. This header MUST be present both in the version of the message which was
  127. sent to a news transport, and in the version of the message which was
  128. sent to a mail transport, and MUST be identical in both.
  129.  
  130.  
  131. 3.2. The message body prolog
  132.  
  133. It is common practice for message reading software to suppress the
  134. display of unknown header fields.  Therefore, it may be assumed that,
  135. for the foreseeable future, many users will not tend to be shown the
  136. Posted-To header by default.
  137.  
  138. When a message is sent to both mail and news recipients, the posting
  139. software MAY choose to automatically include a free-text blurb at
  140. beginning of the message body indicating that it has been posted as well
  141. as mailed.
  142.  
  143. If this text is inserted, it MUST be inserted in BOTH the copy of the
  144. message that is posted, and in the copy that is mailed.  This is in
  145. keeping with the principles that two copies of the same message should
  146. have the same Message-ID, and that, conversely, two messages with the
  147. same Message-ID should have the same body.
  148.  
  149. Message reading software MUST NOT attempt to automatically parse or
  150. otherwise interpret this body text.  Such software should use the
  151. Posted-To header instead.  This body text, like all body text, is
  152. intended for human consumption.  
  153.  
  154. If the text is inserted, it SHOULD be kept brief: it is recommended that
  155. it consist only of one or two lines of text.
  156.  
  157. It is true that the body blurb, if present, is somewhat redundant with
  158. the Posted-To header.  This redundancy is called for due to their
  159. different uses: the Posted-To header is for interpretation by programs;
  160. the body is for interpretation by humans.  It is intended that when
  161. support for the Posted-To header becomes more widespread, the use of the
  162. body blurb will become deprecated.
  163.  
  164.  
  165. 3.3. The Followup-Host header
  166.  
  167. This header is optional.  
  168.  
  169. If it is present, it is an instruction to the recipient about what news
  170. host and protocol SHOULD be used to send a reply, should the recipient
  171. desire to send a reply to any of the newsgroups listed in the Posted-To
  172. header.  
  173.  
  174. Background: it is becoming more common for discussion forums to exist
  175. which are for all practical purposes newsgroups, but which are served by
  176. only one (or a small number of) hosts.  They are not widely replicated.
  177.  
  178. The way one uses these groups is by connecting to a particular port on a
  179. particular host and speaking a particular news protocol (typically
  180. NNTP.)
  181.  
  182. This differs from the traditional USENET model, where one connects to a
  183. local news server for all activity, and the messages are propagated to
  184. many different hosts.
  185.  
  186. It is not the place of this document to discuss the pros or cons of this
  187. mode of operation.  However, this document recognizes that this mode of
  188. operation exists, and defines a mechanism to deal with the issues
  189. related to posted-and-mailed messages as relates these non-USENET news
  190. hosts, as well as the more common USENET case.
  191.  
  192. The Followup-Host header SHOULD be used when all newsgroups in the
  193. Posted-To header are served by a single, non-USENET news server.
  194.  
  195. It MUST NOT be used when the newsgroup in question is one which uses the
  196. traditional USENET model of propagation: that is, a newsgroup which is
  197. not one that is served only by a particular host.
  198.  
  199. The Followup-Host header is an instruction to use a particular host
  200. for posting activity.  Therefore, its use includes the assumption that
  201. the recipients of the message will be able to post via the host in
  202. question.  
  203.  
  204. It is recognized that even traditional USENET groups have varying levels
  205. of propagation, and that there is no guarantee that any mail recipient
  206. has access to any server which offers a particular USENET group.
  207. The Followup-Host header is not intended to address this problem.
  208.  
  209. How the posting software makes the determination of whether the current
  210. news server is a USENET-style server, or a non-USENET style server is
  211. unspecified.  It is left up to the implementor.
  212.  
  213. One possible way would be for software which was able to deal with
  214. multiple news hosts to remember which hosts were USENET and which were
  215. not.  A particular news agent might have a notion of a "default" host,
  216. and assume that the default host was USENET, and the non-default hosts
  217. were not.  Another news agent might ask the user to specify whether the
  218. host carried USENET at the time the user connected to the host (or
  219. subscribed to a group carried by it.)
  220.  
  221. The body of the Followup-Host header is a URL, as defined by [NEWSURL]:
  222.  
  223.     followup-host := "Followup-Host" ":" news-url
  224.  
  225.     news-url := <a URL representing a news service>
  226.  
  227. The reason for providing a full URL rather than simply a host name is
  228. that news service may not necessarily be provided by [NNTP].  URLs,
  229. being extensible, provide an easy way to accommodate current and future
  230. protocol innovations.
  231.  
  232. The header's contents could be as simple as:
  233.  
  234.     Followup-Host: news://news.example.com
  235.  
  236. indicating the default news protocol (nntp) on the default nntp port
  237. (TCP 119).  An NNTP service running on a nonstandard port could be
  238. expressed as
  239.  
  240.     Followup-Host: news://news.example.com:6666
  241.  
  242. A news service running a protocol other than NNTP would be expressed by
  243. using a different type of URL.  For example, this header represents news
  244. service running on the nonstandard "snews" protocol (which is actually
  245. NNTP wrapped inside of SSL):
  246.  
  247.     Followup-Host: snews://secnews.netscape.com:563
  248.  
  249. It is beyond the scope of this document to document these protocols or
  250. URL syntaxes.
  251.  
  252.  
  253. 4. Clarifications of the semantics of existing headers
  254.  
  255. The general principle used here is that when a header is required in
  256. either mail or news, a combined message should include both headers.
  257. Combined with the principle that the same message text be delivered to
  258. both transports, this means that certain previously-news-only headers
  259. will be delivered over mail transports, and certain previously-mail-only
  260. headers will be delivered over news transports.
  261.  
  262. If you are sending a message as both mail and news, then that message
  263. MUST meet the underlying requirements of both mail messages and news
  264. messages simultaneously.
  265.  
  266.  
  267. 4.1. References and In-Reply-To
  268.  
  269. Messages which are delivered to both mail and news MUST use the news
  270. [NEWS] syntax and semantics of the References header, since that RFC has
  271. more restrictive (and, arguably, more useful) syntax and semantics than
  272. does the mail message standard [MAIL].
  273.  
  274. Messages which are delivered to both mail and news, and which are
  275. replies, MUST have a References header.
  276.  
  277. Messages which are delivered to both mail and news MAY include an
  278. In-Reply-To header, with the semantics defined in [MAIL].  Should an
  279. In-Reply-To header be used, it MUST contain the message ID which is the
  280. last message ID listed in the References header.
  281.  
  282.  
  283. 4.2. Message-ID
  284.  
  285. Messages which are delivered to both mail and news MUST have identical
  286. Message-ID headers.
  287.  
  288. The syntax of the Message-ID header MUST be as defined in [NEWS], as
  289. that is a more restrictive subset of the syntax defined in [MAIL].
  290.  
  291. The Message-ID header is optional in both [SMTP] and in [NNTP].
  292. Generally, if the user agent does not generate the Message-ID, then the
  293. transport will generate one for the message.  (This is always true in
  294. the case of news, but is often, but not always, true in the case of
  295. mail.)
  296.  
  297. Since allowing the server(s) to generate the IDs would cause the use of
  298. two different Message-IDs, in order to comply with this rule, a client
  299. will probably need to generate the Message-ID before handing the message
  300. to either transport.  
  301.  
  302. (It is conceivable that some future message submission protocol might
  303. allow the client to ask the server to generate and return a Message-ID
  304. for it, but this is not possible with any of the currently-existing
  305. message submission protocols.  So, the requirement is that the two
  306. copies of the message MUST have identical Message-IDs, but any
  307. mechanism which achieves this end is acceptable.)
  308.  
  309.  
  310. 4.3. Followup-To
  311.  
  312. If both Posted-To and Followup-To are present, then replies which are
  313. to be posted MUST be directed to the newsgroups listed in the
  314. Followup-To header instead of those listed in the Posted-To header.
  315.  
  316. If a Followup-To header is present but a Posted-To header is not:
  317.  
  318.   * For a news message, the proper interpretation is defined by [NEWS].
  319.  
  320.   * For a mail message, the Followup-To header MUST be ignored.
  321.  
  322.  
  323. 4.4. Newsgroups
  324.  
  325. If a message has both a Posted-To and a Newsgroups header, then the the
  326. two headers MUST have the same contents.  Should the Newsgroups header
  327. have different contents than the Posted-To header, then the message is
  328. not in conformance with this document.  In that case, the Posted-To
  329. header MUST be considered to have priority.
  330.  
  331. If a Newsgroups header is present but a Posted-To header is not:
  332.  
  333.   * For a news message, the proper interpretation is defined by [NEWS].
  334.  
  335.   * For a mail message, the Newsgroups header MUST be ignored.
  336.  
  337. The requirement to ignore lone Newsgroups headers in mail messages is an
  338. important one.  Existing practice does not allow one to make any
  339. assumptions about the interpretation of the Newsgroups header in mail,
  340. as there are two widely used, conflicting interpretations of it: some
  341. message-generating software uses it as an indication that this mail
  342. message was also posted; and some message-generating software uses it as
  343. an indication of the groups to which the message to which this message
  344. is a reply was posted.
  345.  
  346.  
  347. 5. Security considerations
  348.  
  349. This format will reduce the risk of various unexpected results for
  350. combined messages.  Some existing risks in email and news may stay even
  351. with this format, but no new risks are expected as a result of using
  352. this format.  In general, increased transportation of messages between
  353. news and email may mean that existing risks in news are propagated to
  354. email or the reverse, but these risks would not be reduced by the lack
  355. of a standard for such combined messages.
  356.  
  357. The union of the security risks of existing mail and news usage must be
  358. considered; for example, care should be taken not to inappropriately
  359. disclose the BCC recipients of a mailed message to the news recipients.
  360.  
  361.  
  362. 6. Acknowledgments
  363.  
  364. This document is derived from and inspired by earlier proposals written
  365. by Jacob Palme and John Stanley.  Valuable feedback was provided by
  366. Terje Bless, Lars Magne Ingebrigtsen, Jacob Palme, Bart Schaefer, Jeroen
  367. Scheerder, and Brad Templeton.
  368.  
  369. Appendix B is partially derived from an earlier, unrelated draft by
  370. Henry Spencer.
  371.  
  372.  
  373. 7. References
  374.  
  375. Ref.          Author, title                         IETF status (May 1997)
  376.                                                     ----------------------
  377. ---           -------------
  378.  
  379. [SMTP]        J. Postel: "Simple Mail Transfer      Standard, Recommended.
  380.               Protocol", STD 10, RFC 821, August
  381.               1982.
  382.  
  383. [MAIL]        D. Crocker: "Standard for the         Standard, Recommended.
  384.               format of ARPA Internet text
  385.               messages." STD 11, RFC 822, August
  386.               1982.
  387.  
  388. [NNTP]        B. Kantor, P. Lapsley: "Network       Non-standard (but still
  389.               News Transfer Protocol", RFC 977,     widely used as a de-facto
  390.               February 1986.                        standard).
  391.  
  392. [NEWS]        M.R. Horton, R. Adams: "Standard      Non-standard (but still
  393.               for interchange of USENET             widely used as a de-facto
  394.               messages", RFC 1036, December         standard).
  395.               1987.
  396.  
  397. [MIME]        N. Freed, N. Borenstein and           Draft Standard, elective.
  398.               others, "Multipurpose Internet
  399.               Mail Extensions (MIME) Part One to
  400.               Five", RFC 2045 to 2049.
  401.  
  402. [NEWSURL]     T. Berners-Lee, L. Masinter and       Draft Standard.
  403.               others, "Uniform Resource Locators",
  404.               RFC 1738.
  405.  
  406.               See also:
  407.               A. Gilman, "The 'news' URL scheme",   Internet Draft, work in
  408.               draft-gilman-news-url-00.txt.         progress.
  409.  
  410.  
  411.  
  412. 8. Author's Addresses
  413.  
  414. Jamie Zawinski
  415. Netscape Communications Corporation
  416. 501 East Middlefield Road
  417. Mountain View, CA 94043
  418. (415) 937-2620
  419. jwz@netscape.com
  420.  
  421.  
  422. Appendix A: Examples
  423.  
  424. The following is an example of a combined message, sent both to a
  425. newsgroup comp.lang.c and via e-mail to a person mary@foo.example.com.
  426.  
  427. Here is the message as prepared by the message composition software:
  428.  
  429.    Date: 7 Jan 1997 12:34:21 +0000 (GMT)
  430.    From: fred@bar.example.com
  431.    Subject: A message about inheritance
  432.    Message-ID: <123zx@example.com>
  433.    To: mary@foo.example.com
  434.    Newsgroups: comp.lang.c
  435.    Posted-To: comp.lang.c
  436.  
  437.    What is it?
  438.  
  439. The same message as it might appear to someone reading it in the
  440. newsgroup comp.lang.c:
  441.  
  442.    Path: news1.example.com!news2.example.com!bar.example.com!fred
  443.    NNTP-Posting-Host: news2.example.com
  444.    Xref: news.blat.example.com comp.lang.c:20465
  445.    Lines: 1
  446.    Date: 7 Jan 1997 12:34:21 +0000 (GMT)
  447.    From: fred@bar.example.com
  448.    Subject: A message about inheritance
  449.    Message-ID: <123zx@example.com>
  450.    To: mary@foo.example.com
  451.    Newsgroups: comp.lang.c
  452.    Posted-To: comp.lang.c
  453.  
  454.    What is it?
  455.  
  456. The same message as it might appear to a mail recipient 
  457. (supposedly mary@foo.example.com):
  458.  
  459.    Return-Path: <fred@bar.example.com>
  460.    Received: from foo.example.com [127.0.0.1] by quux.example.com
  461.    Received: from quux.example.com [127.0.0.1] by bar.example.com
  462.    Date: 7 Jan 1997 12:34:21 +0000 (GMT)
  463.    From: fred@bar.example.com
  464.    Subject: A message about inheritance
  465.    Message-ID: <123zx@example.com>
  466.    To: mary@foo.example.com
  467.    Newsgroups: comp.lang.c
  468.    Posted-To: comp.lang.c
  469.  
  470.    What is it?
  471.  
  472.  
  473. Appendix B: Recommendations for generating Message IDs
  474.  
  475. A message ID consists of two parts, a local part and a domain,
  476. separated by an at-sign and enclosed in angle brackets:
  477.  
  478.     message-id := "<" local-part "@" domain ">"
  479.  
  480. Practically, news message IDs are a restricted subset of mail message
  481. IDs.  In particular, no existing news software copes properly with mail
  482. quoting conventions within the local part, so software generating a
  483. Message-ID would be well-advised to avoid this pitfall.
  484.  
  485. It is also noted that some buggy software considers message IDs
  486. completely case-insensitive, in violation of the standards.  If is
  487. therefore advised that one not generate IDs such that two IDs so
  488. generated can differ only in character case.
  489.  
  490. The most popular method of generating local parts is to use the date and
  491. time, plus some way of distinguishing between simultaneous postings on
  492. the same host (e.g. a process number), and encode them in a suitably-
  493. restricted alphabet.  An older but now less-popular alternative is to
  494. use a sequence number, incremented each time the host generates a new
  495. message ID; this is workable, but requires careful design to cope
  496. properly with simultaneous posting attempts, and is not as robust in the
  497. presence of crashes and other malfunctions.
  498.  
  499. On many client systems, it is not always possible to get the
  500. fully-qualified domain name (FQDN) of the local host.  In that
  501. situation, a reasonable fallback course of action would be to use the
  502. domain-part of the user's return address.  Doing so makes the generation
  503. of the "distinguishing number" be more important; in particular, it
  504. means that a process ID is probably not sufficient.
  505.  
  506. An alternative for generating the distinguishing number, on systems
  507. where the process ID isn't available, or in the case where the local
  508. host's FQDN isn't known, is to generate a large random number from a
  509. high-quality, well-seeded pseudorandom number generator.  (Note that the
  510. RNGs shipped by many vendors are not high quality.)
  511.  
  512. In summary, one possible approach to generating a Message-ID would be:
  513.  
  514.   *  Append "<".
  515.  
  516.   *  Get the current (wall-clock) time in the highest resolution to
  517.      which you have access (most systems can give it to you in 
  518.      milliseconds, but seconds will do);
  519.  
  520.   *  Generate 64 bits of randomness from a good, well-seeded random
  521.      number generator;
  522.  
  523.   *  Convert these two numbers to base 36 (0-9 and A-Z) and append the
  524.      first number, a ".", the second number, and an "@".  This makes the
  525.      left hand side of the message ID be only about 21 characters long.
  526.  
  527.   *  Append the FQDN of the local host, or the host name in the user's
  528.      return address.
  529.  
  530.   *  Append ">".
  531.  
  532. If the random number generator is good, this will reduce the odds of a
  533. collision of message IDs to well below the odds that a cosmic ray will
  534. cause the computer to miscompute a result.  That means that it's good
  535. enough.
  536.  
  537. There are many other approaches.  This is provided only as an example,
  538. not as a mandate.
  539.