Annotation of 43BSDTahoe/new/news/doc/standard.mn, revision 1.1.1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.