|
|
1.1 root 1: .ds h0 "USENET Version B Installation
2: .ds h1
3: .ds h2 %
4: .ds f0 "\*(vr
5: .ds f1
6: .ds f2 "February 24, 1986
7: .mt
8: USENET Version B Installation
9: .au
10: Matt Glickman
11: .ai
12: Computer Science Division
13: Department of Electrical Engineering and Computer Sciences
14: University of California
15: Berkeley, California 94720
16: .au
17: Revised by Mark Horton for version 2.10
18: Revised by Rick Adams for version 2.10.3
19: .hn
20: Introduction
21: .pg
22: This document is intended to help
23: a USENET site install and maintain the network news software.
24: Please ask questions of Rick Adams\*(dg;
25: .fn
26: \*(dg ARPANET: [email protected], UUCP: seismo!rick
27: .ef
28: such questions will help to point out areas that need
29: to be addressed here.
30: .pg
31: The overall order of things to do is:
32: .lp (a)
33: Find somebody to link up with.
34: You need a network connection of some kind,
35: for example,
36: ARPANET or UUCP.
37: If you must use UUCP and have no connections,
38: you must have at least a dialup and preferably a dialer,
39: and find someone willing to call your machine.
40: The USENET directory may be helpful in finding some other site geographically
41: near yours to hook up to.
42: .lp (b)
43: Create a
44: .i localize.sh
45: script to make local changes to the makefile and
46: .i defs.h
47: files. (Section 2 gives more details about creating
48: .i localize.sh \&.)
49: Once you're finished editing
50: .i localize.sh ,
51: create a
52: .i defs.h
53: and
54: .i Makefile
55: tailored
56: for your site with the command
57: .ce
58: sh localize.sh
59: Inspect
60: .i defs.h
61: and
62: .i Makefile
63: to ensure that all your local customizations
64: got into your final versions. If you saw a \*(lq?\*(rq when you ran
65: .i localize.sh ,
66: one or both of the files is certainly wrong. It's a good idea to
67: anchor the patterns in
68: .i localize.sh \&'s
69: .i ed (1)
70: scripts, especially in its
71: .i Makefile -editing
72: lines. For instance, use
73: .b /^UUXFLAGS/
74: instead of
75: .b /UUXFLAGS/ .
76: .lp (c)
77: Compile the software using the
78: .i make (1)
79: command.
80: .lp (d)
81: .i Su (1)
82: and type \*(lqmake install\*(rq.
83: This will copy the files out to the right place and
84: make directories containing most of the important files.
85: It will configure you in with a connection to
86: .cn oopsvax
87: via UUCP links.
88: This is undoubtedly wrong,
89: so you will have to configure links as needed.
90: If you are upgrading from a version older than 2.10.3, do \*(lqmake update\*(rq.
91: This will cause various checks to be performed on important
92: files in
93: .b LIBDIR .
94: The results will be reported to you.
95: If you are not sure if you should do \*(lqmake update\*(rq, do it.
96: It will not hurt anything if you have already done it.
97: .lp (e)
98: After editing the configuration table,
99: get your contact at the other end of the link to add you to their netnews
100: .i sys
101: file.
102: .lp (f)
103: Post a message to the
104: .bi sysname "" \f3to.\fP
105: newsgroup which should be set up to go only to the site you are linked to,
106: as a test.
107: Have the other person send a message to your system using the same mechanism.
108: If this doesn't work,
109: find the problem and fix it.
110: (Please don't use
111: .ng net.test
112: unless there is no alternative.
113: It is almost always possible to use
114: .ng test ,
115: or
116: .bi sysname "" \f3to.\fP
117: or some
118: .bi local \f3.test\fP
119: group,
120: instead of
121: .ng net.test .)
122: .lp (g)
123: Fill out a USENET directory form (the file
124: .i dirform
125: in the
126: .i misc
127: directory).
128: Post a copy to the USENET newsgroup
129: .ng net.news.newsite
130: and mail a copy to
131: .i cbosgd!uucpmap .
132: .lp (h)
133: Format the document
134: .i "\*(lqHow to Read the Network News\*(rq"
135: (the file
136: .i howto.mn
137: in the
138: .i doc
139: directory),
140: the document
141: .i "\*(lqHow to Use USENET Effectively\*(rq"
142: (the file
143: .i manner.mn
144: in the
145: .i doc
146: directory)
147: and the document
148: .i "\*(lqCopyright Law\*(rq"
149: (the file
150: .i copyright.mn
151: in the
152: .i doc
153: directory)
154: and post them to your
155: .ng general
156: newsgroup with a long expiration date.
157: You can use
158: .i inews (1)
159: or
160: .i postnews (1)
161: to do this.
162: .lp (i)
163: It will probably be necessary to fix your uucp commands
164: to allow
165: .i rnews
166: and to support the
167: .op \-z
168: and
169: .op \-n
170: options (if you are lucky enought to have the source).
171: .hn
172: Installation
173: .hn 2
174: Configuration
175: .pg
176: Local configuration of the USENET
177: version B software requires you to edit a few files.
178: Most importantly,
179: the
180: .i defs.h
181: and
182: .i Makefile
183: files must be created from their templates
184: .i defs.dist
185: and
186: .i Makefile.dst .
187: You should create a shell script called
188: .i localize.sh
189: which copies the files and makes local changes to the copies.
190: Even for a completely vanilla site,
191: some changes will be necessary.
192: For example,
193: your script should start with
194: .i localize.v7
195: or
196: .i localize.usg .
197: You should include the name of the local organization
198: .b MYORG ) (
199: and the uid of the local news super user
200: .b ROOTID ). (
201: You should also choose how your hostname will be determined.
202: If you are a USG site,
203: define
204: .b UNAME
205: in
206: .i defs.h .
207: If you are
208: running 4.[23] BSD,
209: define
210: .b GHNAME
211: in
212: .i defs.h .
213: If you have your UUCP name in
214: .i /etc/uucpname ,
215: define
216: .b UUNAME
217: in
218: .i defs.h .
219: Otherwise,
220: news will look in the file
221: .i /usr/include/whoami.h
222: for a line of the form
223: .sd c
224: #define sysname your-sysname
225: .ed
226: .pg
227: If you are running System 3 or System 5,
228: you are a USG site.
229: Otherwise,
230: unless you are in AT&T,
231: you are probably a V7 site.
232: The previously mentioned defines are the only modifications that are
233: .i necessary
234: to install news at your site.
235: However,
236: you will probably want to change some of the ones listed below.
237: If your compiler does not accept \*(lq(void)\*(rq,
238: the simplest thing to do is add \*(lq\-Dvoid=int\*(rq to the
239: .b CFLAGS
240: line in the
241: .i Makefile .
242: .pg
243: A sample localize shell script can be found in
244: .i localize.sample .
245: The most important parameters are:
246: .hn 3
247: ROOTID
248: .pg
249: The numerical uid of the person who is the news super user.
250: This should not be set to 0.
251: Normally it is set to the uid of the news contact person for the site.
252: If it is not defined,
253: the uid of
254: .b NOTIFY
255: will be looked up in
256: .i /etc/passwd
257: and used instead.
258: .hn 3
259: N_UMASK
260: .pg
261: Mask for
262: .i umask (2)
263: system call.
264: Set it to something like 022 for a secure system.
265: Unsecure systems might want 002 or 000.
266: This mask controls the mode of news files created by the software.
267: Insecure modes would allow people to edit the files directly.
268: .hn 3
269: DFLTEXP
270: .pg
271: The default number of seconds after which an article will expire.
272: Two weeks (1,209,600 seconds) is the default choice.
273: If you wish to expire articles faster than two weeks,
274: it is recommended that you use the
275: .op \-e
276: flag to expire instead of decreasing
277: .b DFLTEXP .
278: .hn 3
279: HISTEXP
280: .pg
281: Articles which were posted more than
282: .b HISTEXP
283: ago are considered too old and are moved into the junk directory.
284: This is because they are too old to be in the history file,
285: so it is impossible to tell if they really should be accepted
286: or are endlessly looping around the network.
287: (This was theoretically possible before this feature was added.)
288: The articles are removed after
289: .b DFLTEXP
290: seconds,
291: but a copy of their
292: .hf Message-ID
293: is kept in the history file for
294: .b HISTEXP
295: seconds (the default is 4 weeks).
296: .hn 3
297: DFLTSUB
298: .pg
299: The default subscription list.
300: If a user does not specify any list of newsgroups,
301: this will be used.
302: Popular choices are
303: .ng all
304: and
305: .ng general\f1,\fPall.general .
306: .hn 3
307: TMAIL
308: .pg
309: This is the version of the Berkeley
310: .i Mail (1)
311: program that has the
312: .op \-T
313: option.
314: If left undefined,
315: the
316: .op \-M
317: option to
318: .i readnews (1)
319: will be disabled.
320: .hn 3
321: ADMSUB
322: .pg
323: This newsgroup (or newsgroup list) will always be selected
324: unless the user specifies a newsgroup list that doesn't include
325: .b ADMSUB
326: on the command line.
327: That is,
328: as long as the user doesn't use the
329: .op \-n
330: flag to
331: .i readnews
332: on the command line,
333: .b ADMSUB
334: will always be selected.
335: This is usually set to
336: .ng general .
337: (The intent of this parameter is to have certain newsgroups
338: which users are required to subscribe to.
339: A typical site might require
340: .op general .)
341: .hn 3
342: PAGE
343: .pg
344: The default program to which articles should be piped for paging.
345: This can be disabled or changed by the environment variable
346: .b PAGER .
347: If you have it,
348: the Berkeley
349: .i more (1)
350: command should be used,
351: since the
352: .op +
353: option allows the headers to be skipped.
354: .hn 3
355: NOTIFY
356: .pg
357: If defined,
358: this character string will be used as a user name to send mail
359: to in the event of certain control messages of interest.
360: (Currently these are
361: .b newgroup ,
362: .b rmgroup ,
363: .b sendsys ,
364: .b checkgroups ,
365: and
366: .b senduuname .)
367: As distributed,
368: mail will be sent to user
369: .i usenet .
370: It is recommended you create such a mailbox
371: (have it forwarded to yourself) if possible,
372: since this makes it easier for another site
373: to contact the site administrator for your site.
374: If you are unable to do this
375: .i e\f1.\fPg ., (
376: you are not the super user)
377: you should change this name to yourself.
378: Also,
379: messages about missing or extra newsgroups are mailed to this user
380: by the
381: .b checkgroups
382: control message.
383: .hn 3
384: DFTXMIT
385: .pg
386: This is the default command to use to transmit news
387: if no explicit command is given in the fourth field of the
388: .i sys
389: file.
390: It normally includes
391: .i uux (1)
392: with the
393: .op \-z
394: option.
395: You should install this modification to UUCP at once;
396: otherwise your users will start being bombarded with annoying
397: .i uux
398: completion messages.
399: However,
400: you can turn this off to get news installed.
401: .hn 3
402: UXMIT
403: .pg
404: This is the default command used if the
405: .b U
406: flag is present in the flags portion of a
407: .i sys
408: file line.
409: In this case,
410: the second \*(lq%s\*(rq refers to the name of a file in the news spool area,
411: not a temporary file.
412: It can usually only be used
413: when local modifications are made to the uucp system,
414: such as the
415: .op \-c
416: option to
417: .i uux .
418: .hn 3
419: DFTEDITOR
420: .pg
421: This is the full path name of the default editor to use
422: during followups and replies.
423: It should be set to the most popular text editor on your system.
424: As distributed,
425: .i vi (1)
426: is used.
427: .hn 3
428: UUPROG
429: .pg
430: If this is defined,
431: it will be used as a command to run when the
432: .b senduuname
433: control message is sent around.
434: Otherwise the command
435: .i uuname (1)
436: will be run.
437: Normally,
438: this program should be placed in
439: .b LIBDIR .
440: .hn 3
441: MANUALLY
442: .pg
443: If this is defined,
444: incoming
445: .b rmgroup
446: messages will not automatically remove the group.
447: News will instead mail a message to
448: .b NOTIFY
449: advising that the group should be removed.
450: If you define
451: .b MANUALLY ,
452: you should have
453: .b NOTIFY
454: defined.
455: .b MANUALLY
456: is defined by default to protect you against
457: accidental or malicious removal of an important newsgroup.
458: .hn 3
459: NONEWGROUPS
460: .pg
461: If this is defined, incoming
462: .b newgroup
463: messages will not automatically create the group.
464: News will instead mail a message to
465: .b NOTIFY
466: advising that the group should be created.
467: If you define
468: .b NONEWGROUPS ,
469: you should have
470: .b NOTIFY
471: defined.
472: .b NONEWGROUPS
473: is undefined by default to make it easier to automatically maintain the
474: news system.
475: .hn 3
476: BATCH
477: .pg
478: If set,
479: this is the name of a program that will be used to unpack
480: batched articles (those beginning with the character \*(lq#\*(rq.)
481: Batched articles normally are files reading
482: .sd c
483: #! rnews 1234
484: article containing 1234 characters
485: #! rnews 4321
486: article containing 4321 characters
487: \\&. . .
488: .ed
489: Batching is
490: .i strongly
491: recommended for increased efficiency on both sides.
492: .hn 3
493: LOCALNAME
494: .pg
495: Most systems have a full name database on line somewhere,
496: showing for each user what their full name is.
497: Most often this is in the gecos field of
498: .i /etc/passwd .
499: If your system has such a database,
500: .b LOCALNAME
501: should be left undefined.
502: If not,
503: define
504: .b LOCALNAME ,
505: and articles posted will only receive full names from local user information
506: specified in
507: .i NAME
508: or
509: .bi $HOME \f2/.name\fP
510: by the user.
511: If you have a nonstandard gcos format
512: (not
513: .i finger (1)
514: or RJE)
515: it will be necessary to make local changes to
516: .i fullname.c
517: as appropriate on your system.
518: .hn 3
519: INTERNET
520: .pg
521: If your system has a mailer that understands ARPA Internet syntax addresses
522: .cf [email protected] ) (
523: turn this on,
524: and replies will use the
525: .hf "From"
526: or
527: .hf "Reply-To"
528: headers.
529: Otherwise,
530: leave it disabled and replies will use the
531: .hf "Path"
532: header.
533: .hn 3
534: MYDOMAIN
535: .pg
536: When generating internet addresses,
537: this domain will be appended to the local site name
538: to form mailing address domains.
539: For example,
540: on system
541: .cn ucbvax
542: with user
543: .i root ,
544: if
545: .b MYDOMAIN
546: is set to
547: .cf .UUCP ,
548: addresses generated will read
549: .cf [email protected] .
550: If
551: .b MYDOMAIN
552: is
553: .cf .Berkeley.EDU ,
554: the address would be
555: .cf [email protected] .
556: If your site is in more than one domain,
557: use your primary domain.
558: The domain always begins with a period,
559: unless the local site name contains the domain;
560: in this case
561: .b MYDOMAIN
562: should be the null string.
563: .hn 3
564: CHEAP
565: .pg
566: Do not
567: .i chown (1)
568: spool files to
569: .i news .
570: This will cause the owner of the file to be the person that started
571: the
572: .i inews
573: process.
574: This is used for obscure accounting reasons on some systems.
575: .hn 3
576: OLD
577: .pg
578: Define this if any of your USENET neighbors run
579: 2.9 or earlier versions of B news.
580: It will cause all headers written to contain two extra lines,
581: .hf Article-I.D.
582: and
583: .hf Posted ,
584: for downward compatibility.
585: Once all your neighbors have converted,
586: you can save disk space and transmission costs by turning this off.
587: It is strongly encouraged that they convert.
588: 2.10.3 is
589: .i much
590: faster than 2.9.
591: The performance difference is dramatic.
592: .hn 3
593: UNAME
594: .pg
595: Define this if the
596: .i uname (2)
597: system call is available locally,
598: even though you are not a USG system.
599: USG systems always have
600: .i uname (2)
601: available and ignore this setting.
602: .hn 3
603: GHNAME
604: .pg
605: Define this if the 4.[23] BSD
606: .i gethostname (2)
607: system call is available.
608: If neither
609: .b UNAME
610: or
611: .b GHNAME
612: is defined,
613: .i inews
614: will determine the name of the local system by reading
615: .i /usr/include/whoami.h .
616: .hn 3
617: UUNAME
618: .pg
619: Define this if you keep your UUCP name in
620: .i /etc/uucpname .
621: .hn 3
622: V7MAIL
623: .pg
624: Define this if your system uses V7 mail conventions.
625: The V7 mail convention is that
626: a mailbox contains several messages concatenated,
627: each message beginning with a line reading
628: .hf "From \f2user date\fP"
629: and ending in a blank line.
630: If this is defined,
631: articles saved will have these lines added
632: so that mail can be used to look at saved news.
633: .hn 3
634: SORTACTIVE
635: .pg
636: Define this if you want the news groups presented in the order of each person's
637: .i .newsrc (5)
638: instead of the active file.
639: .hn 3
640: ZAPNOTES
641: .pg
642: Define this if you want old style notesfile id's in the body of the article
643: to be converted into
644: .hf Nf-Id
645: fields in the header.
646: .hn 3
647: DIGPAGE
648: .pg
649: If this is defined,
650: .i vnews (1)
651: will attempt to process the subarticles
652: of a digest instead of treating the article as one big file.
653: .hn 3
654: DOXREFS
655: .pg
656: Define this if you are using
657: .i rn (1).
658: .i Rn
659: uses this option to keep from showing the same article twice.
660: .hn 3
661: MULTICAST
662: .pg
663: If your transport mechanism supports multi-casting of messages,
664: define this.
665: Currently ACSNET is the only network that can handle this.
666: .hn 3
667: BSD4_2
668: .pg
669: Define this if you are running 4.2 or 4.3 BSD
670: .ux .
671: .hn 3
672: BSD4_1C
673: .pg
674: Define this if you are running 4.1C BSD
675: .ux .
676: .hn 3
677: SENDMAIL
678: .pg
679: Use this program instead of
680: .i recmail (8)
681: for sending mail.
682: .hn 3
683: MMDF
684: .pg
685: Use MMDF instead of
686: .i recmail
687: for sending mail.
688: .hn 3
689: MYORG
690: .pg
691: This should be set to the name of your organization.
692: Please keep the name short,
693: because it will be printed,
694: along with the electronic address and full name of the author of each message.
695: Forty characters is probably a good upper bound on the length.
696: If the city and state or country of your organization are not obvious,
697: please try to include them.
698: If the organization name begins with a \*(lq/\*(rq,
699: it will be taken as the name of a file.
700: The first line in that file will be used as the organization.
701: This permits the same binary to be used on many different machines.
702: A good file name would be
703: .i /usr/lib/news/organization .
704: For example,
705: an organization might read
706: .cf "AT&T Bell Labs, Murray Hill" ,
707: .cf "U.C. Berkeley" ,
708: .cf MIT ,
709: or
710: .cf "Computer Corp. of America, Cambridge, Mass" .
711: .pg
712: .hn 3
713: HIDDENNET
714: .pg
715: If you want all your news to look like it came from a single machine
716: instead of from every machine on your local network,
717: define
718: .b HIDDENNET
719: to be the name of the machine you wish to pretend to be.
720: Make sure that you have you own machine defined as
721: .cn ME
722: in the sysfile
723: or you may get some unnecessary article retransmission.
724: .hn 3
725: NICENESS
726: .pg
727: If
728: .b NICENESS
729: is defined,
730: .i rnews
731: does a
732: .i nice (2)
733: to priority
734: .b NICENESS
735: before processing news.
736: .hn 3
737: FASCIST
738: .pg
739: If this is defined,
740: .i inews
741: checks to see if the posting user is allowed to
742: post to the given newsgroup. If the username is not in the file
743: .b LIBDIR \f2/authorized\fP
744: then the default newsgroup pattern in the symbol
745: .b FASCIST
746: is used.
747: .pg
748: The format of the file
749: .i authorized
750: is:
751: .br
752: .si
753: user:allowed groups
754: .ei
755: .pg
756: For example:
757: .si
758: .sd
759: root:net.all,mod.all
760: naughty_person:junk,net.politics
761: operator:!net.all,general,test,mod.unix
762: .ed
763: .ei
764: .pg
765: An open environment could have
766: .b FASCIST
767: set to
768: .ng all
769: and then individual entries could be made in the authorized file
770: to prevent certain individuals from posting to such a wide
771: area.
772: .pg
773: Note that a distribution of
774: .ng all
775: does
776: .i not
777: mean to allow postings
778: only to local groups \-
779: .ng all
780: includes
781: .ng all.all .
782: Use
783: .ng all\f1,!\fPall.all
784: to get that behavior
785: .hn 3
786: SMALL_ADDRESS_SPACE
787: .pg
788: Define this if your machine has 16 bit (or smaller) pointers.
789: If you are on a
790: .pd ,
791: this is automatically defined.
792: .hn 2
793: Makefile
794: .pg
795: There are also a few parameters in the
796: .i Makefile
797: as well.
798: These are:
799: .hn 3
800: OSTYPE
801: .pg
802: This is the type of
803: .ux
804: system you are using.
805: It should be either
806: .b v7
807: or
808: .b USG .
809: Any BSD system is v7. Any System 3 or System 5 system is USG.
810: This is normally set by
811: .i localize.sh .
812: .hn 3
813: NEWSUSR
814: .pg
815: This is the owner (user name) of
816: .i inews .
817: If you are a superuser,
818: you should probably create a new user id (traditionally
819: .i news )
820: and use this id.
821: If you are not a superuser,
822: you can use your own user id.
823: If you are able to,
824: you should create a mail alias
825: .i usenet
826: and have mail to this alias forwarded to you.
827: This will make it easier for other sites to find the right person
828: in the presence of changing jobs and out of date or nonexistent directory pages.
829: .b NEWSUSR
830: and
831: .b ROOTID
832: do not need to represent the same user.
833: .hn 3
834: NEWSGRP
835: .pg
836: This is the group (name) to which
837: .i inews
838: belongs.
839: The same considerations as
840: .b NEWSUSR
841: apply.
842: .hn 3
843: SPOOLDIR
844: .pg
845: This directory contains subdirectories in which news articles will be stored.
846: It is normally
847: .i /usr/spool/news .
848: .pg
849: Briefly,
850: for each newsgroup (say
851: .ng net.general )
852: there will be a subdirectory
853: .i /usr/spool/news/net/general
854: containing articles,
855: whose file names are sequential numbers,
856: .i e\f1.\fPg .,
857: .i /usr/spool/news/net/general/1 ,
858: etc.
859: .pg
860: Each article file is in a mail-compatible format.
861: It begins with a number of header lines,
862: followed by a blank line,
863: followed by the body of the article.
864: The format has deliberately been chosen to be compatible
865: with the ARPANET standard for mail documented in RFC 822.
866: .pg
867: You should place news in an area of the disk with enough free space
868: to hold the news you intend to keep on line.
869: The total volume of news in
870: .ng net.all
871: currently runs about 1 Mbyte per day.
872: If you expire news after the default 2 weeks,
873: you will need about 14 Mbytes of disk space
874: (plus some extra as a safety margin and
875: to allow for increased traffic in the future.)
876: If you only receive some of the newsgroups,
877: or expire news after a different interval,
878: these figures can be adjusted accordingly.
879: .hn 3
880: BATCHDIR
881: .pg
882: This directory will contain the list of articles to send to each system.
883: It is normally
884: .i /usr/spool/batch .
885: .hn 3
886: LIBDIR
887: .pg
888: This directory will contain various system files.
889: It is normally
890: .i /usr/lib/news .
891: .hn 3
892: BINDIR
893: .pg
894: This is the directory in which
895: .i readnews ,
896: .i postnews ,
897: .i vnews ,
898: and
899: .i checknews (1)
900: are to be installed.
901: This is normally
902: .i /usr/bin .
903: If you decide to set
904: .b BINDIR
905: to a local binary directory,
906: you should consider that the
907: .i rnews
908: and
909: .i cunbatch
910: commands must be in a directory that can be found by
911: .i uuxqt ,
912: which normally only searches
913: .i /bin
914: and
915: .i /usr/bin .
916: .hn 3
917: UUXFLAGS
918: .pg
919: These are the flags
920: .i uux
921: will be called with.
922: .hn 3
923: LNRNEWS
924: .pg
925: This is the program used to link
926: .i rnews
927: and
928: .i inews .
929: If you have symbolic links,
930: you can replace the \*(lqln\*(rq with \*(lqln \-s\*(rq.
931: .hn 3
932: SCCSID
933: .pg
934: If this is defined, sccs ids will be included in each file. If you
935: are short on address space, don't define this.
936: .hn
937: FILES
938: .pg
939: This section lists the files in
940: .b LIBDIR
941: and comments briefly what they do.
942: .hn 2
943: active
944: .pg
945: A list of active newsgroups.
946: It is automatically updated as new newsgroups come in.
947: The order here is the order news is initially presented by
948: .i readnews ,
949: so you can edit this file to put important newsgroups first.
950: If you have
951: .b SORTACTIVE
952: defined,
953: after the first time the user invokes
954: .i readnews ,
955: it will be presented in the order of his
956: .i .newsrc .
957: Each line of the active file contains four fields,
958: separated by a space:
959: the newsgroup name,
960: the highest local article number
961: (for the most recently received article),
962: the lowest local article number that has not yet expired,
963: and a single character used to determine if the user can post to that newsgroup.
964: If the character is
965: \&\*(lqy\*(rq
966: the user is permitted to post articles to that group.
967: If the character is
968: \&\*(lqn\*(rq
969: the user is not permitted to post articles to that groups.
970: (This field takes the place of the
971: .i ngfile
972: in earlier versions of news.
973: Local article numbers begin at 1 and count sequentially
974: within the newsgroup as articles are received.
975: They do not usually correspond to local article numbers on other sites.
976: The article numbers are always stored as a five digit number
977: (with leading zeros) to allow updating of the file in place.
978: .pg
979: The active file should contain
980: .ng all
981: active net-wide active newsgroups
982: .ng net.all and (
983: .ng mod.all ).
984: It is important that they all be present,
985: as they are used as a check for valid newsgroup names
986: and invalid newsgroup names are removed from any articles processed by
987: .i inews .
988: You should use the
989: .i sys
990: file to keep out unwanted newsgroups.
991: .hn 2
992: aliases
993: .pg
994: This file is used to map bad newsgroup names to the correct ones.
995: (For example,
996: .ng net.unix.wizards
997: is mapped into
998: .ng net.unix-wizards ).
999: Each line consists of two fields separated by a space.
1000: If the first field is found in the newsgroup list of the incoming article,
1001: it is changed to the second field.
1002: This change takes place in the article
1003: before it is passed on to other systems,
1004: not just locally.
1005: .hn 2
1006: batch
1007: .pg
1008: This program reads a list of filenames of articles
1009: and outputs the articles themselves.
1010: It is typically used by the shell script
1011: .i sendbatch .
1012: .hn 2
1013: c7unbatch
1014: .pg
1015: This is used to decompress news that has been
1016: .b encoded
1017: for transmission over a network that only supports 7-bit transfers (e.g X.25.)
1018: .hn 2
1019: caesar
1020: .pg
1021: This is a program to do Caesar decoding of rotated text,
1022: on a line by line basis.
1023: The standard input is copied to the standard output,
1024: rotating each line according to a static single letter frequency table.
1025: If an integer argument is given
1026: .i e\f1.\fPg ., (
1027: 13),
1028: every line is rotated by that argument,
1029: without regard to letter frequencies.
1030: This program is invoked by the
1031: .qp D
1032: .i readnews
1033: command.
1034: It is also used by
1035: .i postnews
1036: with the \*(lq13\*(rq argument to encode selected material for posting.
1037: .hn 2
1038: checkgroups
1039: .pg
1040: .i Checkgroups
1041: is a shell file to aid in automatically checking
1042: the accuracy of your active file.
1043: It is executed by the
1044: .b checkgroups
1045: control message and mails a list of out of date newsgroups
1046: to the person defined by
1047: .b NOTIFY
1048: It also updates the
1049: .i newsgroups
1050: file that is used by
1051: .i postnews
1052: as a helpfile for newsgroup selection.
1053: .hn 2
1054: compress
1055: .pg
1056: This program does a modified Lempel-Ziv data compression. It is used by the
1057: compressed batching scheme.
1058: It averages 50% compression on a typical batch of news.
1059: .hn 2
1060: distributions
1061: .pg
1062: This is a list of distributions that are valid for your site.
1063: Each line has two fields separated by the first space on the line.
1064: The first field is the name of the distribution
1065: .i e\f1.\fPg ., (
1066: .ng usa ,
1067: .ng na ,
1068: etc.).
1069: The second field is text describing the distribution.
1070: As distributed,
1071: this file is only correct for sites in the USA.
1072: You should examine this file and add or delete the appropriate distributions.
1073: .hn 2
1074: encode
1075: .pg
1076: This program transforms an 8-bit binary file into a file suitable for
1077: sending over a link that only allows 7-bit characters. It is used
1078: by
1079: .b "sendbatch -c7."
1080: .hn 2
1081: errlog
1082: .pg
1083: This file contains the \*(lqimportant\*(rq error messages found in the log file.
1084: These errors usually indicate that something was wrong with an article.
1085: This file should be watched closely.
1086: The
1087: .i log
1088: file contains much more verbose information
1089: and it is often difficult to detect errors in it.
1090: .hn 2
1091: expire
1092: .pg
1093: This program expires old articles and archives them if archiving is selected.
1094: It is typically run once a day from
1095: .i cron (8).
1096: .hn 2
1097: help
1098: .pg
1099: This contains a list of commands printed when an illegal command is typed to
1100: .i readnews .
1101: .hn 2
1102: history
1103: .pg
1104: A list of every article that has come in to your system.
1105: It is used to reject articles that come in for the second time
1106: (presumably via a different path).
1107: This file will grow but is cleaned out by the
1108: .i expire (8)
1109: command.
1110: .hn 2
1111: history.d
1112: .pg
1113: On USG systems, this directory contains 10 files (history.[0-9]) which are
1114: used as part of a simple hashing algorithm to speed up history searches.
1115: Since V7 systems have DBM, this is not used on V7 systems.
1116: .hn 2
1117: history.dir,history.pag
1118: .pg
1119: These two files are used on V7 systems as a hashed version of
1120: .i history ,
1121: containing the message id's of all articles in history.
1122: They are only used if
1123: .b \-DDBM
1124: and
1125: .b \-ldbm
1126: appear in
1127: .i Makefile .
1128: .hn 2
1129: inews
1130: .pg
1131: This is the program that actually sends and receives news.
1132: All other programs interface eventually with it.
1133: It is not intended to be used directly by a human,
1134: so it is no longer in
1135: .i /usr/bin .
1136: .hn 2
1137: log
1138: .pg
1139: If present,
1140: a log of articles processed and error conditions is kept here.
1141: This file grows without limit unless cleaned out periodically.
1142: The
1143: .i trimlib
1144: script in
1145: .i misc
1146: can be invoked from
1147: .i cron
1148: daily or weekly to keep the log short.
1149: .hn 2
1150: moderators
1151: .pg
1152: This file contains a list of the moderators and their mailing addresses
1153: for each moderated newsgroup.
1154: Each line consists of two fields.
1155: the first is the name of the moderated group.
1156: The second is the mailing address of the group's moderator.
1157: As distributed,
1158: they are almost certainly wrong.
1159: You will need to modify the paths so they work from your site.
1160: .hn 2
1161: newsgroups
1162: .pg
1163: This file is displayed by
1164: .i postnews
1165: when a user hits
1166: .qp ?
1167: in response to its request for newsgroups.
1168: It is also used by
1169: .i vnews
1170: when it displays the newsgroup name.
1171: It is updated automatically by the
1172: .b checkgroups
1173: control message.
1174: .hn 2
1175: notify
1176: .pg
1177: If this file is present,
1178: its contents will be taken as the name of the user
1179: to notify in case of a problem.
1180: If the file is empty,
1181: nobody will be notified.
1182: (This overrides the
1183: .b NOTIFY
1184: option in
1185: .i defs.h ).
1186: Having a null file is useful if one person administers several systems
1187: and does not want multiple copies of control message notifications.
1188: .hn 2
1189: oactive, ohistory, ohistory.dir, ohistory.pag
1190: .pg
1191: These are copies of the corresponding
1192: .i active ,
1193: .i history ,
1194: .i history.dir ,
1195: and
1196: .i history.pag
1197: files before
1198: .i expire
1199: ran.
1200: They are kept in case something happens to the originals.
1201: .hn 2
1202: recmail
1203: .pg
1204: This program can serve as a link between news and your local mailer.
1205: If you have
1206: .i sendmail (8),
1207: don't use
1208: .i recmail .
1209: .i Sendmail
1210: is much more useful.
1211: .hn 2
1212: recnews
1213: .pg
1214: A program which allows you to send mail to get news posted.
1215: You usually need to run
1216: .i sendmail
1217: or
1218: .i delivermail (8)
1219: to be able to use this.
1220: .hn 2
1221: recording
1222: .pg
1223: A list of newsgroup classes and filenames to display recordings for.
1224: The recording feature is analogous to the recordings played in some areas
1225: when you dial directory assistance,
1226: trying to be annoying and make you think twice.
1227: Recordings on certain newsgroups are intended to remind the user
1228: of the rules for the newsgroup,
1229: or,
1230: in the case of a company worried about letting proprietary information out,
1231: reminding authors that anything they say is seen outside the company
1232: and so proprietary information should not be included.
1233: .pg
1234: The file contains one line per recording.
1235: The line contains two fields,
1236: separated by a space.
1237: The first field is the newsgroup class
1238: .i e\f1.\fPg ., (
1239: .ng net.all ),
1240: the second field is the name of the file containing the recorded message.
1241: If the file name does not begin with a slash,
1242: it will be searched for in
1243: .b LIBDIR .
1244: Sample recording files can be found in the
1245: .i misc
1246: directory.
1247: .hn 2
1248: rmgroup
1249: .pg
1250: This shell file should be used to remove any groups that are no longer used.
1251: .hn 2
1252: sendbatch
1253: .pg
1254: This shell file is used to send batched articles to other systems.
1255: It is typically run from
1256: .i cron .
1257: See the manual page for more details.
1258: .hn 2
1259: sendnews
1260: .pg
1261: A program to send news internally from one computer to another.
1262: It is useful if you must use mail links to transmit articles.
1263: .hn 2
1264: seq
1265: .pg
1266: This file contains the current sequence number for your system.
1267: It is used to generate unique article id's.
1268: .hn 2
1269: sys
1270: .pg
1271: This file contains a list of all your neighbors,
1272: which newsgroups they get,
1273: and how to send news to them.
1274: The format is documented below.
1275: .hn 2
1276: unbatch
1277: .pg
1278: This program is used to unbatch the incoming batched news
1279: and feed each article to
1280: .i inews .
1281: It's horrible and will go away in the future.
1282: .hn 2
1283: users
1284: .pg
1285: A list of users that have read news on your system.
1286: .hn 2
1287: uurec
1288: .pg
1289: A program to receive news sent by
1290: .i sendnews (8).
1291: .hn 2
1292: vnews.help
1293: .pg
1294: This is the helpfile used by
1295: .i vnews .
1296: .hn 1
1297: Setting Up Links
1298: .pg
1299: There are two basic types of links for exchanging news:
1300: those that use mail and those that don't.
1301: The ones that use mail are more indirect,
1302: yet more versatile, while the ones that don't are simpler.
1303: The default method does not use mail, so that is discussed first.
1304: .hn 2
1305: Non-mail Links
1306: .pg
1307: The basic theory behind a non-mail link is that the
1308: .i rnews
1309: program is invoked on the remote system
1310: with the article being transmitted as the standard input.
1311: This is possible on several networks,
1312: but the most common implementation is via the UUCP network.
1313: Using the
1314: .i uux
1315: command,
1316: the command which is forked to the shell looks like:
1317: .sd c
1318: uux \- \-r \-z remotesys!rnews < article
1319: .ed
1320: This is the default transmission method.
1321: In order to set up such a link,
1322: obviously a UUCP link with the remote system must be in effect.
1323: In addition,
1324: .i rnews
1325: must be available and executable by
1326: .i uuxqt
1327: on the remote machine.
1328: In most cases,
1329: this means that
1330: .i rnews
1331: must be in
1332: .i /usr/bin
1333: so
1334: .i uux
1335: can find it.
1336: Also,
1337: the list of allowed UUCP commands (in
1338: .i /usr/src/usr.bin/uucp/uuxqt.c
1339: or
1340: .i /usr/lib/uucp/L.cmds ,
1341: depending on the version of UUCP)
1342: should be checked to make sure
1343: that
1344: .i rnews
1345: is an allowed command.
1346: .pg
1347: Other networks that allow remote execution include the BERKNET,
1348: BLICN
1349: .i usend (1)), (
1350: many Ethernets,
1351: and the NSC hyperchannel
1352: .i nusend (1)). (
1353: It is important,
1354: however,
1355: that a spooling mechanism be available.
1356: Otherwise,
1357: if system
1358: .cn A
1359: tries to send an article to system
1360: .cn B
1361: via a remote execution command,
1362: and
1363: .cn B
1364: is down,
1365: the article could be lost.
1366: Spooling arranges that the system will try again when
1367: .cn B
1368: comes back up.
1369: .hn 2
1370: Mail Links
1371: .pg
1372: When using mail to transmit articles,
1373: two intermediary programs are necessary.
1374: These are
1375: .i sendnews
1376: and
1377: .i uurec (8).
1378: The idea is that when system
1379: .cn A
1380: wants to send an article to system
1381: .cn B ,
1382: the
1383: .i sys
1384: file on system
1385: .cn A
1386: has an entry for system
1387: .cn B
1388: such as:
1389: .sd c
1390: /usr/lib/news/sendnews \-a rnews@B
1391: .ed
1392: which runs
1393: .i sendnews
1394: on the article.
1395: The
1396: .op \-a
1397: option specifies that the mail should be formatted for the ARPANET.
1398: .i Sendnews
1399: packages the article and mails it to
1400: .cf rnews@B .
1401: Somehow,
1402: the B system is expected to make sure that all mail to user
1403: .cf rnews
1404: is fed as input to the program
1405: .i uurec .
1406: This program unpackages it and invokes
1407: .i rnews .
1408: .pg
1409: The best way to get mail to
1410: .cf rnews
1411: fed into
1412: .i uurec
1413: is to use
1414: .i sendmail
1415: or
1416: .i delivermail ,
1417: if you are on a system running them.
1418: Create an alias in
1419: .i /usr/lib/aliases
1420: as follows:
1421: .sd c
1422: rnews: "|/usr/lib/news/uurec"
1423: .ed
1424: and
1425: .i sendmail
1426: will handle it.
1427: If you do not have a facility for forwarding mail to a program,
1428: you can gimmick your mailer to watch for it
1429: (using
1430: .i popen (3S),
1431: this is easy)
1432: or,
1433: if you don't want to do any programming,
1434: you can have
1435: .i cron
1436: invoke
1437: .i uurec
1438: every hour with
1439: .i /usr/spool/mail/rnews
1440: as standard input.
1441: This solution is messier because
1442: .i uurec
1443: must potentially deal with multiple messages,
1444: something that has never been tested.
1445: .hn 1
1446: Format of the
1447: .bi sys
1448: file
1449: .pg
1450: To set up a link to another site,
1451: edit the
1452: .i sys
1453: file in
1454: .b LIBDIR .
1455: This file is similar to the
1456: .i L.sys
1457: file of UUCP.
1458: Each line contains four fields,
1459: separated by colons:
1460: .lp (1)
1461: The system name of a site to which you forward news.
1462: Normally all systems you have links to will be
1463: included.
1464: You should also have a line for your own system.
1465: If this field is
1466: .cn ME,
1467: it will be used as if it were your local system name.
1468: If the system name is followed by a \*(lq/\*(rq, the article will not be
1469: forwarded to this system if it has already passwd through any of the
1470: (comma separated) list of sites immediately following the \*(lq/\*(rq.
1471: For example, if the sysline was:
1472: .sd c
1473: yoursite/sitea,siteb,sitec:net,mod,na,usa,to.yoursite::
1474: .ed
1475: the incoming article would only be forwarded to
1476: .i yoursite
1477: if it had not already been to any of
1478: .i sitea ,
1479: .i siteb ,
1480: or
1481: .i sitec .
1482: This is normally used to reduce the number of duplicate articles received
1483: at a site that has multiple main newsfeeds.
1484: .lp (2)
1485: The newsgroups to be forwarded to them.
1486: This is a pattern of the same kind as a subscription list.
1487: Generally,
1488: you will list classes of newsgroups,
1489: that is,
1490: using
1491: .ng all
1492: for everything.
1493: A typical forwarding list for a new site would be
1494: .sd c
1495: net,mod,na,usa,to.\f2sysname\fP
1496: .ed
1497: where
1498: .i sysname
1499: is the name of the remote system.
1500: (Of course, if you are not in the USA or North America,
1501: you would remove those distributions
1502: and replace them with the ones appropriate for you).
1503: In particular,
1504: you don't want to forward
1505: .ng all
1506: since local newsgroups
1507: (those without dots)
1508: should not be sent.
1509: For the line describing your own system,
1510: this field describes the newsgroups your site will accept from remote sites.
1511: Thus,
1512: if another site insists on sending you a newsgroup you don't want,
1513: for example
1514: .ng net.jokes ,
1515: include
1516: .ng !net.jokes
1517: here.
1518: .lp (3)
1519: This field contains flags describing the connection.
1520: An
1521: .b A
1522: will indicate that the other site is running an A version of netnews.
1523: A
1524: .b B
1525: indicates a B version.
1526: Leaving it empty defaults to
1527: .b B .
1528: If you are reading this document,
1529: you have a B version.
1530: Some existing sites run A versions.
1531: If you aren't sure,
1532: ask your contact at the other site,
1533: with whom you should be talking to set this up anyway.
1534: The
1535: .b F
1536: flag indicates that the fourth field is the name of a file.
1537: The full path name of a file containing the article in
1538: .b SPOOL
1539: will be appended to this file.
1540: The
1541: .b L
1542: flag prevents transmission unless the article was created on this site.
1543: If a number follows the
1544: .b L
1545: .i e\f1.\fPg ., (
1546: .b L3 ),
1547: sites less than that number of hops away will be considered local.
1548: (It is recommended that you feed an
1549: .b L
1550: link to a backbone site,
1551: to ensure that your submissions will be more likely
1552: to get to the entire network,
1553: even in the event of a local problem.
1554: Please make sure that a mail link exists too,
1555: so you can get replies.)
1556: The
1557: .b N
1558: flag can also be included here,
1559: indicating that mail should
1560: be sent using the
1561: .pa ihave/sendme
1562: protocol described below.
1563: The
1564: .b H
1565: flag can be used to interpolate the history file into the command.
1566: The
1567: .b S
1568: flags says to execute the transmission command directly
1569: instead of forking a shell.
1570: The
1571: .b U
1572: field arranges that the parameter to the optional \*(lq%s\*(rq
1573: in the command field to be filled in with a permanent file name from
1574: .b SPOOL
1575: instead of a temporary customized file name.
1576: The
1577: .b M
1578: flag says to use multi-casting. Multi-casting is described in an appendix.
1579: .lp (4)
1580: This field is the command to be run to send news to the remote site.
1581: The article will be on the standard input.
1582: Leaving this field blank means an ordinary UUCP link is being used,
1583: that is,
1584: the command defaults to
1585: .sd c
1586: uux \- \-r \-z sysname!rnews
1587: .ed
1588: The
1589: .op \-
1590: option tells
1591: .i uux
1592: to expect input from the standard input.
1593: The
1594: .op \-z
1595: option is nonstandard \- you should add it
1596: (see the
1597: .i minus.z*
1598: files in the uucp source directory.)
1599: It shuts off the annoying message you would otherwise get mailed to you
1600: telling you that your article was broadcast successfully.
1601: To avoid using the
1602: .op \-z
1603: option,
1604: change the source or put the
1605: .i uux
1606: command in the fourth field.
1607: The
1608: .op \-r
1609: option tells
1610: .i uux
1611: not to call the other system once the job is queued.
1612: This turns out to ease the load on the system,
1613: at the expense of making news be transmitted a bit slower.
1614: The news will be sent when the next call is made;
1615: usually this means the next time mail is sent to or from your system.
1616: If this turns out to be unreasonably long,
1617: put a line in
1618: .i crontab
1619: to run
1620: .sd c
1621: /usr/lib/uucp/uucico \-r1 \-s\f1system\fP
1622: .ed
1623: every hour or so.
1624: .pg
1625: Here is a sample
1626: .i sys
1627: file for a site
1628: .cn myvax
1629: with connections to
1630: .cn yourvax
1631: where
1632: .cn myvax
1633: also passes news on to
1634: .cn downstream .
1635: We assume that
1636: .cn myvax
1637: and
1638: .cn downstream
1639: exchange a local newsgroup class
1640: .ng lng.all
1641: as well as the network wide newsgroups.
1642: News to
1643: .cn downstream
1644: is batched.
1645: We also assume that
1646: .cn myvax
1647: and
1648: .cn yourvax
1649: are in the USA,
1650: while
1651: .cn downstream
1652: is in Canada.
1653: .sd
1654: myvax:net,mod,na,usa,lng,to::
1655: yourvax:net,mod,na,usa,to.yourvax::
1656: downstream:net,mod,na,lng,to.downstream:F:/usr/spool/batch/downstream
1657: .ed
1658: .hn
1659: Posting Methods
1660: .pg
1661: The basic method is
1662: .i postnews .
1663: This program will prompt you for the title,
1664: newsgroups,
1665: and distribution,
1666: then place you in the editor.
1667: (The system default
1668: .b EDITOR
1669: is used unless the environment variable
1670: .b EDITOR
1671: is set,
1672: overriding the system default.)
1673: The text should be typed after the blank line.
1674: The title and newsgroups are available for editing at the top of the buffer.
1675: Other header lines can be added,
1676: such as an expiration date or a distribution.
1677: When you write out the file and exit from the editor,
1678: you will be prompted for what to do next. Your choices are:
1679: .b w rite
1680: the message to a file,
1681: .b s end
1682: the message,
1683: .b l ist
1684: the message or
1685: .b e dit
1686: it again.
1687: .pg
1688: Another method is to use mail.
1689: This can only be done on systems that allow mail to a given name
1690: to be fed into an arbitrary program as input.
1691: This is easily done with the Berkeley
1692: .i delivermail
1693: or
1694: .i sendmail
1695: program,
1696: and not with any other mailer the author is familiar with.
1697: (It may be possible to painfully set this up with MMDF,
1698: provided the newsgroup name is no more than 8 characters long.)
1699: To use mail,
1700: set up an alias such as the following:
1701: .sd c
1702: net.general: "|/usr/lib/news/recnews net.general"
1703: .ed
1704: Whenever a user sends mail to
1705: .ng net.general ,
1706: this starts up the given shell command which calls
1707: .ng recnews
1708: with one argument,
1709: the name of the newsgroup.
1710: You need to create one alias for each newsgroup,
1711: and to keep the list up to date as new newsgroups are created.
1712: .i Recnews (8)
1713: will in turn invoke
1714: .i inews .
1715: .pg
1716: Note that there are problems with
1717: .i recnews .
1718: There is no way to use it to post to multiple newsgroups
1719: without creating separate articles
1720: (something frowned upon because it forces people
1721: to read the same thing more than once.)
1722: Also,
1723: there is no way to make the recording feature
1724: (to remind people to not accidently divulge proprietary information)
1725: work when recnews is used.
1726: .hn
1727: Various considerations
1728: .hn 2
1729: Setuid bits
1730: .pg
1731: The current intended state of affairs is that
1732: .i inews
1733: runs setuid to
1734: .b NEWSUSR .
1735: The
1736: .i readnews
1737: program does not need to be setuid.
1738: This makes it possible to write your own interface to read news instead of using
1739: .i readnews .
1740: (As distributed,
1741: .i inews
1742: is also setgid.
1743: I know of no good reason for this.)
1744: .hn 2
1745: Modes of Spool Directories
1746: .pg
1747: All the files should be writable by
1748: .b NEWSUSR .
1749: However,
1750: due to a glitch,
1751: you will probably have to make the
1752: .b SPOOLDIR
1753: and its subdirectories mode 777.
1754: It could be 755 except for one problem.
1755: When a new newsgroup comes in,
1756: .i inews
1757: will attempt to
1758: .i mkdir (1)
1759: a new subdirectory of
1760: .b SPOOLDIR
1761: for the newsgroup.
1762: Since both
1763: .i inews
1764: and
1765: .i mkdir
1766: are setuid,
1767: .i mkdir
1768: will use the uid of the person who ran
1769: .i inews
1770: instead of
1771: .b NEWSUSR
1772: when checking for permissions.
1773: If the directory mode isn't 777 the check will fail.
1774: Here are several alternatives if you don't want a 777 directory around:
1775: .hn 3
1776: Fix Real Uid
1777: .pg
1778: If
1779: .i inews
1780: is always run by
1781: .i cron
1782: or as
1783: .i root ,
1784: the real uid can be arranged to be
1785: .i root
1786: or
1787: .b NEWSUSR .
1788: This is a poor solution
1789: since it makes the local creation of new newsgroups
1790: require super user permissions,
1791: and is a potential security hole.
1792: If this approach is taken,
1793: care must be taken to insure that the owner of the created directory is
1794: .b NEWSUSR .
1795: .hn 3
1796: Change the Kernel
1797: .pg
1798: .i Inews
1799: will do:
1800: .b setuid(geteuid())
1801: (see
1802: .i setuid (2)
1803: and
1804: .i geteuid (2))
1805: before it forks the
1806: .i mkdir .
1807: If your system permits this call,
1808: there will be no problem.
1809: In particular,
1810: Berkeley 4.0
1811: .ux
1812: and later systems allow this.
1813: An alternative change to the kernel is to automatically stack uids:
1814: when a setuid program is run,
1815: set the new real uid to the old effective uid.
1816: .hn 3
1817: Groups
1818: .pg
1819: You could have
1820: .i inews
1821: be setgid to
1822: .b NEWSGRP
1823: and all files writable by the group.
1824: This approach has been tested and the problem turns out to be that the
1825: .i mkdir
1826: command uses the
1827: .i access (2)
1828: system call to check permissions.
1829: Since
1830: .i access
1831: uses the real gid,
1832: you run into the same problem.
1833: .hn 3
1834: Another
1835: .bi Mkdir
1836: .pg
1837: You could create a version of
1838: .i mkdir
1839: that does less checking and put it in a directory that can only be accessed by
1840: .b NEWSUSR
1841: (mode 700,
1842: owned by
1843: .b NEWSUSR ).
1844: Have
1845: .i inews
1846: fork this
1847: .i mkdir .
1848: .hn 2
1849: Expiration dates
1850: .pg
1851: To get articles to expire automatically, put a line in
1852: .i crontab
1853: to run
1854: .sd c
1855: /usr/lib/news/expire
1856: .ed
1857: every night.
1858: This command deletes all expired news.
1859: The
1860: .op \-a
1861: .i newsgroups
1862: option causes all expired news to be archived under
1863: .i /usr/spool/oldnews
1864: depending on which newsgroups are selected.
1865: (See
1866: .i expire (8)
1867: for details.)
1868: .pg
1869: Sometimes news is not expired when it should be.
1870: Be sure to check that
1871: .i expire
1872: has permissions to unlink files,
1873: and that it is properly setuid to
1874: .b NEWSUSR .
1875: You can manually invoke
1876: .i expire
1877: with the
1878: .op \-v
1879: (verbose) option to find out what it's doing.
1880: Adding levels of verbosity
1881: .i e\f1.\fPg ., (
1882: .op \-v6 )
1883: will get more and more output.
1884: .hn 2
1885: Version to Version
1886: .pg
1887: Version B will understand incoming news in either version A or B format,
1888: automatically (presuming
1889: .b OLD
1890: is defined in defs.h.)
1891: Version B
1892: will generate either format,
1893: depending on the flag in the third field of the
1894: .i sys
1895: line.
1896: Version A will not understand version B format.
1897: Thus,
1898: it is possible for two version B
1899: sites to communicate using version A
1900: format.
1901: This will work but is not a good idea,
1902: since the translation from B to A loses information
1903: (such as the expiration date)
1904: which will not be there when translated back to version B.
1905: .pg
1906: News from versions A and 2.9 B
1907: do not conform to the USENET interchange standard.
1908: 2.10 B supports the standard and will communicate with either A or 2.9 B news.
1909: A news is written (losing other header information) if
1910: A is in the flags for the system.
1911: If
1912: .b OLD
1913: is defined,
1914: 2.10 will write out headers with both standard
1915: .hf Date "" (
1916: .hf Message-ID )
1917: and 2.9
1918: .hf Posted "" (
1919: .hf Article-I.D. )
1920: lines so that either B system will properly handle the article.
1921: Incoming news is recognized by the first letter
1922: .qp A "" (
1923: for A news),
1924: or the lack of an
1925: .cf @
1926: in the
1927: .hf From
1928: line (2.9).
1929: Missing fields are constructed as well as possible
1930: from the available information.
1931: .hn 2
1932: Presentation Order
1933: .pg
1934: The order of the newsgroups listed in
1935: .bi LIBDIR \f2/active\fP
1936: is the order the newsgroups will be presented in initially.
1937: If
1938: .b SORTACTIVE
1939: is defined in
1940: .i defs.h ,
1941: after the first time news will be presented in the order of the person's
1942: .i .newsrc .
1943: Initially this will be directory order,
1944: but you can edit important newsgroups like
1945: .ng general
1946: to the top.
1947: .pg
1948: A recommended order to maintain your active file in is this:
1949: .sd
1950: net.announce.newusers
1951: general
1952: local.general
1953: net.announce
1954: local \fInewsgroups in alphabetical order\fP
1955: mod.all \fInewsgroups in alphabetical order\fP
1956: net.all \fInewsgroups in alphabetical order\fP
1957: test
1958: all.test
1959: to.all
1960: control
1961: junk
1962: .ed
1963: .hn
1964: Control Messages
1965: .pg
1966: Some news systems will send you articles that are not for human consumption.
1967: They are messages to your news system called
1968: .i "control messages" .
1969: Such messages contain the
1970: .hf Control
1971: header.
1972: Older systems use newsgroups matching
1973: .ng all.all.ctl ,
1974: and this will still work,
1975: although the
1976: .hf Control
1977: header is preferred.
1978: Since the newsgroup name is used for distribution only,
1979: and is not checked to ensure it's in the active file,
1980: such newsgroup names can still be used.
1981: This makes it possible to post network wide control messages with
1982: .ng net.msg.ctl
1983: (or restricted broadcast such as
1984: .ng btl.msg.ctl )
1985: or messages for a particular system:
1986: .ng to.ucbvax.ctl .
1987: Messages are canceled,
1988: however,
1989: with a
1990: .hf Control
1991: line in a message to the same newsgroup(s)
1992: as the original message.
1993: .pg
1994: A control message contains a command and zero or more arguments
1995: (much like a
1996: .ux
1997: program).
1998: The subject of the article contains the command and arguments.
1999: The body of the article is usually ignored,
2000: although some messages can use it for additional text information.
2001: Control messages are not stored in
2002: .b SPOOL ;
2003: rather,
2004: they are acted on and discarded at once.
2005: .hn 2
2006: ihave/sendme
2007: .pg
2008: Two control messages are
2009: .b ihave
2010: and
2011: .b sendme .
2012: These messages allow two participating sites to set up a link
2013: so that one site will tell the other site it has a given article
2014: and wait for a request before it actually sends it.
2015: The normal case is to send an entire article to a system,
2016: which consults the history file to see if the article has already been seen,
2017: and then throws it away if it has been seen before.
2018: .pg
2019: Note that,
2020: since most messages are short anyway,
2021: experience has indicated that for ordinary UUCP unbatched communication,
2022: all
2023: .pa ihave/sendme
2024: does is triple the load and slow down forwarding.
2025: We hope future code will allow
2026: .b ihave 's
2027: with multiple message id's in the body,
2028: and existing code in 2.10 understands such messages,
2029: but does not generate them.
2030: So we advise that you don't use
2031: .pa ihave/sendme
2032: for now.
2033: .pg
2034: Use of these control messages can cut down on this wasted transmission,
2035: but if you have a polled UUCP connection,
2036: they can slow down receipt of news due to polling delays.
2037: It is up to each connected pair of sites whether they want to use this protocol.
2038: The choice is controlled by the
2039: .b N
2040: flag in the
2041: .i sys
2042: file.
2043: In the case of a leaf node
2044: (one with only one neighbor)
2045: there is no advantage to this protocol.
2046: Even if both sites are able to initiate a connection
2047: (have dialers or the link is hardwired)
2048: the
2049: .op \-r
2050: option on the
2051: .i uux
2052: can cause 2 hour or more delays in propagating news.
2053: Since this protocol can triple the number of messages generated,
2054: you should carefully evaluate your situation when deciding whether to use it.
2055: If transmission time and phone bills dominate your costs,
2056: and you are sending news to several sites,
2057: and large article bodies dominate the costs
2058: (rather than the headers and the time spent by UUCP negotiating transmission)
2059: it is probably worthwhile to use
2060: .pa ihave/sendme .
2061: If your costs are dominated by CPU load from UUCP,
2062: or if you send news to a site that cannot get it from anywhere else,
2063: you probably do not want to use this protocol.
2064: The decision can be made independently for each site in your
2065: .i sys
2066: file.
2067: .pg
2068: This pair works as follows:
2069: Site
2070: .cn mysite
2071: receives article
2072: .cf <[email protected]> .
2073: It enters it locally and then broadcasts it to its neighbors.
2074: One of its neighbors is site
2075: .cn yoursite
2076: which has the
2077: .b N
2078: flag in the
2079: .i sys
2080: file.
2081: So
2082: .cn mysite
2083: sends an article on newsgroup
2084: .bi yoursite \f3.ctl\fP \f3to.\fP
2085: with title
2086: .cf "ihave <[email protected]> mysite" .
2087: This control message has two arguments \-
2088: the first
2089: .cf <[email protected]> ) (
2090: is the article id of the article in question,
2091: the second
2092: .cf mysite ) (
2093: is the name of the site sending the article.
2094: The name of the newsgroup and the
2095: .i sys
2096: file control transmission of the article.
2097: Normally the
2098: .i sys
2099: file will read something like
2100: .sd c
2101: yoursite:net.all,fa.all,to.yoursite:BN:
2102: .ed
2103: which will cause an article on
2104: .b to.yoursite.ctl
2105: to be transmitted.
2106: .pg
2107: .cn Yoursite
2108: receives the message and looks to see if it has seen it before.
2109: If it has,
2110: it throws the message away and stops.
2111: If it hasn't,
2112: it sends a message on
2113: .bi mysite \f3.ctl\fP \f3to.\fP
2114: with title
2115: .cf "sendme <[email protected]> yoursite"
2116: which is transmitted to
2117: .cn mysite .
2118: (The two arguments to
2119: .i sendme
2120: are the article id requested and the site to send it to.)
2121: Then
2122: .cn mysite
2123: gets this message
2124: and actually transmits the article to
2125: .cn yoursite .
2126: .hn 2
2127: newgroup
2128: .pg
2129: This message has one argument,
2130: the name of a newsgroup to be created.
2131: This allows special action to be taken locally when a new newsgroup is created.
2132: It is generated by the
2133: .op \-C
2134: option to
2135: .i inews .
2136: By default,
2137: the newsgroup is added to the active file,
2138: and mail is sent to the local contact advising that this has happened.
2139: The directory will be created when a message for that newsgroup arrives.
2140: See the routine \*(lqc_newgroup\*(rq in
2141: .i control.c
2142: if you want something different to happen.
2143: (Note that,
2144: although the body of the message contains a brief description
2145: of the purpose of the group,
2146: this body is usually thrown away by existing software.)
2147: .hn 2
2148: rmgroup
2149: .pg
2150: This message has one argument,
2151: the name of a newsgroup to be removed.
2152: It is used for network-wide cancellation of a newsgroup.
2153: If
2154: .b MANUALLY
2155: is not defined,
2156: it will remove the articles,
2157: directory,
2158: and active file line for the group.
2159: There is a shell script
2160: .i rmgroup
2161: that does essentially the same thing as this message,
2162: but the shell script only removes the group locally.
2163: We recommend that you leave
2164: .b MANUALLY
2165: defined,
2166: and when you receive mail advising you of the demise of the newsgroup,
2167: you run
2168: .i rmgroup
2169: by hand.
2170: This will prevent accidental or malicious removal of a good newsgroup.
2171: .hn 2
2172: cancel
2173: .pg
2174: This message cancels a given article.
2175: It takes one argument,
2176: the message id of the article to cancel.
2177: It should be broadcast to the same newsgroup as the original article.
2178: If the article to be canceled is not present, the control message
2179: will not be propagated to downstream sites.
2180: .hn 2
2181: sendsys
2182: .pg
2183: The
2184: .i sys
2185: file is mailed to the originator of the message.
2186: There are no arguments.
2187: This is used for making maps.
2188: Since your
2189: .i sys
2190: file is public information,
2191: you should not remove or change this control message.
2192: .hn 2
2193: senduuname
2194: .pg
2195: The
2196: .i uuname
2197: program is run and the output is mailed to the originator of the message.
2198: There are no arguments.
2199: This is used for making UUCP maps.
2200: If you do not run UUCP or have sites in your
2201: .i L.sys
2202: which are a secret,
2203: you may wish to edit this.
2204: Note that only the output of
2205: .i uuname
2206: is mailed,
2207: not the contents of
2208: .i L.sys
2209: (which news does not have access to anyway).
2210: If you do make a change,
2211: you should arrange that some mail still is sent out
2212: to the originator of the message, so he will know your site received it.
2213: See the code in routine \*(lqc_senduuname\*(rq in
2214: .i control.c .
2215: .hn 2
2216: version
2217: .pg
2218: The local version name/number of the netnews software
2219: is mailed back to the author of the control message.
2220: .hn 2
2221: checkgroups
2222: .pg
2223: This control message is an attempt at semi-automatic maintenance
2224: of the list of active news groups.
2225: This control messages takes the body of the article and pipes it into
2226: .bi LIB \f2/checkgroups\fP.
2227: As mentioned previously,
2228: .bi LIB \f2/checkgroups\fP
2229: will update the newsgroups file,
2230: add any missing newsgroups, and mail a message to
2231: .b NOTIFY
2232: about any old newsgroups that should be removed.
2233: It is expected that the person who maintains the list of active newsgroups
2234: will broadcast this control message on a regular basis.
2235: .hn 2
2236: Other Messages
2237: .pg
2238: Any unrecognized message will cause an error message to be mailed
2239: to the local site administrator.
2240: Additional messages may be defined as time goes on,
2241: such as messages to automatically update directories or maps.
2242: You should be willing to go into the code
2243: .i control.c ) (
2244: and add messages as they become standardized.
2245: .hn
2246: Maintenance
2247: .pg
2248: There are some things you should do periodically
2249: to keep your news system running smoothly.
2250: We hope to eventually automate all or most of this,
2251: but right now some of it must be done by hand.
2252: .pg
2253: The
2254: .i history
2255: and
2256: .i log
2257: files in your
2258: .b LIB
2259: directory will grow.
2260: You should make sure that they are cleaned up periodically.
2261: The
2262: .bi LIB \f2/expire\fP
2263: program will remove lines from history corresponding to deleted articles,
2264: but it is a good idea to check the file every few months
2265: to make sure it is not going wild.
2266: Be sure not to completely lose your history file when you clean it up,
2267: in case another neighbor tries to send you an article you recently got.
2268: (If you only get news from one site it is safe to clean it out completely.)
2269: .pg
2270: The log file is not automatically cleaned out by any netnews software,
2271: and will grow quickly.
2272: The
2273: .i misc/trimlib
2274: script can be installed in
2275: .bi LIB \f2/trimlib\fP,
2276: and invoked weekly by
2277: .i cron .
2278: .pg
2279: You should also clean out old newsgroups that are no longer active.
2280: To remove a newsgroup
2281: .ng net.foo ,
2282: you should run the shell script
2283: .i rmgroup
2284: with
2285: .b net.foo
2286: as the argument.
2287: That is,
2288: .sd c
2289: /usr/lib/news/rmgroup net.foo
2290: .ed
2291: .pg
2292: Note that clearing up UUCP constipation is another thing you'll have to do
2293: if you have flaky hardware or phone lines.
2294: If you have more than one connection,
2295: chances are that UUCP will get clogged up when one of your neighbors goes down
2296: for more than a few hours.
2297: Various spooling schemes are being worked on
2298: to help make the news/uucp system more robust,
2299: but one thing you can and should do,
2300: if you find your
2301: .i /usr/spool/uucp
2302: directory getting too big,
2303: is to install a subdirectory fix to UUCP.
2304: A quick and dirty version of this is available from Duke,
2305: which traps the file-oriented system calls
2306: at the assembly language level and maps,
2307: for example,
2308: D.fooA1234 into D.foo/D.fooA1234.
2309: Since the C. and
2310: .i local "" D.
2311: directories still get big,
2312: in practice this can still create some big directories,
2313: but the directories tend to be a factor of 5 smaller,
2314: resulting in a factor of 25 improvement to speed
2315: (since a directory traversal for all files is quadratic on
2316: .ux ).
2317: Right now,
2318: UUCP is the weak link in netnews distribution,
2319: and you should certainly keep an eye on it.
2320: .hn
2321: Creating New Newsgroups
2322: .pg
2323: As system news administrator,
2324: you are able to create newsgroups.
2325: To create a newsgroup,
2326: first make sure this is the right thing to do.
2327: Normally a suggestion is first posted to
2328: .ng net.news.group\f1,\fPnet.relatedgroup
2329: for a net newsgroup
2330: .b net.relatedgroup (
2331: should be the group which you are proposing to sub-divide.
2332: For instance,
2333: to propose creating
2334: .ng net.tv.soaps ,
2335: post the original article to
2336: .ng net.tv\f1,\fPnet.news.group ).
2337: Followups are made to
2338: .ng net.news.group
2339: .i only .
2340: (You can force this by putting the line:
2341: .sd c
2342: Followup-To: net.news.group
2343: .ed
2344: in the headers of your original posting).
2345: If it is established that there is general interest in such a group,
2346: and a name is agreed on,
2347: then someone creates it by typing the command
2348: .sd c
2349: inews \-C \fInewsgroup\fP
2350: .ed
2351: This will create the active entry locally. The directory will be
2352: created automatically when the first article for that newsgroup is
2353: received.
2354: It will also prompt you for a paragraph describing the group and start up an
2355: .i inews
2356: to post a newgroup control message announcing the group.
2357: This control message will be sent out on
2358: .ng net.msg.ctl
2359: and other sites may have configured their systems to do something
2360: with these messages.
2361: A human readable announcement is not made \-
2362: you can post this to
2363: .ng net.news.group
2364: if necessary.
2365: .pg
2366: You must be the super user to use the
2367: .op \-C
2368: option to
2369: .i inews .
2370: (That is,
2371: your uid must match
2372: .b ROOTID .
2373: It is recommended that you change
2374: .b ROOTID
2375: to your own uid so you don't have to
2376: .i su
2377: to create newsgroups.)
2378: .hn
2379: Conversion from A to B
2380: .pg
2381: If you are currently running version A on your system,
2382: note that B is incompatible with A.
2383: The files are stored in a different format
2384: (headers have mail like field names now).
2385: The directory organization is different
2386: (each newsgroup has a subdirectory of its own,
2387: and the file names are numbers rather than
2388: .i site\f1.\fPid
2389: pairs).
2390: There are no
2391: .i bitmap ,
2392: .i uindex ,
2393: or
2394: .i nindex
2395: files to be trashed
2396: (which articles have been read is stored in each users
2397: .i .newsrc
2398: file).
2399: The user interface is slightly different
2400: .i netnews (1) (news/
2401: is now called
2402: .i readnews ,
2403: news is posted using
2404: .i inews ,
2405: subscription is done by editing
2406: .i .newsrc ,
2407: the sense of the
2408: .op \-c
2409: option is reversed,
2410: news is presented in newsgroup order,
2411: the
2412: .op \-a
2413: and
2414: .op \-t
2415: options now probably need
2416: .op \-x
2417: as well,
2418: and there are many minor changes).
2419: .pg
2420: We decided not to provide a program to convert from version A to version B.
2421: Rather,
2422: the following strategy was adopted for conversion:
2423: .lp (1)
2424: Install the new news in a different spool directory from the old one.
2425: For example,
2426: you can use
2427: .i /usr/spool/newnews .
2428: You can change to the standard name later if you want.
2429: Get it to work for local messages.
2430: .lp (2)
2431: Post an article to newsgroup
2432: .b general
2433: with the old news announcing the change.
2434: Make available documentation such as the accompanying paper
2435: .i "How to Read the Network News"
2436: to the users.
2437: This article will be the last one in the old news.
2438: .lp (3)
2439: .i Chmod
2440: the old news directory to 555 to prevent any more news from being posted.
2441: (Actually,
2442: this will prevent the bitfile from being updated,
2443: so it may not be a good idea.)
2444: .lp (4)
2445: Replace the old
2446: .i rnews
2447: program with the new
2448: .i rnews
2449: program.
2450: .lp (5)
2451: Test it by having your neighbor send you a message.
2452: .lp (6)
2453: Wait a reasonable period for everyone to have read the final article
2454: with the old news.
2455: Perhaps a few weeks is right.
2456: .lp (7)
2457: Uninstall the old news.
2458: .pg
2459: Users will have to invoke
2460: .i readnews
2461: instead of
2462: .i netnews
2463: to read news.
2464: Depending on your old method of posting,
2465: this could be changed too.
2466: (If you were using mail,
2467: it does not need to be changed.)
2468: They will also have to fix their subscriptions.
2469: In general,
2470: they can type
2471: .sd c
2472: netnews \-s
2473: .ed
2474: to see what they subscribe to on the old system,
2475: and then create a file in their home directory called
2476: .i .newsrc
2477: containing
2478: .sd c
2479: options \-n \f2their subscription\fP
2480: .ed
2481: The format of the subscription pattern matching is the same as in A
2482: except that
2483: .ng ALL
2484: is replaced by
2485: .ng all
2486: (change to lower case).
2487: Something along the lines of this could be used to automate this:
2488: .sd c
2489: (echo \-n "options \-s" ; netnews \-s | sed s/ALL/all/) > .newsrc
2490: .ed
2491: .hn
2492: Conversion from 2.9 to 2.10
2493: .pg
2494: Conversion from 2.9 to 2.10 is not nearly as involved as an A to B conversion.
2495: The user interface does not change much,
2496: and the user
2497: .i .newsrc
2498: files are not affected.
2499: However,
2500: it is recommended that you do the conversion during a time
2501: when no news is received,
2502: so that incoming news will not get lost.
2503: One way to ensure this is to make
2504: .i /usr/bin/rnews
2505: be a shell script which saves the article in
2506: .bi $$ "" /usr/spool/innews/
2507: .bi $$ "" (
2508: is the process id of the particular shell and will be unique for each article).
2509: .pg
2510: The first step to conversion is to customize the sources.
2511: In the past,
2512: you had to take a fresh distribution and edit the
2513: .i defs.h
2514: file and
2515: .i Makefile
2516: to suit local preferences.
2517: If you had many local changes,
2518: or didn't record the local changes,
2519: upgrading could be annoying.
2520: 2.10 provides a mechanism to automate these changes.
2521: Create a shell script in the src directory called
2522: .i localize.sh .
2523: (You can use
2524: .i localize.sample
2525: as a template.)
2526: This shell script should copy
2527: .i defs.dist
2528: to
2529: .i defs.h ,
2530: and copy either
2531: .i Makefile.v7
2532: or
2533: .i Makefile.usg
2534: to
2535: .i Makefile .
2536: It should
2537: .i chmod
2538: any files that need to be changed
2539: (often
2540: .i Makefile
2541: and
2542: .i defs.h )
2543: to a writable mode.
2544: Then it should invoke
2545: .i ed (1)
2546: on the files,
2547: making any necessary local changes.
2548: .pg
2549: The next step is to compile the software,
2550: with
2551: .i make (1).
2552: It may be necessary to update the
2553: .i localize.sh
2554: file until you are satisfied with the compilation.
2555: Note that after any change to the
2556: .i Makefile
2557: in
2558: .i localize.sh ,
2559: you should run
2560: .i localize.sh
2561: by hand.
2562: Otherwise,
2563: although make will run it for you,
2564: it will then continue to do the make with the old
2565: .i Makefile .
2566: .pg
2567: When the software is compiled,
2568: you should run the
2569: .i cvt.active.sh
2570: shell script,
2571: with the
2572: .i lib
2573: and
2574: .i spool
2575: directories as parameters.
2576: This will create a new active file in
2577: .bi LIB \f2/active\fP.
2578: Then run
2579: .i cvt.links.sh
2580: with the
2581: .i lib
2582: and
2583: .i spool
2584: directories as parameters.
2585: Then run
2586: .i cvt.names.sh
2587: with the
2588: .i lib
2589: and
2590: .i spool
2591: directories as parameters.
2592: Old news will be linked into the new hierarchy
2593: while leaving links in the old hierarchy.
2594: If you were using the default library and spool directories,
2595: you would do the following:
2596: .sd
2597: sh cvt.active.sh /usr/lib/news /usr/spool/news
2598: sh cvt.links.sh /usr/lib/news /usr/spool/news
2599: sh cvt.names.sh /usr/lib/news /usr/spool/news
2600: .ed
2601: .pg
2602: The next step is to back up the old binaries:
2603: .sd
2604: mv /usr/bin/rnews /usr/bin/ornews
2605: \&...
2606: .ed
2607: and to install 2.10 with
2608: .sd c
2609: make install
2610: .ed
2611: Once it is installed,
2612: any incoming news will be placed into the new hierarchy but not the old one.
2613: The critical time window is between running the three shell files and
2614: installing the new software \-
2615: any incoming news between these two points will appear
2616: in only the old hierarchy and be lost to the new software.
2617: If any significant time elapses here,
2618: you should divert
2619: .i rnews
2620: into a separate spool directory as described above.
2621: .pg
2622: It is crucial that you run
2623: .i expire
2624: before any new news arrives.
2625: .i Expire
2626: will update several key files automatically.
2627: .pg
2628: Finally,
2629: test things by posting articles to
2630: .bi neighbor "" \f3to.\fP
2631: newsgroups and watching some incoming news,
2632: and announce the change to your users.
2633: .pg
2634: When you are satisfied that the conversion was successful,
2635: run the shell file
2636: .i cvt.clean.sh
2637: which will remove the old 2.9 news hierarchy.
2638: .bp
2639: .hu
2640: Appendix A: Setting up a Compressed, Batched Newsfeed
2641: .pg
2642: First,
2643: .b BATCH
2644: must have been
2645: .i #define 'd
2646: when you built the news system.
2647: To check,
2648: look in the file
2649: .i defs.h
2650: in the news source directory.
2651: .b BATCH
2652: should be defined as a program name (by default,
2653: .i unbatch ).
2654: If it's undefined or commented out,
2655: define it,
2656: re-make the news system,
2657: and install the new software.
2658: .pg
2659: You'll also need a working
2660: .i compress
2661: program.
2662: Use the one shipped with this news distribution,
2663: which is based on version 4.0.
2664: Your news neighbors should be running a compatible version of compress.
2665: Versions 3.0 and 4.0 are compatible with each other,
2666: but both are incompatible with versions 2.0 and before.
2667: .pg
2668: Update your
2669: .i sys
2670: file.
2671: First,
2672: add the
2673: .b F
2674: flag to the other news system's line.
2675: For instance,
2676: if your compressed-and-batched news feed is named
2677: .cn frobozz ,
2678: and its
2679: .i sys
2680: file entry looks like:
2681: .si
2682: frobozz:net,mod,na,usa,ca,to.frobozz::
2683: .ei
2684: then add the
2685: .b F
2686: flag as the third (colon-separated) field:
2687: .si
2688: frobozz:net,mod,na,usa,ca,to.frobozz:F:
2689: .ei
2690: Now the pathnames of articles to be sent will be stashed in a file.
2691: This file is named in the fourth field of the
2692: .i sys
2693: entry;
2694: add it now.
2695: Use an entry of the form
2696: .bi BATCHDIR \f2/system\fP,
2697: where
2698: .bi BATCHDIR
2699: is usually
2700: .i /usr/spool/batch
2701: (the actual value is defined in the news
2702: .i Makefile ),
2703: and
2704: .i system
2705: is the name of the remote system,
2706: in this example
2707: .cn frobozz .
2708: A name of that form is necessary:
2709: the
2710: .i sendbatch
2711: script,
2712: which sends the batched news,
2713: looks for a file name of this form
2714: to decide if there's news for the remote system.
2715: .pg
2716: Your completed
2717: .i sys
2718: file line should look something like:
2719: .si
2720: .sd
2721: frobozz:net,mod,na,usa,ca,to.frobozz:F:/usr/spool/batch/frobozz
2722: .ed
2723: .ei
2724: .pg
2725: In
2726: .i /usr/lib/crontab ,
2727: find or create at least two news lines:
2728: one that runs nightly,
2729: and one that runs every hour or so.
2730: The nightly-run script should run
2731: .i expire ,
2732: trim log files,
2733: and perhaps compile weekly statistics
2734: that you post to a local-area newsgroup one day a week.
2735: The hourly-run script should complete the transmitting task
2736: with a line like:
2737: .sd c
2738: sendbatch -c frobozz
2739: .ed
2740: Make sure the script knows how to get to the directory in which
2741: .i sendbatch
2742: lives.
2743: You can either mention the directory in the script's
2744: .b PATH -setting
2745: line,
2746: or replace
2747: .i sendbatch
2748: with its full pathname.
2749: .i Sendbatch
2750: reads the files mentioned in
2751: .i /usr/spool/batch/frobozz ,
2752: batches them,
2753: optionally compresses them,
2754: sends them to the remote system,
2755: and arranges for remote processing.
2756: .pg
2757: This remote processing is directed by another file in
2758: .b BATCHDIR .
2759: Make a file with a name of the form
2760: .bi BATCHDIR \f2/system\fP.cmd
2761: (for this example,
2762: .i /usr/spool/batch/frobozz.cmd ).
2763: Put a line in it specifying the command that the remote system
2764: should execute to unpack the news batches that your system will send.
2765: An example
2766: .i frobozz.cmd
2767: would be:
2768: .sd c
2769: uux - -r -z -n -gd frobozz!rnews
2770: .ed
2771: .pg
2772: Now your system will transmit compressed batches.
2773: The receiving side of the business is handled largely by a program called
2774: .i rnews ,
2775: which will call other programs in
2776: .b LIBDIR
2777: to do additional processing on the incoming batches.
2778: .pg
2779: Make sure there is an executable file called
2780: .i rnews
2781: in the
2782: .b BINDIR
2783: directory
2784: (check the
2785: .i Makefile
2786: for its actual location).
2787: It must be reachable by UUCP
2788: or by whatever transport you'll use to transfer the netnews.
2789: If you defined
2790: .b BINDIR
2791: as
2792: .i /usr/bin ,
2793: you should have no problems because
2794: .i uuxqt
2795: can already get there.
2796: If you defined it as a different directory,
2797: you may have to teach
2798: .i uuxqt
2799: to look in that directory;
2800: accomplishing this varies from system to system.
2801: On 4.2BSD, add the directory to the
2802: .b PATH=
2803: line of your UUCP
2804: .i L.cmds
2805: file.
2806: On System V,
2807: on the
2808: .i rnews
2809: line of your
2810: .i L.cmds
2811: file,
2812: add a comma followed by
2813: the remote system's name on that line.
2814: If yours is in
2815: .i /usr/bin/news/rnews ,
2816: your
2817: .i L.cmds
2818: file will look like:
2819: .si
2820: .sd
2821: [For 4.2BSD]
2822: PATH=/bin:/usr/bin:/usr/bin/news
2823: rnews
2824: .ed
2825: .sd
2826: [For System V]
2827: /usr/bin/news/rnews,frobozz
2828: .ed
2829: .ei
2830: Other systems have a similar file in the
2831: .i /usr/lib/uucp
2832: directory by which you can specify added programs
2833: and paths different from the defaults.
2834: HP-UX,
2835: for example,
2836: has a
2837: .i /usr/lib/uucp/COMMANDS
2838: file which expands
2839: .i uuxqt 's
2840: horizons.
2841: In more restrictive cases,
2842: paths are compiled into
2843: .i uuxqt .
2844: If you can't modify any UUCP files,
2845: just put
2846: .i rnews
2847: in
2848: .i /usr/bin.
2849: .pg
2850: You must also have a
2851: .i cunbatch
2852: in
2853: .b LIBDIR
2854: (wherever your
2855: .i Makefile
2856: defines it),
2857: because
2858: .i rnews
2859: will eventually try to exec that copy.
2860: .pg
2861: Tell the person at the other end of your newsfeed to use
2862: .i "sendbatch \-c"
2863: to send you news.
2864: Once that's in place,
2865: watch your UUCP
2866: .i LOGFILE
2867: and your news
2868: .i log
2869: and
2870: .i errlog
2871: files to ensure that news is being correctly received and unpacked
2872: on your system.
2873: .pg
2874: Older compressed batching systems will try to exec
2875: .i cunbatch
2876: instead of
2877: .i rnews .
2878: If you are still communicating with these, leave
2879: .i cunbatch
2880: in
2881: .b BINDIR
2882: until they have upgraded their software.
2883: .bp
2884: .hu
2885: Appendix B: MULTICAST
2886: .pg
2887: If this is defined (in
2888: .i defs.h )
2889: then two new flag characters
2890: become defined in the
2891: .i sys
2892: file.
2893: The first,
2894: and most important,
2895: of these is the
2896: .b M
2897: flag.
2898: .pg
2899: If the
2900: .b M
2901: flag is set on some line in the
2902: .i sys
2903: file,
2904: then the fourth field (transfer command) is redefined to become a
2905: .i multicast
2906: name.
2907: That is simply another system name,
2908: expected to be found in the first field of some line in the
2909: .i sys
2910: file (textually following the line containing the
2911: .b M
2912: flag).
2913: .pg
2914: When a news item is being retransmitted,
2915: if it should (according to the subscription list) be sent to a system
2916: that has the
2917: .b M
2918: flag set,
2919: then instead of a command being run immediately to transmit the news,
2920: the news system remembers the system name,
2921: along with the multicast name (fourth field).
2922: .pg
2923: Eventually the multicast system name is found in first field of a sys file line.
2924: If its subscription list allows transmission of this news item,
2925: then its command will be executed.
2926: This command may have up to two \*(lq%s\*(rq substitutions in it.
2927: The second of those is replaced by the name of a file
2928: containing the news item (used with the
2929: .b U
2930: flag).
2931: The first is subjected to rather special treatment.
2932: The whole \*(lqword\*(rq (delimited by white space)
2933: containing that \*(lq%s\*(rq is duplicated as many times
2934: as there were systems with the
2935: .b M
2936: flag set that referenced this multicast name
2937: (which might be 0 times,
2938: causing that \*(lqword\*(rq to be omitted).
2939: In each of these duplicates,
2940: the \*(lq%s\*(rq is replaced by the name of a system.
2941: Note the multicast system name itself is not included in this process.
2942: Then the command is executed as usual.
2943: .pg
2944: The second flag available if the news system is built with
2945: .b MULTICAST
2946: defined is
2947: .b O .
2948: If this flag is set,
2949: then the sys file line will be ignored unless the system name is
2950: a multicast name from some earlier line with the
2951: .b M
2952: flag,
2953: and the news item is to be sent to that (earlier) system.
2954: This allows the subscription list for the multicast system name
2955: (which is likely to be a fake system name,
2956: invented just for this purpose)
2957: to be given a very wide subscription list
2958: (like
2959: .ng all )
2960: without any unusual effects.
2961: .pg
2962: Here is an example.
2963: Assume that you wish to forward
2964: .ng net.unix
2965: to four people by mail.
2966: You could do this as ...
2967: .si
2968: .sd
2969: fred:net.unix::mail fred
2970: harry:net.unix::mail harry
2971: jane:net.unix::mail jane
2972: tony:net.unix::mail tony
2973: .ed
2974: .ei
2975: however this causes the mail program to be started 4 times,
2976: once for each recipient.
2977: On some systems starting the mail program is a very expensive operation.
2978: If
2979: .b MULTICAST
2980: is defined,
2981: an alternative method is
2982: .si
2983: .sd
2984: fred:net.unix:M:tony
2985: harry:net.unix:M:tony
2986: jane:net.unix:M:tony
2987: tony:net.unix::mail tony %s
2988: .ed
2989: .ei
2990: This would cause just one command to be run:
2991: \*(lqmail tony fred harry jane\*(rq.
2992: Note that \*(lqtony\*(rq must still be explicitly included in the argument
2993: list to the mail command;
2994: the \*(lq%s\*(rq does not expand to include
2995: the multicast \*(lqsystem name\*(rq itself.
2996: .pg
2997: A more useful way of doing this,
2998: which does not assume that all the mail readers
2999: will want to read the same newsgroups is as follows.
3000: .si
3001: .sd
3002: fred:net.unix:M:Mail
3003: harry:net.physics,net.astro:M:Mail
3004: jane:net.unix-wizards,net.women:M:Mail
3005: tony:net.unix,net.unix-wizards,net.jokes:M:Mail
3006: Mail:all:O:mail %s
3007: .ed
3008: .ei
3009: .pg
3010: Now,
3011: if a news item in group
3012: .ng net.unix
3013: was received,
3014: the command
3015: .sd c
3016: mail fred tony
3017: .ed
3018: would be executed.
3019: If the news were in both
3020: .ng net.unix
3021: and
3022: .ng net.unix-wizards
3023: then the command would be
3024: .sd c
3025: mail fred jane tony
3026: .ed
3027: .pg
3028: If a newsitem in
3029: .ng net.med
3030: (which no-one gets by mail) arrives,
3031: then the \*(lqMail\*(rq line will be ignored,
3032: because of the
3033: .b O
3034: flag.
3035: \*(lqMail\*(rq is a fake system invented just so its \*(lqtransfer command\*(rq
3036: can be used to send news to the other recipients.
3037: .pg
3038: The same kind of technique can be used for normal transfer
3039: of news to other systems if your transport network supports
3040: a facility to send to many other systems in one command.
3041: (That is,
3042: if it has a multicast facility.)
3043: SunIII (the network used in Australia) has this ability,
3044: so a typical Australian
3045: .i sys
3046: file looks like
3047: .sd
3048: emuvax:aus,net,mod,fa:M:FakeName
3049: kremlin:aus,net,mod:M:FakeName
3050: kanga:aus,net,!net.all,net.unix:M:FakeName
3051: FakeName:all:OUS:/bin/sendfile -NRSareporter -d%s -x%s
3052: .ed
3053: .pg
3054: A news item in
3055: .ng aus.general
3056: causes the following command
3057: .sd c
3058: /bin/sendfile -NRSareporter -demuvax -dkremlin -dkanga -x/usr/spool/...
3059: .ed
3060: to be executed.
3061: Just one command is run to send the news to three remote systems.
3062: .pg
3063: If a multicast system has the
3064: .b F
3065: flag set,
3066: then the name of a file containing the news is appended to the file
3067: whose name is in the fourth field,
3068: as usual.
3069: But on the same line,
3070: separated by spaces,
3071: will be appended the names of all the systems
3072: that referenced this multicast system.
3073: .pg
3074: For example,
3075: if the Australian site wanted to batch news,
3076: instead of sending it directly,
3077: it would simply change the last line of its
3078: .i sys
3079: file to
3080: .sd c
3081: FakeName:all:F:/usr/spool/batched/allsites
3082: .ed
3083: .pg
3084: Then a news item in
3085: .ng net.jobs
3086: would cause the following line to be appended to
3087: .i /usr/spool/batched/allsites
3088: .sd c
3089: /usr/spool/news/net/jobs/5542 emuvax kremlin
3090: .ed
3091: .pg
3092: This can then be processed later, in something like the normal manner.
3093: (Unfortunately no commands to do this processing are yet available).
3094: .pg
3095: Caution: when
3096: .b MULTICAST
3097: is defined,
3098: the first \*(lq%s\*(rq in all transfer commands is used for multicast,
3099: regardless of whether or not the system name is ever used as the last field
3100: of some line with the
3101: .b M
3102: flag set.
3103: To use the
3104: .b U
3105: flag in such a case,
3106: a dummy \*(lq%s\*(rq should be used,
3107: it will simply be omitted from the command that is executed.
3108: .pg
3109: As an example,
3110: if a
3111: .i sys
3112: file line were
3113: .sd c
3114: foovax:net,na,usa:U:uux - foovax!foonews <%s
3115: .ed
3116: without
3117: .b MULTICAST ,
3118: it would need to be changed to
3119: .sd c
3120: foovax:net,na,usa:U:uux - foovax!foonews %s <%s
3121: .ed
3122: if
3123: .b MULTICAST
3124: were defined.
3125: .pg
3126: Additional caution:
3127: The numbers of system names that may be used
3128: in this way are quite severly restricted.
3129: Typically there may only be about 10 multicast system names,
3130: and each of those is restricted to sending to no more than about 20 systems.
3131: These limits are dynamic
3132: (that is,
3133: the numbers counted are the number of multicast systems
3134: receiving any single news item,
3135: and the number of systems that each of those
3136: will actually cause this particular news item to be sent to).
3137: These limits should easily suffice for real news sending to remote systems;
3138: however they are not likely to suffice if you want to mail news to everyone
3139: on your host.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.