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