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