<chapter id="uucpref-1"><title>UUCP
(Reference)</title><highlights><itemizedlist><para>This chapter provides reference
information for working with UUCP.
The following topics are covered:</para><listitem><para><olink targetptr="uucpov-13" remap="internal">UUCP /etc/uucp/Systems
File</olink></para>
</listitem><listitem><para><olink targetptr="uucpov-30" remap="internal">UUCP /etc/uucp/Devices
File</olink></para>
</listitem><listitem><para><olink targetptr="uucpov-50" remap="internal">UUCP /etc/uucp/Dialers
File</olink></para>
</listitem><listitem><para><olink targetptr="uucpov-56" remap="internal">Other Basic
UUCP Configuration Files</olink></para>
</listitem><listitem><para><olink targetptr="uucpov-62" remap="internal">UUCP /etc/uucp/Permissions
File</olink></para>
</listitem><listitem><para><olink targetptr="uucpov-76" remap="internal">UUCP /etc/uucp/Poll
File</olink></para>
</listitem><listitem><para><olink targetptr="uucpov-77" remap="internal">UUCP /etc/uucp/Config
File</olink></para>
</listitem><listitem><para><olink targetptr="uucpov-78" remap="internal">UUCP/etc/uucp/Grades
File</olink></para>
</listitem><listitem><para><olink targetptr="uucpov-88" remap="internal">Other UUCP Configuration
Files</olink></para>
</listitem><listitem><para><olink targetptr="uucpov-92" remap="internal">UUCP Administrative
Files</olink></para>
</listitem><listitem><para><olink targetptr="uucpov-94" remap="internal">UUCP Error Messages</olink></para>
</listitem>
</itemizedlist>
</highlights><sect1 id="uucpov-13"><title>UUCP <filename>/etc/uucp/Systems</filename> File</title><para>The <filename>/etc/uucp/Systems</filename> file contains the information
that is needed by the <command>uucico</command> daemon
to establish a communication link
to a remote computer. <filename>/etc/uucp/Systems</filename> is the first file that
you need to edit to configure UUCP.
 </para><para>Each entry in the <filename>Systems</filename> file represents a remote
computer with which your host communicates.
A particular host can have more than
one entry. The additional entries
represent alternative communication
paths that are tried in sequential
order. In addition, by default UUCP
prevents any computer that does not
appear in <filename>/etc/uucp/Systems</filename> from
logging in to your host. </para><para>By using the <filename>Sysfiles</filename> file, you can define several
files to be used as <filename>Systems</filename> files.
See <olink targetptr="uucpov-60" remap="internal">UUCP
/etc/uucp/Sysfiles File</olink> for
a description of <filename>Sysfiles</filename>.
   </para><para>The following is the syntax
for an entry in the <filename>Systems</filename> file:</para><screen>System-Name    Time    Type    Speed    Phone    Chat Script</screen><para>See the following example
of an entry in the <filename>Systems</filename> file.</para><example id="uucpov-ex-14"><title>Entry
in <filename>/etc/uucp/Systems</filename></title><screen>Arabian     Any  ACUEC 38400 111222  ogin: Puucp ssword:beledi</screen>
</example><variablelist><varlistentry><term><literal>Arabian</literal></term><listitem><para>Entry for the System-Name
field. For more information, see <olink targetptr="uucpov-15" remap="internal">System-Name
Field in /etc/uucp/Systems File</olink>.</para>
</listitem>
</varlistentry><varlistentry><term><literal>Any</literal></term><listitem><para>Entry for the Time
field. For more information, see <olink targetptr="uucpov-16" remap="internal">Time Field in
/etc/uucp/Systems File</olink>.</para>
</listitem>
</varlistentry><varlistentry><term><literal>ACUEC</literal></term><listitem><para>Entry for the Type
field. For more information, see <olink targetptr="uucpov-19" remap="internal">Type Field in
/etc/uucp/Systems File</olink>.</para>
</listitem>
</varlistentry><varlistentry><term><literal>38400</literal></term><listitem><para>Entry for the Speed
field. For more information, see <olink targetptr="uucpov-21" remap="internal">Speed Field
in /etc/uucp/Systems File</olink>.</para>
</listitem>
</varlistentry><varlistentry><term><literal>111222</literal></term><listitem><para>Entry for the Phone
field. For more information, see <olink targetptr="uucpov-23" remap="internal">Phone Field
in /etc/uucp/Systems File</olink>.</para>
</listitem>
</varlistentry><varlistentry><term><literal>ogin:
Puucp ssword:beledi</literal></term><listitem><para>Entry for the Chat
Script field. For more information,
see <olink targetptr="uucpov-25" remap="internal">Chat-Script
Field in /etc/uucp/Systems File</olink>.</para>
</listitem>
</varlistentry>
</variablelist><sect2 id="uucpov-15"><title>System-Name
Field in <filename>/etc/uucp/Systems</filename> File</title><para>This field contains the
node name of the remote computer.
On TCP/IP networks, this name can
be the machine's host name or a name
that is created specifically for UUCP
communications through the <filename>/etc/uucp/Sysname</filename> file. See <olink targetptr="uucpov-13" remap="internal">UUCP /etc/uucp/Systems
File</olink>. In <olink targetptr="uucpov-ex-14" remap="internal">Example 26&ndash;1</olink>, the System-Name field contains
an entry for remote host <literal>Arabian</literal>.      </para>
</sect2><sect2 id="uucpov-16"><title>Time
Field in <filename>/etc/uucp/Systems</filename> File</title><para>This field specifies the
day of week and time of day when the
remote computer can be called. The
format of the Time field follows:
  </para><para><literal>daytime[;retry]</literal> </para><sect3 id="egkal"><title><replaceable>day</replaceable> Portion of Time Field</title><para>The <replaceable>day</replaceable> portion
can be a list that contains some of
the following entries. </para><variablelist termlength="wide"><varlistentry><term><literal>Su Mo
Tu We Th Fr Sa</literal></term><listitem><para>For individual days.</para>
</listitem>
</varlistentry><varlistentry><term><literal>Wk</literal></term><listitem><para>For any weekday.</para>
</listitem>
</varlistentry><varlistentry><term><literal>Any</literal></term><listitem><para>For any day.</para>
</listitem>
</varlistentry><varlistentry><term><literal>Never</literal></term><listitem><para>Your host never initiates
a call to the remote computer. The
call must be initiated by the remote
computer. Your host is then operating
in <emphasis>passive mode</emphasis>.</para>
</listitem>
</varlistentry>
</variablelist>
</sect3><sect3 id="egkba"><title><replaceable>time</replaceable> Portion of Time Field</title><para><olink targetptr="uucpov-ex-14" remap="internal">Example
26&ndash;1</olink> shows <literal>Any</literal> in
the Time field, which indicates that
host <literal>Arabian</literal> can
be called at any time.</para><para>The <replaceable>time</replaceable> portion
should be a range of times that are
specified in 24-hour notation, for
example, <literal>0800-1230</literal> for
8:30 a.m. to 12:30 p.m. If no <replaceable>time</replaceable> portion is specified,
any time of day is assumed to be allowed
for the call.</para><para>A time range that spans 0000
is permitted. For example, <literal>0800-0600</literal> means all times are allowed
other than times between 6 a.m. and
8 a.m.</para>
</sect3><sect3 id="uucpov-18"><title><emphasis>retry</emphasis> Portion of Time Field</title><para>The <emphasis>retry</emphasis> subfield
enables you to specify the minimum
time (in minutes) before a retry,
following a failed attempt. The default
wait is 60 minutes. The subfield separator
is a semicolon (;). For example, <literal>Any;9</literal> is interpreted as
call any time, but wait at least 9
minutes before retrying after a failure
occurs.  </para><para>If you do not specify a <replaceable>retry</replaceable> entry, an exponential
back-off algorithm is used. This means
that UUCP starts with a default wait
time that grows larger as the number
of failed attempts increases. For
example, suppose the initial retry
time is 5 minutes. If no response
occurs, the next retry is 10 minutes
later. The next retry is 20 minutes
later, and so on until the maximum
retry time of 23 hours is reached.
If <replaceable>retry</replaceable> is
specified, the value specified is
always the retry time. Otherwise,
the back-off algorithm is used.</para>
</sect3>
</sect2><sect2 id="uucpov-19"><title>Type
Field in <filename>/etc/uucp/Systems</filename> File</title><para>This field contains the
device type that should be used to
establish the communication link to
the remote computer. The keyword that
is used in this field is matched against
the first field of <filename>Devices</filename> file
entries.    </para><example width="100" id="uucpov-ex-20"><title>Keyword With the Type Field</title><screen>Arabian    Any    ACUEC, <userinput>g</userinput>    38400    1112222    ogin: Puucp ssword:beledi</screen>
</example><para>You can define the protocol
that is used to contact the system
by adding the protocol to the Type
field. The previous example shows
how to attach the protocol <literal>g</literal> to
the device type <literal>ACUEC</literal>.
For information about protocols, see <olink targetptr="uucpov-48" remap="internal">Protocol Definitions
in /etc/uucp/Devices File</olink>.</para>
</sect2><sect2 id="uucpov-21"><title>Speed
Field in <filename>/etc/uucp/Systems</filename> File</title><para>This field, also known
as the Class field, specifies the
transfer speed of the device that
is used in establishing the communication
link. The UUCP speed field can contain
a letter and speed, such as  <literal>C1200</literal> or <literal>D1200</literal>,
to differentiate between classes of
dialers. Refer to <olink targetptr="uucpov-40" remap="internal">Class Field
in the /etc/uucp/Devices File</olink>.
    </para><para>Some devices can be used
at any speed, so the keyword <literal>Any</literal> can be used. This field
must match the Class field in the
associated <filename>Devices</filename> file
entry. </para><example width="100" id="uucpov-ex-22"><title>Entry in Speed Field</title><screen>eagle    Any    ACU, g    <userinput>D1200</userinput>    NY3251    ogin: nuucp ssword:Oakgrass</screen>
</example><para>If information is not
required for this field, use a dash
(<literal>-</literal>) as a placeholder
for the field. </para>
</sect2><sect2 id="uucpov-23"><title>Phone
Field in <filename>/etc/uucp/Systems</filename> File</title><para>This field enables you
to specify the telephone number, known
as a <emphasis>token</emphasis>, of
the remote computer for automatic
dialers, which are known as <emphasis>port
selectors</emphasis>. The telephone
number consists of an optional alphabetic
abbreviation and a numeric part. If
an abbreviation is used, the abbreviation
must be listed in the <filename>Dialcodes</filename> file.</para><example width="100" id="uucpov-ex-24"><title>Entry in the Phone Field</title><screen>nubian    Any    ACU       2400    <userinput>NY555-1212</userinput>    ogin: Puucp ssword:Passuan
eagle     Any    ACU, g    D1200   <userinput>NY=3251</userinput>       ogin: nuucp ssword:Oakgrass</screen>
</example><para>In the <literal>Phone</literal> field,
an equal sign (<literal>=</literal>)
instructs the <literal>ACU</literal> to
wait for a secondary dial tone before
dialing the remaining digits. A dash
(<literal>-</literal>) in the string
instructs the <literal>ACU</literal> to
pause four seconds before dialing
the next digit.</para><para>If your computer is connected
to a port selector, you can access
other computers that are connected
to that selector. The <filename>Systems</filename> file
entries for these remote machines
should not have a telephone number
in the <literal>Phone</literal> field.
Instead, this field should contain
the token to be passed to the switch.
In this way, the port selector knows
the remote machine with which your
host wants to communicate, usually
just the system name. The associated <filename>Devices</filename> file entry should
have a <literal>\D</literal> at the
end of the entry to ensure that this
field is not translated by using the <filename>Dialcodes</filename> file. </para>
</sect2><sect2 id="uucpov-25"><title>Chat-Script
Field in <filename>/etc/uucp/Systems</filename> File</title><para>This field, also known
as the Login field, contains a string
of characters that is called a <emphasis>chat-script</emphasis>. The chat script
contains the characters the local
and remote machines must pass to each
other in their initial conversation.
Chat scripts have the following format:</para><para><replaceable>expect send  [expect
send] ....</replaceable></para><para><replaceable>expect</replaceable> represents
the string that the local host expects
to receive from the remote host to
initiate conversation. <replaceable>send</replaceable> is
the string that the local host sends
after the local host  receives the <replaceable>expect</replaceable> string from the
remote host. A chat script can have
more than one expect-send sequence.
  </para><itemizedlist><para>A basic chat script might
contain the following:  </para><listitem><para>Login prompt that
the local host expects to receive
from the remote machine</para>
</listitem><listitem><para>Login name that the
local host sends to the remote machine
in order to log in</para>
</listitem><listitem><para>Password prompt that
the local host expects to receive
from the remote machine</para>
</listitem><listitem><para>Password that the
local host sends to the remote machine</para>
</listitem>
</itemizedlist><para>The <replaceable>expect</replaceable> field
can be composed of subfields of the
following form:</para><para><replaceable>expect[-send-expect]...</replaceable></para><para>The -<replaceable>send</replaceable> is
sent if the prior <replaceable>expect</replaceable> is
not successfully read. The -<replaceable>expect</replaceable> that follows
the -<replaceable>send</replaceable> is
the next expected string. </para><para>For example, with strings <literal>login--login</literal>, the UUCP on
the local host expects <literal>login</literal>.
If UUCP receives <literal>login</literal> from
the remote machine, UUCP goes to the
next field. If UUCP  does not receive <literal>login</literal>, UUCP sends a carriage
return, then looks for <literal>login</literal> again.
If the local computer initially does
not expect any characters, use the
characters <literal>""</literal>,
for NULL string, in the <replaceable>expect</replaceable> field. All <replaceable>send</replaceable> fields are sent with
a carriage return appended unless
the <replaceable>send</replaceable> string
is terminated with a <literal>\c</literal>.</para><para>The following is an example
of a <filename>Systems</filename> file
entry that uses an <replaceable>expect-send</replaceable> string: </para><screen>sonora Any ACUEC 9600 2223333 <userinput>"" \r \r ogin:-BREAK-ogin: Puucpx ssword:xyzzy</userinput></screen><para>This example instructs UUCP
on the local host to send two carriage
returns and wait for <literal>ogin:</literal> (for <literal>Login:</literal>). If  <literal>ogin</literal>:
is not received, send a <literal>BREAK</literal>.
When you do receive <literal>ogin:</literal>,
send the login name <literal>Puucpx</literal>.
When you receive <literal>ssword:</literal> (for <literal>Password:</literal>), send the password <literal>xyzzy</literal>. </para><para>The following table lists
some useful escape characters.</para><table frame="topbot" id="uucpov-tbl-26"><title>Escape Characters Used in the
Chat-Script Field of the <filename>Systems</filename> File</title><tgroup cols="2" colsep="0" rowsep="0"><colspec colname="column1" colwidth="108.80*"/><colspec colname="column2" colwidth="287.20*"/><thead><row rowsep="1"><entry><para>Escape Character</para>
</entry><entry><para>Meaning</para>
</entry>
</row>
</thead><tbody><row><entry><para><literal>\b</literal>  </para>
</entry><entry><para>Sends or expects a backspace
character.</para>
</entry>
</row><row><entry><para><literal>\c</literal>  </para>
</entry><entry><para>If at the end of a string, suppresses
the carriage return that is normally
sent. Ignored otherwise.</para>
</entry>
</row><row><entry><para><literal>\d</literal>  </para>
</entry><entry><para>Delays 1&ndash;3 seconds before
sending more characters.</para>
</entry>
</row><row><entry><para><literal>\E</literal>    </para>
</entry><entry><para>Starts echo checking. From this
point forward, whenever a character
is transmitted, UUCP waits for the
character to be received before continuing
its checks.</para>
</entry>
</row><row><entry><para><literal>\e</literal>   </para>
</entry><entry><para>Echoes check-off. </para>
</entry>
</row><row><entry><para><literal>\H</literal>  </para>
</entry><entry><para>Ignores one hangup. Use this
option for dialback modems.</para>
</entry>
</row><row><entry><para><literal>\K</literal>  </para>
</entry><entry><para>Sends a BREAK  character.</para>
</entry>
</row><row><entry><para><literal>\M</literal>   </para>
</entry><entry><para>Turns on <literal>CLOCAL</literal> flag.</para>
</entry>
</row><row><entry><para><literal>\m</literal>    </para>
</entry><entry><para>Turns off <literal>CLOCAL</literal> flag.</para>
</entry>
</row><row><entry><para><literal>\n</literal>  </para>
</entry><entry><para>Sends or expects a newline character.</para>
</entry>
</row><row><entry><para><literal>\N</literal>  </para>
</entry><entry><para>Sends a NULL character (ASCII
NUL).</para>
</entry>
</row><row><entry><para><literal>\p</literal> </para>
</entry><entry><para>Pauses for approximately 1/4
to 1/2 second.</para>
</entry>
</row><row><entry><para><literal>\r</literal>  </para>
</entry><entry><para>Sends or expects a carriage
return.</para>
</entry>
</row><row><entry><para><literal>\s</literal>  </para>
</entry><entry><para>Sends or expects a space character.</para>
</entry>
</row><row><entry><para><literal>\t</literal>  </para>
</entry><entry><para>Sends or expects a tab character.</para>
</entry>
</row><row><entry><para><literal>EOT</literal>  </para>
</entry><entry><para>Sends an EOT, followed by newline
twice.</para>
</entry>
</row><row><entry><para><literal>BREAK</literal> </para>
</entry><entry><para>Sends a BREAK character.</para>
</entry>
</row><row><entry><para><literal>\</literal><replaceable>ddd</replaceable>  </para>
</entry><entry><para>Sends or expects the character
that is represented by the octal digits
(<replaceable>ddd</replaceable>).</para>
</entry>
</row>
</tbody>
</tgroup>
</table>
</sect2><sect2 id="egkbm"><title>Enabling
Dialback Through the Chat Script</title><para>Some companies set up
dial-in servers to handle calls from
remote computers. For example, your
company might have a dial-in server
with a dialback modem that employees
can call from their home computers.
After the dial-in server identifies
the remote machine, the dial-in server
disconnects the link to the remote
machine and then calls back the remote
machine. The communications link is
then reestablished.        </para><para>You can facilitate dialback
by using the <literal>\H</literal> option
in the <filename>Systems</filename> file
chat script at the place where dialback
should occur. Include the <literal>\H</literal> as
part of an expect string at the place
where the dial-in server is expected
to hang up. </para><para>For example, suppose the chat
script that calls a dial-in server
contains the following string:</para><screen>INITIATED\Hogin:</screen><para>The UUCP dialing facility on
the local machine expects to receive
the characters, <literal>INITIATED</literal>,
from the dial-in server. After the
characters, <literal>INITIATED</literal>,
have been matched, the dialing facility
flushes any subsequent characters
that the dialing facility receives
until the dial-in server hangs up.
The local dialing facility then waits
until it receives the next part of
the expect string, the characters <literal>ogin:</literal>, from the dial-in
server. When it receives the <literal>ogin:</literal>, the dialing facility then
continues through the chat script.</para><para>A string of characters
does not need to directly precede
or follow the <literal>\H</literal>,
as shown in the previous sample string.</para>
</sect2><sect2 id="uucpov-28"><title>Hardware
Flow Control in <filename>/etc/uucp/Systems</filename> File</title><para>You can also use the pseudo-send <literal>STTY=</literal><emphasis>value</emphasis> string
to set modem characteristics. For
instance, <literal>STTY=crtscts</literal> enables
hardware flow control.  <command>STTY</command> accepts
all <literal>stty</literal> modes.
See the <olink targetdoc="refman1" targetptr="stty-1" remap="external"><citerefentry><refentrytitle>stty</refentrytitle><manvolnum>1</manvolnum></citerefentry></olink> and <olink targetdoc="refman7" targetptr="termio-7i" remap="external"><citerefentry><refentrytitle>termio</refentrytitle><manvolnum>7I</manvolnum></citerefentry></olink> man
pages for complete details.</para><para>The following example enables
hardware flow control in a <filename>Systems</filename> file entry: </para><screen>unix Any ACU 2400 12015551212 "" \r ogin: Puucp ssword:Passuan "" \ <userinput>STTY=crtscts</userinput></screen><para>This pseudo-send string
can also be used in entries in the <filename>Dialers</filename> file.</para>
</sect2><sect2 id="uucpov-29"><title>Setting
Parity in <filename>/etc/uucp/Systems</filename> File</title><para>In some situations, you
have to reset the parity because the
system that you are calling checks
port parity and drops the line if
it is wrong.  The expect-send couplet, <literal>""</literal> <literal>P_ZERO</literal>,
sets the high-order bit (parity bit)
 to 0. See this expect-send couplet
in the following example:</para><screen>unix Any ACU 2400 12015551212 <userinput>"" P_ZERO</userinput> "" \r ogin: Puucp ssword:Passuan</screen><para>The following are parity couplets
that can follow the expect-send couplet, <literal>""</literal> <literal>P_ZERO</literal>:</para><variablelist><varlistentry><term><literal>"" P_EVEN</literal></term><listitem><para>Sets the parity to
even, which is the default</para>
</listitem>
</varlistentry><varlistentry><term><literal>"" P_ODD</literal></term><listitem><para>Sets the parity to
odd</para>
</listitem>
</varlistentry><varlistentry><term><literal>"" P_ONE</literal></term><listitem><para>Sets the parity bit
to 1</para>
</listitem>
</varlistentry>
</variablelist><para>These parity couplets can be
inserted anywhere in the chat script.
The parity couplets apply to all information
in the chat script that follows <literal>""</literal> <literal>P_ZERO</literal>,
the expect-send couplet. A parity
couplet can also be used in entries
in the <filename>Dialers</filename> file.
The following example includes the
parity couplet, <literal>""</literal> <literal>P_ONE</literal>:</para><screen>unix Any ACU 2400 12015551212 "" P_ZERO <userinput>"" P_ONE</userinput> "" \r ogin: Puucp ssword:Passuan</screen>
</sect2>
</sect1><sect1 id="uucpov-30"><title>UUCP <filename>/etc/uucp/Devices</filename> File</title><para>The <filename>/etc/uucp/Devices</filename> file contains information
for all the devices that can be used
to establish a link to a remote computer.
These devices include ACUs (which
include high-speed modems), direct
links, and network connections.</para><para>An entry in the <filename>/etc/uucp/Devices</filename> file has the following
syntax:</para><screen>Type   Line   Line2   Class   Dialer-Token-Pairs</screen><para>The following is an entry in
the <filename>Devices</filename> file
for a U.S. Robotics V.32bis modem
that is attached to port A and is
running at 38,400 bps.</para><screen>ACUEC   cua/a   -   38400   usrv32bis-ec</screen><variablelist><varlistentry><term><literal>ACUEC</literal></term><listitem><para>Entry in the Type
field. For more information, see <olink targetptr="uucpov-31" remap="internal">Type Field in
/etc/uucp/Devices File</olink>.</para>
</listitem>
</varlistentry><varlistentry><term><literal>cua/a</literal></term><listitem><para>Entry in the Line
field. For more information, see <olink targetptr="uucpov-38" remap="internal">Line Field in
the /etc/uucp/Devices File</olink>.</para>
</listitem>
</varlistentry><varlistentry><term><literal>-</literal></term><listitem><para>Entry in the Line2
field. For more information, see <olink targetptr="uucpov-39" remap="internal">Line2 Field
in the /etc/uucp/Devices File</olink>.</para>
</listitem>
</varlistentry><varlistentry><term><literal>38400</literal></term><listitem><para>Entry in the Class
field. For more information, see <olink targetptr="uucpov-40" remap="internal">Class Field
in the /etc/uucp/Devices File</olink>.</para>
</listitem>
</varlistentry><varlistentry><term><literal>usrv32bis-ec</literal></term><listitem><para>Entry in the Dialer-Token-Pairs
field. For more information, see <olink targetptr="uucpov-42" remap="internal">Dialer-Token-Pairs
Field in the /etc/uucp/Devices File</olink>.</para>
</listitem>
</varlistentry>
</variablelist><para>Each field is described
in the next section.  </para><sect2 id="uucpov-31"><title>Type
Field in <filename>/etc/uucp/Devices</filename> File</title><para>This field describes the
type of link that the device establishes.
The UUCP Type field can contain one
of the keywords that is described
in the sections that follow.    </para><sect3 id="uucpov-32"><title><option role="nodash">Direct</option> Keyword</title><para>The <literal>Direct</literal> keyword
appears mainly in entries for <command>cu</command> connections. This keyword
indicates that the link is a direct
link to another computer or a port
selector. Create a separate entry
for each line that you want to reference
through the <literal>-l</literal> option
of <command>cu</command>. </para>
</sect3><sect3 id="uucpov-33"><title><option role="nodash">ACU</option> Keyword</title><para>The <literal>ACU</literal> keyword
indicates that the link to a remote
computer (whether through <command>cu</command>,
UUCP, <command>asppp</command>, or
Solaris PPP 4.0) is made through a
modem. This modem can be connected
either directly to your computer or
indirectly through a port selector.
 </para>
</sect3><sect3 id="uucpov-34"><title>Port
Selector</title><para>The port selector is a
variable that is replaced in the Type
field by the name of a port selector.
Port selectors are devices that are
attached to a network that prompts
for the name of a calling modem, then
grant access. The file <filename>/etc/uucp/Dialers</filename> contains caller scripts
only for the <literal>micom</literal> and <literal>develcon</literal> port selectors.
You can add your own port selector
entries to the <filename>Dialers</filename> file.
See <olink targetptr="uucpov-50" remap="internal">UUCP
/etc/uucp/Dialers File</olink> for
more information.  </para>
</sect3><sect3 id="uucpov-35"><title>System-Name
Variable</title><para>This variable is replaced
by the name of a machine in the Type
field, indicating that the link is
a direct link to this particular computer.
This naming scheme is used to associate
the line in this <filename>Devices</filename> entry
with an entry in <filename>/etc/uucp/Systems</filename> for the computer <emphasis>System-Name</emphasis>. </para>
</sect3><sect3 id="uucpov-36"><title>Type
Fields in <filename>Devices</filename> File
and <filename>Systems</filename> File</title><para><olink targetptr="uucpov-ex-37" remap="internal">Example 26&ndash;5</olink> shows a comparison of the
fields in <filename>/etc/uucp/Devices</filename> and
the fields in <filename>/etc/uucp/Systems</filename>. The keyword that is used
in the Type field of the <filename>Devices</filename> file is matched against
the third field of the <filename>Systems</filename> file
entries. In the <filename>Devices</filename> file,
the Type field has the entry ACUEC,
indicating an automatic call unit,
in this instance a V.32bis modem.
This value is matched against the
Type field in the <filename>Systems</filename> file,
which also contains the entry ACUEC.
See <olink targetptr="uucpov-13" remap="internal">UUCP
/etc/uucp/Systems File</olink> for
more information.</para><example width="100" id="uucpov-ex-37"><title>Comparison of Type Fields in <filename>Devices</filename> file and <filename>Systems</filename> File</title><para>The following is an example
of an entry in the <filename>Devices</filename> file.</para><screen><userinput>ACUEC</userinput> cua/a - 38400 usrv32bis-ec</screen><para>The following is an example
of an entry in the <filename>Systems</filename> file.</para><screen>Arabian Any <userinput>ACUEC</userinput> 38400 111222 ogin: Puucp ssword:beledi</screen>
</example>
</sect3>
</sect2><sect2 id="uucpov-38"><title>Line
Field in the <filename>/etc/uucp/Devices</filename> File</title><para>This field contains the
device name of the line (known as
port) that is associated with the <filename>Devices</filename> entry. If the modem
that is associated with a particular
entry were attached to the <filename>/dev/cua/a</filename> device (serial port A),
the name that is entered in this field
would be <literal>cua/a</literal>.
An optional modem control flag, <structfield>M</structfield>, can be used in the
Line field to indicate that the device
should be opened without waiting for
a carrier. For example:</para><screen>cua/a,M</screen>
</sect2><sect2 id="uucpov-39"><title>Line2
Field in the <filename>/etc/uucp/Devices</filename> File</title><para>This field is a placeholder.
Always use a hyphen (<literal>-</literal>)
here. 801&ndash;type dialers, which
are not supported in the Solaris OS,
use the Line2 field. Non-801 dialers
do not normally use this configuration,
but still require a hyphen in this
field.      </para>
</sect2><sect2 id="uucpov-40"><title>Class
Field in the <filename>/etc/uucp/Devices</filename> File</title><para>The Class field contains
the speed of the device, if the keyword <literal>ACU</literal> or <literal>Direct</literal> is
used in the Type field. However, the
Class field can contain a letter and
a speed, such as <literal>C1200</literal> or
 <literal>D1200</literal>,  to differentiate
between classes of dialers, such as
Centrex or Dimension PBX.    </para><para>This differentiation is necessary
because many larger offices can have
more than one type of telephone network.
One network might be dedicated to
serving only internal office communications
while another network handles the
external communications. In such a
situation, you must distinguish which
line or lines should be used for internal
communications and which should be
used for external communications. </para><para>The keyword that is used
in the Class field of the <filename>Devices</filename> file is matched against
the Speed field of the <filename>Systems</filename> file.
  </para><example id="uucpov-ex-41"><title>Class
Field in the <filename>Devices</filename> file</title><screen>ACU   cua/a   -   <userinput>D2400</userinput>  hayes</screen>
</example><para>Some devices can be used at
any speed, so the keyword <literal>Any</literal> can
be used in the Class field. If <literal>Any</literal> is used, the line matches
any speed that is requested in the
Speed field of the <filename>Systems</filename> file.
If this field is <literal>Any</literal> and
the <filename>Systems</filename> file
Speed field is <literal>Any</literal>,
the speed defaults to 2400 bps. </para>
</sect2><sect2 id="uucpov-42"><title>Dialer-Token-Pairs
Field in the <filename>/etc/uucp/Devices</filename> File</title><para>The Dialer-Token-Pairs
(DTP) field contains the name of a
dialer and the token to pass it. The
DTP field has this syntax:</para><para><replaceable>dialer token [dialer
token]</replaceable></para><para>The <replaceable>dialer</replaceable> portion
can be the name of a modem, a port
monitor, or it can be <literal>direct</literal> or <literal>uudirect</literal> for a direct-link
device. You can have any number of
dialer-token pairs. If the <replaceable>dialer</replaceable> portion is not present,
it is taken from a related entry in
the <filename>Systems</filename> file.
The <replaceable>token</replaceable> portion
can be supplied immediately after
the dialer portion.  </para><para>The last dialer-token pair might
not be present, depending on the associated
dialer. In most situations, the last
pair contains only a <replaceable>dialer</replaceable> portion.
The <replaceable>token</replaceable> portion
is retrieved from the Phone field
of the associated <filename>Systems</filename> file
entry. </para><para>A valid entry in the <emphasis>dialer</emphasis> portion can be defined
in the <filename>Dialers</filename> file
or can be one of several special dialer
types. These special dialer types
are compiled into the software and
are therefore available without having
entries in the <filename>Dialers</filename> file.
The following list shows the special
dialer types. </para><variablelist termlength="narrow"><varlistentry><term><literal>TCP</literal></term><listitem><para>TCP/IP network</para>
</listitem>
</varlistentry><varlistentry><term><literal>TLI</literal></term><listitem><para>Transport Level Interface
Network (without STREAMS)</para>
</listitem>
</varlistentry><varlistentry><term><literal>TLIS</literal></term><listitem><para>Transport Level Interface
Network (with STREAMS)</para>
</listitem>
</varlistentry>
</variablelist><para>See <olink targetptr="uucpov-48" remap="internal">Protocol
Definitions in /etc/uucp/Devices File</olink> for
more information.</para>
</sect2><sect2 id="egkco"><title>Structure
of the Dialer-Token-Pairs Field in
the <filename>/etc/uucp/Devices</filename> File</title><para>The DTP field can be structured
four different ways, depending on
the device that is associated with
the entry. </para><para>See the first way that the DTP
field can be structured:</para><para><emphasis role="strong">Directly
connected modem</emphasis> &ndash;
If a modem is connected directly to
a port on your computer, the DTP field
of the associated <filename>Devices</filename> file
entry has only one pair. This pair
would normally be the name of the
modem. This name is used to match
the particular <filename>Devices</filename> file
entry with an entry in the <filename>Dialers</filename> file. Therefore, the Dialer
field must match the first field of
a <filename>Dialers</filename> file
entry.</para><example id="uucpov-ex-45"><title>Dialers
Field for Directly Connect Modem</title><screen>Dialers   hayes =,-,  ""          \\dA\pTE1V1X1Q0S2=255S12=255\r\c 
                                  \EATDT\T\r\c CONNECT</screen>
</example><para>Notice that only the dialer
portion (<literal>hayes</literal>)
is present in the DTP field of the <filename>Devices</filename> file entry. This
means that the <replaceable>token</replaceable> to
be passed on to the dialer (in this
instance, the phone number) is taken
from the Phone field of a <filename>Systems</filename> file entry. (<literal>\T</literal> is
implied, as described in <olink targetptr="uucpov-ex-47" remap="internal">Example 26&ndash;9</olink>.)  </para><itemizedlist><para>See the second and third ways
that the DTP field can be structured:</para><listitem><para><emphasis role="strong">Direct
link</emphasis> &ndash; For a direct
link to a particular computer, the
DTP field of the associated entry
would contain the keyword <literal>direct</literal>. This condition is true
for both types of direct-link entries, <literal>Direct</literal> and <replaceable>System-Name</replaceable>.  Refer to <olink targetptr="uucpov-31" remap="internal">Type Field in
/etc/uucp/Devices File</olink>. </para>
</listitem><listitem><para><emphasis role="strong">Computers
on the same port selector</emphasis> &ndash;
If a computer with which you intend
to communicate is on the same port
selector switch as your computer,
your computer must first access the
switch. The switch then makes the
connection to the other computer.
This type of entry has only one pair.
The <emphasis>dialer</emphasis> portion
is used to match a <filename>Dialers</filename> file
entry. </para>
</listitem>
</itemizedlist><example id="uucpov-ex-46"><title>UUCP
Dialers Field for Computers on Same
Port Selector</title><screen>Dialers    develcon ,""   ""            \pr\ps\c est:\007 \E\D\e \007</screen>
</example><para>As shown, the <emphasis>token</emphasis> portion is left blank.
This designation indicates that it
is retrieved from the <filename>Systems</filename> file.
The <filename>Systems</filename> file
entry for this computer contains the
token in the Phone field, which is
normally reserved for the phone number
of the computer. Refer to <olink targetptr="uucpov-13" remap="internal">UUCP /etc/uucp/Systems
File</olink> for details. This type
of DTP contains an escape character
(<literal>\D</literal>), which ensures
that the content of the Phone field
is not interpreted as a valid entry
in the <filename>Dialcodes</filename> file. </para><para>See the fourth way that the
DTP field can be structured:</para><para><emphasis role="strong">Modems
that are connected to port selector</emphasis> &ndash;
If a high-speed modem is connected
to a port selector, your computer
must first access the port selector
switch. The switch makes the connection
to the modem. This type of entry requires
two dialer-token-pairs. The <emphasis>dialer</emphasis> portion of each pair (the
fifth and seventh fields of the entry)
is used to match entries in the <filename>Dialers</filename> file, as follows.
 </para><example width="100" id="uucpov-ex-47"><title>UUCP Dialers Field for Modems
Connected to Port Selector</title><screen>develcon ""     ""    \pr\ps\c  est:\007    \E\D\e      \007
ventel   =&amp;-%   t""   \r\p\r\c  $           &lt;K\T%\r>\c  ONLINE!</screen>
</example><para>In the first pair, <literal>develcon</literal> is the dialer and <literal>vent</literal> is the token that is passed
to the Develcon switch to tell it
which device, such as a Ventel modem,
to connect to your computer. This
token is unique for each port selector,
as each switch can be set up differently.
After the Ventel modem has been connected,
the second pair is accessed. Ventel
is the dialer and the token is retrieved
from the <filename>Systems</filename> file. </para><itemizedlist><para>Two escape characters can appear
in a DTP field: </para><listitem><para><literal>\T</literal> &ndash;
Indicates that the Phone (<replaceable>token</replaceable>) field should be translated
by using the <filename>/etc/uucp/Dialcodes</filename> file. This escape character
is normally placed in the <filename>/etc/uucp/Dialers</filename> file for each caller script
that is associated with a modem, such
as Hayes, and U.S. Robotics. Therefore,
the translation does not occur until
the caller script is accessed.  </para>
</listitem><listitem><para><literal>\D</literal> &ndash;
Indicates that the Phone (<replaceable>token</replaceable>) field should not be
translated by using the <filename>/etc/uucp/Dialcodes</filename> file. If no escape character
is specified at the end of a <literal>Devices</literal> entry, the <literal>\D</literal> is
assumed (default). A <literal>\D</literal> is
also used in the <filename>/etc/uucp/Dialers</filename> file with entries that
are associated with network switches <literal>develcon</literal> and <literal>micom</literal>.
      </para>
</listitem>
</itemizedlist>
</sect2><sect2 id="uucpov-48"><title>Protocol
Definitions in <filename>/etc/uucp/Devices</filename> File</title><para>You can define the protocol
to use with each device in <filename>/etc/uucp/Devices</filename>. This specification is
usually unnecessary because you can
use the default or define the protocol
with the particular system you are
calling. Refer to <olink targetptr="uucpov-13" remap="internal">UUCP /etc/uucp/Systems
File</olink> for details. If you do
specify the protocol, you must use
the following form:</para><screen><replaceable>Type</replaceable>,<replaceable>Protocol</replaceable> <replaceable>[parameters]</replaceable></screen><para>For example, you can use <literal>TCP,te</literal> to specify the TCP/IP protocol.</para><para>The following table shows the
available protocols for the <filename>Devices</filename> file. </para><table frame="topbot" id="uucpov-tbl-49"><title>Protocols Used in <filename>/etc/uucp/Devices</filename></title><tgroup cols="2" colsep="0" rowsep="0"><colspec colname="column1" colwidth="79*"/><colspec colname="column2" colwidth="317*"/><thead><row rowsep="1"><entry><para>Protocol</para>
</entry><entry><para>Description</para>
</entry>
</row>
</thead><tbody><row><entry><para><literal>t</literal> </para>
</entry><entry><para>This protocol is commonly used
for transmissions over TCP/IP and
other reliable connections. <literal>t</literal> assumes
error-free transmissions. </para>
</entry>
</row><row><entry><para><literal>g</literal> </para>
</entry><entry><para>This protocol is UUCP's native
protocol. <literal>g</literal> is
slow, reliable, and good for transmission
over noisy telephone lines. </para>
</entry>
</row><row><entry><para><literal>e</literal> </para>
</entry><entry><para>This protocol assumes transmission
over error-free channels that are
message oriented, as opposed to byte-stream
oriented, such as TCP/IP. </para>
</entry>
</row><row><entry><para><literal>f</literal> </para>
</entry><entry><para>This protocol is used for transmission
over X.25 connections. <literal>f</literal> relies
on flow control of the data stream
and is meant for working over links
that can (almost) be guaranteed to
be error free, specifically X.25/PAD
links. A checksum is enacted over
a whole file only. If a transport
fails, the receiver can request retransmission
or retransmissions. </para>
</entry>
</row>
</tbody>
</tgroup>
</table><para>Here is an example that shows
a protocol designation for a device
entry: </para><screen>TCP,te - - Any TCP - </screen><para>This example indicates that,
for device <literal>TCP</literal>,
you should try to use the <command>t</command> protocol.
If the other end of the transmission
refuses, use the <command>e</command> protocol. </para><para>Neither <command>e</command> nor <command>t</command> is  appropriate for use
over modems. Even if the modem assures
error-free transmission, data can
still be dropped between the modem
and the CPU.    </para>
</sect2>
</sect1><sect1 id="uucpov-50"><title>UUCP <filename>/etc/uucp/Dialers</filename> File</title><para>The <filename>/etc/uucp/Dialers</filename> file contains dialing
instructions for commonly used modems.
You probably do not need to change
or add entries to this file unless
you plan to use a nonstandard modem
or plan to customize your UUCP environment.
Nevertheless, you should understand
what is in the file and how it relates
to the <filename>Systems</filename> and <filename>Devices</filename> file.  </para><para>The text specifies the initial
conversation that must occur on a
line before the line can be made available
for transferring data. This conversation,
known as a chat script, is usually
a sequence of ASCII strings that is
transmitted and is expected. A chat
script is often used to dial a phone
number.</para><para>As shown in the examples in <olink targetptr="uucpov-30" remap="internal">UUCP /etc/uucp/Devices
File</olink>, the fifth field in a <filename>Devices</filename> file entry is an
index into the <filename>Dialers</filename> file
or a special dialer type, such as <literal>TCP</literal>, <literal>TLI</literal>,
or <literal>TLIS</literal>. The <command>uucico</command> daemon attempts to
match the fifth field in the <filename>Devices</filename> file with the first field
of each <filename>Dialers</filename> file
entry. In addition, each odd-numbered <filename>Devices</filename> field, starting
with the seventh position, is used
as an index into the <filename>Dialers</filename> file.
If the match succeeds, the <literal>Dialers</literal> entry is interpreted to
perform the dialer conversation.</para><para>Each entry in the <filename>Dialers</filename> file has the following
syntax: </para><screen>dialer   substitutions   expect-send</screen><para>The following example shows
the entry for a U.S. Robotics V.32bis
modem.</para><example width="100" id="uucpov-ex-51"><title>Entry in <filename>/etc/uucp/Dialers</filename> File</title><screen>usrv32bis-e    =,-,  ""    dA\pT&amp;FE1V1X1Q0S2=255S12=255&amp;A1&amp;H1&amp;M5&amp;B2&amp;W\r\c OK\r 
                           \EATDT\T\r\c CONNECT\s14400/ARQ STTY=crtscts</screen>
</example><variablelist termlength="wholeline"><varlistentry><term><literal>usrv32bis-e</literal></term><listitem><para>Entry in the Dialer
field. The Dialer field matches the
fifth and additional odd-numbered
fields in the <filename>Devices</filename> file. </para>
</listitem>
</varlistentry><varlistentry><term><literal>=,-,
 ""</literal></term><listitem><para>Entry in the Substitutions
field. The Substitutions field is
a translation string. The first of
each pair of characters is mapped
to the second character in the pair.
This mapping is usually used to translate <literal>=</literal> and <literal>-</literal> into
whatever the dialer requires for &ldquo;wait
for dial tone&rdquo; and &ldquo;pause.&rdquo;</para>
</listitem>
</varlistentry><varlistentry><term><literal>dA\pT&amp;FE1V1X1Q0S2=255S12=255&amp;A1&amp;H1&amp;M5&amp;B2&amp;W\r\c
OK\r</literal></term><listitem><para>Entry in Expect-Send
field. The Expect-Send fields are
character strings.</para>
</listitem>
</varlistentry><varlistentry><term><literal>\EATDT\T\r\c
CONNECT\s14400/ARQ STTY=crtscts</literal></term><listitem><para>More of the Expect-Send
field.</para>
</listitem>
</varlistentry>
</variablelist><para>The following example
shows sample entries in the <filename>Dialers</filename> file, as distributed when
you install UUCP as part of the Solaris
installation program.  </para><example width="100" id="uucpov-ex-52"><title>Excerpts From <filename>/etc/uucp/Dialers</filename></title><screen>penril	=W-P "" \d > Q\c : \d- > s\p9\c )-W\p\r\ds\p9\c-) y\c : \E\TP > 9\c OK 
 
ventel	=&amp;-%	"" \r\p\r\c $ &lt;K\T%%\r>\c ONLINE! 
 
vadic	=K-K	"" \005\p *-\005\p-*\005\p-* D\p BER? \E\T\e \r\c LINE 
 
develcon	""	"" \pr\ps\c est:\007 
 
\E\D\e \n\007 micom	""	"" \s\c NAME? \D\r\c GO 
 
hayes	=,-,	"" \dA\pTE1V1X1Q0S2=255S12=255\r\c OK\r \EATDT\T\r\c CONNECT 
 
#   Telebit TrailBlazer 
tb1200	=W-,	"" \dA\pA\pA\pTE1V1X1Q0S2=255S12=255S50=2\r\c OK\r 
\EATDT\T\r\c CONNECT\s1200   
tb2400	=W-,	"" \dA\pA\pA\pTE1V1X1Q0S2=255S12=255S50=3\r\c OK\r 
\EATDT\T\r\c CONNECT\s2400   
tbfast	=W-,	"" \dA\pA\pA\pTE1V1X1Q0S2=255S12=255S50=255\r\c OK\r 
\EATDT\T\r\c CONNECT\sFAST 
 
# USrobotics, Codes, and DSI modems 
 
dsi-ec  =,-,    "" \dA\pTE1V1X5Q0S2=255S12=255*E1*F3*M1*S1\r\c OK\r \EATDT\T\r\c 
CONNECT\sEC STTY=crtscts,crtsxoff 
 
dsi-nec =,-,    "" \dA\pTE1V1X5Q0S2=255S12=255*E0*F3*M1*S1\r\c OK\r \EATDT\T\r\c CONNECT 
STTY=crtscts,crtsxoff 
 
usrv32bis-ec =,-,  "" \dA\pT&amp;FE1V1X1Q0S2=255S12=255&amp;A1&amp;H1&amp;M5&amp;B2&amp;W\r\c OK\r \EATDT\T\r\c 
CONNECT\s14400/ARQ STTY=crtscts,crtsxoff 
 
usrv32-nec =,-, "" \dA\pT&amp;FE1V1X1Q0S2=255S12=255&amp;A0&amp;H1&amp;M0&amp;B0&amp;W\r\c OK\r \EATDT\T\r\c 
CONNECT STTY=crtscts,crtsxoff 
 
codex-fast =,-, "" \dA\pT&amp;C1&amp;D2*MF0*AA1&amp;R1&amp;S1*DE15*FL3S2=255S7=40S10=40*TT5&amp;W\r\c OK\r 
\EATDT\T\r\c CONNECT\s38400 STTY=crtscts,crtsxoff 
 
tb9600-ec =W-,  "" \dA\pA\pA\pTE1V1X1Q0S2=255S12=255S50=6\r\c OK\r 
\EATDT\T\r\cCONNECT\s9600 STTY=crtscts,crtsxoff 
 
tb9600-nec =W-, "" \dA\pA\pA\pTE1V1X1Q0S2=255S12=255S50=6S180=0\r\c OK\r \EATDT\T\r\c 
CONNECT\s9600 STTY=crtscts,crtsxoff</screen>
</example><para>The following table lists
escape characters that are commonly
used in the send strings in the <filename>Dialers</filename> file.    </para><table frame="topbot" id="uucpov-tbl-53"><title>Backslash Characters for <filename>/etc/uucp/Dialers</filename></title><tgroup cols="2" colsep="0" rowsep="0"><colspec colname="column1" colwidth="104*"/><colspec colname="column2" colwidth="292*"/><thead><row rowsep="1"><entry><para>Character</para>
</entry><entry><para>Description</para>
</entry>
</row>
</thead><tbody><row><entry><para><literal>\b</literal>  </para>
</entry><entry><para>Sends or expects a backspace
character.</para>
</entry>
</row><row><entry><para><literal>\c</literal> 
 </para>
</entry><entry><para>No newline or carriage return.</para>
</entry>
</row><row><entry><para><literal>\d</literal></para>
</entry><entry><para>Delays for approximately 2 seconds.</para>
</entry>
</row><row><entry><para><literal>\D</literal> </para>
</entry><entry><para>Phone number or token without <filename>Dialcodes</filename> translation.</para>
</entry>
</row><row><entry><para><literal>\e</literal> </para>
</entry><entry><para>Disables echo checking.</para>
</entry>
</row><row><entry><para><literal>\E</literal> 
 </para>
</entry><entry><para>Enables echo checking for slow
devices.</para>
</entry>
</row><row><entry><para><literal>\K</literal>  </para>
</entry><entry><para>Inserts a Break character. </para>
</entry>
</row><row><entry><para><literal>\n</literal></para>
</entry><entry><para>Sends newline.</para>
</entry>
</row><row><entry><para><literal>\nnn</literal> </para>
</entry><entry><para>Sends octal number. Additional
escape characters that can be used
are listed in the section <olink targetptr="uucpov-13" remap="internal">UUCP /etc/uucp/Systems
File</olink>.</para>
</entry>
</row><row><entry><para><literal>\N</literal></para>
</entry><entry><para>Sends or expects a NULL character
(ASCII NUL).</para>
</entry>
</row><row><entry><para><literal>\p</literal></para>
</entry><entry><para>Pauses for approximately 12&ndash;14
seconds.</para>
</entry>
</row><row><entry><para><literal>\r</literal>  </para>
</entry><entry><para>Returns. </para>
</entry>
</row><row><entry><para><literal>\s</literal>  </para>
</entry><entry><para>Sends or expects a space character.</para>
</entry>
</row><row><entry><para><literal>\T</literal></para>
</entry><entry><para>Phone number or token with <filename>Dialcodes</filename> translation.</para>
</entry>
</row>
</tbody>
</tgroup>
</table><para>Here is a <literal>penril</literal> entry
in the <filename>Dialers</filename> file:
 </para><screen>penril =W-P "" \d > Q\c : \d- > s\p9\c )-W\p\r\ds\p9\c-) y\c : \E\TP > 9\c OK </screen><para>First, the substitution mechanism
for the phone number argument is established
so that any <literal>=</literal> is
replaced with a <literal>W</literal> (wait
for dial tone) and any <literal>-</literal> with
a <literal>P</literal> (pause). </para><itemizedlist><para>The handshake that is given
by the remainder of the line works
as listed:</para><listitem><para><literal>""</literal>  &ndash;
 Waits for nothing, which means proceed
to the next step.</para>
</listitem><listitem><para><literal>\d</literal> &ndash;
Delays 2 seconds, then sends a carriage
return. </para>
</listitem><listitem><para><literal>></literal> &ndash;
Waits for a <literal>></literal>.</para>
</listitem><listitem><para><literal>Q\c</literal>  &ndash;
Sends a <literal>Q</literal> without
a carriage return.</para>
</listitem><listitem><para><literal>:</literal> 
     &ndash; Expects a <literal>:</literal>.</para>
</listitem><listitem><para><literal>\d-</literal>  &ndash;
Delays 2 seconds, sends a <literal>-</literal> and
a carriage return.</para>
</listitem><listitem><para><literal>></literal>  &ndash;
 Waits for a <literal>></literal>.</para>
</listitem><listitem><para><literal>s\p9\c</literal> &ndash;
Sends an <literal>s</literal>, pauses,
sends a <literal>9</literal> with
no carriage return. </para>
</listitem><listitem><para><literal>)-W\p\r\ds\p9\c-)</literal> &ndash; Waits for a <literal>)</literal>. If <literal>)</literal> is
not received, processes the string
between the <literal>-</literal> characters
as follows. Sends a <literal>W</literal>,
pauses, sends a carriage return, delays,
sends an <literal>s</literal>, pauses,
sends a <literal>9</literal> without
a carriage return, then waits for
the <literal>)</literal>.</para>
</listitem><listitem><para><literal>y\c</literal> &ndash;
Sends a <literal>y</literal> with
no carriage return.</para>
</listitem><listitem><para><literal>:</literal> &ndash;
Waits for a <literal>:</literal>.</para>
</listitem><listitem><para><literal>\E\TP</literal> &ndash; <literal>\E</literal> enables echo checking.
From this point forward, whenever
a character is transmitted, UUCP waits
for the character to be received before
proceeding. Then, UUCP sends the phone
number. The <literal>\T</literal> means
to take the phone number that is passed
as an argument. The <literal>\T</literal> applies
the <filename>Dialcodes</filename> translation
and the modem function translation
that is specified by field 2 of this
entry. Then <literal>\T</literal> sends
a <literal>P</literal> and a carriage
return. </para>
</listitem><listitem><para><literal>></literal> &ndash;
Waits for a <literal>></literal>.</para>
</listitem><listitem><para><literal>9\c</literal> &ndash;
Sends a <literal>9</literal> without
a newline.</para>
</listitem><listitem><para><literal>OK</literal> &ndash;
Waits for the string <literal>OK</literal>.</para>
</listitem>
</itemizedlist><sect2 id="uucpov-54"><title>Enabling
Hardware Flow Control in the <filename>/etc/uucp/Dialers</filename> File</title><para>You can also use the pseudo-send <literal>STTY=</literal><emphasis>value</emphasis> string
to set modem characteristics. For
instance, <literal>STTY=crtscts</literal> enables
outbound hardware flow control. <literal>STTY=crtsxoff</literal> enables inbound
hardware flow control. <literal>STTY=crtscts,crtsxoff</literal> enables both outbound and
inbound hardware flow control.    </para><para><command>STTY</command> accepts
all the <command>stty</command> modes.
See the <olink targetdoc="refman1" targetptr="stty-1" remap="external"><citerefentry><refentrytitle>stty</refentrytitle><manvolnum>1</manvolnum></citerefentry></olink> and <olink targetdoc="refman7" targetptr="termio-7i" remap="external"><citerefentry><refentrytitle>termio</refentrytitle><manvolnum>7I</manvolnum></citerefentry></olink> man
pages.</para><para>The following example would
enable hardware flow control in a <filename>Dialers</filename> entry:</para><screen>dsi =,&ndash;, "" \dA\pTE1V1X5Q0S2=255S12=255*E1*F3*M1*S1\r\c OK\r \EATDT\T\r\c 
CONNECT\sEC STTY=crtscts </screen><para>This pseudo-send string
can also be used in entries in the <filename>Systems</filename> file.      </para>
</sect2><sect2 id="uucpov-55"><title>Setting
Parity in the <filename>/etc/uucp/Dialers</filename> File</title><para>In some situations, you
have to reset the parity because the
system that you are calling checks
port parity and drops the line if
it is wrong. The expect-send couplet <literal>P_ZERO</literal> sets parity to zero:
 </para><screen>foo =,-, <userinput>"" P_ZERO</userinput> "" \dA\pTE1V1X1Q0S2=255S12=255\r\c OK\r\EATDT\T\r\c CONNECT </screen><para>The following are parity couplets
that can follow the expect-send couplet:</para><variablelist><varlistentry><term><literal>"" P_EVEN</literal></term><listitem><para>Sets the parity to
even, which is the default</para>
</listitem>
</varlistentry><varlistentry><term><literal>"" P_ODD</literal></term><listitem><para>Sets the parity to
odd</para>
</listitem>
</varlistentry><varlistentry><term><literal>"" P_ONE</literal></term><listitem><para>Sets the parity to
one</para>
</listitem>
</varlistentry>
</variablelist><para>This pseudo-send string can
also be used in entries in the <filename>Systems</filename> file.  </para>
</sect2>
</sect1><sect1 id="uucpov-56"><title>Other
Basic UUCP Configuration Files</title><para>You can use files in this section
in addition to the <filename>Systems</filename>, <filename>Devices</filename>, and <filename>Dialers</filename> file when doing basic
UUCP configuration. </para><sect2 id="uucpov-57"><title>UUCP <filename>/etc/uucp/Dialcodes</filename> File</title><para>The <filename>/etc/uucp/Dialcodes</filename> file enables you to define
dial-code abbreviations that can be
used in the Phone field in the <filename>/etc/uucp/Systems</filename> file.
You can use the <filename>Dialcodes</filename> file
to provide additional information
about a basic phone number that is
used by several systems at the same
site.  </para><para>Each entry has the following
syntax:</para><screen>Abbreviation   Dial-Sequence</screen><variablelist><varlistentry><term><literal>Abbreviation</literal></term><listitem><para>This field provides
the abbreviation that is used in the
Phone field of the <filename>Systems</filename> file.</para>
</listitem>
</varlistentry><varlistentry><term><literal>Dial-Sequence</literal></term><listitem><para>This field provides
the dial sequence that is passed to
the dialer when that particular <filename>Systems</filename> file entry is accessed.</para>
</listitem>
</varlistentry>
</variablelist><para>Compare the fields in the two
files. The following are the fields
in the <filename>Dialcodes</filename> file.</para><screen><userinput>Abbreviation</userinput>   Dial-Sequence</screen><para>The following are the fields
in the <filename>Systems</filename> file.</para><screen>System-Name   Time   Type   Speed   <userinput>Phone</userinput>   Chat Script</screen><para>The following table contains
sample content for the fields in a <filename>Dialcodes</filename> file.  </para><table frame="topbot" id="uucpov-tbl-59"><title>Entries in the <filename>Dialcode</filename>s
File</title><tgroup cols="2" colsep="0" rowsep="1"><colspec colname="column1" colwidth="198*"/><colspec colname="column2" colwidth="198*"/><thead><row><entry><para>Abbreviation</para>
</entry><entry><para>Dial-Sequence</para>
</entry>
</row>
</thead><tbody><row rowsep="0"><entry><para><literal>NY</literal></para>
</entry><entry><para><literal>1=212</literal></para>
</entry>
</row><row><entry><para><literal>jt</literal></para>
</entry><entry><para><literal>9+847</literal></para>
</entry>
</row>
</tbody>
</tgroup>
</table><para>In the first row, NY is the
abbreviation to appear in the Phone
field of the <filename>Systems</filename> file.
For example, the <filename>Systems</filename> file
might have the following entry:</para><para><literal>NY5551212</literal></para><para>When <command>uucico</command> reads <literal>NY</literal> in the <filename>Systems</filename> file, <command>uucico</command> searches the <filename>Dialcodes</filename> file for <literal>NY</literal> and
obtains the dialing sequence <literal>1=212</literal>. <literal>1=212</literal> is
the dialing sequence that is needed
for any phone call to New York City.
This sequence includes the number <literal>1</literal>, an &ldquo;equal sign&rdquo;
(<literal>=</literal>) meaning pause
and wait for a secondary dial tone,
and the area code <literal>212</literal>. <command>uucico</command> sends this information
to the dialer, then returns to the <filename>Systems</filename> file for the remainder
of the phone number, <literal>5551212</literal>. </para><para>The entry <literal>jt 9=847-</literal> would
work with a Phone field such as <literal>jt7867</literal> in the <filename>Systems</filename> file. When <command>uucico</command> reads
the entry that contains <literal>jt7867</literal> in
the <filename>Systems</filename> file, <command>uucico</command> sends the sequence <literal>9=847-7867</literal> to the dialer,
if the token in the dialer-token pair
is <literal>\T</literal>. </para>
</sect2><sect2 id="uucpov-60"><title>UUCP <filename>/etc/uucp/Sysfiles</filename> File</title><itemizedlist><para>The <filename>/etc/uucp/Sysfiles</filename> file lets you assign different
files to be used by <command>uucp</command> and <command>cu</command> as <filename>Systems</filename>, <filename>Devices</filename>, and <filename>Dialers</filename> files. For more information
about <command>cu</command>, see the <olink targetdoc="refman1" targetptr="cu-1c" remap="external"><citerefentry><refentrytitle>cu</refentrytitle><manvolnum>1C</manvolnum></citerefentry></olink> man
page. You can use <filename>Sysfiles</filename> for
the following:          </para><listitem><para>Different <filename>Systems</filename> files so that requests
for login services can be made to
different addresses than <command>uucp</command> services. </para>
</listitem><listitem><para>Different <filename>Dialers</filename> files so that you can
assign different handshaking for <command>cu</command> and <command>uucp</command>. </para>
</listitem><listitem><para>Multiple <filename>Systems</filename>, <filename>Dialers</filename>,
and <filename>Devices</filename> files.
The <filename>Systems</filename> file
in particular can become large, making
the file more convenient to split
into several smaller files. </para>
</listitem>
</itemizedlist><para>The syntax of the <filename>Sysfiles</filename> file is as follows:  </para><screen>service=<replaceable>w</replaceable> systems=<replaceable>x:x</replaceable> dialers=<replaceable>y:y</replaceable> devices=<replaceable>z:z</replaceable> </screen><variablelist><varlistentry><term><replaceable>w</replaceable></term><listitem><para>Represents <command>uucico</command>, <command>cu</command>,
or both commands separated by a colon</para>
</listitem>
</varlistentry><varlistentry><term><replaceable>x</replaceable></term><listitem><para>Represents one or
more files to be used as the <filename>Systems</filename> file, with each file name
separated by a colon and read in the
order that it is presented</para>
</listitem>
</varlistentry><varlistentry><term><replaceable>y</replaceable></term><listitem><para>Represents one or
more files to be used as the <filename>Dialers</filename> file</para>
</listitem>
</varlistentry><varlistentry><term><replaceable>z</replaceable></term><listitem><para>Represents one or
more files to be used as the <filename>Devices</filename> file</para>
</listitem>
</varlistentry>
</variablelist><para>Each file name is assumed to
be relative to the <filename>/etc/uucp</filename> directory
unless a full path is given. </para><para>The following sample, <filename>/etc/uucp/Sysfiles</filename>, defines
a local <filename>Systems</filename> file
(<filename>Local_Systems</filename>)
in addition to the standard <filename>/etc/uucp/Systems</filename> file:  </para><screen>service=uucico:cu systems=Systems :Local_Systems </screen><para>When this entry is in <filename>/etc/uucp/Sysfiles</filename>, both <command>uucico</command> and <command>cu</command> first check in the standard <filename>/etc/uucp/Systems</filename>. If the
system being called does not have
an entry in that file, or if the entries
in the file fail, then both commands
check <filename>/etc/uucp/Local_Systems</filename>. </para><para>As specified in the previous
entry, <command>cu</command> and <command>uucico</command> share the <filename>Dialers</filename> and <filename>Devices</filename> files. </para><para>When different <filename>Systems</filename> files are defined for <command>uucico</command> and <command>cu</command> services,
your machine stores two different
lists of <filename>Systems</filename>.
You can print the <command>uucico</command> list
by using the <command>uuname</command> command
or the <command>cu</command> list
by using the <command>uuname</command> <option>C</option> command. The following
is another example of the file, which
shows that the alternate files are
consulted first and the default files
are consulted if necessary:    </para><screen>service=uucico systems=Systems.cico:Systems   
  dialers=Dialers.cico:Dialers \ 
devices=Devices.cico:Devices   
  service=cu systems=Systems.cu:Systems \ 
dialers=Dialers.cu:Dialers \   
  devices=Devices.cu:Devices</screen>
</sect2><sect2 id="uucpov-61"><title>UUCP <filename>/etc/uucp/Sysname</filename> File</title><para>Every machine that uses
UUCP must have an identifying name,
often referred to as the <emphasis>node
name</emphasis>. The node name appears
in the remote machine's <filename>/etc/uucp/Systems</filename> file, along with the chat
script and other identifying information.
Normally, UUCP uses the same node
name as is returned by the <command>uname
-n</command> command, which is also
used by TCP/IP.       </para><para>You can specify a UUCP node
name independent of the TCP/IP host
name by creating the <filename>/etc/uucp/Sysname</filename> file. The file has a one-line
entry that contains the UUCP node
name for your system.</para>
</sect2>
</sect1><sect1 id="uucpov-62"><title>UUCP <filename>/etc/uucp/Permissions</filename> File</title><para>The <filename>/etc/uucp/Permissions</filename> file specifies the permissions
that remote computers have for login,
file access, and command execution.
Some options restrict the remote computer's
ability to request files and its ability
to receive files that are queued by
the local machine. Another option
is available that specifies the commands
that a remote machine can execute
on the local computer. </para><sect2 id="uucpov-63"><title>UUCP
Structuring Entries</title><para>Each entry is a logical
line, with physical lines terminated
by a backslash (\) to indicate continuation.
Entries are composed of options that
are delimited by a blank space. Each
option is a name-value pair in the
following format:    </para><para><replaceable>name=value</replaceable> </para><para><replaceable>Values</replaceable> can
be colon-separated lists. No blank
space is allowed within an option
assignment. </para><para>Comment lines begin with a pound
sign (<literal>#</literal>) and occupy
the entire line up to a newline character.
Blank lines are ignored, even within
multiple-line entries. </para><itemizedlist><para>The types of <filename>Permissions</filename> file
entries are as follows: </para><listitem><para><literal>LOGNAME</literal> &ndash;
Specifies the permissions that become
effective when a remote computer logs
in to (calls) your computer.   </para><note><para>When a remote machine
calls you, its identity is questionable
unless the remote machine has a unique
login and verifiable password.</para>
</note>
</listitem><listitem><para><literal>MACHINE</literal> &ndash;
Specifies permissions that become
effective when your computer logs
in to (calls) a remote computer. 
 </para>
</listitem>
</itemizedlist><para><literal>LOGNAME</literal> entries
contain a <option role="nodash">LOGNAME</option> option.
 <literal>MACHINE</literal> entries
contain a <option role="nodash">MACHINE</option> option.
One entry can contain both options. </para>
</sect2><sect2 id="uucpov-64"><title>UUCP
Considerations</title><itemizedlist><para>When using the <filename>Permissions</filename> file to restrict the level
of access that is granted to remote
computers, you should consider the
following:  </para><listitem><para>All login IDs that are
used by remote computers to log in
for UUCP communications must appear
in one and only one <literal>LOGNAME</literal> entry.
  </para>
</listitem><listitem><para>Any site that is called
with a name that does not appear in
a <literal>MACHINE</literal> entry
has the following default permissions
or restrictions:   </para><itemizedlist><listitem><para>Local send-and-receive
requests are executed. </para>
</listitem><listitem><para>The remote computer
can send files to your computer's <filename>/var/spool/uucppublic</filename> directory. </para>
</listitem><listitem><para>The commands that are
sent by the remote computer for execution
on your computer must be one of the
default commands, usually <command>rmail</command>.
    </para>
</listitem>
</itemizedlist>
</listitem>
</itemizedlist>
</sect2><sect2 id="uucpov-65"><title>UUCP <option role="nodash">REQUEST</option> Option</title><para>When a remote computer
calls your computer and requests to
receive a file, this request can be
granted or be denied. The <option role="nodash">REQUEST</option> option
specifies whether the remote computer
can request to set up file transfers
from your computer. The string <literal>REQUEST=yes</literal> specifies that the remote
computer can request to transfer files
from your computer. The string <literal>REQUEST=no</literal> specifies that the remote
computer cannot request to receive
files from your computer. <literal>REQUEST=no</literal>, the default value, is
used if the <option role="nodash">REQUEST</option> option is not specified.
The <option role="nodash">REQUEST</option> option
can appear in either a <literal>LOGNAME</literal> entry,
so that the remote computer calls
you, or a <literal>MACHINE</literal> entry,
so that you call the remote computer.
      </para>
</sect2><sect2 id="uucpov-66"><title>UUCP <option role="nodash">SENDFILES</option> Option</title><para>When a remote computer
calls your computer and completes
its work, the remote computer can
attempt to retrieve the work that
your computer has queued for it. The <option role="nodash">SENDFILES</option> option
specifies whether your computer can
send the work that is queued for the
remote computer.    </para><para>The string <literal>SENDFILES=yes</literal> specifies that your computer
can send the work that is queued for
the remote computer if it is logged
in as one of the names in the <option role="nodash">LOGNAME</option> option.
This string is <emphasis>mandatory</emphasis> if
you have entered <literal>Never</literal> in
the Time field of <filename>/etc/uucp/Systems</filename>. This designation sets
up your local machine in passive mode,
but it is not allowed to initiate
a call to this particular remote computer.
See <olink targetptr="uucpov-13" remap="internal">UUCP
/etc/uucp/Systems File</olink> for
more information.      </para><para>The string <literal>SENDFILES=call</literal> specifies
that files that are queued in your
computer are sent only when your computer
calls the remote computer. The <literal>call</literal> value is the default for
the <option role="nodash">SENDFILES</option> option.
This option is only significant in <literal>LOGNAME</literal> entries because <literal>MACHINE</literal> entries apply when
calls are sent to remote computers.
If the option is used with a <literal>MACHINE</literal> entry, the option is ignored. </para>
</sect2><sect2 id="uucpov-67"><title>UUCP <option role="nodash">MYNAME</option> Option</title><para>This option enables you
to designate a unique UUCP node name
for your computer in addition to its
TCP/IP host name, as returned by the <command>hostname</command> command. For instance,
if you have unknowingly given your
host the same name as that of some
other system, you can set the <option role="nodash">MYNAME</option> option
of the <filename>Permissions</filename> file.
Suppose that you want your organization
to be known as <literal>widget</literal>.
If all your modems are connected to
a machine with the host name <literal>gadget</literal>, you can have an entry
in <literal>gadget</literal>'s <filename>Permissions</filename> file that reads
as follows:        </para><screen>service=uucico systems=Systems.cico:Systems   
  dialers=Dialers.cico:Dialers \ 
  devices=Devices.cico:Devices   
service=cu systems=Systems.cu:Systems \ 
  dialers=Dialers.cu:Dialers \   
  devices=Devices.cu:Devices</screen><para>Now, the system <literal>world</literal> can
log in to the machine <literal>gadget</literal> as
if it were logging in to <literal>widget</literal>.
In order for machine <literal>world</literal> to
know you also by the aliased name <literal>widget</literal> when you call it,
you can have an entry that reads as
follows:</para><screen>MACHINE=world MYNAME=widget</screen><para>You can also use the <option role="nodash">MYNAME</option> option
for testing purposes, as this option
allows your machine to call itself.
However, because this option could
be used to mask the real identity
of a machine, you should use the <option role="nodash">VALIDATE</option> option,
as described in <olink targetptr="uucpov-72" remap="internal">UUCP VALIDATE
Option</olink>. </para>
</sect2><sect2 id="uucpov-68"><title>UUCP <option role="nodash">READ</option> and <option role="nodash">WRITE</option> Options</title><para>These options specify
the various parts of the file system
that <command>uucico</command> can
read from or write to. You can designate <option role="nodash">READ</option> and <option role="nodash">WRITE</option> options
with either <literal>MACHINE</literal> or <literal>LOGNAME</literal> entries.      </para><para>The default for both the <option role="nodash">READ</option> and <option role="nodash">WRITE</option> options
is the <filename>uucppublic</filename> directory,
as shown in the following strings: </para><screen>READ=/var/spool/uucppublic WRITE=/var/spool/uucppublic </screen><para>The strings <literal>READ=/</literal> and <literal>WRITE=/</literal> specify permission
to access any file that can be accessed
by a local user with Other permissions. </para><para>The value of these entries is
a colon-separated list of path names.
The <option role="nodash">READ</option> option
is for requesting files, and the <option role="nodash">WRITE</option> option
is for depositing files. One of the
values must be the prefix of any full
path name of a file entering or exiting.
To grant permission to deposit files
in <filename>/usr/news</filename> as
well as in the public directory, use
the following values with the <option role="nodash">WRITE</option> option: </para><screen>WRITE=/var/spool/uucppublic:/usr/news </screen><para>If the <option role="nodash">READ</option> and <option role="nodash">WRITE</option> options
are used, all path names must be specified
because the path names are not added
to the default list. For instance,
if the <filename>/usr/news</filename> path
name were the only path specified
in a <option role="nodash">WRITE</option> option,
permission to deposit files in the
public directory would be denied. </para><para>Be careful which directories
you make accessible for reading and
writing by remote systems. For example,
the <filename>/etc</filename> directory
contains many critical system files.
Remote users should not have permission
to deposit files in this directory.
   </para>
</sect2><sect2 id="uucpov-69"><title>UUCP <option role="nodash">NOREAD</option> and <option role="nodash">NOWRITE</option> Options</title><para>The <option role="nodash">NOREAD</option> and <option role="nodash">NOWRITE</option> options specify exceptions
to the <option role="nodash">READ</option> and <option role="nodash">WRITE</option> options
or defaults. The following entry permits
reading any file except those files
in the <filename>/etc</filename> directory
(and its subdirectories) Remember,
these options are prefixes.      
 </para><screen>READ=/ NOREAD=/etc WRITE=/var/spool/uucppublic </screen><para>This entry permits writing
only to the default <filename>/var/spool/uucppublic</filename> directory. <option role="nodash">NOWRITE</option> works
in the same manner as the <option role="nodash">NOREAD</option> option.
You can use the <option role="nodash">NOREAD</option> and <option role="nodash">NOWRITE</option> options in both <literal>LOGNAME</literal> and <literal>MACHINE</literal> entries.
   </para>
</sect2><sect2 id="uucpov-70"><title>UUCP <option role="nodash">CALLBACK</option> Option</title><itemizedlist><para>You can use the <option role="nodash">CALLBACK</option> option
in <literal>LOGNAME</literal> entries
to specify that no transaction occurs
until the calling system is called
back. The reasons to set up <option role="nodash">CALLBACK</option> are
as follows:        </para><listitem><para>For security purposes &ndash;
If you call back a machine, you can
be sure it is the right machine.</para>
</listitem><listitem><para>For accounting purposes &ndash;
If you are doing long data transmissions,
you can choose the machine that is
billed for the longer call. </para>
</listitem>
</itemizedlist><para>The string <literal>CALLBACK=yes</literal> specifies
that your computer must call back
the remote computer before any file
transfers can occur. </para><para>The default for the <option role="nodash">CALLBACK</option> option
is <literal>CALLBACK=no</literal>.
If you set <literal>CALLBACK</literal> to <literal>yes</literal>, the permissions that
affect the rest of the conversation
must be specified in the <literal>MACHINE</literal> entry that corresponds
to the caller. Do not specify these
permissions in the <literal>LOGNAME</literal>,
or in the <literal>LOGNAME</literal> entry
that the remote machine might have
set for your host. </para><note><para>If two sites have the <option role="nodash">CALLBACK</option> option
set for each other, a conversation
never is started. </para>
</note>
</sect2><sect2 id="uucpov-71"><title>UUCP <option role="nodash">COMMANDS</option> Option</title><caution><para>The <option role="nodash">COMMANDS</option> option can compromise the
security of your system. Use this
option with extreme care.        
   </para>
</caution><para>You can use the <option role="nodash">COMMANDS</option> option
in <literal>MACHINE</literal> entries
to specify the commands that a remote
computer can execute on your machine.
The <command>uux</command> program
generates remote execution requests
and queues the requests to be transferred
to the remote computer. Files and
commands are sent to the target computer
for remote execution, which is an
exception to the rule that <literal>MACHINE</literal> entries apply only when
your system calls out. </para><para>Note that <option role="nodash">COMMANDS</option> is not used in a <literal>LOGNAME</literal> entry. <option role="nodash">COMMANDS</option> in <literal>MACHINE</literal> entries
defines command permissions, whether
you call the remote system or the
remote system calls you. </para><para>The string <literal>COMMANDS=rmail</literal> specifies
the default commands that a remote
computer can execute on your computer.
If a command string is used in a <literal>MACHINE</literal> entry, the default
commands are overridden. For instance,
the following entry overrides the
COMMAND default so that the computers
that are named <literal>owl</literal>, <literal>raven</literal>, <literal>hawk</literal>,
and <literal>dove</literal> can now
execute <command>rmail</command>, <command>rnews</command>, and <command>lp</command> on
your computer. </para><screen>MACHINE=owl:raven:hawk:dove COMMANDS=rmail:rnews:lp </screen><para>In addition to the names as
just specified,you can have full path
names of commands. For example, the
following entry specifies that command <command>rmail</command> uses the default search
path.</para><screen>COMMANDS=rmail:/usr/local/rnews:/usr/local/lp </screen><para>The default search path for
UUCP is <filename>/bin</filename> and <filename>/usr/bin</filename>. When the remote
computer specifies <command>rnews</command> or <command>/usr/local/rnews</command> for the
command to be executed, <command>/usr/local/rnews</command> is executed regardless
of the default path. Likewise, <command>/usr/local/lp</command> is the <command>lp</command> command
that is executed. </para><para>Including the <literal>ALL</literal> value
in the list means that any command
from the remote computers that are
specified in the entry is executed.
If you use this value, you give the
remote computers full access to your
machine.</para><caution><para>This value allows far
more access than normal users have.
You should use this value only when
both machines are at the same site,
are closely connected, and the users
are trusted. </para>
</caution><para>Here is the string with the <literal>ALL</literal> value added:</para><screen>COMMANDS=/usr/local/rnews:ALL:/usr/local/lp </screen><itemizedlist><para>This string illustrates two
points:</para><listitem><para>The <literal>ALL</literal> value
can appear anywhere in the string. </para>
</listitem><listitem><para>The path names that
are specified for <command>rnews</command> and <command>lp</command> are used (instead of
the default) if the requested command
does not contain the full path names
for <command>rnews</command> or <command>lp</command>.</para>
</listitem>
</itemizedlist><para>You should use the <option role="nodash">VALIDATE</option> option
whenever you specify potentially dangerous
commands, such as <command>cat</command> and <command>uucp</command> with the <option role="nodash">COMMANDS</option> option.
Any command that reads or writes files
is potentially dangerous to local
security when the command is executed
by the UUCP remote execution daemon
(<command>uuxqt</command>).       </para>
</sect2><sect2 id="uucpov-72"><title>UUCP <option role="nodash">VALIDATE</option> Option</title><para>Use the <option role="nodash">VALIDATE</option> option in conjunction
with the <option role="nodash">COMMANDS</option> option
whenever you specify commands that
are potentially dangerous to your
machine's security. <option role="nodash">VALIDATE</option> is merely an added
level of security on top of the <option role="nodash">COMMANDS</option> option,
though it is a more secure way to
open command access than <literal>ALL</literal>.
      </para><para><option role="nodash">VALIDATE</option> provides
a certain degree of verification of
the caller's identity by cross-checking
the host name of a calling machine
against the login name it uses. The
following string ensures that if any
machine other than <literal>widget</literal> or <literal>gadget</literal> tries to log in as <literal>Uwidget</literal>, the connection
is refused.</para><screen>LOGNAME=Uwidget VALIDATE=widget:gadget </screen><para>The <option role="nodash">VALIDATE</option> option
requires privileged computers to have
a unique login and password for UUCP
transactions. An important aspect
of this validation is that the login
and password that are associated with
this entry are protected. If an outsider
obtains that information, that particular <option role="nodash">VALIDATE</option> option
can no longer be considered secure. </para><para>Carefully consider which
remote computers you are granting
privileged logins and passwords for
UUCP transactions. Giving a remote
computer a special login and password
with file access and remote execution
capability is like giving anyone on
that computer a normal login and password
on your computer. Therefore, if you
cannot trust someone on the remote
computer, do not provide that computer
with a privileged login and password.
   </para><para>The following <literal>LOGNAME</literal> entry
specifies that if one of the remote
computers that claims to be <literal>eagle</literal>, <literal>owl</literal>,
or <literal>hawk</literal> logs in
on your computer, it must have used
the login <command>uucpfriend</command>:</para><screen>LOGNAME=uucpfriend VALIDATE=eagle:owl:hawk </screen><para>If an outsider obtains the <command>uucpfriend</command> login and password,
masquerading is easy. </para><para>But what does this entry
have to do with the <option role="nodash">COMMANDS</option> option, which appears
only in <literal>MACHINE</literal> entries?
This entry links the <literal>MACHINE</literal> entry
(and <option role="nodash">COMMANDS</option> option)
with a <literal>LOGNAME</literal> entry
that is associated with a privileged
login. This link is needed because
the execution daemon is not running
while the remote computer is logged
in. Actually, the link is an asynchronous
process that does not know which computer
sent the execution request. Therefore,
the real question is: How does your
computer know where the execution
files came from?    </para><para>Each remote computer has its
own spool directory on your local
machine. These spool directories have
write permission that is given only
to the UUCP programs. The execution
files from the remote computer are
put in its spool directory after being
transferred to your computer. When
the <command>uuxqt</command> daemon
runs, it can use the spool directory
name to find the <literal>MACHINE</literal> entry
in the <filename>Permissions</filename> file
and get the <literal>COMMANDS</literal> list.
Or, if the computer name does not
appear in the <filename>Permissions</filename> file,
the default list is used. </para><para>This example shows the relationship
between the <literal>MACHINE</literal> and <literal>LOGNAME</literal> entries: </para><screen>MACHINE=eagle:owl:hawk REQUEST=yes \ 
COMMANDS=rmail:/usr/local/rnews \ 
READ=/ WRITE=/ 
LOGNAME=uucpz VALIDATE=eagle:owl:hawk \ 
REQUEST=yes SENDFILES=yes \ 
READ=/ WRITE=/ </screen><para>The value in the <option role="nodash">COMMANDS</option> option
means that remote users can execute <command>rmail</command> and <command>/usr/local/rnews</command>. </para><para>In the first entry, you
must assume that when you want to
call one of the computers that is
listed, you are really calling either <literal>eagle</literal>, <literal>owl</literal>,
or <literal>hawk</literal>. Therefore,
any files that are put into one of
the <literal>eagle</literal>, <literal>owl</literal>, or <literal>hawk</literal> spool
directories is put there by one of
those computers. If a remote computer
logs in and says that it is one of
these three computers, its execution
files are also put in the privileged
spool directory. You therefore have
to validate that the computer has
the privileged login <command>uucpz</command>.
           </para>
</sect2><sect2 id="uucpov-73"><title>UUCP <literal>MACHINE</literal> Entry for <literal>OTHER</literal></title><para>You might want to specify
different option values for remote
machines that are not mentioned in
specific <literal>MACHINE</literal> entries.
The need might arise when many computers
are calling your host, and the command
set changes from time to time. The
name <literal>OTHER</literal> for
the computer name is used for this
entry as shown in this example:  
   </para><screen>MACHINE=OTHER \ 
COMMANDS=rmail:rnews:/usr/local/Photo:/usr/local/xp </screen><para>All other options that are available
for the <literal>MACHINE</literal> entry
can also be set for the computers
that are not mentioned in other <literal>MACHINE</literal> entries. </para>
</sect2><sect2 id="uucpov-74"><title>Combining <literal>MACHINE</literal> and <literal>LOGNAME</literal> Entries
for UUCP</title><para>You can combine <literal>MACHINE</literal> and <literal>LOGNAME</literal> entries
into a single entry when the common
options are the same. For example,
the two sets of entries that follow
share the same <option role="nodash">REQUEST</option>, <option role="nodash">READ</option>,
and <option role="nodash">WRITE</option> options:</para><screen>MACHINE=eagle:owl:hawk REQUEST=yes \ 
READ=/ WRITE=/</screen><para>and</para><screen>LOGNAME=uupz REQUEST=yes SENDFILES=yes \ 
READ=/ WRITE=/</screen><para>You can merge these entries,
as shown:</para><screen>MACHINE=eagle:owl:hawk REQUEST=yes \ 
logname=uucpz SENDFILES-yes \ 
READ=/ WRITE=/</screen><para>Combining <literal>MACHINE</literal> and <literal>LOGNAME</literal> entries makes the <filename>Permissions</filename> file more manageable
and efficient.</para>
</sect2><sect2 id="uucpov-75"><title>UUCP
Forwarding</title><para>When sending files through
a series of machines, the intermediary
machines must have the command <command>uucp</command> among their <option role="nodash">COMMANDS</option> options.
If you type the following command,
the forwarding operation works only
if machine <literal>willow</literal> permits
machine <literal>oak</literal> to
execute the <command>uucp</command> program.
        </para><screen>% <userinput>uucp sample.txt oak\!willow\!pine\!/usr/spool/uucppublic</userinput></screen><para>The machine <literal>oak</literal> also
must permit your machine to execute
the  <command>uucp</command> program.
The machine <literal>pine</literal>,
as the last machine designated, does
not have to permit the <command>uucp</command> command
because the machine is not doing any
forwarding operations. Machines are
not normally set up this way. </para>
</sect2>
</sect1><sect1 id="uucpov-76"><title>UUCP <filename>/etc/uucp/Poll</filename> File</title><para>The <filename>/etc/uucp/Poll</filename> file
contains information for polling remote
computers. Each entry in the <filename>Poll</filename> file contains the name
of a remote computer to call, followed
by a tab character or a space, and
finally the hours the computer should
be called. The format of entries in
the <filename>Poll</filename> file
are as follows:</para><para><replaceable>sys-name hour ...</replaceable> </para><para>For example, the entry <userinput>eagle
0 4 8 12 16 20</userinput> provides
polling of computer <literal>eagle</literal> every
four hours.</para><para>The <filename>uudemon.poll</filename> script
processes the <filename>Poll</filename> file
but does not actually perform the
poll. The script merely sets up a
polling work file (always named <filename>C</filename>.<replaceable>file</replaceable>)
in the spool directory. The <filename>uudemon.poll</filename> script starts the scheduler,
and the scheduler examines all work
files in the spool directory.  </para>
</sect1><sect1 id="uucpov-77"><title>UUCP <filename>/etc/uucp/Config</filename> File</title><para>The <filename>/etc/uucp/Config</filename> file enables you to override
certain parameters manually. Each
entry in the <filename>Config</filename> file
has this format: </para><para><emphasis>parameter=value</emphasis></para><para>See the <filename>Config</filename> file
that is provided with your system
for a complete list of configurable
parameter names. </para><para>The following <literal>Config</literal> entry
sets the default protocol ordering
to <literal>Gge</literal> and changes
the <literal>G</literal> protocol
defaults to 7 windows and 512-byte
packets.</para><screen>Protocol=G(7,512)ge</screen>
</sect1><sect1 id="uucpov-78"><title>UUCP<filename>/etc/uucp/Grades</filename> File</title><para>The <filename>/etc/uucp/Grades</filename> file contains the definitions
for the job grades that can be used
to queue jobs to a remote computer.
This file also contains the permissions
for each job grade. Each entry in
this file represents a definition
of an administrator-defined job grade
that lets users queue jobs.     </para><para>Each entry in the <filename>Grades</filename> file
has the following format:</para><para><replaceable>User-job-grade
System-job-grade Job-size Permit-type
ID-list</replaceable></para><para>Each entry contains fields that
are separated by a blank space. The
last field in the entry is composed
of subfields that are also separated
by spaces. If an entry occupies more
than one physical line, you can use
a backslash to continue the entry
onto the following line. Comment lines
begin with a pound sign (<literal>#</literal>)
and occupy the entire line. Blank
lines are always ignored. </para><sect2 id="uucpov-79"><title>UUCP
User-job-grade Field</title><para>This field contains an
administrator-defined user-job-grade
name of up to 64 characters.   </para>
</sect2><sect2 id="uucpov-80"><title>UUCP
System-job-grade Field</title><para>This field contains a
single-character job grade to which <replaceable>User-job-grade</replaceable> is mapped.
The valid list of characters is A&ndash;Z,
a&ndash;z, with A having the highest
priority and z the lowest.   </para><sect3 id="uucpov-81"><title>Relationship
Between User and System Job Grades</title><para>The user job grade can
be bound to more than one system job
grade. Note that the <filename>Grades</filename> file
is searched sequentially for occurrences
of a user job grade. Therefore, any
multiple occurrences of a system job
grade should be listed in compliance
with the restriction on the maximum
job size.   </para><para>While no maximum number exists
for the user job grades, the maximum
number of system job grades that are
allowed is 52. The reason is that
more than one <replaceable>User-job-grade</replaceable> can be mapped to a <replaceable>System-job-grade</replaceable>, but
each <replaceable>User-job-grade</replaceable> must
be on a separate line in the file.
Here is an example:</para><screen>mail N Any User Any netnews N Any User Any </screen><para>If this configuration is in
a <filename>Grades</filename> file,
these two <replaceable>User-job-grade</replaceable> fields
share the same <replaceable>System-job-grade</replaceable>. Because the permissions
for a <replaceable>Job-grade</replaceable> are
associated with a <replaceable>User-job-grade</replaceable> and not a <replaceable>System-job-grade</replaceable>, two <replaceable>User-job-grade</replaceable>s can share the same <replaceable>System-job-grade</replaceable>s and
have two different sets of permissions.</para>
</sect3><sect3 id="egkbf"><title>Default Grade</title><para>You can define the binding
of a default <replaceable>User-job-grade</replaceable> to
a system job grade. You must use the
keyword default as the user job grade
in the <replaceable>User-job-grade</replaceable> field
of the <filename>Grades</filename> file
and the system job grade that it is
bound to. The Restrictions and ID
fields should be defined as <literal>Any</literal> so
that any user and any size job can
be queued to this grade. Here is an
example:       </para><screen>default a Any User Any </screen><para>If you do not define the
default user job grade, the built-in
default grade <literal>Z</literal> is
used. Because the restriction field
default is <literal>Any</literal>,
multiple occurrences of the default
grade are not checked.   </para>
</sect3>
</sect2><sect2 id="uucpov-83"><title>UUCP
Job-size Field</title><para>This field specifies the
maximum job size that can be entered
in the queue.  <replaceable>Job-size</replaceable> is
measured in bytes and can be a list
of the options that are described
in the following list.   </para><variablelist termlength="narrow"><varlistentry><term><replaceable>nnnn</replaceable></term><listitem><para>Integer that specifies
the maximum job size for this job
grade</para>
</listitem>
</varlistentry><varlistentry><term><replaceable>n</replaceable><literal>K</literal></term><listitem><para>Decimal number that
represents the number of kilobytes
(<literal>K</literal> is an abbreviation
for kilobyte)</para>
</listitem>
</varlistentry><varlistentry><term><replaceable>n</replaceable><literal>M</literal></term><listitem><para>Decimal number that
represents the number of megabytes
(<literal>M</literal> is an abbreviation
for megabyte)</para>
</listitem>
</varlistentry><varlistentry><term><literal>Any</literal></term><listitem><para>Keyword that specifies
that no maximum job size exists</para>
</listitem>
</varlistentry>
</variablelist><itemizedlist><para>Here are some examples:</para><listitem><para><literal>5000</literal> represents
5000 bytes</para>
</listitem><listitem><para><literal>10K</literal>	represents
10 Kbytes</para>
</listitem><listitem><para><literal>2M</literal> represents
2 Mbytes</para>
</listitem>
</itemizedlist>
</sect2><sect2 id="uucpov-85"><title>UUCP
Permit-type Field</title><para>This field contains a
keyword that denotes how to interpret
the ID list. The following table lists
the keywords and their meanings. 
    </para><table frame="topbot" id="uucpov-tbl-86"><title>Permit-type Field</title><tgroup cols="2" colsep="0" rowsep="0"><colspec colname="column1" colwidth="79*"/><colspec colname="column2" colwidth="317*"/><thead><row rowsep="1"><entry><para>Keyword</para>
</entry><entry><para>ID List Contents</para>
</entry>
</row>
</thead><tbody><row><entry><para><literal>User</literal> </para>
</entry><entry><para>Login names of users who are
permitted to use this job grade</para>
</entry>
</row><row><entry><para><literal>Non-user</literal> </para>
</entry><entry><para>Login names of users who are
not permitted to use this job grade</para>
</entry>
</row><row><entry><para><literal>Group</literal> </para>
</entry><entry><para>Group names whose members are
permitted to use this group</para>
</entry>
</row><row><entry><para><literal>Non-group</literal> </para>
</entry><entry><para>Group names whose members are
not permitted to use this job grade</para>
</entry>
</row>
</tbody>
</tgroup>
</table>
</sect2><sect2 id="uucpov-87"><title>UUCP
ID-list Field</title><para>This field contains a
list of login names or group names
that are to be permitted or denied
queuing to this job grade. The list
of names are separated by a blank
space and terminated by a newline
character. The keyword <literal>Any</literal> is
used to denote that anyone is permitted
to queue to this job grade.      
 </para>
</sect2>
</sect1><sect1 id="uucpov-88"><title>Other
UUCP Configuration Files</title><para>This section describes three
less-frequently modified files that
impact the use of UUCP facilities. </para><sect2 id="uucpov-89"><title>UUCP <filename>/etc/uucp/Devconfig</filename> File</title><para>The <filename>/etc/uucp/Devconfig</filename> file enables you to configure
devices by service, such as <command>uucp</command> or <command>cu</command>. <literal>Devconfig</literal> entries define
the STREAMS modules that are used
for a particular device. These entries
have the following format:</para><para><literal>service=</literal><replaceable>x</replaceable> <literal>device=</literal><replaceable>y</replaceable> <literal>push=</literal><replaceable>z</replaceable>[:<replaceable>z</replaceable>...]</para><para><replaceable>x</replaceable> can
be <literal>cu</literal>, <literal>uucico</literal>, or both services separated
by a colon. <replaceable>y</replaceable> is
the name of a network and must match
an entry in the <filename>Devices</filename> file. <replaceable>z</replaceable> is replaced by the
names of STREAMS modules in the order
that they are to be pushed onto the
Stream. Different modules and devices
can be defined for <command>cu</command> and <command>uucp</command> services.  </para><para>The following entries are for
a STARLAN network and would most commonly
be used in the file: </para><screen>service=cu       device=STARLAN     push=ntty:tirdwr 
service=uucico   device=STARLAN     push=ntty:tirdwr </screen><para>This example pushes <literal>ntty</literal>,
then <literal>tirdwr</literal>.</para>
</sect2><sect2 id="uucpov-90"><title>UUCP <filename>/etc/uucp/Limits</filename> File</title><para>The <filename>/etc/uucp/Limits</filename> file controls the maximum
number of simultaneous <command>uucico</command>s, <command>uuxqt</command>s, and <command>uusched</command>s
that are running in the <command>uucp</command> networking.
In most situations, the default values
are acceptable and no changes are
needed. If you want to change them,
however, use any text editor.    
  </para><para>The format of the <filename>Limits</filename> file is as follows:  </para><para><literal>service=</literal><replaceable>x</replaceable> <literal>max=</literal><replaceable>y</replaceable>:</para><para><replaceable>x</replaceable> can
be <command>uucico</command>, <command>uuxqt</command> or <command>uusched</command>,
and <replaceable>y</replaceable> is
the limit that is permitted for that
service. The fields can be in any
order and in lowercase. </para><para>The following entries should
most commonly be used in the <filename>Limits</filename> file: </para><screen>service=uucico max=5 
service=uuxqt max=5 
service=uusched max=2 </screen><para>The example allows five <command>uucico</command>s, five <command>uuxqt</command>s,
and two <command>uusched</command>s
to run on your machine.     </para>
</sect2><sect2 id="uucpov-91"><title>UUCP <filename>remote.unknown</filename> File</title><para>The other file that affects
the use of communication facilities
is the <filename>remote.unknown</filename> file.
This file is a binary program that
executes when a machine that is not
found when any of the <filename>Systems</filename> files
starts a conversation. This program
logs the conversation attempt and
drops the connection. </para><caution><para>If you change the permissions
of the <filename>remote.unknown</filename> file
so that the file cannot execute, your
system accepts connections from any
system.</para>
</caution><para>This program executes
when a machine that is not in any
of the <filename>Systems</filename> starts
a conversation. The program logs the
conversation attempt but fails to
make a connection. If you change the
permissions of this file so that the
file cannot execute (<literal>chmod
000 remote.unknown</literal>), your
system accepts any conversation requests.
This change is not trivial. You should
have good reasons for making this
change. </para>
</sect2>
</sect1><sect1 id="uucpov-92"><title>UUCP
Administrative Files</title><para>The UUCP administrative
files are described next. These files
are created in spool directories to
lock devices, hold temporary data,
or keep information about remote transfers
or executions.    </para><itemizedlist><listitem><para><replaceable>Temporary
data files</replaceable> (<filename>TM</filename>) &ndash;
These data files are created by UUCP
processes under the spool directory <filename>/var/spool/uucp/</filename><replaceable>x</replaceable> when a file is received
from another computer. The directory <replaceable>x</replaceable> has the same name
as the remote computer that is sending
the file. The names of the temporary
data files have the following format:
    </para><para><literal>TM.</literal><replaceable>pid.ddd</replaceable> </para><para><replaceable>pid</replaceable> is a process ID
and <replaceable>ddd</replaceable> is
a sequential three-digit number that
starts at 0. </para><para>When the
entire file is received, the <literal>TM.</literal><replaceable>pid.ddd</replaceable> file
is moved to the path name that is
specified in the <literal>C.</literal><replaceable>sysnxxxx</replaceable> file (discussed
subsequently) that caused the transmission.
If processing is abnormally terminated,
the <literal>TM.</literal><replaceable>pid.ddd</replaceable> file can remain in
the <replaceable>x</replaceable> directory.
These files should be automatically
removed by <command>uucleanup</command>. </para>
</listitem><listitem><para><replaceable>Lock files</replaceable> (<filename>LCK</filename>) &ndash; Lock files
are created in the <filename>/var/spool/locks</filename> directory for each device
in use. Lock files prevent duplicate
conversations and multiple attempts
to use the same calling device. The
following table shows the different
types of UUCP lock files.   </para>
</listitem>
</itemizedlist><table frame="topbot" id="uucpov-tbl-93"><title>UUCP Lock Files</title><tgroup cols="2" colsep="0" rowsep="0"><colspec colname="column1" colwidth="99*"/><colspec colname="column2" colwidth="297*"/><thead><row rowsep="1"><entry><para>File Name</para>
</entry><entry><para>Description</para>
</entry>
</row>
</thead><tbody><row><entry><para><filename>LCK</filename>.<replaceable>sys</replaceable></para>
</entry><entry><para><replaceable>sys</replaceable> represents
the name of the computer that is using
the file</para>
</entry>
</row><row><entry><para><filename>LCK</filename>.<replaceable>dev</replaceable></para>
</entry><entry><para><replaceable>dev</replaceable> represents
the name of a device that is using
the file</para>
</entry>
</row><row><entry><para><filename>LCK</filename><replaceable>.LOG</replaceable></para>
</entry><entry><para><replaceable>LOG</replaceable> represents
a locked UUCP log file</para>
</entry>
</row>
</tbody>
</tgroup>
</table><para>These files can remain in the
spool directory if the communications
link is unexpectedly dropped, such
as when a computer crashes. The lock
file is ignored (removed) after the
parent process is no longer active.
The lock file contains the process
ID of the process that created the
lock.</para><itemizedlist><listitem><para><replaceable>Work file</replaceable> (<filename>C.</filename>) &ndash; Work files
are created in a spool directory when
work, such as file transfers or remote
command executions, has been queued
for a remote computer. The names of
work files have the following format:
      </para><para><filename>C.</filename><replaceable>sysnxxxx</replaceable></para><itemizedlist><para><replaceable>sys</replaceable> is
the name of the remote computer, <replaceable>n</replaceable> is the ASCII character
that represents the grade (priority)
of the work, and <replaceable>xxxx</replaceable> is
the four-digit job sequence number
that is assigned by UUCP. Work files
contain the following information: </para><listitem><para>Full path name of
the file to be sent or be requested.</para>
</listitem><listitem><para>Full path name of
the destination or user or file name. </para>
</listitem><listitem><para>User login name.</para>
</listitem><listitem><para>List of options.</para>
</listitem><listitem><para>Name of associated
data files in the spool directory.
If the <command>uucp</command> <option>C</option> or <command>uuto</command> <option>p</option> option
was specified, a dummy name (<literal>D.0</literal>) is used.</para>
</listitem><listitem><para>Mode bits of the source
file. </para>
</listitem><listitem><para>Remote user's login name
to be notified on completion of the
transfer.       </para>
</listitem>
</itemizedlist>
</listitem><listitem><para><replaceable>Data
file</replaceable>(<filename>D.</filename>) &ndash;
Data files are created when you specify
on the command line to copy the source
file to the spool directory. The names
of data files have the following format: </para><para><filename>D.</filename><replaceable>systmxxxxyyy</replaceable> &ndash; <replaceable>systm</replaceable> is the first five
characters in the name of the remote
computer. <replaceable>xxxx</replaceable> is
a four-digit job sequence number assigned
by <command>uucp</command>. The four-digit
job sequence number can be followed
by a subsequent number. <replaceable>yyy</replaceable> is
used when several <filename>D.</filename> files
are created for a work (<filename>C.</filename>)
file. </para>
</listitem><listitem><para><filename>X.</filename> <replaceable>(execute file)</replaceable> &ndash;
Execute files are created in the spool
directory prior to remote command
executions. The names of execute files
have the following format:    </para><para><filename>X.</filename><replaceable>sysnxxxx</replaceable> </para><itemizedlist><para><replaceable>sys</replaceable> is
the name of the remote computer. <replaceable>n</replaceable> is the character that
represents the grade (priority) of
the work. <replaceable>xxxx</replaceable> is
a four-digit sequence number that
is assigned by UUCP. Execute files
contain the following information: </para><listitem><para>Requester's
login and computer name </para>
</listitem><listitem><para>Names of files that
are required for execution </para>
</listitem><listitem><para>Input to be used as
the standard input to the command
string </para>
</listitem><listitem><para>Computer and file
name to receive standard output from
the command execution </para>
</listitem><listitem><para>Command string </para>
</listitem><listitem><para>Option lines for return
status requests    </para>
</listitem>
</itemizedlist>
</listitem>
</itemizedlist>
</sect1><sect1 id="uucpov-94"><title>UUCP
Error Messages</title><para>This section lists the error
messages that are associated with
UUCP. </para><sect2 id="uucpov-95"><title>UUCP
ASSERT Error Messages</title><para>The following table lists
ASSERT error messages.    </para><table frame="topbot" pgwide="1" id="uucptasks-tbl-36"><title>ASSERT
Error Messages</title><tgroup cols="2" colsep="0" rowsep="0"><colspec colname="column1" colwidth="88*"/><colspec colname="column2" colwidth="308*"/><thead><row rowsep="1"><entry><para>Error Message</para>
</entry><entry><para>Description or Action </para>
</entry>
</row>
</thead><tbody><row><entry><para><returnvalue>CAN'T OPEN</returnvalue> </para>
</entry><entry><para>An <function>open</function> or <function>fopen</function> failed. </para>
</entry>
</row><row><entry><para><returnvalue>CAN'T WRITE</returnvalue> </para>
</entry><entry><para>A <function>write</function>, <function>fwrite</function>, <function>fprint</function>,
or similar command, failed. </para>
</entry>
</row><row><entry><para><returnvalue>CAN'T READ</returnvalue> </para>
</entry><entry><para>A <function>read</function>, <function>fgets</function>, or similar command
failed. </para>
</entry>
</row><row><entry><para><returnvalue>CAN'T CREATE</returnvalue> </para>
</entry><entry><para>A <function>creat</function> call
failed. </para>
</entry>
</row><row><entry><para><returnvalue>CAN'T ALLOCATE</returnvalue> </para>
</entry><entry><para>A dynamic allocation failed. </para>
</entry>
</row><row><entry><para><returnvalue>CAN'T LOCK</returnvalue> </para>
</entry><entry><para>An attempt to make a <filename>LCK</filename> (lock)
file failed. In some situations, this
error is fatal. </para>
</entry>
</row><row><entry><para><returnvalue>CAN'T STAT</returnvalue> </para>
</entry><entry><para>A <function>stat</function> call
failed. </para>
</entry>
</row><row><entry><para><returnvalue>CAN'T CHMOD</returnvalue> </para>
</entry><entry><para>A <function>chmod</function> call
failed. </para>
</entry>
</row><row><entry><para><returnvalue>CAN'T LINK</returnvalue> </para>
</entry><entry><para>A <function>link</function> call
failed. </para>
</entry>
</row><row><entry><para><returnvalue>CAN'T CHDIR</returnvalue> </para>
</entry><entry><para>A <function>chdir</function> call
failed. </para>
</entry>
</row><row><entry><para><returnvalue>CAN'T UNLINK</returnvalue> </para>
</entry><entry><para>An <function>unlink</function> call
failed. </para>
</entry>
</row><row><entry><para><returnvalue>WRONG ROLE</returnvalue> </para>
</entry><entry><para>This is an internal logic problem. </para>
</entry>
</row><row><entry><para><returnvalue>CAN'T MOVE TO</returnvalue> <returnvalue>CORRUPTDIR</returnvalue> </para>
</entry><entry><para>An attempt to move some bad <filename>C.</filename> or <filename>X.</filename> files
to the <filename>/var/spool/uucp/.Corrupt</filename> directory failed. The
directory is probably missing or has
wrong modes or owner. </para>
</entry>
</row><row><entry><para><returnvalue>CAN'T CLOSE</returnvalue> </para>
</entry><entry><para>A <function>close</function> or <function>fclose</function> call failed. </para>
</entry>
</row><row><entry><para><returnvalue>FILE EXISTS</returnvalue> </para>
</entry><entry><para>The creation of a <filename>C.</filename> or <filename>D.</filename> file is attempted, but
the file exists. This error occurs
when a problem arises with the sequence
file access, which usually indicates
a software error. </para>
</entry>
</row><row><entry><para><returnvalue>NO uucp SERVICE
NUMBER</returnvalue> </para>
</entry><entry><para>A TCP/IP call is attempted,
but no entry is in <filename>/etc/services</filename> for UUCP. </para>
</entry>
</row><row><entry><para><returnvalue>BAD UID</returnvalue> </para>
</entry><entry><para>The user ID is not in the password
database. Check name service configuration.</para>
</entry>
</row><row><entry><para><returnvalue>BAD LOGIN_UID</returnvalue> </para>
</entry><entry><para>Same as previous description. </para>
</entry>
</row><row><entry><para><returnvalue>BAD LINE</returnvalue> </para>
</entry><entry><para>A bad line is in the <filename>Devices</filename> file. Not enough arguments
on one or more lines. </para>
</entry>
</row><row><entry><para><returnvalue>SYSLST OVERFLOW</returnvalue> </para>
</entry><entry><para>An internal table in <filename>gename.c</filename> overflowed. A single job
attempted to talk to more than 30
systems.</para>
</entry>
</row><row><entry><para><returnvalue>TOO MANY SAVED
C FILES</returnvalue> </para>
</entry><entry><para>Same as previous description. </para>
</entry>
</row><row><entry><para><returnvalue>RETURN FROM</returnvalue> <returnvalue>fixline</returnvalue> <returnvalue>ioctl</returnvalue></para>
</entry><entry><para>An <command>ioctl(2)</command>,
which should never fail, failed. A
system driver problem has occurred. </para>
</entry>
</row><row><entry><para><returnvalue>BAD SPEED</returnvalue> </para>
</entry><entry><para>A bad line speed appears in
the <filename>Devices</filename> or <filename>Systems</filename> file (Class or
Speed field). </para>
</entry>
</row><row><entry><para><returnvalue>BAD OPTION</returnvalue> </para>
</entry><entry><para>A bad line or option is in the <filename>Permissions</filename> file. This
error must be fixed immediately. </para>
</entry>
</row><row><entry><para><returnvalue>PKCGET READ</returnvalue> </para>
</entry><entry><para>The remote machine probably
hung up. No action is needed. </para>
</entry>
</row><row><entry><para><returnvalue>PKXSTART</returnvalue> </para>
</entry><entry><para>The remote machine aborted in
a nonrecoverable way. This error can
usually be ignored. </para>
</entry>
</row><row><entry><para><returnvalue>TOO MANY LOCKS</returnvalue> </para>
</entry><entry><para>An internal problem has occurred.
Contact your system vendor. </para>
</entry>
</row><row><entry><para><returnvalue>XMV ERROR</returnvalue> </para>
</entry><entry><para>A problem with some file or
directory has occurred. The spool
directory is the probable cause, as
the modes of the destinations were
supposed to be checked before this
process was attempted. </para>
</entry>
</row><row><entry><para><returnvalue>CAN'T FORK</returnvalue> </para>
</entry><entry><para>An attempt to make a <command>fork</command> and <command>exec</command> failed.
The current job should not be lost
but will be attempted later (<command>uuxqt</command>). No action is needed.
   </para>
</entry>
</row>
</tbody>
</tgroup>
</table>
</sect2><sect2 id="uucpov-84"><title>UUCP
STATUS Error Messages</title><para>The following table is
a list of the most common STATUS error
messages.    </para><table frame="topbot" pgwide="1" id="uucptasks-tbl-38"><title>UUCP
STATUS Messages</title><tgroup cols="2" colsep="0" rowsep="0"><colspec colname="column1" colwidth="119*"/><colspec colname="column2" colwidth="277*"/><thead><row rowsep="1"><entry><para>Error Message</para>
</entry><entry><para>Description/Action</para>
</entry>
</row>
</thead><tbody><row><entry><para><returnvalue>OK</returnvalue> </para>
</entry><entry><para>Status is acceptable.</para>
</entry>
</row><row><entry><para><returnvalue>NO DEVICES AVAILABLE</returnvalue> </para>
</entry><entry><para>Currently no device is available
for the call. Check whether a valid
device is in the <filename>Devices</filename> file
for the particular system. Check the <filename>Systems</filename> file for the device
to be used to call the system.</para>
</entry>
</row><row><entry><para><returnvalue>WRONG TIME TO CALL</returnvalue> </para>
</entry><entry><para>A call was placed to the system
at a time other than what is specified
in the <filename>Systems</filename> file. </para>
</entry>
</row><row><entry><para><returnvalue>TALKING</returnvalue> </para>
</entry><entry><para>Self-explanatory. </para>
</entry>
</row><row><entry><para><returnvalue>LOGIN FAILED</returnvalue> </para>
</entry><entry><para>The login for the particular
machine failed. The cause could be
a wrong login or password, wrong number,
a slow machine, or failure in executing
the Dialer-Token-Pairs script. </para>
</entry>
</row><row><entry><para><returnvalue>CONVERSATION FAILED</returnvalue> </para>
</entry><entry><para>The conversation failed after
successful startup. This error usually
means that one side went down, the
program aborted, or the line (link)
was dropped. </para>
</entry>
</row><row><entry><para><returnvalue>DIAL FAILED</returnvalue> </para>
</entry><entry><para>The remote machine never answered.
The cause could be a bad dialer or
the wrong phone number. </para>
</entry>
</row><row><entry><para><returnvalue>BAD LOGIN/MACHINE
COMBINATION</returnvalue> </para>
</entry><entry><para>The machine called with a login/machine
name that does not agree with the <filename>Permissions</filename> file. This
error could be an attempt to masquerade. </para>
</entry>
</row><row><entry><para><returnvalue>DEVICE LOCKED</returnvalue> </para>
</entry><entry><para>The calling device to be used
is currently locked and in use by
another process. </para>
</entry>
</row><row><entry><para><returnvalue>ASSERT ERROR</returnvalue> </para>
</entry><entry><para>An <returnvalue>ASSERT</returnvalue> error
occurred. Check the <filename>/var/uucp/.Admin/errors</filename> file for the error message
and refer to the section <olink targetptr="uucpov-95" remap="internal">UUCP ASSERT
Error Messages</olink>.   </para>
</entry>
</row><row><entry><para><returnvalue>SYSTEM NOT IN Systems
FILE</returnvalue> </para>
</entry><entry><para>The system is not in the <filename>Systems</filename> file. </para>
</entry>
</row><row><entry><para><returnvalue>CAN'T ACCESS DEVICE</returnvalue> </para>
</entry><entry><para>The device tried does not exist
or the modes are wrong. Check the
appropriate entries in the <filename>Systems</filename> and <filename>Devices</filename> files. </para>
</entry>
</row><row><entry><para><returnvalue>DEVICE FAILED</returnvalue> </para>
</entry><entry><para>The device could not be opened. </para>
</entry>
</row><row><entry><para><returnvalue>WRONG MACHINE NAME</returnvalue> </para>
</entry><entry><para>The called machine is reporting
a different name than expected. </para>
</entry>
</row><row><entry><para><returnvalue>CALLBACK REQUIRED</returnvalue> </para>
</entry><entry><para>The called machine requires
that it call your machine. </para>
</entry>
</row><row><entry><para><returnvalue>REMOTE HAS A LCK
FILE FOR ME</returnvalue> </para>
</entry><entry><para>The remote machine has a <filename>LCK</filename> file for your machine.
The remote machine could be trying
to call your machine. If the remote
machine has an older version of UUCP,
the process that was talking to your
machine might have failed, leaving
the <filename>LCK</filename> file.
If the remote machine has the new
version of UUCP and is not communicating
with your machine, the process that
has a <filename>LCK</filename> file
is hung.</para>
</entry>
</row><row><entry><para><returnvalue>REMOTE DOES NOT
KNOW ME</returnvalue> </para>
</entry><entry><para>The remote machine does not
have the node name of your machine
in its <filename>Systems</filename> file. </para>
</entry>
</row><row><entry><para><returnvalue>REMOTE REJECT AFTER
LOGIN</returnvalue> </para>
</entry><entry><para>The login that was used by your
machine to log in does not agree with
what the remote machine was expecting. </para>
</entry>
</row><row><entry><para><returnvalue>REMOTE REJECT,
UNKNOWN MESSAGE</returnvalue> </para>
</entry><entry><para>The remote machine rejected
the communication with your machine
for an unknown reason. The remote
machine might not be running a standard
version of UUCP. </para>
</entry>
</row><row><entry><para><returnvalue>STARTUP FAILED</returnvalue> </para>
</entry><entry><para>Login succeeded, but initial
handshake failed. </para>
</entry>
</row><row><entry><para><returnvalue>CALLER SCRIPT FAILED</returnvalue> </para>
</entry><entry><para>This error is usually
the same as <returnvalue>DIAL FAILED</returnvalue>.
However, if this error occurs often,
suspect the caller script in the <filename>Dialers</filename> file. Use <command>Uutry</command> to check.        </para>
</entry>
</row>
</tbody>
</tgroup>
</table>
</sect2><sect2 id="uucpov-14"><title>UUCP
Numerical Error Messages</title><para>The following table lists the
exit code numbers of error status
messages that are produced by the <filename>/usr/include/sysexits.h</filename> file.
Not all are currently used by <command>uucp</command>.  </para><table frame="topbot" pgwide="1" id="uucptasks-tbl-40"><title>UUCP
Error Messages by Number</title><tgroup cols="3" colsep="0" rowsep="0"><colspec colname="column1" colwidth="44*"/><colspec colname="column2" colwidth="88*"/><colspec colname="column3" colwidth="264*"/><thead><row rowsep="1"><entry><para>Message Number</para>
</entry><entry><para>Description</para>
</entry><entry><para>Meaning</para>
</entry>
</row>
</thead><tbody><row><entry><para><errorname>64</errorname></para>
</entry><entry><para>Base Value for Error Messages</para>
</entry><entry><para>Error messages begin at this
value.</para>
</entry>
</row><row><entry><para><errorname>64</errorname></para>
</entry><entry><para>Command&ndash;Line Usage Error</para>
</entry><entry><para>The command was used incorrectly,
for example, with the wrong number
of arguments, a bad flag, or a bad
syntax.</para>
</entry>
</row><row><entry><para><errorname>65</errorname></para>
</entry><entry><para>Data Format Error</para>
</entry><entry><para>The input data was incorrect
in some way. This data format should
only be used for user's data and not
system files.</para>
</entry>
</row><row><entry><para><errorname>66</errorname></para>
</entry><entry><para>Cannot Open Input</para>
</entry><entry><para>An input file, not a system
file, did not exist, or was not readable.
 This problem could also include errors
like &ldquo;No message&rdquo; to a
mailer.</para>
</entry>
</row><row><entry><para><errorname>67</errorname></para>
</entry><entry><para>Address Unknown</para>
</entry><entry><para>The user that was specified
did not exist. This error might be
used for mail addresses or remote
logins.</para>
</entry>
</row><row><entry><para><errorname>68</errorname></para>
</entry><entry><para>Host Name Unknown</para>
</entry><entry><para>The host did not exist.  This
error is used in mail addresses or
network requests.</para>
</entry>
</row><row><entry><para><errorname>69</errorname></para>
</entry><entry><para>Service Unavailable</para>
</entry><entry><para>A service is unavailable.  This
error can occur if a support program
or file does not exist.  This message
also can simply indicate that something
does not work and the cause currently
is not identifiable.</para>
</entry>
</row><row><entry><para><errorname>70</errorname></para>
</entry><entry><para>Internal Software Error</para>
</entry><entry><para>An internal software error has
been detected.  This error should
be limited to non-operating system-related
errors, if possible.</para>
</entry>
</row><row><entry><para><errorname>71</errorname></para>
</entry><entry><para>System Error</para>
</entry><entry><para>An operating system error has
been detected.  This error is intended
to be used for conditions like &ldquo;cannot
fork&rdquo;, &ldquo;cannot create
pipe.&rdquo;  For instance, this error
includes a <literal>getuid</literal> return
of a user who does not exist in the <filename>passwd</filename> file.</para>
</entry>
</row><row><entry><para><errorname>72</errorname></para>
</entry><entry><para>Critical OS File Missing</para>
</entry><entry><para>A system file such as <filename>/etc/passwd</filename> or  <filename>/var/admin/utmpx</filename> does not exist, cannot
be opened, or has an error, such as
a syntax error.</para>
</entry>
</row><row><entry><para><errorname>73</errorname></para>
</entry><entry><para>Can't Create Output File</para>
</entry><entry><para>A user-specified output file
cannot be created.</para>
</entry>
</row><row><entry><para><errorname>74</errorname></para>
</entry><entry><para>Input/Output Error</para>
</entry><entry><para>An error occurred while doing
I/O on some file.</para>
</entry>
</row><row><entry><para><errorname>75</errorname></para>
</entry><entry><para>Temporary Failure. User is invited
to retry</para>
</entry><entry><para>Temporary failure that is not
really an error.  In <command>sendmail</command>,
this means that a mailer, for example,
could not create a connection, and
the request should be reattempted
later.</para>
</entry>
</row><row><entry><para><errorname>76</errorname></para>
</entry><entry><para>Remote Error in Protocol</para>
</entry><entry><para>The remote system returned something
that was &ldquo;not possible&rdquo;
during a protocol exchange.</para>
</entry>
</row><row><entry><para><errorname>77</errorname></para>
</entry><entry><para>Permission Denied</para>
</entry><entry><para>You do not have sufficient permission
to perform the operation.  This message
is not intended for file system problems,
which should use <option role="nodash">NOINPUT</option> or <option role="nodash">CANTCREAT</option>, but rather for higher-level
permissions.  For example, <literal>kre</literal> uses
this message to restrict students
who can send mail to.</para>
</entry>
</row><row><entry><para><errorname>78</errorname></para>
</entry><entry><para>Configuration Error</para>
</entry><entry><para>The system detected an error
in the configuration.</para>
</entry>
</row><row><entry><para><errorname>79</errorname></para>
</entry><entry><para>Entry Not Found</para>
</entry><entry><para>Entry  not found.</para>
</entry>
</row><row><entry><para><errorname>79</errorname></para>
</entry><entry><para>Maximum Listed Value</para>
</entry><entry><para>Highest value for error messages.</para>
</entry>
</row>
</tbody>
</tgroup>
</table>
</sect2>
</sect1>
</chapter>