You will need to customize common/conf.h to get the server,
support, and client programs running on your system.  Unfortunately,
"rrn" has its own ideas of where to look for configuration information,
so there is some duplication here.

    >>> Also, you should see README.SYSV if you are compiling this on
    >>> a System V machine, as there is some extra stuff you need to do.

     This is sort of a walk through conf.h so you can get some idea of
what parameters need to be changed.  You should probably print this
file out (or keep it in a separate window if you're on a workstation)
and edit conf.h as you read through it.  For each #define in conf.h,
the default value is listed in parenthesis after its name in this
document.  Manual entries mentioned here are in the "doc" directory of
the NNTP distribution.

     First are some compile-time type options, for compiling in
certain code.  The options should be "#undef"ed if you don't want
them, and "#defined" if you do.

ALONE		(undefined)

     Defines whether we're a stand alone version of the server, or
whether we're running under inetd.  Define this if you do NOT have inetd.
If you do have inetd, keep it undef'ed.

FASTFORK	(undefined)

     If ALONE is defined, then this option tells us not to read the
active file when we fork, but rather for the parent daemon to re-read
it every READINTVL (below) seconds.  This should make forking off children
a little bit faster.

BSD_42		(undefined)

     If you have a 4.2 BSD system (as opposed to a 4.3 BSD system),
this needs to be defined.  Really it does only two things: changes
the log level to be compatible with 4.2, and automatically defines
DBM (below).  If, somehow, you already have ndbm, then you should
kill the lines which auto-define it.

DBM		(undefined)

     If you don't have the ndbm routines in your standard library (i.e.,
if you're not running 4.3 BSD), you'll have to define this; all it
does is replace the ndbm calls with the earlier, unwieldy dbm calls.

>>> If you define DBM, be sure to edit server/Makefile to have  "-ldbm"
>>> on the LIBS line, i.e.

	LIBS = -ldbm

NDBM		(defined)

     Define if you have the 4.3BSD ndbm routines.

USGHIST		(undefined)

     Define if you don't use dbm/ndbm for the history file, but instead
you use the USG-style history file format.  IF YOU DO NOT DEFINE EITHER
DBM OR NDBM ABOVE, THIS IS THE DEFAULT.

USG		(undefined)

     Compiles in code to support System V; some of these appear down
below.  This is enough to get things to compile on an HPUX system,
which is as close as I come to Sys V.  If I would only listen to
Stan Barber, this would be more complete.

vfork		(undefined)

     If you DON'T have vfork, replace this line with:

#define	vfork	fork

If you DO have vfork, do nothing.

SYSLOG		(LOG_NEWS)

     nntpd uses the syslog system to report errors, and optionally, to
log usage statistics.  If SYSLOG is defined, errors will be
reported via the syslog() library routine; if it is not defined, no errors
will be reported.

     If you just define SYSLOG, only errors will be reported.  If you
want more information, such as statistics, you should define LOG, below.
Defining LOG will cause additional information besides errors to be
logged via SYSLOG.

     If you have syslog(), define SYSLOG to be the name of the facility
under which nntpd should log things.  If you are using FAKESYSLOG
above, it really doesn't matter what facility name you choose; LOG_NEWS
is fine.

LOG		(undefined)

     When LOG is defined, we log copious amounts of information via
syslog to a special file.  One a busy system like ucbvax, this produces
about 100K of log information per day.  Look in ../server/SYSLOG to
get an idea of what will be logged.  You can use the scripts
provided in ../support to produce statistics on your NNTP server if
you run with LOG.

FAKESYSLOG	(undefined)

     This is useful if your system doesn't support syslog, but you'd
like logging none the less.  By defining FAKESYSLOG to be the name of
a file, e.g., "/usr/lib/news/nntplog", you can have all nntp messages
logged to that file, ala syslog.  If you define FAKESYSLOG, you must
define LOG and SYSLOG, below.  The code for the fake syslog routines
are in ../server/fakesyslog.c, and are largely joe-code.

IHAVE_DEBUG	(undefined)

     Enables logging of each message-id as it is offered via the IHAVE
command.  This produces huge log files, but is useful if you suspect
a site is repeatedly offering the same article to your site after you
have rejected it.

XHDR		(defined)

     Enables the XHDR command, which is an extention of the NNTP spec.
XHDR allows client programs to see header lines (e.g., subject) from
an article or range of articles.  This allows the '=' command in rn
to be much faster, IF AND ONLY IF your server machine is fast.  Since
this command foists off work on the server, it may be better to leave this
undefined if your server machine is heavily loaded.

SUBNET		(undefined)

     If you are running 4.3 BSD or have support for subnets on
your local net, this will include subnet support for the access
file.  Basically, a routine goes out and looks at all your ethernet
interfaces, and figures out subnet masks from them.  It then
uses these to resolve subnets from IP addresses.

DAMAGED_NETMASK	(undefined)

     4.3 supports subnet masks of any bit-width, but user programs
are *very* hard pressed to deal with masks which are not a multiple
of 8 bits wide.  If you have a weird netmask, define DAMAGED_NETMASK.
The code which uses it is in server/subnet.c.

NETMASK		(undefined)

     The code in server/subnet.c wants to use 4BSD ioctls to determine
the subnet masks for each network interface.  However, you may be able
to support subnets without having such ioctls (HPUX is an example of
such a system; SunOS 3.3 is another).  If you will be satisfied by
having a compiled-in netmask, define NETMASK to be a hex constant
describing your netmask (e.g., 0xffffff00).  You must also define
SUBNET as well.

DECNET		(undefined)

     Compile in DECNET support into the server and clientlib.
This works under Ultrix (and not VMS!).

GHNAME		(defined)

     Defined if you want to use the 4BSD gethostname() call to
determine the name of your system.  This #define is only used
by the mini-inews when posting news.  Some reasons you might not
want to use this are: if your UUCP/news name is different than
your internet name; if your gethostname() currently doesn't
return fully-qualified names (e.g., 4.2) but you may "upgrade"
to 4.3 (and return fq'd names) shortly, and you'd rather not
have to recompile news...  See UUNAME below.

UUNAME		(undefined)

     If this is defined, mini-inews will get the hostname out
of /etc/uucpname or /local/uucpname.

>>>	If GHNAME and UUNAME are undefined, mini-inews will	<<<
>>>	get the host name from /usr/include/whoami.h		<<<

FCNTL		(defined if SYSV is defined)

     Some systems define things like O_RDONLY, etc. in <fcntl.h>.
If FCNTL is defined, <fcntl.h> will be included.

NDIR		(defined if SYSV is defined)

     Uses the ndir compatability library, and includes <ndir.h>.

TIMEOUT		(2 hours)

     If a server is idle in command mode for TIMEOUT amount of time,
it will close the connection with an error message.  This prevents
old servers from clogging the system.  Timeout should be at least two
hours so people can go eat lunch and leave an rn on their terminal.

XFER_TIMEOUT	(30 minutes)

     This is like TIMEOUT, above, but takes effect when the server is
receiving news via IHAVE or POST.  If at least one line is not received
in XFER_TIMEOUT amount of time, the server aborts with an error.

DOMAIN		("uucp")

     If domain is defined, it specifies that whatever it is defined
as will be appended to host names; this is for posting news when
your hostname() doesn't return your fully-qualified domain name.
If your hostname system call does return a fully-qualified name,
simply undef DOMAIN.


SERVER_FILE	("/usr/local/lib/rn/server")

     This file contains the name of the machine which runs the
news server.  Mini-inews, rrn, and getactive all use the contents
of this file.  The idea behind this is that you don't have to have the server
compiled into anything, and can have the same binaries across
machines which have different news servers.

     You must edit this file, and add a single line which contains
the name of the news server for each machine which runs rrn.

     If you have multiple news servers on your network, users can
select which one they want to use via the NNTPSERVER environment
variable, which will override the contents of SERVER_FILE.  Simply
set NNTPSERVER to be the name of the machine whose news server you
want to use.

     If you are afraid of people abusing a particular news server
via NNTPSERVER, you should edit the access file for that news server
accordingly.  Security begins at home.

>>> rrn, mini-inews, and getactive NO LONGER have compiled in server names <<<
>>> Be sure to create the SERVER_FILE as mentioned above, or you'll lose!  <<<

POSTER		("usenet")

     If your nntpd is run as root, nntpd will attempt to setuid()
and setgid() to the uid and gid of whoever POSTER is defined as.
If your nntpd isn't running as root (i.e., it might run as "usenet"),
either undefine this, or define it to be a user which exists but
is not used -- the setuid will fail in any event.

Next, we have some common files:

ACTIVE_FILE	("/usr/lib/news/active")

     Specifies the location of the "active" file.

ACCESS_FILE	("/usr/lib/news/nntp_access")

     Specifies the location of the remote access file.
     See the manual entry, nntpd.8c, for a better explanation.
     A sample access file is in ../support/access_file.

HISTORY_FILE	("/usr/lib/news/history")

     Specifies the location of the "history" file.
     This is used with NEWNEWS and ARTICLE/HEAD/BODY/STAT when
     given an message-id argument.

INEWS		("/usr/lib/news/inews")

     Specifies the location of inews, for posting.  Note that this
     is NOT the same as the mini-inews in the inews directory
     supplied with the NNTP distribution, which should only
     be installed on client machines.  INEWS should be the pathname
     of real, live, honest-to-God inews.  Your inews may be
     in a different place, such as /usr/bin/inews.

SPOOLDIR	("/usr/spool/news/")

     This is the directory where news is stored.  Note that
     the trailing / is important.

RNEWS		("/usr/bin/rnews")

     Specifies the location of the rnews program which is used
     for dealing with news received from other systems via the
     IHAVE command; it is often a link to inews.

STAT_FILE	("/usr/lib/news/mgdstats")

     NOTE: THIS IS NOT USED, BUT REMAINS FOR COMPATABILITY.
     When the support program "mkgrdates" is run, it keep stats
     in a file to tell whether or not to rebuild its database
     the next time it is run; this is the file the stats are kept
     in.  Needless to say, it must be writable by whatever user-id
     runs "mkgrdates".  See the manual entry "mkgrdates.8c" for
     more info.

NGDATE_FILE	("/usr/lib/news/groupdates")

     NOTE: THIS IS NOT USED, BUT REMAINS FOR COMPATABILITY.
     Specifies the location of the newsgroup creation date file.
     See the manual entry for both nntpd.8c and mkgrdates.8c for
     more info.

READINTVL	(600 seconds)

     If the server is compiled with FASTFORK and ALONE, then this number
     tells how often to check if the active file has changed (and to
     read it in if it has changed since the last time).  See README
     in the "server" directory of the NNTP distribution.  If you are
     not compiled with FASTFORK and ALONE (hint: you're not going to),
     don't worry about this.