5 Setting Up News as a Local Reader/Server

5.3 Setting up Configuration Files

A number of files are used to provide site-specific configuration information to various News images. These files are read at runtime, and can be freely changed as your configuration changes over time. Unless otherwise noted in the description of a particular file, these configuration files need not be world-readable; News will access them using SysPrv.

5.3.1 Editing the MailPaths. file

The file MailPaths. provides News with a mail address for the moderator of each moderated newsgroup. For network newsgroups, this is usually done by specifying a 'backbone' site to which all mail intended for moderators is routed, and which will sort out the precise address to which the post should go. Several of these sites are listed in the comments in the version of this file provided in the News_Dist ZIP file. The format for each entry is

newsgroup_pattern moderator_address

newsgroup_pattern -- pattern specifying a set of moderated newsgroups. This pattern is matched against the name of the moderated newsgroup according to the rules used for the subscriptions field of a News.Sys entry (q.v.). In addition, if this field consists of only the keyword 'backbone', then the pattern is treated as if it were '*'. This pattern may not contain any whitespace, and is separated from the moderator_address field by any amount of whitespace (excluding line breaks).

moderator_address -- the address of the moderator for the newsgroup specified by the newsgroup pattern. This address may contain a single '%s', into which is substituted the name of the moderated newsgroup, with each '.' converted to a '-'. This allows one to generate unique addresses using an entry whose newsgroup_pattern includes wildcards. For instance, the MailPaths. entry
bionet.* %s@net.bio.net
would match the newsgroup name 'bionet.announce', and would cause items posted to this group to be mailed to the address 'bionet-announce@net.bio.net'.

Any text following the '#' character, up to the end of the line, is ignored.
Entries are searched in the order encountered in the file, and the search stops with the first entry which matches the newsgroup in question.

You should edit the version of MailPaths. included in the News_Dist ZIP file, and include at least a 'backbone' entry specifying a backbone site near you, chosen from the list of sites included in the comments within the distributed version of MailPaths. Once you have modified this file appropriately for your site, you should place it in News_Manager. As you create moderated local newsgroups, News will add entries to this file automatically, so you should not have to edit it by hand after setting it up while installing News.

5.3.2 Editing the News.Aliases file (optional)

News uses this file when processing the newsgroup names in the headers of incoming items. If a newsgroup name with an entry in this file is found in the header, it is replaced with the newsgroup name(s) specified in the entry. Note that all such changes are passed on to downstream sites as well. Entries in this file have the format:

newsgroup_name replacement_list

newsgroup_name -- the name of the newsgroup to which this entry applies. Newsgroup_name cannot contain whitespace. It is separated from replacement_list by any amount of whitespace. In order for replacement_list to be substituted into an item's Newsgroups: header, a newsgroup name in the header must exactly match newsgroup_name. Comparison is case-insensitive.

replacement_list -- a list of newsgroup names, separated by commas, which replaces newsgroup_name in the Newsgroups: header of the item. Replacement_list cannot contain any whitespace. It may be continued across line breaks by specifying the character '\' as the last character on a line.

All characters following the character '#' up to the end of the line are ignored.

Each newsgroup in the item's original Newsgroups: header is matched against every entry in News.Aliases, but the matching is not recursive (i.e. newsgroup names substituted into the header are not then matched against News.Aliases).

Mapping of newsgroup names to their aliases is performed before other configuration files which direct actions based on newsgroup names are consulted.

If you need to remap newsgroup names in this fashion, you may set up this file in one of two ways. If you choose, you may edit the template file provided in the News_Dist ZIP file, and place the edited copy in News_Manager. You may also add, remove, or display entries in this file using the commands Add Alias, Delete Alias, and Show Alias, respectively, from within News; the file will be created when you use Add Alias for the first time. Modifying the alias file from within News causes all comments within the file to be lost.

5.3.3 Creating the News.Classes file (optional)

In additional to the automatic classes $net and $local, News can create and populate newsgroup classes on a system-wide basis, based on the contents of the file News_Manager:News.Classes. These classes cannot be modified from within News. Entries in this file should be in the following format:

class_name newsgroup_list

class_name -- the name of the class to be created. If class_name does not begin with the character '$', which designates an unmodifiable class, then a '$' will be prepended to class_name to form the name of the actual class created. The class names $net and $local are reserved for automatic classes created by News, and entries specifying either of these names will be ignored. Class_name cannot contain whitespace, and is separated from newsgroup_list by any amount of whitespace.

newsgroup_list -- a list of newsgroup patterns which specify the newsgroups to be added to the class. Within each pattern, the character '*' is a wildcard which matches any number of characters, while the characters '%' and '?' are wildcards which match any single character. Patterns in newsgroup_list may be separated by a comma or whitespace.

All text between the character '#' and the end of the entry is ignored. An entry can be continued across multiple lines by ending each line but the last with the character '\'.

If you wish to have certain newsgroups entered into specific classes by default, you should create this file yourself. For instance, a simple News.Classes file might say

fun_groups  rec.*,talk.*
science     bionet.*,sci.*
bargains    *.forsale
vms_stuff   comp.org.decus,comp.os.vms,vmsnet.*

5.3.4 Ignoring the News.Distribution file

News.Distribution is an obsolete file which was used in the past to specify the distribution of items received from a particular site, in order to minimize redundant feeding of items to a site served both by you and the site from which you obtained the item. Since this can now be specified in News.Sys using entries of the form 'site1/site2,site3', the News.Distribution file is no longer used. It is still supported at present, however, for compatibility with old distribution schemes, and because it will, on rare occasions, allow a site to specify a particular distribution pattern which cannot be conveniently specified in News.Sys. The format for entries in this file is:

from_site to_sites

from_site -- the name that the site to which this entry applies places in the Path: header of items forwarded to your site. From_site is compared to the first site name listed in the item's Path: header, and, if they match, then this entry is used to limit forwarding of the item. Comparison is case-insensitive. From_site cannot contain any whitespace, and is separated from to_sites by any amount of whitespace.

to_sites -- a list of 'sites', separated by commas or whitespace, to which items which meet the criterion specified by from_site should be 'forwarded'. Only those entries in your News.Sys file whose site field name appears in this list will be applied to this item. Note that in order for the item to actually be added to the spool file specified by the News.Sys entry, it must also satisfy the criteria specified by the subscriptions and distributions field in that News.Sys entry. In other words, to_sites specifies a list of entries which are candidates for processing of this item; it does not mandate that the item actually be forwarded to any of these sites.

All text between the character '#' and the end of a line is ignored. An entry can be continued across multiple lines by ending each line but the last with the character '\'.

Unless you specifically need it, you should not use this file. Support for this file may be phased out in future releases of News.

5.3.5 Editing the News.Distributions file

This file contains a list of distribution keywords accepted by the local system, along with brief descriptions, in the following format:

keyword description

keyword -- the keyword which would appear in the Distribution: header of an article posted to the distribution described by this entry.

distribution -- a one-line description of the scope of the distribution denoted by the presence of keyword in the Distribution: header of an article. Note that this is just for information; the functional interpretation of keywords in Distribution: headers is via the distributions and subscriptions fields of entries in News.Sys.

When a user running News.Exe posts an item, all keywords specified in the Distribution: header must have entries in this file, in addition to matching the News.Sys entry for the local site. If this file does not exist, then any keyword is considered acceptable. Note that this requirement is not enforced by the NNTP server for items received by the NNTP server via the POST protocol or the IHAVE protocol.

In addition, the NNTP standard specifies that an NNTP server respond to the LIST DISTRIBUTIONS command with a list of the distribution keywords accepted at that site. News implements this by sending the contents of this file to the requesting system.

You should edit the template file provided in the News_Dist ZIP file to reflect the distributions you accept and place the edited file in News_Manager. While the News.Distributions file is, strictly speaking, optional, it is good netiquette to take the few minutes necessary to make this information available.

5.3.6 Editing the News.Sys file

News.Sys is the file which determines which newsgroups are accepted at your site, and which newsgroups are passed to sites which you feed. In addition, it specifies the type of spool files which are created for downstream sites. You should read the comments in this file, and create entries for yourself and for all sites which you will feed. Note that even if you are functioning as an 'end node' (i.e. you don't provide newsfeeds to any other sites), you will still need to send local postings back to your feed site for distribution to the net, so you should include an entry for your feed site which covers all newsgroups except those restricted to your site. Entries in News.Sys have the following format:
site[/skip_sites]:subscriptions:flags:\
spool_file[:distributions]

[The \ is used to continue the entry across a line break, and is removed by News when it reads the entry.]

site -- The name of the site to which this entry applies. News will use this name to determine whether an item has already been transported through that site, by comparing the name in this field with the Path: header of the item. For this reason, it is essential that the site field you specify in a site's News.Sys entry be identical to the name it places in Path: headers. This may be different from the FQDN or UUCP name of that site. Note that this has no impact on the process of file transfer; you will specify the actual host name for transfer elsewhere. If News finds a site's name in an item's Path: header, the remainder of that site's News.Sys entry is ignored, and processing moves on to the next entry. When specifying the entry for your own site (used only to determine which newsgroups are accepted on the local system), you may use the keyword 'me' in place of your site's news pathname. Note that site need not actually specify a remote site, and dummy names are often used when constructing News.Sys entries whose only purpose is to generate spool files for some other purpose. For instance, if you wanted to archive all postings to the newsgroup vmsnet.sources, you might set up a News.Sys entry like
codesink:vmsnet.sources:M:Userdisk/[Userdir]VMSNet_Sources.Itm:*
and then, as part of your NewsAdd job, transfer these files to some place for long-term storage.

skip_sites -- after the site name which identifies the entry, you may optionally specify a foreslash followed by a comma separated list of other site names. If News finds the name of any of these sites in the Path: header of an item, the remainder of this entry is ignored, and processing moves on to the next entry. As with the site field, the names used here must exactly match the names that the sites in question put into Path: headers. This option is designed to prevent redundant exchange of items among a set of interconnected feeds. For instance, if site cicero feeds both sites virgil and pliny, then site virgil can assume that any item that has been through cicero will also have been sent to pliny, so it doesn't need to send those items on to pliny itself. In this case, the beginning of the News.Sys entry for pliny on virgil would begin
pliny/cicero:

subscriptions -- this is a comma-separated list of patterns that determine which newsgroups are forwarded to the system whose News.Sys entry is being evaluated (or are accepted on the local system, if the entry being evaluated is that of the local system). The groups listed in the Newsgroups: header of the item are compared to the patterns in this field, using the following rules:

flags -- this field specifies what type of spool file should be created to record items which should be forwarded to the site in question. Acceptable values for this field are: If this field is empty, a default value of 'B' is used. This field is ignored in the entry for the local system.

spool_file -- this is the file specification for the spool file for the system in question. It is a regular VMS file specification, except that the character ':', which is already used as a field delimiter in News.Sys, is replaced by a '/'. This field must be specified, as there is no default value. It is ignored in the entry for the local system.

distributions -- This field contains a list of patterns which are matched against the contents of the item's Distribution: header, in order to determine whether the site in question accepts any of the distributions to which this item was posted. The pattern matching is according to the same rules by which the patterns in the subscriptions field are matched against the item's Newsgroups: header, with the additional case that trailing '.' characters in a keyword found in the item's Distribution: header are ignored. If the item is not accepted based on the patterns in this field of the News.Sys entry, or if this field is missing, then the Distribution: header is matched against the subscriptions field of the News.Sys entry, and the item is accepted or rejected based on this matching process.

Any text following the '#' character, up to the end of the line, is ignored. Entries may be continued onto the next line by ending the current line with the character '\'. When an incoming item is processed, it is checked against every entry in News.Sys, and, if it matches patterns accepted by that site, it is added to the spool file specified (or to the local News database, if it matches the entry for the local site).

When specifying the criteria in each entry which are used to filter news items, remember that *both* the Newsgroups: header and the Distribution: header of an item must contain a match to the criteria specified in a _News.Sys entry for the item to be passed to that site (or accepted locally, in the case of the entry for your site). Note that the keywords following the item's Distribution: header may match an element of the subscriptions or the distributions lists in the News.Sys entry, but that the keywords in the Newsgroups: header must match an element of the subscriptions list. The entry for the local site should include at least the newsgroups 'local', 'control', 'junk', and to.{site}, with the last being the name of the newsgroup upstream sites will use to send control messages specifically to you (usually {site} is the node name you use for News_Node or News_Pathname).

5.3.7 Ignoring the News.SysD file

News.SysD is an obsolete file which duplicates the function of the distributions field in a News.Sys entry. It is a text file with entries of the format

site_name:dist_list

site_name -- the name of a 'site' in the News.Sys file (i.e. the site field of an entry). Site_name is separated from dist_list by a colon.

dist_list -- a list of distribution keywords, constructed according to the same rules governing the distributions field of a News.Sys entry. If non-empty, dist_list replaces the distributions field of the News.Sys entry whose site field matches site_name.

All text between the character '#' and the end of a line is ignored. An entry can be continued across multiple lines by ending each line but the last with the character '\'.

While this file is still supported for backwards compatibility, it serves no function not supported by the News.Sys file, and will probably not be supported in future releases of News.

5.3.8 Editing the News_Address.Cnf file

News_Address.Cnf contains a series of rewrite rules used by News to rewrite mail addresses for outgoing items. This allows you to transparently route mail to different sites by different mechanisms, or to specify a foreign mail transport without requiring users to type the prefix with every address. Entries in this file have the format

address_pattern rewrite_rule

address_pattern -- a text pattern which is matched against the mail address to be rewritten. The '*' character is a wildcard which matches any number of characters in the address, while the '?' is a wildcard which matches any one character in the address. (Note that unlike similar patterns in other News configuration files, the '%' character is a literal, not a wildcard, since it often appears in mail addresses.) The '_' character is ignored in address_pattern. Address_pattern may not contain any white space. It is separated from rewrite_rule by any amount of white space (excluding line breaks).

rewrite_rule -- a text pattern specifying how the address is to be rewritten, if it matches the pattern specified in address_pattern. Characters are copied directly from the rewrite rule into the rewritten address, except that each time the string '\n', where n is an octal number < 24 (octal), is encountered, the string from the original address which matched the nth '*' wildcard in address_pattern is substituted into the rewritten address. For example, for the following entry
IN%*@*.decnet.myuniv.edu \002::\001
the address 'IN%aeneas@virgil.decnet.myuniv.edu' would match the address_pattern, with the string 'aeneas' matching the first '*', and the string 'virgil' matching the second '*'. According to rewrite_rule, then, this address would be rewritten as 'virgil::aeneas'.

Any text following a '#' character, up to the end of the line, is ignored.

Entries are searched in the order encountered in the file, and the search stops with the first entry which matches the address to be rewritten. An address is converted to lower case before being rewritten. In the rewritten address, case is preserved for characters copied from the rewrite_rule pattern, but characters substituted from the original address are in lower case. Finally, note that only addresses seen by News are rewritten; addresses indirectly passed to VMS Mail (e.g. by specifying a distribution file at the To: prompt) are not.

Read the comments in the version of this file distributed in the News_Dist ZIP file, and, if you decide it would be useful to you, edit it and place the edited copy in News_Manager. If this file does not exist in News_Manager, then News uses the following default rewrite rules:

5.3.9 Editing the News_Post.CC file (optional)

News_Post.CC contains entries in which newsgroup names are paired with mail addresses, so that when an item is posted to the newsgroup, a copy is also mailed to the address specified. Note that the posting also goes out via the normal mechanism specified for the newsgroup, so using this file is not equivalent to using the /MailList qualifier when creating a newsgroup. Entries in this file have the following format:

newsgroup_pattern address_list

newsgroup_pattern -- a pattern matched against the newsgroup names in the Newsgroups: header of the item. The character '*' is a wildcard matching any number of characters, and the characters '%' and '?' are wildcards matching any one character. The pattern may not contain any whitespace. Comparison is case-insensitive.

address_list -- a list of mail addresses to which a copy of the item is forwarded, when a newsgroup name in the Newsgroups: header matches newsgroup_pattern. The list is converted to lower case. It is separated from newsgroup_pattern by any amount of whitespace, and may contain whitespace within the list (though multiple spaces will be compressed to a single space when the list is used), but it may not cross a line boundary.

All text between a '#' character and the end of the line is ignored. Each newsgroup name in the item's Newsgroups: header is matched against every entry in this file.

In order to use this capability, edit the template file provided in the News_Dist ZIP file, and place the edited copy in News_Manager.

5.3.10 Editing the News_Post.Defaults file (optional)

This file is used to supply default values for the Distribution: and Followup-To: headers for items posted to certain newsgroups. This allows you to direct followups and expand distribution of items posted to certain newsgroups automatically. The directives in this file are applied both to items posted locally and to items posted to the NNTP server by remote clients using the NNTP POST command, but not to items received by the NNTP server as part of an IHAVE transaction, or to items added to the local News database via the Add File command. The format of entries in this file is:

newsgroup_pattern
header_keyword default_words
[header_keyword default_words]

newsgroup_pattern -- a pattern matched against the newsgroup names in the Newsgroups: header of the item. The character '*' is a wildcard matching any number of characters, and the characters '%' and '?' are wildcards matching any one character. Comparison is case-insensitive. When the matching is performed, a '*' is appended to the beginning and the end of newsgroup_pattern. If newsgroup_pattern is the keyword 'default', it matches any newsgroup name. Newsgroup_pattern must begin in column 1.

header_keyword -- the name of the header for which default values follow. Two keywords are recognized: 'distribution:' and 'followup-to:'. Recognition is case-insensitive. The line(s) containing header_keyword must begin with whitespace.

default_words -- a comma-separated list of default values to be added to the header specified by header_keyword of any item containing a newsgroup in its Newsgroups: header which matches newsgroup_pattern. The text of default_words is converted to lowercase and added to the words entered into the header in question by the user. If a word is already present in the item header, it is not duplicated.

All text between a '#' character and the end of the line is ignored. Each newsgroup name in the item's Newsgroups: header is matched against every entry in this file.

If you find this useful, edit the template file provided in the News_Dist ZIP file, and place the edited copy in News_Manager.

5.3.11 Creating the NNTP message ID cache file (optional)

Message ID caching allows the NNTP server to track items coming in via NNTP feeds, and reject duplicate items when a remote site offers to transfer them. If you do not use caching, the server will accept all items in newsgroups carried on the local system, and duplicates will not be rejected until News tries to add them to the local database. Caching is often useful if you have incoming NNTP feeds from several sites with duplicate coverage. On the other hand, if you have only a single feed for any given newsgroup, caching is usually of limited value, since under normal circumstances most items will not be offered for transfer more than once. If you choose to use Message ID caching, you will need to create and initialize the cache file as follows:
$ Run Sys$System:SysGen
Create News_Root:News.Cache/Size=1400
Exit
$ Set Process/Privilege=(SysLck,SysGbl)
$ Run [News_Dist]Cachem
Z ! to reset the cache
E ! Exit

5.3.12 Editing the NNTP_Access.News file (optional, _but _recommended)

If you plan to run an NNTP server, this file can be used to specify the type of access allowed to remote nodes when they connect to your server. Entries in this file are of the form:

site_pattern read/transfer_access [post_access [newsgroup_list]]

site_pattern -- a pattern which is compared to the name of the remote host to determine whether this entry should be applied to the current connection. For DECnet connections, the remote nodename obtained from the NCB is used; for TCP connections, the remote host name is used if it is available, otherwise the IP address in dotted decimal form is used. The character '*' is a wildcard which matches any number of characters in the remote host name, while the characters '%' and '?' are wildcards which match any single character in the remote host name. If site pattern is the keyword 'default', then the entry will be applied to any host whose name does not match another entry in this file. Comparison is case-insensitive. Site_pattern cannot contain any whitespace, and is separated from read/transfer_access by any amount of whitespace.

read/transfer_access -- a single keyword indicating the read and transfer access permitted to hosts matching this entry. Only the first character of the keyword is significant. It is interpreted as follows:
x -- host is permitted to transfer items to the local server
via the NNTP IHAVE protocol
v -- host is permitted only to read items on the local server
r -- host is permitted to both read and transfer items
any other character -- host is permitted neither
read nor transfer access
Read/transfer_access cannot contain any whitespace, and is separated from post_access by any amount of whitespace.

post_access -- a single keyword indicating the posting access permitted to hosts matching this entry. Only the first character of the keyword is significant. It is interpreted as follows:
p -- host is permitted to post items to this server
using the NNTP POST protocol
any other character -- host is not permitted
to post items to this server
If this field is absent, post access is not allowed. Post_access cannot contain any whitespace, and is separated from read/transfer_access by any amount of whitespace.

newsgroup_list -- a comma-separated list of newsgroup patterns which specify the newsgroups to which the remote host is allowed access. If the first character of a pattern is '!', then the remote host is denied access to any newsgroup whose name matches the rest of the pattern. Within each pattern, the character '*' is a wildcard which matches any number of characters, while the characters '%' and '?' are wildcards which match any single character. For the purpose of comparison, each pattern has the characters '.*' appended to it. Comparison is case-insensitive. Newsgroup_list cannot contain any whitespace. This list determines whether a given newsgroup name appears in the response to a NNTP LIST command, and whether the remote host can access a newsgroup via the NNTP GROUP command. In addition, if the remote host attempts to access an item directly via the message ID, it succeeds if that item is found in a newsgroup to which that host has access (regardless of whether the item also appears in other newsgroups to which that host does not have access). If this field is empty, then it is treated as if it were '*'.

If this file is not present, any host connecting to your server is given read, transfer, and post access to all newsgroups carried at your site.

If you would like to restrict access to specific hosts or functions, edit the template file provided in the News_Dist ZIP file, and place the edited copy in News_Root (not News_Manager; this is done for historical reasons).

previous: 5.2.4 Moving News.Hlb
next: 5.4 Creating the News manager account and identifier
Table of Contents