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