home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / bsd_srcs / share / doc / smm / 10.newsop / standard.mn < prev    next >
Encoding:
Text File  |  1991-04-17  |  39.7 KB  |  1,457 lines

  1. .\" Copyright (c) 1986 The Regents of the University of California.
  2. .\" All rights reserved.
  3. .\"
  4. .\" Redistribution and use in source and binary forms, with or without
  5. .\" modification, are permitted provided that the following conditions
  6. .\" are met:
  7. .\" 1. Redistributions of source code must retain the above copyright
  8. .\"    notice, this list of conditions and the following disclaimer.
  9. .\" 2. Redistributions in binary form must reproduce the above copyright
  10. .\"    notice, this list of conditions and the following disclaimer in the
  11. .\"    documentation and/or other materials provided with the distribution.
  12. .\" 3. All advertising materials mentioning features or use of this software
  13. .\"    must display the following acknowledgement:
  14. .\"    This product includes software developed by the University of
  15. .\"    California, Berkeley and its contributors.
  16. .\" 4. Neither the name of the University nor the names of its contributors
  17. .\"    may be used to endorse or promote products derived from this software
  18. .\"    without specific prior written permission.
  19. .\"
  20. .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  21. .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  22. .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  23. .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  24. .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  25. .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  26. .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  27. .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  28. .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  29. .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  30. .\" SUCH DAMAGE.
  31. .\"
  32. .\"    @(#)standard.mn    5.2 (Berkeley) 4/17/91
  33. .\"
  34. .ds h0 "Standard for Interchange of USENET Messages
  35. .ds h1
  36. .ds h2 %
  37. .ds f0 "\*(vr
  38. .ds f1
  39. .ds f2 "January 17, 1986
  40. .mt
  41. Standard for Interchange of USENET Messages
  42. .au
  43. Mark R. Horton
  44. .ai
  45. Bell Laboratories
  46. Columbus, OH  43213
  47. .au
  48. Revised for 2.10.3 by Rick Adams
  49. .hn
  50. Introduction
  51. .pg
  52. This document defines the standard format for the interchange
  53. of network Nnws articles among USENET sites.
  54. It describes the format for articles themselves,
  55. and gives partial standards for transmission of news.
  56. The news transmission is not entirely standardized
  57. in order to give a good deal of flexibility
  58. to the individual hosts to choose transmission hardware and software,
  59. whether to batch news,
  60. and so on.
  61. .pg
  62. There are five sections to this document.
  63. Section two section defines the format.
  64. Section three defines the valid control messages.
  65. Section four specifies some valid transmission methods.
  66. Section five describes the overall news propagation algorithm.
  67. .hn
  68. Article Format
  69. .pg
  70. The primary consideration in choosing an article format is
  71. that it fit in with existing tools as well as possible.
  72. Existing tools include both implementations of mail and news.
  73. (The
  74. .i notesfiles
  75. system from the University of Illinois
  76. is considered a news implementation.)
  77. A standard format for mail messages has existed for many years on the ARPANET,
  78. and this format meets most of the needs of USENET.
  79. Since the ARPANET format is extensible,
  80. extensions to meet the additional needs of USENET
  81. are easily made within the ARPANET standard.
  82. Therefore,
  83. the rule is adopted that all USENET news articles
  84. must be formatted as valid ARPANET mail messages,
  85. according to the ARPANET standard RFC 822.
  86. This standard is more restrictive than the ARPANET standard,
  87. placing additional requirements on each article
  88. and forbidding use of certain ARPANET features.
  89. However,
  90. it should always be possible to use a tool
  91. expecting an ARPANET message to process a news article.
  92. In any situation where this standard conflicts with the ARPANET standard,
  93. RFC 822 should be considered correct and this standard in error.
  94. .pg
  95. An example message is included to illustrate the fields.
  96. .sd
  97. From: jerry@eagle.uucp (Jerry Schwarz)
  98. Path: cbosgd!mhuxj!mhuxt!eagle!jerry
  99. Newsgroups: net.general
  100. Subject: Usenet Etiquette -- Please Read
  101. Message-ID: <642@eagle.UUCP>
  102. Date: Friday, 19 Nov 82 16:14:55 EST
  103. Followup-To: net.news
  104. Expires: Saturday, 1 Jan 83 00:00:00 EST
  105. Organization: Bell Labs, Murray Hill
  106.  
  107. The body of the article comes here, after a blank line.
  108. .ed
  109. Here is an example of a message in the old format
  110. (before the existence of this standard).
  111. It is recommended that implementations also accept articles
  112. in this format to ease upward conversion.
  113. .sd
  114. From: cbosgd!mhuxj!mhuxt!eagle!jerry (Jerry Schwarz)
  115. Newsgroups: net.general
  116. Title: Usenet Etiquette -- Please Read
  117. Article-I.D.: eagle.642
  118. Posted: Fri Nov 19 16:14:55 1982
  119. Received: Fri Nov 19 16:59:30 1982
  120. Expires: Mon Jan  1 00:00:00 1990
  121.  
  122. The body of the article comes here, after a blank line.
  123. .ed
  124. Some news systems transmit news in the
  125. .pa A
  126. format,
  127. which looks like this:
  128. .sd
  129. Aeagle.642
  130. net.general
  131. cbosgd!mhuxj!mhuxt!eagle!jerry
  132. Fri Nov 19 16:14:55 1982
  133. Usenet Etiquette - Please Read
  134. The body of the article comes here, with no blank line.
  135. .ed
  136. .pg
  137. An article consists of several header lines,
  138. followed by a blank line,
  139. followed by the body of the message.
  140. The header lines consist of a keyword,
  141. a colon,
  142. a blank,
  143. and some additional information.
  144. This is a subset of the ARPANET standard,
  145. simplified to allow simpler software to handle it.
  146. The
  147. .hf From
  148. line may optionally include a full name,
  149. in the format above,
  150. or use the ARPANET angle bracket syntax.
  151. To keep the implementations simple,
  152. other formats
  153. (for example,
  154. with part of the machine address after the close parenthesis)
  155. are not allowed.
  156. The ARPANET convention of continuation header lines
  157. (beginning with a blank or tab)
  158. is allowed.
  159. .pg
  160. Certain headers are required,
  161. and certain other headers are optional.
  162. Any unrecognized headers are allowed,
  163. and will be passed through unchanged.
  164. The required headers are
  165. .hf From ,
  166. .hf Date ,
  167. .hf Newsgroups ,
  168. .hf Subject ,
  169. .hf Message-ID ,
  170. and
  171. .hf Path .
  172. The optional headers are
  173. .hf Followup-To ,
  174. .hf Expires ,
  175. .hf Reply-To ,
  176. .hf Sender ,
  177. .hf References ,
  178. .hf Control ,
  179. .hf Distribution ,
  180. .hf Keywords ,
  181. .hf Summary ,
  182. and
  183. .hf Organization .
  184. .hn 2
  185. Required Headers
  186. .hn 3
  187. From
  188. .pg
  189. The
  190. .hf From
  191. line contains the electronic mailing address of the person who sent the message,
  192. in the ARPA internet syntax.
  193. It may optionally also contain the full name of the person,
  194. in parentheses,
  195. after the electronic address.
  196. The electronic address is the same as the entity responsible
  197. for originating the article,
  198. unless the
  199. .hf Sender
  200. header is present,
  201. in which case the
  202. .hf From
  203. header might not be verified.
  204. Note that in all site and domain names,
  205. upper and lower case are considered the same,
  206. thus
  207. .cf mark@cbosgd.UUCP ,
  208. .cf mark@cbosgd.uucp ,
  209. and
  210. .cf mark@CBosgD.UUcp
  211. are all equivalent.
  212. User names may or may not be case sensitive, for example,
  213. .cf Billy@cbosgd.UUCP
  214. might be different from
  215. .cf BillY@cbosgd.UUCP .
  216. Programs should avoid changing the case of electronic addresses
  217. when forwarding news or mail.
  218. .pg
  219. RFC 822 specifies that all text in parentheses is to be interpreted as a comment.
  220. It is common in ARPANET mail to place the full name of the user
  221. in a comment at the end of the
  222. .hf From
  223. line.
  224. This standard specifies a more rigid syntax.
  225. The full name is not considered a comment,
  226. but an optional part of the header line.
  227. Either the full name is omitted, 
  228. or it appears in parentheses after the electronic address
  229. of the person posting the article,
  230. or it appears before an electronic address enclosed in angle brackets.
  231. Thus,
  232. the three permissible forms are:
  233. .sd
  234. From: mark@cbosgd.UUCP
  235. From: mark@cbosgd.UUCP (Mark Horton)
  236. From: Mark Horton <mark@cbosgd.UUCP>
  237. .ed
  238. Full names may contain any printing ASCII characters from space through tilde,
  239. with the exceptions that they may not contain
  240. \&\*(lq(\*(rq (left parenthesis),
  241. \&\*(lq)\*(rq (right parenthesis),
  242. \&\*(lq<\*(rq (left angle bracket),
  243. or \*(lq>\*(rq (right angle bracket).
  244. Additional restrictions may be placed on full names by the mail standard,
  245. in particular,
  246. the characters
  247. \&\*(lq,\*(rq (comma),
  248. \&\*(lq:\*(rq (colon),
  249. and \*(lq;\*(rq (semicolon) are inadvisable in full names.
  250. .hn 3
  251. Date
  252. .pg
  253. The
  254. .hf Date
  255. line (formerly
  256. .hf Posted )
  257. is the date,
  258. in a format that must be acceptable both to the ARPANET
  259. and to the
  260. .i getdate (3)
  261. routine,
  262. that the article was originally posted to the network.
  263. This date remains unchanged as the article is propagated
  264. throughout the network.
  265. One format that is acceptable to both is
  266. .sd c
  267. \f2Wdy\fP, \f2DD\fP\ \f2Mon\fP\ \f2YY\fP \f2HH\fP:\f2MM\fP:\f2SS\fP \f2TIMEZONE\fP
  268. .ed
  269. Several examples of valid dates appear in the sample
  270. article above.
  271. Note in particular that
  272. .i ctime (3)
  273. format:
  274. .sd c
  275. \f2Wdy\fP \f2Mon\fP \f2DD\fP \f2HH\fP:\f2MM\fP:\f2SS\fP \f2YYYY\fP
  276. .ed
  277. is
  278. .i not
  279. acceptable because it is not a valid ARPANET date.
  280. However,
  281. since older software still generates this format,
  282. news implementations are encouraged to accept this format
  283. and translate it into an acceptable format.
  284. .pg
  285. The contents of the
  286. .i TIMEZONE
  287. field is currently subject to revision.
  288. Eventually,
  289. we hope to accept all possible worldwide time zone abbreviations,
  290. including the usual American zones
  291. (PST,
  292. PDT,
  293. MST,
  294. MDT,
  295. CST,
  296. CDT,
  297. EST,
  298. EDT),
  299. the other North American zones
  300. (Bering through Newfoundland),
  301. European zones,
  302. Australian zones,
  303. and so on.
  304. Lacking a complete list at present
  305. (and unsure if an unambiguous list exists),
  306. authors of software are encouraged to keep this code flexible,
  307. and in particular not to assume
  308. that time zone names are exactly three letters long.
  309. Implementations are free to edit this field,
  310. keeping the time the same,
  311. but changing the time zone
  312. (with an appropriate adjustment to the local time shown)
  313. to a known time zone.
  314. It is recommended that times in message headers be transmitted in GMT
  315. and displayed in the local time zone.
  316. .hn 3
  317. Newsgroups
  318. .pg
  319. The
  320. .hf Newsgroups
  321. line specifies which newsgroup or newsgroups the article belongs in.
  322. Multiple newsgroups may be specified, separated by a comma.
  323. Newsgroups specified must all be the names of existing newsgroups,
  324. as no new newsgroups will be created by simply posting to them.
  325. .pg
  326. Wildcards
  327. .i e\f1.\fPg ., (
  328. the word
  329. .ng all
  330. are never allowed in a
  331. .hf Newsgroups
  332. line.
  333. For example,
  334. a newsgroup
  335. .ng net.all
  336. is illegal,
  337. although a newsgroup name
  338. .ng net.sport.football
  339. is permitted.)
  340. .pg
  341. If an article is received with a
  342. .hf Newsgroups
  343. line listing some valid newsgroups and some invalid newsgroups,
  344. a site should not remove invalid newsgroups from the list.
  345. Instead,
  346. the invalid newsgroups should be ignored.
  347. For example,
  348. suppose site
  349. .cn A
  350. subscribes to the classes
  351. .ng btl.all
  352. and 
  353. .ng net.all ,
  354. and exchanges news articles with site
  355. .cn B ,
  356. which subscribes to
  357. .ng net.all
  358. but not
  359. .ng btl.all .
  360. Suppose
  361. .cn A
  362. receives an article with
  363. .sd c
  364. Newsgroups: net.micro,btl.general
  365. .ed
  366. This article is passed on to
  367. .cn B
  368. because
  369. .cn B
  370. receives
  371. .ng net.micro ,
  372. but
  373. .cn B
  374. does not receive
  375. .ng btl.general .
  376. .cn A
  377. must leave the
  378. .hf Newsgroups
  379. line unchanged.
  380. If it were to remove
  381. .ng btl.general ,
  382. the edited header could eventually reenter the
  383. .ng btl.all
  384. class,
  385. resulting in an article that is not shown to users subscribing to
  386. .ng btl.general .
  387. Also,
  388. followups from outside
  389. .ng btl.all
  390. would not be shown to such users.
  391. .hn 3
  392. Subject
  393. .pg
  394. The
  395. .hf Subject
  396. line
  397. (formerly
  398. .hf Title )
  399. tells what the article is about.
  400. It should be suggestive enough of the contents of the article
  401. to enable a reader to make a decision whether to read the article
  402. based on the subject alone.
  403. If the article is submitted in response to another article
  404. .i e\f1.\fPg ., (
  405. is a
  406. .i followup )
  407. the default subject should begin with the four characters \*(lqRe: \*(rq
  408. and the
  409. .hf Reference
  410. line is required.
  411. (The user might wish to edit the subject of the followup,
  412. but the default should begin with \*(lqRe: \*(rq.)
  413. .hn 3
  414. Message-ID
  415. .pg
  416. The
  417. .hf Message-ID
  418. line gives the article a unique identifier.
  419. The same message ID may not be reused during the lifetime of any article
  420. with the same message ID.
  421. (It is recommended that no message ID be reused for at least two years.)
  422. Message ID's have the syntax
  423. .sd c
  424. <\f2string not containing blank or \*(lq>\*(rq\fP>
  425. .ed
  426. In order to conform to RFC 822,
  427. the message ID must have the format
  428. .sd c
  429. <\f2unique\fP@\f2full_domain_name\fP>
  430. .ed
  431. where
  432. .i "full_domain_name"
  433. is the full name of the host at which the article entered the network,
  434. including a domain that host is in,
  435. and
  436. .i unique
  437. is any string of printing ASCII characters,
  438. not including
  439. \*(lq<\*(rq (left angle bracket),
  440. \*(lq>\*(rq (right angle bracket),
  441. or \*(lq@\*(rq (at sign).
  442. For example,
  443. the
  444. .i unique
  445. part could be an integer representing a sequence number
  446. for articles submitted to the network,
  447. or a short string derived from the date and time the article was created.
  448. For example,
  449. a valid message ID for an article submitted from site
  450. .cn ucbvax
  451. in domain
  452. .cf Berkeley.EDU
  453. would be
  454. .cf <4123@ucbvax.Berkeley.EDU> .
  455. Programmers are urged not to make assumptions
  456. about the content of message ID fields from other hosts,
  457. but to treat them as unknown character strings.
  458. It is not safe,
  459. for example,
  460. to assume that a message ID will be under 14 characters,
  461. nor that it is unique in the first 14 characters.
  462. .pg
  463. The angle brackets are considered part of the message ID.
  464. Thus,
  465. in references to the message ID,
  466. such as the
  467. .pa ihave/sendme
  468. and
  469. .b cancel
  470. control messages,
  471. the angle brackets are included.
  472. White space characters
  473. .i e\f1.\fPg ., (
  474. blank and tab)
  475. are not allowed in a message ID.
  476. All characters between the angle brackets must be printing ASCII characters.
  477. .hn 3
  478. Path
  479. .pg
  480. This line shows the path the article took to reach the current system.
  481. When a system forwards the message,
  482. it should add its own name to the list of systems in the
  483. .hf Path
  484. line.
  485. The names may be separated by any punctuation character or characters,
  486. thus
  487. .cf cbosgd!mhuxj!mhuxt ,
  488. .cf "cbosgd, mhuxj, mhuxt" ,
  489. and
  490. .cf "@cbosgd.uucp,@mhuxj.uucp,@mhuxt.uucp"
  491. and even
  492. .cf "teklabs, zehntel, sri-unix@cca!decvax"
  493. are valid entries.
  494. (The latter path indicates a message that passed through
  495. .cn decvax ,
  496. .cn cca ,
  497. .cn sri-unix ,
  498. .cn zehntel ,
  499. and
  500. .cn teklabs ,
  501. in that order.)
  502. Additional names should be added from the left,
  503. for example,
  504. the most recently added name in the third example was
  505. .cn teklabs .
  506. Letters,
  507. digits,
  508. periods and hyphens are considered part of site names;
  509. other punctuation,
  510. including blanks,
  511. are considered separators.
  512. .pg
  513. Normally,
  514. the rightmost name will be the name of the originating system.
  515. However,
  516. it is also permissible to include an extra entry on the right,
  517. which is the name of the sender.
  518. This is for upward compatibility with older system.
  519. .pg
  520. The
  521. .hf Path
  522. line is not used for replies,
  523. and should not be taken as a mailing address.
  524. It is intended to show the route
  525. the message travelled to reach the local site.
  526. There are several uses for this information.
  527. One is to monitor USENET routing for performance reasons.
  528. Another is to establish a path to reach new sites.
  529. Perhaps the most important is to cut down on redundant USENET traffic
  530. by failing to forward a message to a site that is
  531. known to have already received it.
  532. In particular,
  533. when site
  534. .cn A
  535. sends an article to site
  536. .cn B ,
  537. the
  538. .hf Path
  539. line includes
  540. .cn A ,
  541. so that site
  542. .cn B
  543. will not immediately send the article back to site
  544. .cn A .
  545. The site name each site uses to identify itself should be
  546. the same as the name by which its neighbors know it,
  547. in order to make this optimization possible.
  548. .pg
  549. A site adds its own name to the front of a path
  550. when it receives a message from another site.
  551. Thus, if a message with path
  552. .cf A!X!Y!Z
  553. is passed from site
  554. .cn A
  555. to site
  556. .cn B ,
  557. .cn B
  558. will add its own name to the path when it receives the message from
  559. .cn A ,
  560. .i e\f1.\fPg .,
  561. .cf \*(lqB!A!X!Y!Z\*(rq .
  562. If
  563. .cn B
  564. then passes the message on to
  565. .cn C ,
  566. the message sent to
  567. .cn C
  568. will contain the path
  569. .cf B!A!X!Y!Z ,
  570. and when
  571. .cn C
  572. receives it,
  573. .cn C
  574. will change it to
  575. .cf C!B!A!X!Y!Z .
  576. .pg
  577. Special upward compatibility note:
  578. Since the
  579. .hf From ,
  580. .hf Sender ,
  581. and
  582. .hf Reply-To
  583. lines are in internet format,
  584. and since many USENET sites do not yet have mailers
  585. capable of understanding internet format,
  586. it would break the reply capability to completely sever the connection
  587. between the
  588. .hf Path
  589. header and the reply function.
  590. It is recognized that the path is not always a valid reply string
  591. in older implementations,
  592. and no requirement to fix this problem is placed on implementations.
  593. However,
  594. the existing convention of placing the site name and an
  595. .cf !
  596. at the front of the path,
  597. and of starting the path with the site name,
  598. an
  599. .cf ! ,
  600. and the user name,
  601. should be maintained when possible.
  602. .hn 2
  603. Optional Headers
  604. .hn 3
  605. Reply-To
  606. .pg
  607. This line has the same format as
  608. .hf From .
  609. If present,
  610. mailed replies to the author should be sent to the name given here.
  611. Otherwise,
  612. replies are mailed to the name on the
  613. .hf From
  614. line.
  615. (This does not prevent additional copies from being sent to recipients
  616. named by the replier,
  617. or on
  618. .hf To
  619. or
  620. .hf Cc
  621. lines.)
  622. The full name may be optionally given,
  623. in parentheses,
  624. as in the
  625. .hf From
  626. line.
  627. .hn 3
  628. Sender
  629. .pg
  630. This field is present only if the submitter manually enters a
  631. .hf From
  632. line.
  633. It is intended to record the entity responsible
  634. for submitting the article to the network,
  635. and should be verified by the software at the submitting site.
  636. .pg
  637. For example,
  638. if John Smith is visiting CCA and wishes to post an article to the network,
  639. using friend Sarah Jones account,
  640. the message might read
  641. .sd
  642. From: smith@ucbvax.uucp (John Smith)
  643. Sender: jones@cca.arpa (Sarah Jones)
  644. .ed
  645. If a gateway program enters a mail message into the network at site
  646. .cn sri-unix ,
  647. the lines might read
  648. .sd
  649. From: John.Doe@CMU-CS-A.ARPA
  650. Sender: network@sri-unix.ARPA
  651. .ed
  652. The primary purpose of this field is to be able to track down articles
  653. to determine how they were entered into the network.
  654. The full name may be optionally given,
  655. in parentheses,
  656. as in the
  657. .hf From
  658. line.
  659. .hn 3
  660. Followup-To
  661. .pg
  662. This line has the same format as
  663. .hf Newsgroups .
  664. If present,
  665. follow-up articles are to be posted
  666. to the newsgroup or newsgroups listed here.
  667. If this line is not present,
  668. followups are posted to the newsgroup or newsgroups listed in the
  669. .hf Newsgroups
  670. line,
  671. except that followups to
  672. .ng net.general
  673. should instead go to
  674. .ng net.followup .
  675. .hn 3
  676. Expires
  677. .pg
  678. This line,
  679. if present,
  680. is in a legal USENET date format.
  681. It specifies a suggested expiration date for the article.
  682. If not present,
  683. the local default expiration date is used.
  684. .P
  685. This field is intended to be used to clean up
  686. articles with a limited usefulness,
  687. or to keep important articles around for longer than usual.
  688. For example,
  689. a message announcing an upcoming seminar
  690. could have an expiration date the day after the seminar,
  691. since the message is not useful after the seminar is over.
  692. Since local sites have local policies for expiration of news
  693. (depending on available disk space,
  694. for instance),
  695. users are discouraged from providing expiration dates for articles
  696. unless there is a natural expiration date associated with the topic.
  697. System software should almost never provide a default
  698. .hf Expires
  699. line.
  700. Leave it out and allow local policies to be used
  701. unless there is a good reason not to.
  702. .hn 3
  703. References
  704. .pg
  705. This field lists the message ID's of any articles prompting
  706. the submission of this article.
  707. It is required for all follow-up articles,
  708. and forbidden when a new subject is raised.
  709. Implementations should provide a follow-up command,
  710. which allows a user to post a follow-up article.
  711. This command should generate a
  712. .hf Subject
  713. line which is the same as the original article,
  714. except that if the original subject does not begin
  715. with \*(lqRe: \*(rq or \*(lqre: \*(rq,
  716. the four characters \*(lqRe: \*(rq are inserted before the subject.
  717. If there is no
  718. .hf References
  719. line on the original header,
  720. the
  721. .hf References
  722. line should contain the message ID of the original article
  723. (including the angle brackets).
  724. If the original article does have a
  725. .hf References
  726. line,
  727. the followup article should have a
  728. .hf References
  729. line containing the text of the original
  730. .hf References
  731. line,
  732. a blank,
  733. and the message ID of the original article.
  734. .pg
  735. The purpose of the
  736. .hf References
  737. header is to allow articles to be grouped into conversations
  738. by the user interface program.
  739. This allows conversations within a newsgroup to be kept together,
  740. and potentially users might shut off entire conversations
  741. without unsubscribing to a newsgroup.
  742. User interfaces may not make use of this header,
  743. but all automatically generated followups should generate the
  744. .hf References
  745. line for the benefit of systems that do use it,
  746. and manually generated followups
  747. .i e\f1.\fPg ., (
  748. typed in well after the original article has been printed by the machine)
  749. should be encouraged to include them as well.
  750. .hn 3
  751. Control
  752. .pg
  753. If an article contains a
  754. .hf Control
  755. line,
  756. the article is a control message.
  757. Control messages are used for communication among USENET host machines,
  758. not to be read by users.
  759. Control messages are distributed by the same newsgroup mechanism
  760. as ordinary messages.
  761. The body of the
  762. .hf Control
  763. header line is the message to the host.
  764. .pg
  765. For upward compatibility,
  766. messages that match the newsgroup pattern
  767. .ng all.all.ctl
  768. should also be interpreted as control messages.
  769. If no
  770. .hf Control
  771. header is present on such messages,
  772. the subject is used as the control message.
  773. However,
  774. messages on newsgroups matching this pattern do not conform to this standard.
  775. .hn 3
  776. Distribution
  777. .pg
  778. This line is used to alter the distribution scope of the message.
  779. It has the same format as the
  780. .hf Newsgroups
  781. line.
  782. User subscriptions are still controlled by
  783. .hf Newsgroups ,
  784. but the message is sent to all systems subscribing to the newsgroups
  785. on the
  786. .hf Distribution
  787. line instead of the
  788. .hf Newsgroups
  789. line.
  790. Thus, 
  791. a car for sale in New Jersey might have headers including
  792. .sd
  793. Newsgroups: net.auto,net.wanted
  794. Distribution: nj.all
  795. .ed
  796. so that it would only go to persons subscribing to
  797. .ng net.auto
  798. or
  799. .ng net.wanted
  800. within New Jersey.
  801. The intent of this header is to restrict
  802. the distribution of a newsgroup further,
  803. not to increase it.
  804. A local newsgroup,
  805. such as
  806. .ng nj.crazy-eddie ,
  807. will probably not be propagated by sites outside New Jersey
  808. that do not show such a newsgroup as valid.
  809. Wildcards in newsgroup names in the
  810. .hf Distribution
  811. line are allowed.
  812. Followup articles should default to the same
  813. .hf Distribution
  814. line as the original article,
  815. but the user can change it to a more limited one,
  816. or escalate the distribution
  817. if it was originally restricted
  818. and a more widely distributed reply is appropriate.
  819. .hn 3
  820. Organization
  821. .pg
  822. The text of this line is a short phrase describing the organization
  823. to which the sender belongs,
  824. or to which the machine belongs.
  825. The intent of this line is to help identify the person posting the message,
  826. since site names are often cryptic enough to make it hard
  827. to recognize the organization by the electronic address.
  828. .hn 3
  829. Keywords
  830. .pg
  831. A few, well selected keywords identifying this article should be on
  832. this line. This is used as an aid in determining if this article is
  833. interesting to the reader.
  834. .hn 3
  835. Summary
  836. .pg
  837. This line (lines) should contain a brief summary of the article. It is
  838. usually used as part of a followup to another article. Again, it is
  839. very useful to the reader in determining whether to read the article.
  840. .hn 1
  841. Control Messages
  842. .pg
  843. This section lists the control messages currently defined.
  844. The body of the
  845. .hf Control
  846. header is the control message.
  847. Messages are a sequence of zero or more words,
  848. separated by white space (blanks or tabs).
  849. The first word is the name of the control message,
  850. remaining words are parameters to the message.
  851. The remainder of the header and the body of the message
  852. are also potential parameters;
  853. for example,
  854. the
  855. .hf From
  856. line might suggest an address to which a response is to be mailed.
  857. .pg
  858. Implementors and administrators may choose to allow control messages
  859. to be carried out automatically,
  860. or to queue them for manual processing.
  861. However,
  862. manually processed messages should be dealt with promptly.
  863. .hn 2
  864. Cancel
  865. .pg l
  866. .sd
  867. cancel <message ID>
  868. .ed
  869. If an article with the given message ID is present on the local system,
  870. the article is cancelled.
  871. This mechanism allows a user to cancel an article
  872. after the article has been distributed over the network.
  873. .pg
  874. If the system is unable to cancel the article as requested, it should not
  875. forward the cancellation request to its neighbor systems.
  876. .pg
  877. Only the author of the article or the local super user
  878. is allowed to use this message.
  879. The verified sender of a message is the
  880. .hf Sender
  881. line,
  882. or if no
  883. .hf Sender
  884. line is present,
  885. the
  886. .hf From
  887. line.
  888. The verified sender of the cancel message must be the same
  889. as either the
  890. .hf Sender
  891. or
  892. .hf From
  893. field of the original message.
  894. A verified sender in the cancel message is allowed to match an unverified
  895. .hf From
  896. in the original message.
  897. .hn 2
  898. Ihave/Sendme
  899. .pg l
  900. .sd
  901. ihave <message ID list> <remotesys>
  902. sendme <message ID list> <remotesys>
  903. .ed
  904. This message is part of the
  905. .pa ihave/sendme
  906. protocol,
  907. which allows one site
  908. (say
  909. .cn A )
  910. to tell another site
  911. .cn B ) (
  912. that a particular message has been received on
  913. .cn A .
  914. Suppose that site
  915. .cn A
  916. receives article
  917. .cf ucbvax.1234 ,
  918. and wishes to transmit the article to site
  919. .cn B .
  920. .cn A
  921. sends the control message
  922. .cf "ihave ucbvax.1234 A"
  923. to site
  924. .cn B
  925. (by posting it to newsgroup
  926. .bi B ). \f3to.\fP
  927. .cn B
  928. responds with the control message
  929. .cf "sendme ucbvax.1234 B"
  930. (on newsgroup
  931. .bi A ) \f3to.\fP
  932. if it has not already received the article.
  933. Upon receiving the
  934. .pa sendme
  935. message,
  936. .cn A
  937. sends the article to
  938. .cn B .
  939. .pg
  940. This protocol can be used to cut down on redundant traffic between sites.
  941. It is optional and should be used
  942. only if the particular situation makes it worthwhile.
  943. Frequently,
  944. the outcome is that,
  945. since most original messages are short,
  946. and since there is a high overhead to start sending a new message with UUCP,
  947. it costs as much to send the
  948. .pa ihave
  949. as it would cost to send the article itself.
  950. .pg
  951. One possible solution to this overhead problem is to batch requests.
  952. Several message ID's may be announced or requested in one message.
  953. If no message ID's are listed in the control message,
  954. the body of the message should be scanned for message ID's,
  955. one per line.
  956. .hn 2
  957. Newgroup
  958. .sd
  959. newgroup <groupname>
  960. .ed
  961. .pg
  962. This control message creates a new newsgroup with the name given.
  963. Since no articles may be posted or forwarded until a newsgroup is created,
  964. this message is required before a newsgroup can be used.
  965. The body of the message is expected to be a short paragraph
  966. describing the intended use of the newsgroup.
  967. .hn 2
  968. Rmgroup
  969. .sd
  970. rmgroup <groupname>
  971. .ed
  972. .pg
  973. This message removes a newsgroup with the given name.
  974. Since the newsgroup is removed from every site on the network,
  975. this command should be used carefully by a responsible administrator.
  976. .hn 2
  977. Sendsys
  978. .sd
  979. sendsys    (no arguments)
  980. .ed
  981. .pg
  982. The
  983. .i sys
  984. file,
  985. listing all neighbors and which newsgroups are sent to each neighbor,
  986. will be mailed to the author of the control message
  987. .hf Reply-to , (
  988. if present,
  989. otherwise
  990. .hf From ).
  991. This information is considered public information,
  992. and it is a requirement of membership in USENET
  993. that this information be provided on request,
  994. either automatically in response to this control message,
  995. or manually,
  996. by mailing the requested information to the author of the message.
  997. This information is used to keep the map of USENET up to date,
  998. and to determine where netnews is sent.
  999. .pg
  1000. The format of the file mailed back to the author
  1001. should be the same as that of the
  1002. .i sys
  1003. file.
  1004. This format has one line per neighboring site
  1005. (plus one line for the local site),
  1006. containing four colon separated fields.
  1007. The first field has the site name of the neighbor,
  1008. the second field has a newsgroup pattern
  1009. describing the newsgroups sent to the neighbor.
  1010. The third and fourth fields are not defined by this standard.
  1011. A sample response:
  1012. .sd
  1013. From cbosgd!mark  Sun Mar 27 20:39:37 1983
  1014. Subject: response to your sendsys request
  1015. To: mark@cbosgd.UUCP
  1016.  
  1017. Responding-System: cbosgd.UUCP
  1018. cbosgd:osg,cb,btl,bell,net,to,test
  1019. ucbvax:net,to.ucbvax:L:
  1020. cbosg:net,bell,btl,cb,osg,to.cbosg:F:/usr/spool/outnews/cbosg
  1021. cbosgb:osg,to.cbosgb:F:/usr/spool/outnews/cbosgb
  1022. sescent:net,bell,btl,cb,to.sescent:F:/usr/spool/outnews/sescent
  1023. npois:net,bell,btl,ug,to.npois:F:/usr/spool/outnews/npois
  1024. mhuxi:net,bell,btl,ug,to.mhuxi:F:/usr/spool/outnews/mhuxi
  1025. .ed
  1026. .hn 2
  1027. Senduuname
  1028. .pg l
  1029. .sd
  1030. senduuname    (no arguments)
  1031. .ed
  1032. The
  1033. .i uuname (1)
  1034. program is run,
  1035. and the output is mailed to the author of the control message
  1036. .hf Reply-to , (
  1037. if present,
  1038. otherwise
  1039. .hf From ).
  1040. This program lists all UUCP neighbors of the local site.
  1041. This information is used to make maps of the UUCP network.
  1042. The
  1043. .i sys
  1044. file is
  1045. .b not
  1046. the same as the UUCP
  1047. .i L.sys
  1048. file.
  1049. The
  1050. .i L.sys
  1051. file should
  1052. .b never
  1053. be transmitted to another party
  1054. without the consent of the sites whose passwords are listed therein.
  1055. .pg
  1056. It is optional for a site to provide this information.
  1057. Some reply should be made to the author of the control message,
  1058. so that a transmission error won't be blamed.
  1059. It is also permissible for a site to run the
  1060. .i uuname
  1061. program
  1062. (or in some other way determine the UUCP neighbors)
  1063. and edit the output,
  1064. either automatically or manually,
  1065. before mailing the reply back to the author.
  1066. The file should contain one site per line,
  1067. beginning with the UUCP site name.
  1068. Additional information may be included,
  1069. separated from the site name by a blank or tab.
  1070. The phone number or password for the site should
  1071. .ng not
  1072. be included,
  1073. as the reply is considered to be in the public domain.
  1074. (The
  1075. .i uuname
  1076. program will send only the site name and not the entire contents of the
  1077. .i L.sys
  1078. file,
  1079. thus,
  1080. phone numbers and passwords are not transmitted.)
  1081. .pg
  1082. The purpose of this message is to generate and maintain UUCP mail routing maps.
  1083. Thus, connections over which mail can be sent using the
  1084. .cf site!user
  1085. syntax should be included,
  1086. regardless of whether the link is actually a UUCP link at the physical level.
  1087. If a mail router should use it,
  1088. it should be included.
  1089. Since all information sent in response to this message is optional,
  1090. sites are free to edit the list,
  1091. deleting secret or private links they do not wish to publicize.
  1092. .hn 2
  1093. Version
  1094. .pg l
  1095. .sd
  1096. version    (no arguments)
  1097. .ed
  1098. The name and version of the software running on the local system
  1099. is to be mailed back to the author of the article
  1100. .hf Reply-to "" (
  1101. if present,
  1102. otherwise
  1103. .hf From ).
  1104. .hn 1
  1105. Transmission Methods
  1106. .pg
  1107. USENET is not a physical network,
  1108. but rather a logical network
  1109. resting on top of several existing physical networks.
  1110. These networks include,
  1111. but are not limited to,
  1112. UUCP,
  1113. the ARPANET,
  1114. an Ethernet,
  1115. the BLICN network,
  1116. an NSC Hyperchannel,
  1117. and a BERKNET.
  1118. What is important is that two neighboring systems on USENET
  1119. have some method to get a new article,
  1120. in the format listed here,
  1121. from one system to the other,
  1122. and once on the receiving system,
  1123. processed by the netnews software on that system.
  1124. (On
  1125. .ux
  1126. systems,
  1127. this usually means the
  1128. .i rnews
  1129. program being run with the article on the standard input.)
  1130. .pg
  1131. It is not a requirement that USENET sites have mail systems
  1132. capable of understanding the ARPA Internet mail syntax,
  1133. but it is strongly recommended.
  1134. Since
  1135. .hf From ,
  1136. .hf Reply-To ,
  1137. and
  1138. .hf Sender
  1139. lines use the Internet syntax, 
  1140. replies will be difficult or impossible without an internet mailer.
  1141. A site without an internet mailer can attempt to use the
  1142. .hf Path
  1143. header line for replies,
  1144. but this field is not guaranteed to be a working path for replies.
  1145. In any event,
  1146. any site generating or forwarding news messages
  1147. must have an internet address that allows them
  1148. to receive mail from sites with internet mailers,
  1149. and they must include their internet address on their From line.
  1150. .hn 2
  1151. Remote Execution
  1152. .pg
  1153. Some networks permit direct remote command execution.
  1154. On these networks,
  1155. news may be forwarded by spooling the
  1156. .i rnews
  1157. command with the article on the standard input.
  1158. For example,
  1159. if the remote system is called
  1160. .cn remote ,
  1161. news would be sent over a UUCP link with the command
  1162. .sd c
  1163. uux \- remote!rnews
  1164. .ed
  1165. and on a Berknet,
  1166. .sd c
  1167. net \-mremote rnews
  1168. .ed
  1169. It is important that the article be sent via a reliable mechanism,
  1170. normally involving the possibility of spooling,
  1171. rather than direct real-time remote execution.
  1172. This is because,
  1173. if the remote system is down,
  1174. a direct execution command will fail,
  1175. and the article will never be delivered.
  1176. If the article is spooled,
  1177. it will eventually be delivered when both systems are up.
  1178. .hn 2
  1179. Transfer by Mail
  1180. .pg
  1181. On some systems,
  1182. direct remote spooled execution is not possible.
  1183. However,
  1184. most systems support electronic mail,
  1185. and a news article can be sent as mail.
  1186. One approach is to send a mail message
  1187. which is identical to the news message:
  1188. the mail headers are the news headers,
  1189. and the mail body is the news body.
  1190. By convention,
  1191. this mail is sent to the user
  1192. .i newsmail
  1193. on the remote machine.
  1194. .pg
  1195. One problem with this method is that it may not be possible to convince
  1196. the mail system that the
  1197. .hf From
  1198. line of the message is valid,
  1199. since the mail message was generated by a program
  1200. on a system different from the source of the news article.
  1201. Another problem is that error messages caused by the mail transmission
  1202. would be sent to the originator of the news article,
  1203. who has no control over news transmission between two cooperating hosts
  1204. and does not know who to contact.
  1205. Transmission error messages should be directed to a responsible
  1206. contact person on the sending machine.
  1207. .pg
  1208. A solution to this problem is to encapsulate the news article
  1209. into a mail message,
  1210. such that the entire article
  1211. (headers and body)
  1212. are part of the body of the mail message.
  1213. The convention here is that such mail is sent to user
  1214. .i rnews
  1215. on the remote system.
  1216. A mail message body is generated by prepending the letter
  1217. .qp N
  1218. to each line of the news article,
  1219. and then attaching whatever mail headers are convenient to generate.
  1220. The
  1221. .qp N 's
  1222. are attached to prevent any special lines in the news article
  1223. from interfering with mail transmission,
  1224. and to prevent any extra lines inserted by the mailer
  1225. (headers,
  1226. blank lines,
  1227. etc.)
  1228. from becoming part of the news article.
  1229. A program on the receiving machine receives mail to
  1230. .i rnews ,
  1231. extracting the article itself and invoking the
  1232. .i rnews
  1233. program.
  1234. An example in this format might look like this:
  1235. .sd
  1236. Date: Monday, 3-Jan-83 08:33:47 MST
  1237. From: news@cbosgd.UUCP
  1238. Subject: network news article
  1239. To: rnews@npois.UUCP
  1240.  
  1241. NPath: cbosgd!mhuxj!harpo!utah-cs!sask!derek
  1242. NFrom: derek@sask.UUCP (Derek Andrew)
  1243. NNewsgroups: net.test
  1244. NSubject: necessary test
  1245. NMessage-ID: <176@sask.UUCP>
  1246. NDate: Monday, 3 Jan 83 00:59:15 MST
  1247. N
  1248. NThis really is a test.  If anyone out there more than 6 
  1249. Nhops away would kindly confirm this note I would
  1250. Nappreciate it.  We suspect that our news postings
  1251. Nare not getting out into the world.
  1252. N
  1253.  
  1254. .ed
  1255. .pg
  1256. Using mail solves the spooling problem,
  1257. since mail must always be spooled if the destination host is down.
  1258. However,
  1259. it adds more overhead to the transmission process
  1260. (to encapsulate and extract the article)
  1261. and makes it harder for software to give different priorities
  1262. to news and mail.
  1263. .hn 2
  1264. Batching
  1265. .pg
  1266. Since news articles are usually short,
  1267. and since a large number of messages
  1268. are often sent between two sites in a day,
  1269. it may make sense to batch news articles.
  1270. Several articles can be combined into one large article,
  1271. using conventions agreed upon in advance by the two sites.
  1272. One such batching scheme is described here;
  1273. its use is still considered experimental.
  1274. .pg
  1275. News articles are combined into a script, separated by a header of the form:
  1276. .sd
  1277. #! rnews 1234
  1278. .ed
  1279. where
  1280. .i 1234
  1281. is the length,
  1282. in bytes,
  1283. of the article.
  1284. Each such line is followed by an article containing the given number of bytes.
  1285. (The newline at the end of each line of the article is counted as one byte,
  1286. for purposes of this count, even if it is stored as
  1287. .qc "CARRIAGE RETURN\s+2><\s-2LINE FEED" \&.)
  1288. For example,
  1289. a batch of articles might look like this:
  1290. .sd
  1291. #! rnews 207
  1292. From: jerry@eagle.uucp (Jerry Schwarz)
  1293. Path: cbosgd!mhuxj!mhuxt!eagle!jerry
  1294. Newsgroups: net.general
  1295. Subject: Usenet Etiquette -- Please Read
  1296. Message-ID: <642@eagle.UUCP>
  1297. Date: Friday, 19 Nov 82 16:14:55 EST
  1298.  
  1299. Here is an important message about USENET Etiquette.
  1300. #! rnews 203
  1301. From: jerry@eagle.uucp (Jerry Schwarz)
  1302. Path: cbosgd!mhuxj!mhuxt!eagle!jerry
  1303. Newsgroups: net.followup
  1304. Subject: Notes on Etiquette article
  1305. Message-ID: <643@eagle.UUCP>
  1306. Date: Friday, 19 Nov 82 17:24:12 EST
  1307.  
  1308. There was something I forgot to mention in the last message.
  1309. .ed
  1310. Batched news is recognized because the first character in the message is
  1311. .qp # .
  1312. The message is then passed to the unbatcher for interpretation.
  1313. .hn 1
  1314. The News Propagation Algorithm
  1315. .pg
  1316. This section describes the overall scheme of USENET and the algorithm
  1317. followed by sites in propagating news to the entire network.
  1318. Since all sites are affected by incorrectly formatted articles
  1319. and by propagation errors,
  1320. it is important for the method to be standardized.
  1321. .pg
  1322. USENET is a directed graph.
  1323. Each node in the graph is a host computer,
  1324. and each arc in the graph is a transmission path
  1325. from one host to another host.
  1326. Each arc is labelled with a newsgroup pattern,
  1327. specifying which newsgroup classes are forwarded along that link.
  1328. Most arcs are bidirectional,
  1329. that is,
  1330. if site
  1331. .cn A
  1332. sends a class of newsgroups to site
  1333. .cn B ,
  1334. then site
  1335. .cn B
  1336. usually sends the same class of newsgroups to site
  1337. .cn A .
  1338. This bidirectionality is not,
  1339. however,
  1340. required.
  1341. .pg
  1342. USENET is made up of many subnetworks.
  1343. Each subnet has a name,
  1344. such as
  1345. .ng net
  1346. or
  1347. .ng btl .
  1348. The special subnet
  1349. .ng net
  1350. is defined to be USENET,
  1351. although the union of all subnets may be a superset of USENET
  1352. (because of sites that get local newsgroup classes but do not get
  1353. .ng net.all ).
  1354. Each subnet is a connected graph,
  1355. that is,
  1356. a path exists from every node to every other node in the subnet.
  1357. In addition,
  1358. the entire graph is
  1359. (theoretically)
  1360. connected.
  1361. (In practice,
  1362. some political considerations have caused some sites
  1363. to be unable to post articles reaching the rest of the network.)
  1364. .pg
  1365. An article is posted on one machine to a list of newsgroups.
  1366. That machine accepts it locally,
  1367. then forwards it to all its neighbors that are interested
  1368. in at least one of the newsgroups of the message.
  1369. (Site
  1370. .cn A
  1371. deems site
  1372. .cn B
  1373. to be \*(lqinterested\*(rq in a newsgroup
  1374. if the newsgroup matches the pattern on the arc from
  1375. .cn A
  1376. to
  1377. .cn B .
  1378. This pattern is stored in a file on the
  1379. .cn A
  1380. machine.)
  1381. The sites receiving the incoming article examine it
  1382. to make sure they really want the article,
  1383. accept it locally,
  1384. and then in turn forward the article to all
  1385. .i their
  1386. interested neighbors.
  1387. This process continues until the entire network has seen the article.
  1388. .pg
  1389. An important part of the algorithm is the prevention of loops.
  1390. The above process would cause a message to loop along a cycle forever.
  1391. In particular,
  1392. when site
  1393. .cn A
  1394. sends an article to site
  1395. .cn B ,
  1396. site
  1397. .cn B
  1398. will send it back to site
  1399. .cn A ,
  1400. which will send it to site
  1401. .cn B ,
  1402. and so on.
  1403. One solution to this is the history mechanism.
  1404. Each site keeps track of all articles it has seen
  1405. (by their message ID)
  1406. and whenever an article comes in that it has already seen,
  1407. the incoming article is discarded immediately.
  1408. This solution is sufficient to prevent loops,
  1409. but additional optimizations can be made to avoid sending articles to sites
  1410. that will simply throw them away.
  1411. .pg
  1412. One optimization is that an article should never be sent to a machine
  1413. listed in the
  1414. .hf Path
  1415. line of the header.
  1416. When a machine name is in the
  1417. .hf Path
  1418. line,
  1419. the message is known to have passed through the machine.
  1420. Another optimization is that,
  1421. if the article originated on site
  1422. .cn A ,
  1423. then site
  1424. .cn A
  1425. has already seen the article.
  1426. (Origination can be determined by the
  1427. .hf Posting-Version
  1428. line.)
  1429. .P
  1430. Thus,
  1431. if an article is posted to newsgroup
  1432. .ng net.misc ,
  1433. it will match the pattern
  1434. .ng net.all
  1435. (where
  1436. .ng all
  1437. is a metasymbol that matches any string),
  1438. and will be forwarded to all sites that subscribe to
  1439. .ng net.all
  1440. (as determined by what their neighbors send them).
  1441. These sites make up the
  1442. .ng net
  1443. subnetwork.
  1444. An article posted to
  1445. .ng btl.general
  1446. will reach all sites receiving
  1447. .ng btl.all ,
  1448. but will not reach sites that do not get
  1449. .ng btl.all .
  1450. In effect,
  1451. the articles reaches the
  1452. .ng btl
  1453. subnetwork.
  1454. An article posted to newsgroups
  1455. .ng net.micro,btl.general
  1456. will reach all sites subscribing to either of the two classes.
  1457.