smail(8)
NAME
smail, sendmail, mailq, runq, rmail, rsmtp, smtpd, newaliases - mail
delivery system
SYNOPSIS
smail [ flags ] address...
/usr/sbin/smail [ flags ] address ...
mailq
runq
rmail address ...
rsmtp
smtpd
newaliases
DESCRIPTION
Smail is a program used for receiving and delivering mail. Its job is to
take mail from sources on the local or on remote hosts and deliver to the
appropriate destinations. This may be either on remote hosts or on the
local machine. It is not intended to be a user interface for reading and
submitting mail. See mailx(1) on System V, Mail(1) on BSD systems, or
mail(1) on other systems for information on user interfaces.
Smail is invoked under a wide variety of names, which serve to isolate
some of its major uses: receiving local mail, receiving remote mail,
attempting delivery of undelivered mail and displaying information about
undelivered mail.
OPTIONS
All of these commands accept the same set of flags, differing mainly in
their default mode of operation. Two exceptions are the rmail and rsmtp
commands which support only a subset of the possible flags. These two
commands are intended to be used from remote hosts through remote
execution over UUCP (see uux(1)) and are thus limited in how much they
can do.
The flags which are recognized by smail are:
-bc Display the file COPYING, distributed with the source, which details
your rights and restrictions for distributing this software.
-bd Listen for connection requests on a socket bound in the internet
domain. When a connection occurs, conduct an SMTP (Simple Mail
Transfer Protocol) conversation with the peer process. Listening
will only occur if BSD style internet networking functionality is
available.
-bm Deliver mail to the recipient addresses. This is the default mode
of operation if invoked as sendmail, smail, rmail or send-mail.
-bp List information about the messages currently in smail's input spool
directories. This is the default mode of operation if invoked as
mailq. With the -v or -d flag, a per-message transaction log is
displayed for each message which shows what has happened to the
message so far.
-bi Initialize the aliases file, or a YP aliases file. The specific
behavior of this command depends upon whether an aliases file is
specified in the command with -oA file. If such an aliases file is
specified, the file specifies input that will be used to build a DBM
database with the same basename. The resulting DBM database is
intended to be usable as a YP database. If smail was compiled with
the sdbm package, distributed with smail, then the resulting
database will not be usable by YP. The DBM database is rebuilt by
calling mkdbm (see mkdbm(8)) with the -y option.
If an aliases file was not specified with -oA, then the system
default aliases file is rebuilt by calling the mkaliases program
(see mkaliases(8) for more information).
Both the mkdbm and mkaliases programs are executed from the
directory indicated by the smail_util_dir attribute (by default
/usr/lib/smail).
-bP Take the addresses given on the command line as config file
variables (see smail(5) for more information) and write the values
for each variable on the standard output. References to variables,
such as hostnames or uucp_name which may be computed at run time,
will yield the values that smail would compute normally. For
example, on my workstation, the command:
smail -bP hostnames max_message_size
produces the output:
futatsu.uts.amdahl.com:futatsu.amdahl.com 102400
With the -v or -d flag the variable names are displayed as well, so
that the command:
smail -bP -v max_message_size
produces the output:
max_message_size=102400
In addition to other config file variables, the name primary_name
will output the primary (or canonical) name for the local host which
will be used by smail, and config_file will output the name of the
primary configuration file. Also, the name help will produce a
verbose listing of all variables associated with their type, one
variable per line, and the name all will produce a verbose listing
of all variables along with their values. It is equivalent to smail
-bP -v followed by a list of the names of all configuration
variables.
-bR Enter the hostile mail domain of giant mail messages, and RFC
standard scrolls. Attempt to make it down to protocol level 26 and
back.
-bS Read SMTP commands on standard input, but do not produce SMTP
replies on standard output. All failures are reported by return
mail, rather than through reply codes. This 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 invoked
as rsmtp.
-bs Read SMTP commands on standard input and produce SMTP replies on
standard output. The currently implemented SMTP commands are HELO,
MAIL FROM, RCPT TO, DATA, RSET, NOOP, VRFY, EXPN and QUIT. This is
the default mode of operation if invoked as smtpd. For
compatibility with some implementations of inetd(8N), if smtpd is
started with no standard output, standard input will be dup(2)'d to
standard output.
-bt Enter address test mode. Read addresses on standard input and
produce the parse results and host routing/resolving information on
standard output. This is primarily useful for debugging smail or
debugging new smail routers.
-bv Verify a list of addresses by producing the list of addresses
produced by aliasing and forwarding expansions and by host routing
or resolving. Addresses which cannot be resolved are also
displayed, along with the reasons why.
-C filename or -oC filename
Sets the pathname of the primary config file to use in reading
global attribute values. If specified, then smail sets the
effective uid and gid back to the real uid and gid, to avoid
problems when installations allow smail to be set uid to the
superuser. If the filename is - then no primary config file is
read. This should only be used for debugging purposes.
-d[number] or -v[number]
turn on debugging. If a number is given, set the debugging level to
that value, otherwise the debugging level is set to 1. No white
space is allowed before the optional number. There is no
differentiation between use of -d and -v.
-D file
Redirect debugging output to the indicated file. Normally,
debugging output will disable background delivery because programs
should not continue to write to standard error after the mail
process exits. However, if a debug output file is specified, then
background delivery can occur.
-em or -oem
Mail errors back to the sender (default).
-ee or -oee
These forms refer to a berkenet error processing style which is not
supported. If used, errors will be mailed back to the sender.
-ep or -oep
Write errors to the standard error output.
-eq or -oeq
Do not send notification of errors to the sender. This only works
for mail delivered locally. Errors encountered on remote hosts mail
still result in returned mail. Supply a Precedence: junk header
field to set this behavior on local and remote hosts.
-ew or -oew
Write errors to the sender's terminal using the write(1) command, if
he is logged in. Otherwise, mail errors back to the sender. (This
is currently not supported and is treated in the same manner as
-oem)
-F fullname
Explicitly set the full name of the sender for incoming mail, used
only if the operation mode is reception of a single mail message on
standard input.
-f sender or -r sender
Explicitly set the sender address for incoming mail, used only if
the operation mode is reception of a single mail message on standard
input.
-h number
Sets the hopcount for a single message. If this is not specified,
the hop count is computed from the number of Received: fields in the
message header. The hopcount is used for a primitive form of
infinite loop detection: a sufficiently large hop count will cause
mail to be rejected.
-I or -oI
Use the hidden dot algorithm in reading the message. Lines with one
or more dots at the beginning have the leading dot removed, while a
line containing only a single dot ends the input message. This is
always set for messages received using SMTP.
-i or -oi
Do not allow a single `.' to end an incoming message. Otherwise, a
dot on a line by itself will end a message. This is the default if
smail is invoked as rmail.
-m or -om
Allow retention of the sender as a recipient for alias and mailing
list expansions that include the sender. If this is Not set, the
sender will not receive a copy of the message only as a result of
being in an alias or mailing list.
-N Disable delivery of this message. All other processing is
performed, and transports are expected to go through most of the
steps involved in delivery. This is useful for debugging smail when
you do not actually wish to have messages delivered.
-n Do not perform alias processing. This only prevents expansion of
entries in alias files. Mailing list files and forward files may
still be expanded.
-odb Deliver mail in background, if mail delivery is to be performed.
Background delivery is not currently supported in the SMTP modes;
foreground delivery is used instead.
-odf Deliver mail in foreground, if mail delivery is to be performed.
-oD filename
Sets the pathname of the director file. This overrides the default
name of the director file as well as any name set in a config file.
If specified, then smail sets the effective uid and gid back to the
real uid and gid, to avoid problems when installations allow smail
to be set uid to the superuser. If the filename is - then no
director file is read. This should only be used for debugging
purposes.
-oE filename
Sets the pathname of the delivery retry control file. This
overrides the default name of the retry file as well as any name set
in a config file. If specified, then smail sets the effective uid
and gid back to the real uid and gid, to avoid problems when
installations allows smail to be set uid to the superuser (the
normal case). If the filename is - then no retry file is read.
This should only be used for debugging purposes.
-oL directory name
Sets the pathname of the smail library directory. This overrides
the default value of smail_lib_dir compiled into the smail binary,
as well as any name set in a config file. This string may be used
to locate configuration files, such as the director, router and
transport files, alias and path files, and mailing list directories.
-oQ filename
Sets the pathname of the hostname qualification file. This
overrides the default name of the qualify file as well as any name
set in a config file. If specified, then smail sets the effective
uid and gid back to the real uid and gid, to avoid problems when
installations allows smail to be set uid to the superuser (the
normal case). If the filename is - then no qualify file is read.
This should only be used for debugging purposes.
-oR filename
Sets the pathname of the router file. This overrides the default
name of the router file as well as any name set in a config file.
If specified, then smail sets the effective uid and gid back to the
real uid and gid, to avoid problems when installations allows smail
to be set uid to the superuser (the normal case). If the filename
is - then no router file is read. This should only be used for
debugging purposes.
-oT filename
Sets the pathname of the transport file. This overrides the default
name of the transport file as well as any name set in a config file.
If specified, then smail sets the effective uid and gid back to the
real uid and gid, to avoid problems when installations allow smail
to be set uid to the superuser. If the filename is - then no
transport file is read. This should only be used for debugging
purposes.
-Q or -odq
Spool incoming messages but do not actually perform delivery until a
later queue. This mode of operation is somewhat more efficient in
terms of CPU usage, though it does slow down the flow of mail.
-q[interval]
Cause smail to process its input spool directory. If an interval is
given, smail will repeatedly check its input spool directory,
sleeping for the given interval between checks. The interval is in
seconds, though it can be defined as a sequence of numbers with
suffixes of `s' for seconds, `m' for minutes, `h' for hours, `d' for
days, `w' for weeks and `y' for years. For example, -q2h30m
specifies an interval of two hours and 30 minutes. This flag is
useful in conjunction with the -bd mode of operation and will cause
the daemon process to wake up on these intervals and perform queue
processing. Performing a single queue run is the default mode of
operation if smail is invoked as runq.
-t Extract addresses from the To:, Cc: and Bcc: fields of the message
header. This is useful for user agents that do not wish to compute
the recipient addresses themselves. In this mode, any addresses
given on the command line are addresses that explicitly will NOT
receive mail, even as a result of aliasing or forwarding expansions.
This option is ignored unless smail is in the mode set by the -bm
flag (which is the default mode).
-V or -bV
Print the smail version on the standard output.
-oU Report memory usage when smail exits.
-oX mail-service
Set the TCP/IP service name or port number to be used for listening
for SMTP requests. This can used in conjunction with the -bd mode
to define alternate debugging versions of the smail SMTP listening
daemon, which may be useful in testing a new installation.
-oMs sender_host
Specify the name of the system that send the mail message. This
value can be included in expansion strings through the variable
$sender_host.
-oMr sender_proto
Specify the protocol that was used by the sending host to deliver
the mail message. This value can be included in expansion strings
through the variable $sender_proto.
NORMAL USAGE
Under normal usage, one smail daemon exists which receives requests from
remote hosts and processes the input spool directory at intervals. Such
a daemon can be started from /etc/rc with a command such as
smail -bd -q1h
which will cause queue runs at one hour intervals.
New mail can be submitted from user agents by calling smail directly and
passing a message on standard input. Mailers such as BSD Mail(1) and
some System V mailx(1) programs submit mail by invoking smail with a
command such as
smail -em -i recipient-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 current run sendmail, do not need to be
modified to run smail instead.
Some user agents, such as GNU Emacs may wish to have smail decipher the
recipient list from the header. These programs may invoke smail with a
command such as
smail -em -t -i
To receive mail over UUCP, smail can be invoked directly from uuxqt as
/bin/rmail. Alternately, /bin/rmail can be another program that invokes
smail directly as
smail -em -i -fsender-address recipient address ...
It is common for the System V based /bin/rmail program to perform
delivery by itself, resulting in mail bypassing smail altogether. Such
systems should replace /bin/rmail with a copy of smail or modify
/bin/rmail so that it executes a copy of smail with the arguments as
given above.
NOTE: In the future, a separate program may be distributed with smail to
serve the function of rmail at a lower cost. This program will
only write the input spool file, while allowing a smail daemon to
process messages at a later time. This will save the cost of a
complete exec(2) of smail for each incoming message.
An alternative method of receiving mail over UUCP is through the rsmtp
command, 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 which UUX cannot
correctly pass to a remote rmail program. For example, addresses
containing quotes or spaces cannot be expected to pass correctly over an
uux/rmail link. However a uux/rsmtp link can handle such cases.
SENDMAIL COMPATIBILITY
Smail was designed to be a plug-in replacement for the BSD sendmail
program, in that external programs can call smail in the same manner that
they previously called sendmail and expect similar results. However,
smail is completely different internally and has entirely different
configuration files. As a result, the -o option to smail only sets a few
configuration parameters which were felt to be commonly used by other
programs. Also, for convenience, some new (upper case only) parameters
are defined only in smail. Attempts to set other options using this flag
are ignored. See the OPTIONS section for the complete list of supported
-o options.
Because smail can be called in a manner very similar to sendmail it is
common to install smail as /usr/lib/sendmail so that no other program
need be modified to use the new mailer. Thus, once properly configured,
smail can be installed into a current sendmail-based environment,
including an environment without access to source, with minimal effort.
SMAIL UNDER SYSTEM V
The easiest way to install smail on a System V host is to install it as
/bin/rmail. An alternative is cause mailx(1) to call /usr/lib/sendmail
by changine the mailx(1) configuration file /usr/lib/mailx/mailx.rc to
include a line such as:
sendmail=/usr/lib/sendmail
System V's mail(1) command attempts to perform delivery by itself. Use
of mail(1) to send mail should thus be discouraged unless mail(1) is
modified to call smail to perform delivery.
FILES
For many sites, the compiled in configuration of smail is sufficient and
thus no configuration files are needed. The following files and
directories are from the default smail configuration:
/usr/lib/smail/config Optional general smail configuration. This
file can override compiled-in
configuration.
/usr/lib/smail/qualify Optional hostname qualification
configuration file.
/usr/lib/smail/directors Optional configuration for smail directors,
i.e., configured methods for resolving
local addresses. This file replaces the
compiled-in director configuration.
/usr/lib/smail/routers Optional configuration for smail routers,
i.e., configured methods for resolving or
routing to remote hosts. This file
replaces the compiled-in router
configuration.
/usr/lib/smail/transports Optional configuration for smail
transports; i.e., configured methods of
mail delivery. This file replaces the
compiled-in transport configuration.
/usr/lib/smail/retry Optional delivery retry configuration file;
i.e., minimum time between retries, and
maximum time to retry before giving up.
The following files are commonly used to locally redirect mail and to
give paths to remote sites.
/usr/lib/smail/aliases A file of aliases for local addresses.
/usr/lib/smail/paths A file of paths to remote hosts.
/usr/lib/smail/lists A directory of mailing list files.
The directory for user mailbox files.
~/.forward Lists of forwarding addresses for local
users.
The smail mailer typically uses the following directories for working
storage, and to hold incoming mail messages.
/usr/spool/smail The top of the spool directory hierarchy.
/usr/spool/smail/input Smail's spool directory for incoming
messages.
/usr/spool/smail/error A directory for messages which failed for
some reason that the site administrator
should investigate.
/usr/spool/smail/msglog A directory of transaction logs for
individual messages.
/usr/spool/smail/lock A directory used in smail input spool
files.
The following files log the activity of the smail mailer. The system
administrator should check and truncate these files from time.
/usr/spool/smail/log/logfile A log of smail transactions.
/usr/spool/smail/log/paniclog A log of configuration or system errors
encountered by smail.
DIAGNOSTICS
Exits with 0 if no errors, non-0 otherwise. See /usr/include/sysexits.h
or src/exitcodes.h in the smail source for the list of possible exit
codes.
If the -bd option was used, then bind() failed: Address already in use
implies that another process is already listening on the SMTP socket.
SEE ALSO
binmail(1), mailx(1) under System V, Mail(1) under BSD, pathto(1),
smail(5), Smail Administration and Installation Guide, Smail Design
Document, DARPA Internet Requests for Comments, RFC821, RFC822 and
RFC976.
BUGS
Many mail bugs are not smail bugs. Smail can't help it if remote sites
trash your mail messages.
If you find any bugs, please mail a description to the address smail-
bugs@veritas.com, along with any code fixes that you may have.
Setting the input spool directory processing interval to a period of more
than 2147483647 seconds is silly and will result in an incorrectly
calculated processing interval.
Route-addrs on protocol level 1 are too strong.
COPYRIGHT
Copyright(C)1987, 1988 Ronald S. Karr and Landon Curt Noll
Copyright(C)1992 Ronald S. Karr
See a file COPYING, distributed with the source code, or type smail -bc
for distribution rights and restrictions associated with this software.