Annotation of 43BSDTahoe/new/news/doc/install.mn, revision 1.1.1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.