home *** CD-ROM | disk | FTP | other *** search
/ Unix System Administration Handbook 1997 October / usah_oct97.iso / rfc / 800s / rfc850.txt < prev    next >
Text File  |  1991-10-16  |  43KB  |  1,060 lines

  1. RFC 850                                         June 1983
  2.  
  3.  
  4.        Standard for Interchange of USENET Messages
  5.  
  6.                       Mark R. Horton
  7.  
  8.  
  9. [ This memo is distributed as an RFC  only  to  make  this
  10. information  easily  accessible to researchers in the ARPA
  11. community.  It does not specify  an  Internet  standard. ] 
  12.  
  13. 1.  Introduction
  14.  
  15. This document defines the standard format for  interchange
  16. of Network News articles among USENET sites.  It describes
  17. the format for  articles  themselves,  and  gives  partial
  18. standards for transmission of news.  The news transmission
  19. is not entirely standardized in order to give a good  deal
  20. of   flexibility   to   the  individual  hosts  to  choose
  21. transmission hardware and software, whether to batch news,
  22. and so on.
  23.  
  24. There are five sections to  this  document.   Section  two
  25. section  defines  the  format.   Section three defines the
  26. valid control messages.  Section four specifies some valid
  27. transmission  methods.  Section five describes the overall
  28. news propagation algorithm.
  29.  
  30.  
  31. 2.  Article Format
  32.  
  33. The primary consideration in choosing an article format is
  34. that  it  fit  in with existing tools as well as possible.
  35. Existing tools include both implementations  of  mail  and
  36. news.   (The  notesfiles  system  from  the  University of
  37. Illinois is considered a news implementation.) A  standard
  38. format for mail messages has existed for many years on the
  39. ARPANET, and this  format  meets  most  of  the  needs  of
  40. USENET.    Since   the   ARPANET   format  is  extensible,
  41. extensions to meet the  additional  needs  of  USENET  are
  42. easily  made  within the ARPANET standard.  Therefore, the
  43. rule is adopted that all  USENET  news  articles  must  be
  44. formatted as valid ARPANET mail messages, according to the
  45. ARPANET  standard  RFC  822.   This   standard   is   more
  46. restrictive  than the ARPANET standard, placing additional
  47. requirements on each article and forbidding use of certain
  48. ARPANET  features.   However, it should always be possible
  49. to use a tool expecting an ARPANET message  to  process  a
  50. news  article.   In  any  situation  where  this  standard
  51. conflicts with the ARPANET standard,  RFC  822  should  be
  52. considered correct and this standard in error.
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.                           - 1 -
  60.  
  61.  
  62. An example message is included to illustrate the fields.
  63.  
  64.      Relay-Version: version B 2.10 2/13/83; site cbosgd.UUCP
  65.      Posting-Version: version B 2.10 2/13/83; site eagle.UUCP
  66.      Path: cbosgd!mhuxj!mhuxt!eagle!jerry
  67.      From: jerry@eagle.uucp (Jerry Schwarz)
  68.      Newsgroups: net.general
  69.      Subject: Usenet Etiquette -- Please Read
  70.      Message-ID: <642@eagle.UUCP>
  71.      Date: Friday, 19-Nov-82 16:14:55 EST
  72.      Followup-To: net.news
  73.      Expires: Saturday, 1-Jan-83 00:00:00 EST
  74.      Date-Received: Friday, 19-Nov-82 16:59:30 EST
  75.      Organization: Bell Labs, Murray Hill
  76.  
  77.      The body of the article comes here, after a blank line.
  78.  
  79. Here is an example of a message in the old format  (before
  80. the  existence  of this standard).  It is recommended that
  81. implementations also accept articles  in  this  format  to
  82. ease upward conversion.
  83.  
  84.      From: cbosgd!mhuxj!mhuxt!eagle!jerry (Jerry Schwarz)
  85.      Newsgroups: net.general
  86.      Title: Usenet Etiquette -- Please Read
  87.      Article-I.D.: eagle.642
  88.      Posted: Fri Nov 19 16:14:55 1982
  89.      Received: Fri Nov 19 16:59:30 1982
  90.      Expires: Mon Jan  1 00:00:00 1990
  91.  
  92.      The body of the article comes here, after a blank line.
  93.  
  94. Some news systems transmit news in the  "A"  format, which
  95. looks like this:
  96.  
  97.      Aeagle.642
  98.      net.general
  99.      cbosgd!mhuxj!mhuxt!eagle!jerry
  100.      Fri Nov 19 16:14:55 1982
  101.      Usenet Etiquette - Please Read
  102.      The body of the article comes here, with no blank line.
  103.  
  104. An article consists of several header lines, followed by a
  105. blank  line,  followed  by  the  body of the message.  The
  106. header lines consist of a keyword, a colon, a  blank,  and
  107. some  additional  information.   This  is  a subset of the
  108. ARPANET standard, simplified to allow simpler software  to
  109. handle  it.   The   "from"   line may optionally include a
  110. full name, in the format above, or use the  ARPANET  angle
  111. bracket syntax.  To keep the implementations simple, other
  112. formats (for example, with part  of  the  machine  address
  113. after the close parenthesis) are not allowed.  The ARPANET
  114. convention of continuation header lines (beginning with  a
  115. blank or tab) is allowed.
  116.  
  117.  
  118.                           - 2 -
  119.  
  120.  
  121.  
  122. Certain  headers  are  required,   certain   headers   are
  123. optional.   Any unrecognized headers are allowed, and will
  124. be passed through unchanged.   The  required  headers  are
  125. Relay-Version,  Posting-Version,  From,  Date, Newsgroups,
  126. Subject,  Message-ID,  Path.   The  optional  headers  are
  127. Followup-To,  Date-Received,  Expires,  Reply-To,  Sender,
  128. References, Control, Distribution, Organization.
  129.  
  130. 2.1  Required Headers
  131.  
  132. 2.1.1  Relay-Version  This header line shows  the  version
  133. of  the  program  responsible for the transmission of this
  134. article over the immediate link, that is, the program that
  135. is  relaying the article from the next site.  For example,
  136. suppose site A sends an article to  site  B,  and  site  B
  137. forwards  the  article  to  site  C.   The  message  being
  138. transmitted from A to B would have a Relay-Version  header
  139. identifying  the  program  running  on  A, and the message
  140. transmitted from B to C would identify the program running
  141. on  B.  This header can be used to interpret older headers
  142. in an upward compatible way.  Relay-Version must always be
  143. the  first  in  a message; thus, all articles meeting this
  144. standard will begin with an upper case   "R".    No  other
  145. restrictions are placed on the order of header lines.
  146.  
  147. The line contains two  fields,  separated  by  semicolons.
  148. The fields are the version and the full domain name of the
  149. site.  The version should identify the system program used
  150. (e.g.,   "B")   as  well  as  a version number and version
  151. date.  For example, the header line might contain
  152.  
  153.    Relay-Version: version B 2.10 2/13/83; site cbosgd.UUCP
  154.  
  155. This header should not be passed on to  additional  sites.
  156. A  relay  program,  when  passing  an  article  on, should
  157. include only its own Relay-Version, not the  Relay-Version
  158. of  some other site.  (For upward compatibility with older
  159. software, if a Relay-Version is found in a header which is
  160. not the first line, it should be assumed to be moved by an
  161. older version of news and deleted.)
  162.  
  163. 2.1.2  Posting-Version    This   header   identifies   the
  164. software  responsible  for  entering this message into the
  165. network.  It has the same  format  as  Relay-Version.   It
  166. will  normally  identify  the same site as the Message-ID,
  167. unless the posting site is serving  as  a  gateway  for  a
  168. message  that  already  contains a message ID generated by
  169. mail.  (While it is permissible for a gateway  to  use  an
  170. externally  generated message ID, the message ID should be
  171. checked to ensure it conforms to this standard and to  RFC
  172. 822.)
  173.  
  174.  
  175.  
  176.  
  177.                           - 3 -
  178.  
  179.  
  180.  
  181. 2.1.3  From  The From line contains the electronic mailing
  182. address  of  the  person who sent the message, in the ARPA
  183. internet syntax.  It may optionally also contain the  full
  184. name  of  the person, in parentheses, after the electronic
  185. address.  The electronic address is the same as the entity
  186. responsible for originating the article, unless the Sender
  187. header is present, in which case the From header might not
  188. be  verified.   Note  that  in  all site and domain names,
  189. upper  and  lower  case  are  considered  the  same,  thus
  190. mark@cbosgd.UUCP,  mark@cbosgd.uucp,  and mark@CBosgD.UUcp
  191. are all equivalent.  User names may or  may  not  be  case
  192. sensitive,   for   example,   Billy@cbosgd.UUCP  might  be
  193. different from BillY@cbosgd.UUCP.  Programs  should  avoid
  194. changing  the case of electronic addresses when forwarding
  195. news or mail.
  196.  
  197. RFC 822 specifies that all text in parentheses  is  to  be
  198. interpreted as a comment.  It is common in ARPANET mail to
  199. place the full name of the user in a comment at the end of
  200. the  From  line.   This  standard  specifies  a more rigid
  201. syntax.  The full name is not considered a comment, but an
  202. optional part of the header line.  Either the full name is
  203. omitted, or it appears in parentheses after the electronic
  204. address  of  the person posting the article, or it appears
  205. before an electronic address enclosed in  angle  brackets.
  206. Thus, the three permissible forms are:
  207.  
  208.      From: mark@cbosgd.UUCP
  209.      From: mark@cbosgd.UUCP (Mark Horton)
  210.      From: Mark Horton <mark@cbosgd.UUCP>
  211.  
  212. Full names may contain any printing ASCII characters  from
  213. space through tilde, with the exceptions that they may not
  214. contain parentheses  "("   or   ")",   or  angle  brackets
  215. "<"   or  ">".    Additional restrictions may be placed on
  216. full names  by  the  mail  standard,  in  particular,  the
  217. characters  comma   ",",  colon  ":",  and semicolon   ";" 
  218. are inadvisable in full names.
  219.  
  220. 2.1.4  Date  The Date line (formerly   "Posted")   is  the
  221. date,  in  a  format  that  must be acceptable both to the
  222. ARPANET and to the getdate routine, that the  article  was
  223. originally  posted  to  the  network.   This  date remains
  224. unchanged as the  article  is  propagated  throughout  the
  225. network.  One format that is acceptable to both is
  226.  
  227.      Weekday, DD-Mon-YY HH:MM:SS TIMEZONE
  228.  
  229. Several examples of  valid  dates  appear  in  the  sample
  230. article above.  Note in particular that ctime format:
  231.  
  232.      Wdy Mon DD HH:MM:SS YYYY
  233.  
  234.  
  235.  
  236.                           - 4 -
  237.  
  238.  
  239.  
  240.  
  241.  
  242. is not acceptable because it is not a valid ARPANET  date.
  243. However, since older software still generates this format,
  244. news implementations are encouraged to accept this  format
  245. and translate it into an acceptable format.
  246.  
  247. The contents of the TIMEZONE field is currently subject to
  248. worldwide time zone  abbreviations,  including  the  usual
  249. American  zones  (PST, PDT, MST, MDT, CST, CDT, EST, EDT),
  250. the   other   North   American   zones   (Bering   through
  251. Newfoundland),  European  zones,  Australian zones, and so
  252. on.  Lacking a complete list at present (and unsure if  an
  253. unambiguous   list   exists),   authors  of  software  are
  254. encouraged to keep this code flexible, and  in  particular
  255. not  to  assume  that  time  zone  names are exactly three
  256. letters long.   Implementations  are  free  to  edit  this
  257. field,  keeping  the  time the same, but changing the time
  258. zone (with an appropriate adjustment  to  the  local  time
  259. shown) to a known time zone.
  260.  
  261. 2.1.5  Newsgroups  The  Newsgroups  line  specifies  which
  262. newsgroup  or newsgroups the article belongs in.  Multiple
  263. newsgroups  may  be  specified,  separated  by  a   comma.
  264. Newsgroups  specified  must  all  be the names of existing
  265. newsgroups, as no new newsgroups will be created by simply
  266. posting to them.
  267.  
  268. Wildcards (e.g., the word  "all")  are never allowed in  a
  269. Newsgroups  line.  For example, a newsgroup  "net.all"  is
  270. illegal, although a newsgroup name    "net.sport.football" 
  271. is permitted.
  272.  
  273. If an article is received with a Newsgroups  line  listing
  274. some  valid newsgroups and some invalid newsgroups, a site
  275. should  not  remove  invalid  newsgroups  from  the  list.
  276. Instead,  the  invalid  newsgroups should be ignored.  For
  277. example,  suppose  site  A  subscribes  to   the   classes
  278. "btl.all"   and   "net.all",   and exchanges news articles
  279. with site B,  which  subscribes  to   "net.all"   but  not
  280. "btl.all".      Suppose   A   receives   an  article  with
  281. "Newsgroups: net.micro,btl.general".     This  article  is
  282. passed  on  to  B because B receives net.micro, but B does
  283. not receive btl.general.  A must leave the Newsgroup  line
  284. unchanged.   If  it  were  to  remove  "btl.general",  the
  285. edited header could  eventually  reenter  the    "btl.all" 
  286. class,  resulting in an article that is not shown to users
  287. subscribing  to   "btl.general".    Also,  followups  from
  288. outside  "btl.all"  would not be shown to such users.
  289.  
  290.  
  291.  
  292.  
  293.  
  294.  
  295.                           - 5 -
  296.  
  297.  
  298.  
  299. 2.1.6  Subject   The  Subject  line  (formerly    "Title")
  300. tells  what the article is about.  It should be suggestive
  301. enough of the contents of the article to enable  a  reader
  302. to  make  a  decision whether to read the article based on
  303. the  subject  alone.   If  the  article  is  submitted  in
  304. response  to another article (e.g., is a  "followup")  the
  305. default subject should  begin  with  the  four  characters
  306. "Re: "   and the References line is required.    (The user
  307. might wish to edit the subject of the  followup,  but  the
  308. default should begin with  "Re: ".)
  309.  
  310. 2.1.7  Message-ID  The Message-ID line gives the article a
  311. unique  identifier.  The same message ID may not be reused
  312. during the lifetime of any article with the  same  message
  313. ID.   (It  is recommended that no message ID be reused for
  314. at least two years.) Message ID's have the syntax
  315.  
  316.      "<" "string not containing blank or >" ">"
  317.  
  318. In order to conform to RFC 822, the Message-ID  must  have
  319. the format
  320.  
  321.      "<" "unique" "@" "full domain name" ">"
  322.  
  323. where  "full domain name"  is the full name of the host at
  324. which  the article entered the network, including a domain
  325. that host is in, and unique  is  any  string  of  printing
  326. ASCII  characters,  not  including  "<", ">", or "@".  For
  327. example,  the  "unique"   part   could   be   an   integer
  328. representing  a  sequence number for articles submitted to
  329. the network, or a short string derived from the  date  and
  330. time  the article was created.  For example, valid message
  331. ID for an article submitted from  site  ucbvax  in  domain
  332. Berkeley.ARPA   would   be  "<4123@ucbvax.Berkeley.ARPA>".
  333. Programmers are urged not to make  assumptions  about  the
  334. content  of  message  ID  fields  from other hosts, but to
  335. treat them as unknown character strings.  It is not  safe,
  336. for  example, to assume that a message ID will be under 14
  337. characters,  nor  that  it  is  unique  in  the  first  14
  338. characters.
  339.  
  340. The angle brackets are considered part of the message  ID.
  341. Thus,  in  references  to  the  message  ID,  such  as the
  342. ihave/sendme  and  cancel  control  messages,  the   angle
  343. brackets  are  included.   White  space  characters (e.g.,
  344. blank and tab) are not  allowed  in  a  message  ID.   All
  345. characters  between  the  angle  brackets must be printing
  346. ASCII characters.
  347.  
  348. 2.1.8  Path  This line shows the path the article took  to
  349. reach  the  current  system.   When  a system forwards the
  350. message, it should add its own name to the list of systems
  351. in  the  Path  line.   The  names  may be separated by any
  352. punctuation     character     or     characters,      thus
  353.  
  354.                           - 6 -
  355.  
  356.  
  357.  
  358. "cbosgd!mhuxj!mhuxt",    "cbosgd,  mhuxj,  mhuxt",     and
  359. "@cbosgd.uucp,@mhuxj.uucp,@mhuxt.uucp"      and       even
  360. "teklabs,   zehntel,   sri-unix@cca!decvax"    are   valid
  361. entries.  (The latter path indicates a message that passed
  362. through  decvax,  cca,  sri-unix, zehntel, and teklabs, in
  363. that order.) Additional names should  be  added  from  the
  364. left,  for  example,  the  most recently added name in the
  365. third example was  "teklabs".   Letters,  digits,  periods
  366. and  hyphens  are  considered  part  of  site names; other
  367. punctuation, including blanks, are considered separators.
  368.  
  369. Normally, the rightmost name  will  be  the  name  of  the
  370. originating  system.   However,  it is also permissible to
  371. include an extra entry on the right, which is the name  of
  372. the  sender.   This is for upward compatibility with older
  373. system.
  374.  
  375. The Path line is not used for replies, and should  not  be
  376. taken  as  a  mailing address.  It is intended to show the
  377. route the message  travelled  to  reach  the  local  site.
  378. There  are  several  uses for this information.  One is to
  379. monitor USENET routing for performance  reasons.   Another
  380. is  to  establish  a path to reach new sites.  Perhaps the
  381. most important is to cut down on redundant USENET  traffic
  382. by failing to forward a message to a site that is known to
  383. have already received it.   In  particular,  when  site  A
  384. sends  an article to site B, the Path line includes   "A",
  385. so that site B will not immediately send the article  back
  386. to  site  A.   The  site  name  each site uses to identify
  387. itself should be  the  same  as  the  name  by  which  its
  388. neighbors  know  it,  in  order  to make this optimization
  389. possible.
  390.  
  391. A site adds its own name to the front of a  path  when  it
  392. receives  a message from another site.  Thus, if a message
  393. with path A!X!Y!Z is passed from site A to site B, B  will
  394. add  its own name to the path when it receives the message
  395. from A, e.g., B!A!X!Y!Z.  If B then passes the message  on
  396. to  C,  the  message  sent  to  C  will  contain  the path
  397. B!A!X!Y!Z, and when C receives it, C  will  change  it  to
  398. C!B!A!X!Y!Z.
  399.  
  400. Special upward compatibility note: Since the From, Sender,
  401. and  Reply-To lines are in internet format, and since many
  402. USENET  sites  do  not  yet  have   mailers   capable   of
  403. understanding  internet  format,  it would break the reply
  404. capability to completely sever the connection between  the
  405. Path  header  and  the  reply  function.   Thus, sites are
  406. required to continue to keep the Path line  in  a  working
  407. reply  format  as much as possible, until January 1, 1984.
  408. It is recognized that the path is not always a valid reply
  409. string in older implementations, and no requirement to fix
  410. this problem is placed on implementations.   However,  the
  411.  
  412.  
  413.                           - 7 -
  414.  
  415.  
  416. existing  convention of placing the site name and an   "!" 
  417. at the front of the path, and of starting  the  path  with
  418. the  site  name,  an   "!",   and the user name, should be
  419. maintained at least until 1984.
  420.  
  421. 2.2  Optional Headers
  422.  
  423. 2.2.1  Reply-To  This line has the same  format  as  From.
  424. If present, mailed replies to the author should be sent to
  425. the name given here.  Otherwise, replies are mailed to the
  426. name  on the From line.  (This does not prevent additional
  427. copies from being sent to recipients named by the replier,
  428. or  on  To  or  Cc lines.) The full name may be optionally
  429. given, in parentheses, as in the From line.
  430.  
  431. 2.2.2  Sender  This field is present only if the submitter
  432. manually enters a From line.  It is intended to record the
  433. entity responsible  for  submitting  the  article  to  the
  434. network,  and  should  be  verified by the software at the
  435. submitting site.
  436.  
  437. For example, if John Smith is visiting CCA and  wishes  to
  438. post  an  article to the network, using friend Sarah Jones
  439. account, the message might read
  440.  
  441.      From: smith@ucbvax.uucp (John Smith)
  442.      Sender: jones@cca.arpa (Sarah Jones)
  443.  
  444. If a gateway  program  enters  a  mail  message  into  the
  445. network at site sri-unix, the lines might read
  446.  
  447.      From: John.Doe@CMU-CS-A.ARPA
  448.      Sender: network@sri-unix.ARPA
  449.  
  450. The primary purpose of this field is to be able  to  track
  451. down  articles to determine how they were entered into the
  452. network.  The  full  name  may  be  optionally  given,  in
  453. parentheses, as in the From line.
  454.  
  455. 2.2.3  Followup-To  This  line  has  the  same  format  as
  456. Newsgroups.   If  present,  follow-up  articles  are to be
  457. posted to the newsgroup(s) listed here.  If this  line  is
  458. not  present,  followups  are  posted  to the newsgroup(s)
  459. listed in the Newsgroups line, except  that  followups  to
  460. "net.general"  should instead go to  "net.followup".
  461.  
  462. 2.2.4  Date-Received  This line (formerly  "Received")  is
  463. in  a  legal  USENET date format.  It records the date and
  464. time that the article was  first  received  on  the  local
  465. system.   If  this  line  is  present  in an article being
  466. transmitted from one host to another, the  receiving  host
  467. should  ignore  it  and  replace it with the current date.
  468. Since this field is intended for local use only,  no  site
  469. is  required  to support it.  However, no site should pass
  470. this field on to another site unchanged.
  471.  
  472.                           - 8 -
  473.  
  474.  
  475.  
  476. 2.2.5  Expires  This line,  if  present,  is  in  a  legal
  477. USENET  date  format.  It specifies a suggested expiration
  478. date for the article.  If not present, the  local  default
  479. expiration date is used.
  480.  
  481. This field is intended to be used  to  clean  up  articles
  482. with  a  limited usefulness, or to keep important articles
  483. around for longer than  usual.   For  example,  a  message
  484. announcing  an  upcoming  seminar could have an expiration
  485. date the day after the seminar, since the message  is  not
  486. useful  after the seminar is over.  Since local sites have
  487. local  policies  for  expiration  of  news  (depending  on
  488. available disk space, for instance), users are discouraged
  489. from providing expiration dates for articles unless  there
  490. is  a  natural  expiration date associated with the topic.
  491. System software should  almost  never  provide  a  default
  492. Expires line.  Leave it out and allow local policies to be
  493. used unless there is a good reason not to.
  494.  
  495. 2.2.6  References  This field lists the  message  ID's  of
  496. any articles prompting the submission of this article.  It
  497. is required for all follow-up articles, and forbidden when
  498. a new subject is raised.  Implementations should provide a
  499. follow-up command, which allows a user to post a follow-up
  500. article.   This  command  should  generate  a Subject line
  501. which is the same as the original article, except that  if
  502. the original subject does not begin with "Re: " or "re: ",
  503. the  four  characters   "Re: "  are  inserted  before  the
  504. subject.   If  there is no References line on the original
  505. header, the References line should contain the message  ID
  506. of  the  original  article (including the angle brackets).
  507. If the original article does have a References  line,  the
  508. followup  article should have a References line containing
  509. the text of the original References line, a blank, and the
  510. message ID of the original article.
  511.  
  512. The purpose of the References header is to allow  articles
  513. to  be  grouped  into  conversations by the user interface
  514. program.  This allows conversations within a newsgroup  to
  515. be  kept  together,  and  potentially users might shut off
  516. entire conversations without unsubscribing to a newsgroup.
  517. User  interfaces  may not make use of this header, but all
  518. automatically  generated  followups  should  generate  the
  519. References line for the benefit of systems that do use it,
  520. and manually generated followups (e.g. typed in well after
  521. the  original  article  has  been  printed by the machine)
  522. should be encouraged to include them as well.
  523.  
  524. 2.2.7  Control  If an article contains a Control line, the
  525. article  is  a control message.  Control messages are used
  526. for communication among USENET host machines,  not  to  be
  527. read  by  users.   Control messages are distributed by the
  528. same newsgroup mechanism as ordinary messages.   The  body
  529. of the Control header line is the message to the host.
  530.  
  531.                           - 9 -
  532.  
  533.  
  534.  
  535. For  upward  compatibility,  messages   that   match   the
  536. newsgroup   pattern    "all.all.ctl"    should   also   be
  537. interpreted as control messages.  If no Control: header is
  538. present  on  such  messages,  the  subject  is used as the
  539. control message.  However, messages on newsgroups matching
  540. this pattern do not conform to this standard.
  541.  
  542. 2.2.8  Distribution   This  line  is  used  to  alter  the
  543. distribution scope of the message.  It has the same format
  544. as the Newsgroups  line.   User  subscriptions  are  still
  545. controlled  by  Newsgroups, but the message is sent to all
  546. systems subscribing to the newsgroups on the  Distribution
  547. line instead of the Newsgroups line.  Thus, a car for sale
  548. in New Jersey might have headers including
  549.  
  550.      Newsgroups: net.auto,net.wanted
  551.      Distribution: nj.all
  552.  
  553. so that  it  would  only  go  to  persons  subscribing  to
  554. net.auto  or  net.wanted within New Jersey.  The intent of
  555. this header is to further restrict the distribution  of  a
  556. newsgroup, not to increase it.  A local newsgroup, such as
  557. nj.crazy-eddie, will probably not be propagated  by  sites
  558. outside  New  Jersey  that do not show such a newsgroup as
  559. valid.  Wildcards in newsgroup names in  the  Distribution
  560. line are allowed.  Followup articles should default to the
  561. same Distribution line as the original  article,  but  the
  562. user  can change it to a more limited one, or escalate the
  563. distribution if it was originally restricted  and  a  more
  564. widely distributed reply is appropriate.
  565.  
  566. 2.2.9  Organization  The text of  this  line  is  a  short
  567. phrase  describing  the  organization  to which the sender
  568. belongs, or to which the machine belongs.  The  intent  of
  569. this  line  is  to  help  identify  the person posting the
  570. message, since site names are often cryptic enough to make
  571. it  hard  to  recognize the organization by the electronic
  572. address.
  573.  
  574.  
  575. 3.  Control Messages
  576.  
  577. This section lists the control messages currently defined.
  578. The  body  of  the  Control header is the control message.
  579. Messages are a sequence of zero or more  words,  separated
  580. by  white  space  (blanks or tabs).  The first word is the
  581. name  of  the  control  message,   remaining   words   are
  582. parameters  to  the  message.  The remainder of the header
  583. and the body of the message are also potential parameters;
  584. for  example,  the  From  line might suggest an address to
  585. which a response is to be mailed.
  586.  
  587.  
  588.  
  589.  
  590.                           - 10 -
  591.  
  592.  
  593.  
  594. Implementors  and  administrators  may  choose  to   allow
  595. control  messages  to  be automatically carried out, or to
  596. queue  them  for  manual  processing.   However,  manually
  597. processed messages should be dealt with promptly.
  598.  
  599. 3.1  Cancel
  600.  
  601.      cancel <message ID>
  602.  
  603. If an article with the given message ID is present on  the
  604. local  system,  the  article is cancelled.  This mechanism
  605. allows a user to cancel an article after the  article  has
  606. been distributed over the network.
  607.  
  608. Only the author of the article or the local super user  is
  609. allowed  to  use  this  message.  The verified sender of a
  610. message is the Sender  line,  or  if  no  Sender  line  is
  611. present, the From line.  The verified sender of the cancel
  612. message must be the same as  either  the  Sender  or  From
  613. field  of  the original message.  A verified sender in the
  614. cancel message is allowed to match an unverified  From  in
  615. the original message.
  616.  
  617. 3.2  Ihave/Sendme
  618.  
  619.      ihave <message ID list> <remotesys>
  620.      sendme <message ID list> <remotesys>
  621.  
  622. This message is part  of  the   "ihave/sendme"   protocol,
  623. which  allows  one  site  (say  "A")  to tell another site
  624. ("B")  that  a particular message has been received on  A.
  625. Suppose  that site A receives article  "ucbvax.1234",  and
  626. wishes to transmit the article to site  B.   A  sends  the
  627. control  message   "ihave  ucbvax.1234  A"   to site B (by
  628. posting it to newsgroup  "to.B").   B  responds  with  the
  629. control  message   "sendme  ucbvax.1234  B"  (on newsgroup
  630. to.A) if it has not already received  the  article.   Upon
  631. receiving the Sendme message, A sends the article to B.
  632.  
  633. This protocol can be used to cut down on redundant traffic
  634. between  sites.  It is optional and should be used only if
  635. the particular situation makes it worthwhile.  Frequently,
  636. the  outcome  is  that,  since  most original messages are
  637. short, and since there is a high overhead to start sending
  638. a  new  message  with  UUCP,  it costs as much to send the
  639. Ihave as it would cost to send the article itself.
  640.  
  641. One possible solution to this overhead problem is to batch
  642. requests.   Several  message  ID's  may  be  announced  or
  643. requested in one message.  If no message ID's  are  listed
  644. in  the control message, the body of the message should be
  645. scanned for message ID's, one per line.
  646.  
  647.  
  648.  
  649.                           - 11 -
  650.  
  651.  
  652.  
  653. 3.3  Newgroup
  654.  
  655.      newgroup <groupname>
  656.  
  657. This control message creates a new newsgroup with the name
  658. given.  Since no articles may be posted or forwarded until
  659. a newsgroup is created, this message is required before  a
  660. newsgroup  can  be  used.   The  body  of  the  message is
  661. expected to be a short paragraph describing  the  intended
  662. use of the newsgroup.
  663.  
  664. 3.4  Rmgroup
  665.  
  666.      rmgroup <groupname>
  667.  
  668. This message removes a  newsgroup  with  the  given  name.
  669. Since  the  newsgroup  is  removed  from every site on the
  670. network, this  command  should  be  used  carefully  by  a
  671. responsible administrator.
  672.  
  673. 3.5  Sendsys
  674.  
  675.      sendsys (no arguments)
  676.  
  677. The   "sys"   file,  listing  all  neighbors   and   which
  678. newsgroups  are  sent  to each neighbor, will be mailed to
  679. the author of the control message (Reply-to,  if  present,
  680. otherwise  From).   This  information is considered public
  681. information, and it is  a  requirement  of  membership  in
  682. USENET  that  this  information  be  provided  on request,
  683. either automatically in response to this control  message,
  684. or  manually,  by mailing the requested information to the
  685. author of the message.  This information is used  to  keep
  686. the  map  of  USENET  up  to  date, and to determine where
  687. netnews is sent.
  688.  
  689. The format of the file mailed back to the author should be
  690. the same as that of the  "sys"  file.  This format has one
  691. line per neighboring site (plus one  line  for  the  local
  692. site),  containing four colon separated fields.  The first
  693. field has the site name of the neighbor, the second  field
  694. has  a newsgroup pattern describing the newsgroups sent to
  695. the neighbor.  The third and fourth fields are not defined
  696. by this standard.  A sample response:
  697.  
  698.      From cbosgd!mark  Sun Mar 27 20:39:37 1983
  699.      Subject: response to your sendsys request
  700.      To: mark@cbosgd.UUCP
  701.  
  702.  
  703.  
  704.  
  705.  
  706.  
  707.  
  708.                           - 12 -
  709.  
  710.  
  711.      Responding-System: cbosgd.UUCP
  712.      cbosgd:osg,cb,btl,bell,net,fa,to,test
  713.      ucbvax:net,fa,to.ucbvax:L:
  714.      cbosg:net,fa,bell,btl,cb,osg,to.cbosg:F:/usr/spool/outnews/cbosg
  715.      cbosgb:osg,to.cbosgb:F:/usr/spool/outnews/cbosgb
  716.      sescent:net,fa,bell,btl,cb,to.sescent:F:/usr/spool/outnews/sescent
  717.      npois:net,fa,bell,btl,ug,to.npois:F:/usr/spool/outnews/npois
  718.      mhuxi:net,fa,bell,btl,ug,to.mhuxi:F:/usr/spool/outnews/mhuxi
  719.  
  720. 3.6  Senduuname
  721.  
  722.      senduuname      (no arguments)
  723.  
  724. The  "uuname"  program is run, and the output is mailed to
  725. the  author  of the control message (Reply-to, if present,
  726. otherwise From).  This program lists all uucp neighbors of
  727. the  local site.  This information is used to make maps of
  728. the UUCP network.  The sys file is not  the  same  as  the
  729. UUCP   L.sys   file.   The  L.sys  file  should  never  be
  730. transmitted to another party without the  consent  of  the
  731. sites whose passwords are listed therein.
  732.  
  733. It is optional for a site  to  provide  this  information.
  734. Some  reply  should  be  made to the author of the control
  735. message, so that a transmission error won't be blamed.  It
  736. is  also  permissible for a site to run the uuname program
  737. (or in some other way determine the  uucp  neighbors)  and
  738. edit  the output, either automatically or manually, before
  739. mailing the reply back to the  author.   The  file  should
  740. contain  one  site  per line, beginning with the uucp site
  741. name.  Additional information may be  included,  separated
  742. from the site name by a blank or tab.  The phone number or
  743. password for the site should NOT be included, as the reply
  744. is  considered  to  be  in the public domain.  (The uuname
  745. program will send only the site name and  not  the  entire
  746. contents  of  the  L.sys  file,  thus,  phone  numbers and
  747. passwords are not transmitted.)
  748.  
  749. The purpose of this message is to  generate  and  maintain
  750. UUCP mail routing maps.  Thus, connections over which mail
  751. can be sent using the site!user syntax should be included,
  752. regardless  of whether the link is actually a UUCP link at
  753. the physical level.  If a mail router should  use  it,  it
  754. should   be  included.   Since  all  information  sent  in
  755. response to this message is optional, sites  are  free  to
  756. edit  the  list,  deleting secret or private links they do
  757. not wish to publicise.
  758.  
  759. 3.7  Version
  760.  
  761.      version (no arguments)
  762.  
  763. The name and version of the software running on the  local
  764. system  is  to be mailed back to the author of the article
  765. (Reply-to if present, otherwise From).
  766.  
  767.                           - 13 -
  768.  
  769.  
  770.  
  771. 4.  Transmission Methods
  772.  
  773. USENET is not a physical network,  but  rather  a  logical
  774. network  resting  on  top  of  several  existing  physical
  775. networks.  These networks include, but are not limited to,
  776. UUCP,  the ARPANET, an Ethernet, the BLICN network, an NSC
  777. Hyperchannel, and a Berknet.  What is  important  is  that
  778. two  neighboring systems on USENET have some method to get
  779. a new article, in the format listed here, from one  system
  780. to  the other, and once on the receiving system, processed
  781. by the netnews software on that system.  (On UNIX systems,
  782. this  usually  means  the  "rnews"  program being run with
  783. the article on the standard input.)
  784.  
  785. It is not  a  requirement  that  USENET  sites  have  mail
  786. systems  capable  of  understanding the ARPA Internet mail
  787. syntax, but  it  is  strongly  recommended.   Since  From,
  788. Reply-To,  and  Sender  lines  use  the  Internet  syntax,
  789. replies  will  be  difficult  or  impossible  without   an
  790. internet  mailer.   A  site without an internet mailer can
  791. attempt to use the Path header line for replies, but  this
  792. field  is not guaranteed to be a working path for replies.
  793. In any event,  any  site  generating  or  forwarding  news
  794. messages must have an internet address that allows them to
  795. receive mail from sites with internet  mailers,  and  they
  796. must include their internet address on their From line.
  797.  
  798. 4.1  Remote Execution
  799.  
  800. Some networks permit direct remote command execution.   On
  801. these  networks,  news  may  be  forwarded by spooling the
  802. rnews command with the article on the standard input.  For
  803. example,  if  the remote system is called  "remote",  news
  804. would be sent over a UUCP link with the  command   "uux  -
  805. remote!rnews",   and on a Berknet,   "net -mremote rnews".
  806. It is important that the article be sent  via  a  reliable
  807. mechansim, normally involving the possibility of spooling,
  808. rather than direct real-time remote  execution.   This  is
  809. because,  if the remote system is down, a direct execution
  810. command  will  fail,  and  the  article  will   never   be
  811. delivered.   If the article is spooled, it will eventually
  812. be delivered when both systems are up.
  813.  
  814. 4.2  Transfer by Mail
  815.  
  816. On some systems, direct remote spooled  execution  is  not
  817. possible.   However, most systems support electronic mail,
  818. and a news article can be sent as mail.  One  approach  is
  819. to  send  a  mail  message  which is identical to the news
  820. message: the mail headers are the news  headers,  and  the
  821. mail  body  is the news body.  By convention, this mail is
  822. sent to the user  "newsmail"  on the remote machine.
  823.  
  824.  
  825.  
  826.                           - 14 -
  827.  
  828.  
  829.  
  830. One problem with  this  method  is  that  it  may  not  be
  831. possible to convince the mail system that the From line of
  832. the message is valid, since the mail message was generated
  833. by  a program on a system different from the source of the
  834. news article.  Another  problem  is  that  error  messages
  835. caused  by  the  mail  transmission  would  be sent to the
  836. originator of the news article, who has  no  control  over
  837. news  transmission  between two cooperating hosts and does
  838. not know who  to  contact.   Transmission  error  messages
  839. should  be directed to a responsible contact person on the
  840. sending machine.
  841.  
  842. A solution to this problem  is  to  encapsulate  the  news
  843. article  into a mail message, such that the entire article
  844. (headers and body) are  part  of  the  body  of  the  mail
  845. message.  The convention here is that such mail is sent to
  846. user  "rnews"  on the remote system.  A mail message  body
  847. is  generated  by prepending the letter  "N"  to each line
  848. of the news article,  and  then  attaching  whatever  mail
  849. headers  are convenient to generate.  The N's are attached
  850. to prevent any special lines  in  the  news  article  from
  851. interfering  with  mail  transmission,  and to prevent any
  852. extra lines inserted by the mailer (headers, blank  lines,
  853. etc.)  from  becoming part of the news article.  A program
  854. on the  receiving  machine  receives  mail  to    "rnews",
  855. extracting  the  article itself and invoking the   "rnews" 
  856. program.  An example in this format might look like this:
  857.  
  858.      Date: Monday, 3-Jan-83 08:33:47 MST
  859.      From: news@cbosgd.UUCP
  860.      Subject: network news article
  861.      To: rnews@npois.UUCP
  862.  
  863.      NRelay-Version: B 2.10  2/13/83 cbosgd.UUCP
  864.      NPosting-Version: B 2.9 6/21/82 sask.UUCP
  865.      NPath: cbosgd!mhuxj!harpo!utah-cs!sask!derek
  866.      NFrom: derek@sask.UUCP (Derek Andrew)
  867.      NNewsgroups: net.test
  868.      NSubject: necessary test
  869.      NMessage-ID: <176@sask.UUCP>
  870.      NDate: Monday, 3-Jan-83 00:59:15 MST
  871.      N
  872.      NThis really is a test.  If anyone out there more than 6
  873.      Nhops away would kindly confirm this note I would
  874.      Nappreciate it.  We suspect that our news postings
  875.      Nare not getting out into the world.
  876.      N
  877.  
  878. Using mail solves the spooling problem,  since  mail  must
  879. always  be  spooled  if  the  destination  host  is  down.
  880. However, it adds more overhead to the transmission process
  881. (to  encapsulate  and  extract  the  article) and makes it
  882. harder for software to give different priorities  to  news
  883. and mail.
  884.  
  885.                           - 15 -
  886.  
  887.  
  888.  
  889. 4.3  Batching
  890.  
  891. Since news articles are usually short, and since  a  large
  892. number  of  messages are often sent between two sites in a
  893. day, it may make sense to batch  news  articles.   Several
  894. articles  can  be  combined  into one large article, using
  895. conventions agreed upon in advance by the two sites.   One
  896. such  batching  scheme is described here; its use is still
  897. considered experimental.
  898.  
  899. News articles are combined into a script, separated  by  a
  900. header of the form:
  901.  
  902.      ##! rnews 1234
  903.  
  904. where 1234 is the length, in bytes, of the article.   Each
  905. such  line  is followed by an article containing the given
  906. number of bytes.  (The newline at the end of each line  of
  907. the  article  is counted as one byte, for purposes of this
  908. count, even if it is stored as CRLF.) For example, a batch
  909. of articles might look like this:
  910.  
  911.       #! rnews 374
  912.       Relay-Version: version B 2.10 2/13/83; site cbosgd.UUCP
  913.       Posting-Version: version B 2.10 2/13/83; site eagle.UUCP
  914.       Path: cbosgd!mhuxj!mhuxt!eagle!jerry
  915.       From: jerry@eagle.uucp (Jerry Schwarz)
  916.       Newsgroups: net.general
  917.       Subject: Usenet Etiquette -- Please Read
  918.       Message-ID: <642@eagle.UUCP>
  919.       Date: Friday, 19-Nov-82 16:14:55 EST
  920.  
  921.       Here is an important message about USENET Etiquette.
  922.       #! rnews 378
  923.       Relay-Version: version B 2.10 2/13/83; site cbosgd.UUCP
  924.       Posting-Version: version B 2.10 2/13/83; site eagle.UUCP
  925.       Path: cbosgd!mhuxj!mhuxt!eagle!jerry
  926.       From: jerry@eagle.uucp (Jerry Schwarz)
  927.       Newsgroups: net.followup
  928.       Subject: Notes on Etiquette article
  929.       Message-ID: <643@eagle.UUCP>
  930.       Date: Friday, 19-Nov-82 17:24:12 EST
  931.  
  932.       There was something I forgot to mention in the last message.
  933.  
  934. Batched news is recognized because the first character  in
  935. the  message  is  "#".   The message is then passed to the
  936. unbatcher for interpretation.
  937.  
  938.  
  939.  
  940.  
  941.  
  942.  
  943.  
  944.                           - 16 -
  945.  
  946.  
  947. 5.  The News Propagation Algorithm
  948.  
  949. This section describes the overall scheme  of  USENET  and
  950. the algorithm followed by sites in propagating news to the
  951. entire  network.   Since  all  sites   are   affected   by
  952. incorrectly  formatted articles and by propagation errors,
  953. it is important for the method to be standardized.
  954.  
  955. USENET is a directed graph.  Each node in the graph  is  a
  956. host  computer,  each  arc  in the graph is a transmission
  957. path from one host to another host.  Each arc is  labelled
  958. with  a  newsgroup  pattern,  specifying  which  newsgroup
  959. classes are forwarded along  that  link.   Most  arcs  are
  960. bidirectional,  that  is,  if  site  A  sends  a  class of
  961. newsgroups to site B, then site B usually sends  the  same
  962. class  of  newsgroups to site A.  This bidirectionality is
  963. not, however, required.
  964.  
  965. USENET is made up of many subnetworks.  Each subnet has  a
  966. name,  such  as   "net"   or   "btl".   The special subnet
  967. "net"   is defined to be USENET, although the union of all
  968. subnets may be a superset of USENET (because of sites that
  969. get local newsgroup classes but do not get net.all).  Each
  970. subnet  is  a connected graph, that is, a path exists from
  971. every  node  to  every  other  node  in  the  subnet.   In
  972. addition,  the  entire graph is (theoretically) connected.
  973. (In practice, some political  considerations  have  caused
  974. some sites to be unable to post articles reaching the rest
  975. of the network.)
  976.  
  977. An  article  is  posted  on  one  machine  to  a  list  of
  978. newsgroups.    That   machine  accepts  it  locally,  then
  979. forwards it to all its neighbors that are interested in at
  980. least one of the newsgroups of the message.  (Site A deems
  981. site  B  to  be   "interested"   in  a  newsgroup  if  the
  982. newsgroup  matches  the  pattern  on  the arc from A to B.
  983. This pattern is stored in a file on the  A  machine.)  The
  984. sites  receiving  the  incoming article examine it to make
  985. sure they really want the article, accept it locally,  and
  986. then  in  turn forward the article to all their interest
  987. neighbors.   This  process  continues  until  the   entire
  988. network has seen the article.
  989.  
  990. An important part of the algorithm is  the  prevention  of
  991. loops.   The  above  process would cause a message to loop
  992. along a cycle forever.  In particular, when site  A  sends
  993. an  article to site B, site B will send it back to site A,
  994. which will send it to site B, and so on.  One solution  to
  995. this  is  the history mechanism.  Each site keeps track of
  996. all articles  it  has  seen  (by  their  message  ID)  and
  997. whenever an article comes in that it has already seen, the
  998. incoming article is discarded immediately.  This  solution
  999. is   sufficient   to   prevent   loops,   but   additional
  1000. optimizations can be made to  avoid  sending  articles  to
  1001. sites that will simply throw them away.
  1002.  
  1003.                           - 17 -
  1004.  
  1005.  
  1006.  
  1007. One optimization is that an article should never  be  sent
  1008. to  a machine listed in the Path line of the header.  When
  1009. a machine name is in the Path line, the message  is  known
  1010. to  have passed through the machine.  Another optimization
  1011. is that, if the article originated on site A, then site  A
  1012. has   already  seen  the  article.   (Origination  can  be
  1013. determined by the Posting-Version line.)
  1014.  
  1015. Thus, if an article is posted to  newsgroup    "net.misc",
  1016. it  will match the pattern  "net.all"  (where  "all"  is a
  1017. metasymbol that matches any string), and will be forwarded
  1018. to  all  sites that subscribe to net.all (as determined by
  1019. what their neighbors send them).  These sites make up  the
  1020. "net"   subnetwork.   An article posted to   "btl.general" 
  1021. will reach all sites receiving  "btl.all",  but  will  not
  1022. reach  sites  that do not get  "btl.all".   In effect, the
  1023. articles  reaches  the   "btl"   subnetwork.   An  article
  1024. posted  to newsgroups  "net.micro,btl.general"  will reach
  1025. all sites subscribing to either of the two classes.
  1026.  
  1027.  
  1028.  
  1029.  
  1030.  
  1031.  
  1032.  
  1033.  
  1034.  
  1035.  
  1036.  
  1037.  
  1038.  
  1039.  
  1040.  
  1041.  
  1042.  
  1043.  
  1044.  
  1045.  
  1046.  
  1047.  
  1048.  
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.                           - 18 -
  1060.