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