|
|
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.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.