COHERENT manpages
This page displays the COHERENT manpage for smail [Mail delivery system].
List of available manpages
Index
smail -- Command
Mail delivery system
smail [ flags ] address ...
smail is the program that receives and delivers mail. It accepts mail from
a source either on your local host or on a remote host, and delivers that
mail to its destination -- again, either on your local host or another
remote host. smail does not provide a user interface for typing mail or
reading it; to do so, you must use a ``mailer'' program, such as mail or
elm.
You will rarely, if ever, need to invoke smail directly. You may modify
one of its configuration files from time to time, but smail normally is
invoked only by other programs. The rest of this article gives smail's
command-line options and describes how it works. You will find this
information useful should you wish to reconfigure your mail system, or
chase down a bug.
smail can be invoked under a variety of names. Each name indicates the
major use to which smail will be put, e.g., receiving local mail, receiving
remote mail, attempting to deliver undelivered mail, or displaying
information about undelivered mail. These names are described below; each
also has its own Lexicon entry.
Command-line Options
smail recognizes the following command-line options:
-bc Display the contents of file COPYING, which is distributed with the
source code for smail. This file details what your rights and
restrictions the authors of smail have set upon their work.
-bd Listen for connection requests on a socket bound in the Internet
domain. When a connection occurs, conduct an Simple Mail Transfer
Protocol (SMTP) conversation with the peer process on the other
system. This option currently is not implemented under COHERENT, as
COHERENT does not yet support networking.
-bi Initialize the aliases file. The file that it builds depends upon
whether you also use option -oA on the command line.
By default, smail under COHERENT is compiled with the GDBM package.
GDBM is a set of functions that permit a program to build and read a
simple hashed data base; for details on how it works, see the Lexicon
entry for libgdbm. Thus, when you also use option -oAfile to name an
aliases file, smail invokes the command /usr/lib/mail/newaliases to
compile the contents of file into a DBM data base.
-bm address ...
Deliver mail to each address.
-bP address
Assume that each address on the command line is a configuration-file
variable, and write its value onto the standard output. For example,
the command
smail -bP hostnames max_message_size
produces output of the form:
lepanto.com
102400
If you also use the flags -d or -v on the command line, smail also
displays the variable names. Thus, the command
smail -bP -v max_message_size
prints something like the following:
max_message_size=102400
The command
smail -bP primary_name
prints the primary (or ``canonical'') name for the local host that
smail uses, and command
smail -bP config_file
prints the name of the primary configuration file. The command
smail -bP help
prints a verbose listing of every variable plus its type, one variable
per line. Finally, command
smail -bP all
prints a verbose listing of every variable and its value. It is
equivalent to the command smail -bP -v followed by a list of the name
of every configuration variable.
-bp List information about the messages that currently reside in smail's
input spool directories. This is smail's default mode of operation
when you invoke it under the name mailq. When you also use the flags -
v or -d, smail displays the transaction-log entries for each message,
to show what has happened to the message so far.
-bS Read SMTP commands from the standard input, but do not write SMTP
replies onto the standard output. Report failures via mail rather
than through reply codes.
This option is suitable for setting up a batched form of SMTP between
machines over a remote execution service like UUCP. This is the
default mode of operation if you invoke smail under the name rsmtp.
-bs Read SMTP commands from standard input, and write SMTP replies onto
the standard output. The following SMTP commands are implemented:
HELO MAIL FROM RCPT
TO DATA RSET NOOP
VRFY EXPN QUIT
This is the default mode of operation if you invoke smail under the
name smtpd.
-bt Run smail in test-address mode: smail reads addresses from standard
input, parses them, and writes its result onto the standard output.
This is primarily useful for debugging smail or debugging new smail
routers.
-bV See option -V, below.
-bv Verify an address. smail reads each address you list on its command
line, subjects it to aliasing and forwarding expansions, then subjects
it to host routing or resolving, and finally prints the resolved
address onto the standard output. You can then check whether the
resolved address matches what you expect. If smail cannot resolve an
address, it prints an explanation of why it cannot.
-C file
Use file as the primary configuration file -- i.e., the file that
holds global attributes. smail resets the effective user identifier
and group identifier to those of the real user and group, to avoid
problems should smail be setuid to the superuser.
If file is `-', then smail does not use a primary configuration file.
You should use this only for debugging.
-d[number]
Turn on debugging. number sets the level of debugging; the default
level is one. No white space must separate the option and number.
Please note that -d and -v are identical; smail recognizes both for
historical reasons.
-D file
Write debugging information into file. Normally, using option -v or -d
to generate debugging output also disables background delivery of
mail, because programs should not continue to write to the standard
error after the mail process exits; however, if you name a debugging-
output file, background delivery can continue.
-ee
-oee These options refer to a ``berkenet'' style of error-processing that
smail does not support. If used, smail mails an error message back to
you.
-em
-oem Mail error messages to the sender. This is the default.
-ep Write error messages onto the standard-error device.
-eq If an error occurs, do not notify the sender of it. This only works
for mail being delivered locally: an error that occurs on a remote
host's mail system still generates a mail message to the sender. To
set this behavior on both the local host and a remote host, supply a
header that reads:
Precedence: junk
-ew
-oew Mail errors to the sender, just as with option -m. With some mail-
delivery programs, this option asks the program to invoke the command
write to write errors onto the sender's screen, should she be logged
in.
-F fullname
Set to fullname the full name of the sender for incoming mail. Use
this option only if you wish to use smail to receive a single mail
message from the standard input.
-f sender
Set to sender the address for incoming mail. Use this option only if
you want smail to receive a single mail message from the standard
input.
-h number
Set to number the hop count for a message. If this command-line
option is not used, smail computes the hop count from the number of
Received: fields in the message's header. smail uses the hop count as
a primitive method of detecting an infinite loop: if the hop count is
too large, smail rejects the mail.
NB, an infinite loop occurs when two sites each think that a given
user resides on the other. A message mailed to that user will ping-
pong between the sites; unless the message is stopped somehow, its
header can grow infinitely large.
-I Use the ``hidden-dot'' algorithm when reading a message. If a message
contains a line that begins with one or more periods, smail removes
that leading period; a line that consists of a single period
terminates the message. This option is always set for messages
received via SMTP.
-i A line that consists of a single period does not terminate an incoming
message. This is the default if you invoke smail under the name
rmail.
-m If a user mails a message to an alias list or mailing list that
includes her name, send a copy of the message to that user. By
default, if the user mails a message to a list that includes her name,
smail does not send a copy of a message back to her.
-N Disable delivery of a message. smail performs all other processing,
and the transport programs are expected to go through most of the
steps involved in delivery. Use this option when you wish to debug
smail but do not want to have the messages delivered.
-n Do not process aliases. With this option, smail will not expand
entries in alias files; however, it will still expand entries in
mailing-list files and forwarding files.
-oC file
See option -C, above.
-odb If mail is to be delivered, deliver it in the background. Note that
background delivery is not currently supported in the SMTP modes: mail
is delivered in the foreground.
-oD file
Use file as the directors file, instead of the default
/usr/lib/mail/directors. smail resets the effective user and group
identifiers to those of the real user and group, to avoid problems
should an installation setuid smail to the superuser. If file is `-',
smail does not read a directors file. Use this option only when you
are debugging smail.
-odf If mail is to be delivered, deliver it in the foreground.
-oE file
Use file as the delivery-retry control file, instead of the default
/usr/lib/mail/retry. smail resets the effective user and group
identifiers to those of the real user and group, to avoid problems
should an installation setuid smail to the superuser. If file is `-',
smail does not read a retry file. Use this option only when you are
debugging smail.
-oep See option -ep, above.
-oeq See option -eq, above.
-oI See option -I, above.
-oi See option -i, above.
-oL directory
Use directory as the library directory -- that is, the directory that
holds configuration files and mailing-list directories. This
overrides the default value compiled into smail through its option
smail_lib_dir (under COHERENT /usr/lib/smail), as well as any name set
in a configuration file.
-oMr sender_proto
Use sender_proto as the protocol by which sending host delivers the
mail message. You can include this value in expansion strings via the
variable $sender_proto.
-oMs sender_host
Set to sender_host the system that can send the mail message. You can
include this value in expansion strings via the variable $sender_host.
-om See option -m, above.
-oQ file
Set the path name of the host-name qualification file to file, instead
of the default /usr/lib/mail/qualify. smail resets the effective user
and group identifiers to those of the real user and group, to avoid
problems should an installation setuid smail to the superuser. If
file is `-', smail does not read a qualify file. Use this option only
when you are debugging smail.
-oR file
Use file as the router file, instead of the default
/usr/lib/mail/routers. smail resets the effective user and group
identifiers to the real user and group identifiers, to avoid problems
should an installation setuid smail to the superuser. If file is `-',
smail does not read a router file. Use this option only when you are
debugging smail.
-oT file
Use file as the transport file, instead of the default
/usr/lib/mail/transports. smail resets the effective user and group
identifiers to those of the real user and group, to avoid problems
should an installation setuid smail to the superuser. If file is `-',
smail does not read a transport file. Use this option only when you
are debugging smail.
-oU Tell smail to report memory usage when it exits.
-oX mail-service
Tell smail to listen for SMTP requests on the TCP/IP service or port
mail-service. You can use this option with -bd mode to define
alternate debugging versions of smail's SMTP listening daemon; this
can be useful when you test a new installation.
Please note that because COHERENT does not yet support networking,
this option does nothing.
-Q
-odq Spool incoming messages, but do not deliver them until later queue.
This mode of operation is somewhat more efficient in terms of CPU
usage, but slows down the flow of mail.
-q[interval]
Force smail to process its input spool directory. If you set
interval, smail continually checks its input-spool directory, and
sleeps for interval between checks. interval is a string that
consists of a number followed by one of the following letters to
indicate unit of time:
s seconds
m minutes
h hours
d days
w weeks
y years
For example, option -q2h30m tells smail to check its input spool
directory every two hours and 30 minutes. This flag is useful with
the -bd mode of operation, as it awakens the daemon process after each
interval to process the queue. This is smail's default mode of
operation when you invoke it under the name runq.
-r sender
See option -f, above.
-t Extract addresses from the To:, Cc:, and Bcc: fields of the message
header. This is useful for mailers that do not compute the recipient
addresses themselves. In this mode, the addresses given on the
command line will not receive mail, even as a result of expanding
aliases or forwarding addresses. smail ignores this option unless it
is in the mode set by command-line option -bm (which is the default
mode).
-V Print the version smail onto the standard output.
Normal Use
A user agent can submit new mail message by invoking smail and passing it a
message via the standard input. For example, mailers such as mail and elm
submit mail by invoking smail with a command such as
smail -em -i address ...
Because smail also works correctly if invoked as sendmail, it is common to
install smail as /usr/lib/sendmail, so that existing binaries on BSD
systems, or other systems that currently run sendmail, need not be modified
to run smail instead. This also lets you run applications that have been
configured to send mail via sendmail without modifying their sources or
recompiling.
Some user agents, such as GNU Emacs, may wish to have smail decipher the
recipient list from the header. These programs can invoke smail with a
command, such as:
smail -em -t -i
To receive mail over UUCP, uuxqt invokes the command rmail, which is a link
to smail. rmail can also be another program that invokes smail directly as:
smail -em -i -fsender-address recipient address ...
An alternative method of receiving mail over UUCP is through the command
rsmtp, which receives batched SMTP requests. This can be used between two
sites running smail to gain many of the benefits of the SMTP protocol, such
as the ability to use recipient addresses that uux cannot correctly pass to
a remote rmail program. For example, an address that contains quotations
marks or spaces cannot be expected to pass correctly over an uux-rmail
link, but will pass correctly over a uux-rsmtp link.
Addressing Under smail
The following describes how smail interprets an E-mail address.
smail understands domain-style addresses (e.g., henry@mwc.com) UUCP-style
path names, (e.g., mwc!lepanto!henry), and local addresses (e.g., henry).
It assumes that an address of the form user@domain is a domain address,
that an address of the form host!address is a UUCP path, and anything else
is a local address.
When it parses a mixed address (that is, an address that contains both a
`!' and a `@'), smail gives precedence to `@' over `!'. Thus, it parses
the address a!b@c as (a!b)@c, rather than a!(b@c), which means that mail
addressed to a!b@c is forwarded to system c instead of to system a.
Resolving Addresses
An E-mail address has two forms: internal and external. The internal form
of an address is what appears on the To: line in the message's header.
This is the recipient's address as typed by the person who mailed the
message. This is regardless of whether the sender typed the recipient's
full address, or typed an alias for the recipient. (For details on how to
use aliases to address mail messages, see the Lexicon entry for aliases.)
The external form of an address (also called the message's envelope), is
the address that smail passes to the mail-delivery agent (either uux or
lmail).
Resolving is the act of transforming an internal address into an envelope.
It has two stages: host resolution and alias resolution. Host resolution
(also called routing) is how smail figures out the identity of the computer
to which it must send the message. If smail determines that the message
must be delivered on your local machine, it then applies alias resolution
(also called alias expansion) to the address. If the address proves to be
an alias, smail expands the alias and again performs host resolution to
find the machine to which it should deliver the message. If, however, the
address names a user on your local machine, then smail hands the message to
the local mailer lmail for delivery.
Although smail understands domain-style addresses (i.e., addresses that
contain a `@' and are read from right to left), it can deliver mail only to
UUCP paths (i.e., addresses that contain `!' characters and are read from
left to right) and local addresses. Thus, it must resolve a domain address
into a UUCP path or local address.
To resolve a domain-style address, smail must find the route to the most
specific part of the domain, as specified in the routing file
/usr/lib/mail/paths. Two degrees of resolution can occur:
Full Resolution
smail finds the full route to the machine. In this case, smail either
tacks the user specification onto the end of the machine's UUCP path,
or resolves it into a local address, whichever is appropriate.
Partial Resolution
smail finds a route for only the right portion of the domain
specification; e.g., for
henry@lepanto.mwc.com
it finds mwc.com but cannot identify lepanto. Here, smail tacks the
complete address (in the form domain!user) onto the end of the UUCP
path. For example, if smail finds that the route to mwc.com is via
systems foo, bar, and baz, it constructs the path:
foo!bar!baz!lepanto.mwc.com!henry
This assumes that routing program on system baz (perhaps smail,
perhaps some other program) will recognize the token lepanto.mwc.com
as being a domain rather than a host.
It is an error to route a partially resolved address to the local host (a
null UUCP path), because the local host is responsible for resolving the
address more fully.
The command-line option -r tells smail to attempt to route the first
(leftmost) component of a UUCP path, regardless of whether it knows how to
send mail directly to a site named further to the right in the path. This
is called always routing. For example, if a mail message is address to
foo!bar!baz!mwc!lepanto!fred
option -r tells smail always to route the mail to foo, even if also knows
how to route mail to mwc.
The command-line option -R tells smail to route mail to the rightmost host
named on a UUCP path. This is called reroute routing. Use it if you have a
very up-to-date routing table, and wish to bypass some obsolete routing
information in the current path.
If file /usr/lib/mail/paths does not contain a path to the remote system,
smail forwards mail to the the host named in the entry smart_path in file
/usr/lib/mail/config. This lets your system depend on another, better
informed, system to deliver your mail. Note that before you name another
system as your system's smart_path, you should get the permission of the
person who administers that system. Please note that if you start to
forward mail to a system without permission, that system's administrator
may forward your mail to the bit bucket.
After smail resolves an address, it reparses the address to see if it is
now a UUCP path or local address. If the new address turns out to be
another domain address, smail complains. This error occurs when an address
partially resolves to the local host.
By default, smail does not alter an explicit UUCP path of any mail message.
If the stated path is unusable (i.e., the next host is unknown), then smail
applies always-routing and attempts to deliver the message to first
(leftmost) system named in the UUCP path. If this fails, smail then uses
reroute-routing and again attempts to deliver the message. If this too
fails, smail finally attempts to to find a path to a smart-host and passes
the mail to it. And if that finally fails, smail mails an error message to
user who mailed the message, and abandons any further attempt to deliver
the message.
Headers
Document RFC822, which governs Internet mail, demands that a mail message
contain certain entries in its header. These entries include one that
begins with the string To:, one that begins with the string From:, and one
that begins with the string Date. If a message's header does not contain
one or more of these entries, smail inserts it.
Build the From: Line of a Message
The header of a mail message includes a line that begins From:. This line
names the user who originated the message. This line is extremely
important, as it will read by users and programs on the recipient's system
to identify the sender, and possibly reply to the message.
smail collapses the From_ and >From_ lines within a mail message to
generate a simple ``from'' argument, which it then uses to create its own
From: line. This processing sometimes is called from-ming a message. The
following gives the rules for from-ming:
-> First, it concatenates all hosts named on remote from lines, separating
them from each other by `!'s.
-> It appends onto that concatenated address, the address from the last
From_ line.
-> If that address is in domain format (i.e., the form user@domain), smail
rewrites it in bang-path format (i.e., the form domain!user). If a host
or domain names the local system, smail ignores it.
-> Finally, smail removes redundant information from the From_ line.
smail generates its own From_ line. For mail that is to be forwarded via
UUCP, smail generates a line of the form remote-from host; host is the UUCP
host name (not the domain name), so that From_ can indicate a valid UUCP
path, thus leaving the sender's domain address in From:.
Undeliverable Mail
smail returns to sender all mail that is undeliverable. A message is
declared to be undeliverable if the user is unknown, or if the user resides
on an unknown host.
Logging
smail uses two log files:
/usr/spool/smail/log/logfile
The log of every mail message that your system receives. Please note
that if your system is busy, this file will quickly become very large.
You should embed the command /usr/lib/mail/savelog in root's cron file
to ensure that this file is truncated and saved regularly. For
details on savelog or cron, see their articles in the Lexicon.
/usr/spool/smail/log/paniclog
The log of every mail that created a panic situation. If your system
is configured properly, this file will never become large.
Registered Domains and Subdomains
You may wish to register your domain with the NIC. This will give you an
internationally recognized e-mail address. For more information, send E-
mail to postmaster@internic.net.
Once you have registered your domain, you can also set up subdomains for
other systems, so they can receive information from the Internet via your
system. The rest of this section discusses how to describe subdomains to
your system, and related topics.
Let's say that you have registered your domain, and you have named it
mydomain. To route mail systems subordinate to mydomain, do the following:
1. Insert the following entry into /usr/lib/mail/paths:
.mydomain.com %s 50
This tells smail that the local host (i.e., your machine) must resolve
that any address that ends in the suffix .mydomain.com, or it is an
error.
2. For each site in mydomain, create two entries in /usr/lib/mail/paths.
For example, for the site foo.mydomain.com, create the entries:
foo foo!%s 200
foo.mydomain.com foo!%s 200
If the site bar.mydomain.com is fed by the route froboz!florp!bar,
insert these lines into paths:
bar froboz!florp!bar!%s 200
bar.mydomain.com froboz!florp!bar!%s 200
Note that you do not have to register subdomains with the NIC. Once you
register the top-level domain with the NIC, you control the entire name
space -- you can subdomain to your heart's content.
The only restrictions on subdomaining may be with your Internet Nameserver.
Most nameservers for UUCP domains publish a ``wildcard'' mail exchanger
(MX) record, that essentially says, ``send everything for *.mydomain.com to
this Internet gateway.'' However, some nameserver managers require you to
register every site in your domain, for which they provide a separate MX
record. The advantage of this scheme is that anybody on the Internet who
sends mail to your domain immediately receives an error message if the
message is addressed to a non-existent site. For details, check with the
person who manages your nameserver.
To route for an entire subdomain (e.g., .subd.mydomain.com), you must
choose a gateway for that domain (e.g., gateway.subd.mydomain.com), and
then use a line like this:
.subd.mydomain.com gateway!%s 200
smail automatically chooses the longest subdomain match it can find, so
this rule applies before the .mydomain.com %s rule.
Note that the gateway need not be in the subdomain itself. You could have
a line elsewhere in the paths file on mydomain that says:
gateway.mydomain.com gateway!%s 200
Your main gateway may also have information about machines in subdomains,
although this is not necessary. For instance, if your main machine is
directly connected to a machine in a subdomain, you may want to put this
information into paths, so the mail will not go through the gateway for
that domain.
For example, the machine smith.subd.mydomain.com might be directly
connected to your master gateway, mydomain.com:
smith smith!%s 200
smith.subd.mydomain.com smith!%s 200
Without this rule, mail for smith would be queued for forwarding through
gateway.subd.mydomain.com.
Compatibility With sendmail
smail was designed to be a plug-in replacement for the BSD program
sendmail, in that external programs can call smail in the same way that
they call sendmail and expect similar results. However, smail is
completely different internally and has entirely different configuration
files. As a result, the option -o to smail only sets a few configuration
parameters that were believed to be commonly used by other programs. Also,
for convenience, some new (upper-case only) parameters are defined only in
smail. smail ignores attempts to use this flag to set other options. For a
complete list of the -o options that smail recognizes, see the section on
command-line options, above.
For compatibility with other software systems (in particular, the Taylor
UUCP package), COHERENT links smail to command /usr/lib/sendmail. Thus, a
program that expects to use sendmail can use smail without being recompiled
or reconfigured.
Configuration Files
For most sites, the configuration compiled into smail is sufficient, and
thus no configuration files are needed. However, you can use any or all of
the following optional configuration files to restructure how smail behaves
on your system:
/usr/lib/mail/config
General configuration. This file can override compiled-in
configuration, including the names of any of the following
configuration files.
/usr/lib/mail/directors
Configuration file for smail directors, i.e., configured methods for
resolving local addresses.
/usr/lib/mail/routers
Configuration file for smail routers, i.e., configured methods for
resolving or routing to remote hosts.
/usr/lib/mail/transports
Configuration for smail transports, i.e., configured methods of mail
delivery.
The contents of file config dictate how smail configures its internal
workings -- where it looks to find other configuration files, where it
should send error messages, and so on. The contents of routers, directors,
and transports together tell smail how to deliver mail both on your local
system and on remote systems. The following describes how these files work
together.
When smail is given a list of addresses to which a message is to be
delivered, it processes the list iteratively until it produces a list of
resolved addresses. When an address is resolved, smail will know which
transport it must use to deliver the message to the person or persons to
whom it is addressed, and all data that this transport requires. To
accomplish this, smail goes through the following steps:
A. smail first parses each address to find a host name, called the target,
and the remaining part of the address, called the remainder.
As a simple example, in the address tron@uts.amdahl.com, the host part
uts.amdahl.com is the target and tron is the remainder. Likewise, in
the address sun!amdahl!tron, the target is sun and the remainder is
amdahl!tron.
B. smail then shows each address to directors, in the order given in file
/usr/lib/mail/directors, until one of the directors says that it knows
what to do with that address. That director can either return a new
list of addresses, or put the address onto a list of resolved addresses.
If new addresses are produced, smail places them onto the input list, to
be processed from step A.
C. When an address has passed through step B, smail shows it to various
routers, in the order given in file /usr/lib/mail/routers, until a
router can match the target name for the address. If no router can
match the complete target, then smail selects the router that matches
the longest portion of the target. The router names the transport to be
used to deliver the message to that address, plus some other information
that the transport requires (e.g., the next host and next address
values). The information as to which transport to use can come either
from the definition of the router, from a method file, or may be
specified by the router specifically.
When all addresses have been resolved, smail sorts them and passes them to
transports. The transport then delivers the message to the addresses it is
given.
Host names and local user-names are matched independent of case; for
example, ``Postmaster'', ``POSTMASTER'', and ``postmaster'' are in effect
all the same. In addition, smail keeps an internal hash table of all
regular recipient addresses, that is, all addresses that do not specify
files or shell commands. This table is used to discard duplicate regular
recipient addresses. This hash table is independent of case, as well, so
that the address Postmaster@SRI-NIC.ARPA is considered a duplicate of
postmaster@sri-nic.arpa.
Other Files and Directories
smail also uses the following configuration files:
/usr/lib/mail/qualify
Configuration file for host-name qualification.
/usr/lib/mail/retry
Optional delivery retry configuration file, i.e., minimum time between
retries and maximum time to retry before giving up.
smail reads the following files to learn how to redirect mail locally and
to give paths to remote sites:
/usr/lib/mail/aliases
Aliases for mail addresses.
/usr/lib/mail/paths
Paths to remote hosts.
/usr/lib/mail/lists
Mailing-list files.
/usr/spool/mail
The directory that holds each user's mailbox file.
$HOME/.forward
Forwarding address or addresses for a given user.
smail uses the following directories to hold incoming mail messages and its
work files:
/usr/spool/smail
Directory that holds spool directories and work files.
/usr/spool/smail/input
Spool directory for incoming messages.
/usr/spool/smail/error
Directory that holds mail messages that failed for a reason that the
site administrator should investigate.
/usr/spool/smail/msglog
Directory that holds transaction logs for individual messages.
/usr/spool/smail/lock
This directory holds smail's input lock files.
The following files log smail's activity. Please note that these files
will grow without end. Your system's system administrator should check and
truncate these files from time to time. She can also use the script
/usr/lib/mail/savelog to manage these files; for details, see the Lexicon
entry for this command:
/usr/spool/smail/log/logfile
A log of smail's transactions.
/usr/spool/smail/log/paniclog
A log of configuration or system errors encountered by smail.
See Also
commands,
mail [command],
mail [overview],
mailq,
rmail,
rsmtp,
runq,
savelog,
smtpd
Diagnostics
If all goes well, smail returns zero to the shell when it exits. If an
error occurs, it returns a value other than zero. The meaning of each code
is set in smail's source file exitcodes.h, as follows:
EX_USAGE.......Error in command-line usage
EX_DATAERR.....Data-format error
EX_NOINPUT.....Cannot open input file
EX_NOUSER......Addressee unknown
EX_NOHOST......Host unknown
EX_UNAVAILABLE.Service unavailable
EX_SOFTWARE....Internal software error
EX_OSERR.......System error
EX_OSFILE......Critical OS file missing
EX_CANTCREAT...Cannot create (user) output file
EX_IOERR.......Error in file I/O
EX_TEMPFAIL....Temporary failure; user can retry
EX_PROTOCOL....Remote error in protocol
EX_NOPERM......Permission denied
If you invoke smail with its option -bd, then the message
bind() failed: address already in use
means that another process is already listening to the SMTP socket.
Notes
Many mail bugs are not smail bugs. smail cannot help it if remote sites
trash your mail messages.
Setting the input spool directory processing interval to a period of more
than 2,147,483,647 seconds will result in an incorrectly calculated
processing interval -- and is a rather silly thing to do at any event.
Copyright © 1987, 1988 Ronald S. Karr and Landon Curt Noll. Copyright
© 1992 Ronald S. Karr.
For details on the distribution rights and restrictions associated with
this software, see file COPYING, which is included with the source code to
the smail system; or type the command:
smail -bc.









