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