V8/usr/src/cmd/uucp/doc/rtmdiff/dae

.Bh
Daemons
.Sh
Data transfer
.PP
The communication daemon
is
.I uucico ,
rather than
.I uuci
and
.I uuco .
If called with no arguments,
.I uucico
starts in slave mode
(like
the old
.I uuci );
if given the flag
.B \-r1 ,
it starts in master mode,
and tries to call out
to the system named
in a
.B \-s system
argument
(like
.I uuco ).
Unlike
.I uuco ,
.I uucico
insists that
a system be specified.
A new program,
.I uusched ,
searches the spool directory
and calls
.I uucico
once for each system
that has work
(like
.I uuco
without arguments).
Hence,
to call a particular system,
use
`\c
.B "uucico \-r1 \-s" sysname;'
to call out to all systems with work queued,
`\c
.B uusched .'
.PP
Logins used for incoming traffic
should have
.I /usr/lib/uucp/uucico
as shell,
rather than
.I uuci .
.PP
As a compatibility hack,
.I uucico
is linked to
.I uuci
and
.I uusched
is linked to
.I uuco.
Don't depend on this forever;
programs
(and password files)
which call
.I uuci
or
.I uuco
should be fixed.
.Sh
Remote execution
.PP
Remote commands
called by
.I uuxqt
are invoked somewhat differently.
The old
.I uuxqt
passed an environment
(\c
.I environ (7))
containing only the definition
.B RHOST ,
set to the name of the remote system.
The command was
.I exec ed
directly,
without involving the shell.
The program name argument
(\c
.I argv [0])
was the remote command name
given to
.I uux ;
.I e.g.,
.I rmail
was invoked with the name
.I rmail ,
even though it was run
with the specific path
.I /bin/rmail .
The file creation mask
(\c
.I umask (2))
was inherited unchanged from
.I uuxqt .
.PP
In the new system,
the remote command
inherits environment variables
from
.I uuxqt ,
with four additions:
.B PATH
is set to
.B /bin:/usr/bin ;
.B USER
to
.B uucp ;
.B UU_MACHINE
to the name of the remote system;
.B UU_USER
to the login name
of the remote user requesting the command.
Execution consists of calling
.B "/bin/sh \-c
with appropriate arguments
to set the environment
and call the command.
For example,
if user
.I rhino
on machine
.I hippo
sends remote mail
to
.I sheep ,
.I uuxqt
might invoke
.IP
.B
sh \-c
"PATH=/bin:/usr/bin
USER=uucp
UU_MACHINE=hippo
UU_USER=rhino
export PATH UU_MACHINE UU_USER;
/bin/rmail sheep"
.R
.PP
.B USER
is not exported (why not?).
The file creation mask
is set to 0.
.PP
If an explicit pathname for the command
is specified in
.I Permissions ,
that name is fed to the shell,
and becomes
.I argv [0].
.PP
Commands which depend on the
.I umask
or
the value of
.B PATH ,
or which examine
.B RHOST ,
will need to be changed.
.Sh
Periodic maintenance
.PP
.I Uusched
and
.I uuxqt
should be started up periodically,
say hourly.
.PP
.I Uudemon.cleanu *
.FS
*
A victim of V8's refusal to
allow filenames
even to be expressed in
more than 14 characters.
.FE
cleans up the spool directory.
It summarizes the current logfiles,
and stores them away.
By default,
one back copy
(yesterday's logs)
is kept;
more can be saved by
specifying the number of days
as an argument.
Logs are scanned for interesting items,
such as failed requests
and attempts to steal the password file;
anything exciting
is mailed to a system administrator.
.I Uudemon.cleanu
also cleans up dead bodies
in the spooling directory;
much of this work is done
by calling
.I uucleanup ,
which takes the place
of the old
.I uuclean .
.PP
Both
.I uudemon.cleanu
and
.I uudemon.admin
look in the environment variable
.B mailto
for a list of
people to grace with mail.
If
.B mailto
is not set,
messages are sent
to
.B uucp .
.PP
.I Uucrap
removes status files
which record nothing but the time
of the last successful call,
and empty spooling directories.
This isn't essential,
but keeps things cleaner
and makes
.I uustat
less noisy.
.PP
If a remote machine
needs to be polled regularly,
it should be entered in
.I /usr/lib/uucp/Poll ,
and
.I uudemon.poll
should be run hourly,
before
.I uusched .
This script sets up
a dummy command
for the system to be polled,
so that the next
.I uusched
will call it.
The
.I Poll
file allows specific hours
to be given
for the call.
.PP
A plausible script to be run every hour
(usually called
.I uudemon.hr )
might be
.DS
.B
/usr/lib/uucp/uudemon.poll
/usr/lib/uucp/uucrap
/usr/lib/uucp/uusched &
/usr/lib/uucp/uuxqt &
.R
.DE
.PP
A sensible daily script
(\c
.I uudemon.day )
might be
.DS
.B
mailto="fee foe fum" export mailto
cd /usr/lib/uucp
\&./uudemon.cleanu 7	# save a week's worth of logfiles
.R
.DE
.PP
Feel free to customize the maintenance scripts.
In particular,
.I uudemon.cleanu
shoud be fiddled with
if you don't care to receive
all the junk mail.
(They've already been customized a bit;
the original
.I uudemon.cleanu
didn't take arguments.)
.Sh
Miscellany
.PP
The shell script
.I remote.unknown
is invoked
when an unknown system calls.
The first argument is the system name.
The distributed version
records the name in
.I spool/.Admin/Foreign .
If
.I remote.unknown
doesn't exist
or has no execute permissions,
calls from unknown systems
are accepted.
.PP
.I IHfix
culls out unwanted entries
from the NAC distribution.
To install a new NAC
.I L.sys ,
do
.IP
.B "IHfix Systems NACstuff >Systems.gen
.LP
You probably don't need to worry about this.