MAIL(C) UNIX System V
Name
mail - interactive message processing system
Syntax
mail [options] [name...]
Description
mail provides a comfortable, flexible environment for
sending and receiving messages electronically. For reading
mail, mail provides commands to facilitate saving, deleting,
and responding to messages. For sending mail, mail allows
editing, reviewing, and other modification of the message as
it is entered.
Many of the remote features of mail will only work if the
UUCP package is installed on your system.
Incoming mail is stored in a standard file for each user,
called the mailbox for that user. When mail is called to
read messages, the mailbox is the default place to find
them. As messages are read, they are marked to be moved to
a secondary file for storage, unless specific action is
taken, so that the messages need not be seen again. This
secondary file is called the mbox and is normally located in
the user's HOME directory (see MBOX under Environment
Variables). Messages can be saved in other secondary files
named by the user. Messages remain in a secondary file
until forcibly removed.
The user can access a secondary file by using the -f option
of the mail command. Messages in the secondary file can
then be read or otherwise processed using the same commands
as in the primary mailbox. This gives rise to the notion of
a current mailbox.
On the command line, options start with a dash (-) and any
other arguments are taken to be destinations (recipients).
If no recipients are specified, mail attempts to read
messages from the mailbox. Command-line options are:
-e Test for presence of mail. mail prints
nothing and exits with a successful
return code if there is mail to read.
-f [filename] Read messages from filename instead of
mailbox. If no filename is specified,
the mbox is used.
-F Record the message in a file named after
the first recipient. Overrides the
record variable, if set (see Environment
Variables).
-h number The number of network ``hops'' made so
far. This is provided for network
software to avoid infinite delivery
loops. (See addsopt under Environment
Variables).
-H Print header summary only.
-i Ignore interrupts. (See ignore under
Environment Variables).
-n Do not initialize from the system default
mailrc file.
-N Do not print initial header summary.
-r address Pass address to network delivery
software. All tilde commands are
disabled. (See addsopt under Environment
Variables).
-s subject Set the Subject header field to subject.
-u user Read user's mailbox. This is only
effective if user's mailbox is not read
protected.
-U Convert uucp style addresses to internet
standards. Overrides the conv
environment variable. (See addsopt under
Environment Variables).
When reading mail, mail is in command mode. A header
summary of the first several messages is displayed, followed
by a prompt indicating mail can accept regular commands (see
Commands below). When sending mail, mail is in input mode.
If no subject is specified on the command line, a prompt for
the subject is printed. (A subject longer than 1024
characters will cause mail to dump core.) As the message is
typed, mail will read the message and store it in a
temporary file. Commands may be entered by beginning a line
with the tilde (~) escape character followed by a single
command letter and optional arguments. See Tilde Escapes
for a summary of these commands.
At any time, the behavior of mail is governed by a set of
environment variables. These are flags and valued
parameters which are set and cleared via the set and unset
commands. See Environment Variables below for a summary of
these parameters.
Recipients listed on the command line may be of three types:
login names, shell commands, or alias groups. Login names
may be any network address, including mixed network
addressing. If mail is found to be undeliverable, an
attempt is made to return it to the sender's mailbox. If
the recipient name begins with a pipe symbol ( | ), the rest
of the name is taken to be a shell command to pipe the
message through. This provides an automatic interface with
any program that reads the standard input, such as lp(C),
for recording outgoing mail on paper. Alias groups are set
by the alias command (see Commands below) and are lists of
recipients of any type.
Regular commands are of the form:
[ command ] [ msglist ] [ arguments ]
If no command is specified in command mode, print is
assumed. In input mode, commands are recognized by the
tilde escape character, and lines not treated as commands
are taken as input for the message.
Each message is assigned a sequential number, and there is
at any time the notion of a current message, marked by a
right angle bracket (>) in the header summary. Many
commands take an optional list of messages (msglist) to
operate on. The default for msglist is the current message.
A msglist is a list of message identifiers separated by
spaces, which may include:
n Message number n.
. The current message.
^ The first undeleted message.
$ The last message.
* All messages.
n-m An inclusive range of message numbers.
user All messages from user.
/string All messages with string in the subject line
(case ignored).
:c All messages of type c, where c is one of:
d deleted messages
n new messages
o old messages
r read messages
u unread messages
Note that the context of the command determines whether this
type of message specification makes sense.
Other arguments are usually arbitrary strings whose usage
depends on the command involved. File names, where
expected, are expanded via the normal shell conventions [see
sh(C)]. Special characters are recognized by certain
commands and are documented with the commands below.
At start-up time, mail tries to execute commands from the
optional system-wide file (/usr/lib/mail/mailrc) to
initialize certain parameters, then from a private start-up
file ($HOME/.mailrc) for personalized variables. With the
exceptions noted below, regular commands are legal inside
start-up files. The most common use of a start-up file is
to set up initial display options and alias lists. The
following commands are not legal in the start-up file: !,
Copy, edit, forward, Forward, hold, mail, preserve, reply,
Reply, shell, and visual. An error in the start-up file
causes the remaining lines in the file to be ignored. The
.mailrc file is optional and must be constructed locally.
Commands
The following is a complete list of mail commands:
!shell-command
Execute shell command and return. (See SHELL under
Environment Variables).
# comment
Null command (comment). This may be useful in .mailrc
files.
=
Print the current message number.
?
Print a summary of commands.
alias alias name ...
group alias name ...
Declare an alias for the given names. The names will
be substituted when alias is used as a recipient.
Useful in the .mailrc file.
alternates name ...
Declare a list of alternate names for your login. When
responding to a message, these names are removed from
the list of recipients for the response. With no
arguments, alternates prints the current list of
alternate names. (See allnet under Environment
Variables).
cd [directory]
chdir [directory]
Change directory. If directory is not specified, $HOME
is used.
copy [filename]
copy [msglist] filename
Copy messages to the file without marking the messages
as saved. Otherwise equivalent to the save command.
Copy [msglist]
Save the specified messages in a file whose name is
derived from the author of the message to be saved,
without marking the messages as saved. Otherwise
equivalent to the Save command.
delete [msglist]
Delete messages from the mailbox. If autoprint is set,
the next message after the last one deleted is printed
(see Environment Variables).
discard [header-field ...]
ignore [header-field ...]
Suppress printing of the specified header fields when
displaying messages on the screen. Examples of header
fields to ignore are ``status'' and ``cc''. The fields
are included when the message is saved. The Print and
Type commands override these commands.
dp [msglist]
dt [msglist]
Delete the specified messages from the mailbox and
print the next message after the last one deleted.
Roughly equivalent to a delete command followed by a
print command.
echo string ...
Echo the given strings [like echo(C)].
edit [msglist]
Edit the given messages. The messages are placed in a
temporary file and the EDITOR variable is used to get
the name of the editor (see Environment Variables).
Default editor is ed(C).
exit
xit
Exit from mail without changing the mailbox. No
messages are saved in the mbox (see also quit).
file [filename]
folder [filename]
Quit from the current file of messages and read in the
specified file. Several special characters are
recognized when used as file names, with the following
substitutions:
% the current mailbox.
%user the mailbox for user.
# the previous file.
& the current mbox.
Default file is the current mailbox.
folders
Print the names of the files in the directory set by the
folder variable (see Environment Variables).
forward [message] name ...
Forward the specified message to the specified users,
shifting the forwarded text to the right one tab stop.
Forward [message] name ...
Forward the specified message to the specified users, with
no indentation.
from [msglist]
Prints the header summary for the specified messages.
group alias name ...
See alias.
headers [+ | - | msglist]
Lists the current range of headers. The screen variable sets
the number of headers per page (see Environment Variables).
If a ``+'' argument is given, then the next page is printed,
and if a ``-'' argument is given, the previous page is
printed. Both ``+'' and ``-'' can take a number to view a
particular window. If a message list is given, it prints
the specified headers, disregarding all windowing. See also
the z command.
help
Prints a summary of commands.
hold [msglist]
preserve [msglist]
Holds the specified messages in the mailbox.
if s | r
mail-commands
else
mail-commands
endif
Conditional execution, where s causes the first mail
commands, up to an else or endif to be executed if the
program is in send mode, and r causes the mail commands to
be executed only in receive mode. The mail-commands after
the else are executed if the program is in the opposite mode
from the one indicated. Useful in the .mailrc file.
ignore header-field ...
discard header-field ...
Suppresses printing of the specified header fields when
displaying messages on the screen. Examples of header
fields to ignore are ``status'' and ``cc''. All fields are
included when the message is saved. The Print and Type
commands override this command.
list
Prints all commands available. No explanation is given.
lpr [msglist]
Print the specified messages on the lineprinter.
mail name ...
Mail a message to the specified users.
Mail name
Mail a message to the specified user and record a copy of it
in a file named after that user.
mbox [msglist]
Arrange for the given messages to end up in the standard
mbox save file when mail terminates normally. See the exit
and quit commands.
next [message]
Go to next message matching message. A msglist may be
specified, but in this case the first valid message in the
list is the only one used. This is useful for jumping to
the next message from a specific user, since the name would
be taken as a command in the absence of a real command. See
the discussion of msglists above for a description of
possible message specifications.
pipe [msglist] [shell-command]
| [msglist] [shell-command]
Pipe the message through the given shell-command. The
message is treated as if it were read. If no arguments are
given, the current message is piped through the command
specified by the value of the cmd variable. If the page
variable is set, a form feed character is inserted after
each message (see Environment Variables).
preserve [msglist]
See hold.
Print [msglist]
Type [msglist]
Print the specified messages on the screen, including all
header fields. Overrides suppression of fields by the
ignore command.
print [msglist]
type [msglist]
Print the specified messages. If crt is set, the messages
longer than the number of lines specified by the crt
variable are paged through the command specified by the
PAGER variable. The default command is more(C) (see
Environment Variables).
quit
Exit from mail, storing messages that were read in mbox and
unread messages in the mailbox. Messages that have been ex-
plicitly saved in a file are deleted from the mailbox.
Reply [msglist]
Respond [msglist]
Reply to the specified message, including all other
recipients of the message. If record is set to a file name,
the response is saved at the end of that file (see
Environment Variables).
reply [message]
respond [message]
Send a response to the author of each message in the
msglist. The subject line is taken from the first message.
If record is set to a file name, the response is saved at
the end of that file (see Environment Variables).
Save [msglist]
Save the specified messages in a file whose name is derived
from the author of the first message. The name of the file
is taken to be the author's name with all network addressing
stripped off. See also the Copy commands and outfolder
(Environment Variables).
save [filename]
save [msglist] filename
Save the specified messages in the given file. The file is
created if it does not exist. The message is deleted from
the mailbox when mail terminates unless keepsave is set (see
also Environment Variables and the exit and quit commands).
set
set name
set name=string
set name=number
Define a variable called name. The variable may be given a
null, string, or numeric value. Set by itself prints all
defined variables and their values. See Environment
Variables for detailed descriptions of the mail variables.
shell
Invoke an interactive shell (see SHELL under Environment
Variables).
size [msglist]
Print the size in characters of the specified messages.
source filename
Read commands from the given file and return to command
mode.
top [msglist]
Print the top few lines of the specified messages. If the
toplines variable is set, it is taken as the number of lines
to print (see Environment Variables). The default is 5.
touch [msglist]
Touch the specified messages. If any message in msglist is
not specifically saved in a file, it will be placed in the
mbox, or the file specified in the MBOX environment
variable, upon normal termination. See exit and quit.
Type [msglist]
See Print.
type [msglist]
See print.
undelete [msglist]
Restore the specified deleted messages. Will only restore
messages deleted in the current mail session. If autoprint
is set, the last message of those restored is printed (see
Environment Variables).
unset name ...
Causes the specified variables to be erased. If the
variable was imported from the execution environment (i.e.,
a shell variable), then it cannot be erased.
version
Prints the current version and release date.
visual [msglist]
Edit the given messages with a screen editor. The messages
are placed in a temporary file and the VISUAL variable is
used to get the name of the editor (see Environment
Variables).
write [msglist] filename
Write the given messages on the specified file, minus the
header and trailing blank line. Otherwise equivalent to the
save command.
xit
See exit. quit).
z[+ | -]
Scroll the header display forward or backward one full
screen. The number of headers displayed is set by the
screen variable (see Environment Variables).
Tilde Escapes
The following commands may be entered only from input mode,
by beginning a line with the tilde escape character (~).
See escape under Environment Variables for changing this
special character.
~! shell-command
Execute the shell command and return.
~.
Simulate end of file (terminate message input).
~: command
~ command
Perform the command-level request. Valid only when
sending a message while reading mail.
~?
Print a summary of tilde escapes.
~A
Insert the autograph string Sign into the message (see
Environment Variables).
~a
Insert the autograph string sign into the message (see
Environment Variables).
~b name ...
Add the names to the blind carbon copy (Bcc) list.
~c name ...
Add the names to the carbon copy (Cc) list.
~d
Read in the dead.letter file. (See DEAD under
Environment Variables for a description of this file.)
~e
Invoke the editor on the partial message. (See EDITOR
under Environment Variables.)
~f [msglist]
Forward the specified messages. The messages are
inserted into the message without alteration.
~h
Prompt for Subject line and To, Cc, Bcc, and Return-
Receipt-to lists. If the field is displayed with an
initial value, it may be edited as if you had just
typed it.
~i variable
Insert the value of the named variable into the text of
the message. For example, ~A is equivalent to
'~i Sign.' Environment variables set and exported in
the shell are also accessible by ~i.
~M [msglist]
Insert the specified messages into the letter, with no
indentation. Valid only when sending a message while
reading mail.
~m [msglist]
Insert the specified messages into the letter, shifting
the new text to the right one tab stop. Valid only
when sending a message while reading mail.
~p
Print the message being entered.
~q
Quit from input mode by simulating an interrupt. If
the body of the message is not null, the partial
message is saved in dead.letter. (See DEAD under
Environment Variables).
~r filename
~~< filename
~~< !shell-command
Read in the specified file. If the argument begins
with an exclamation point (!), the rest of the string
is taken as an arbitrary shell command and is executed,
with the standard output inserted into the message.
~s string ...
Set the subject line to string.
~t name ...
Add the given names to the To list.
~v
Invoke a preferred screen editor on the partial
message. (See also VISUAL under Environment
Variables.)
~w filename
Write the partial message onto the given file, without
the header.
~x
Exit as with ~q except the message is not saved in
dead.letter.
~| shell-command
Pipe the body of the message through the given shell-
command. If the shell-command returns a successful
exit status, the output of the command replaces the
message.
Environment Variables
The following are environment variables taken from the
execution environment and are not alterable within mail.
HOME=directory
The user's base of operations.
MAILRC=filename
The name of the start-up file. Default is
$HOME/.mailrc.
The following variables are internal mail variables. They
may be imported from the execution environment or set via
the set command at any time. The unset command may be used
to erase variables.
addsopt
Enabled by default. If /bin/mail is not being used as
the deliverer, noaddsopt should be specified. (See
Notes below)
allnet
All network names whose last component (login name)
match are treated as identical. This causes the
msglist message specifications to behave similarly.
Default is noallnet. See also the alternates command
and the metoo variable.
append
Upon termination, append messages to the end of the
mbox file instead of prepending them. Default is
noappend.
askcc
Prompt for the Cc list after message is entered.
Default is noaskcc.
asksub
Prompt for subject if it is not specified on the
command line with the -s option. Enabled by default.
autoprint
Enable automatic printing of messages after delete and
undelete commands. Default is noautoprint.
bang
Enable the special-casing of exclamation points (!) in
shell escape command lines as in vi(C). Default is
nobang.
chron
Causes messages to be displayed in chronological order.
The default is reverse chronological order (most recent
message first). See also mchron below.
cmd=shell-command
Set the default command for the pipe command. Not set
by default.
conv=conversion
Convert uucp addresses to the specified address style.
The only valid conversion now is internet, which
requires a mail delivery program conforming to the
RFC822 standard for electronic mail addressing.
Conversion is disabled by default. See also the
sendmail variable and the -U command-line option.
crt=number
Pipe messages having more than number lines through the
command specified by the value of the PAGER variable
(more(C) by default). Disabled by default.
DEAD=filename
The name of the file in which to save partial letters
in case of untimely interrupt. Default is
$HOME/dead.letter.
debug
Enable verbose diagnostics for debugging. Messages are
not delivered. Default is nodebug.
dot
Take a period on a line by itself during input from a
terminal as end-of-file. Default is nodot.
EDITOR=shell-command
The command to run when the edit or ~e command is used.
Default is ed(C).
escape=c
Substitute c for the ~ escape character. Takes effect
with next message sent.
folder=directory
The directory for saving standard mail files. User-
specified file names beginning with a plus (+) are
expanded by preceding the file name with this directory
name to obtain the real file name. If directory does
not start with a slash (/), $HOME is prepended to it.
In order to use the plus (+) construct on a mail
command line, folder must be an exported sh environment
variable. There is no default for the folder variable.
See also outfolder below.
header
Enable printing of the header summary when entering
mail. Enabled by default.
hold
Preserve all messages that are read in the mailbox
instead of putting them in the standard mbox save file.
Default is nohold.
ignore
Ignore interrupts while entering messages. Handy for
noisy dial-up lines. Default is noignore.
ignoreeof
Ignore end-of-file during message input. Input must be
terminated by a period (.) on a line by itself or by
the ~. command. Default is noignoreeof. See also the
dot variable above.
keep
When the mailbox is empty, truncate it to zero length
instead of removing it. Disabled by default.
keepsave
Keep messages that have been saved in other files in
the mailbox instead of deleting them. Default is
nokeepsave.
MBOX=filename
The name of the file to save messages which have been
read. The xit command overrides this function, as does
saving the message explicitly in another file. Default
is $HOME/mbox.
mchron
Causes message headers to be listed in numerical order
(most recently received first), but displayed in
chronological order. See also chron above.
metoo
If your login appears as a recipient, do not delete it
from the list. Default is nometoo.
LISTER=shell-command
The command (and options) to use when listing the
contents of the folder directory. The default is
ls(C).
onehop
When responding to a message that was originally sent
to several recipients, the other recipient addresses
are normally forced to be relative to the originating
author's machine for the response. This flag disables
alteration of the recipients' addresses, improving
efficiency in a network where all machines can send
directly to all other machines (i.e., one hop away).
outfolder
Record outgoing messages in files located in the
directory specified by the folder variable unless the
path name is absolute. Default is nooutfolder. See
the folder variable above and the Save and Copy
commands.
page
Used with the pipe command to insert a form feed after
each message sent through the pipe. Default is nopage.
PAGER=shell-command
Use shell-command as a filter for paginating output.
This can also be used to specify the options to be
used. Default is more(C).
prompt=string
Set the command mode prompt to string. Default is ? .
quiet
Refrain from printing the opening message and version
when entering mail. Default is noquiet.
record=filename
Record all outgoing mail in filename. Disabled by
default. See also outfolder above.
save
Enable saving of messages in dead.letter on interrupt
or delivery error. See DEAD for a description of this
file. Enabled by default.
screen=number
Sets the number of lines in a full screen of headers
for the headers command.
sendmail=shell-command
Alternate command for delivering messages. Default is
/bin/rmail(C).
sendwait
Wait for background mailer to finish before returning.
Default is nosendwait.
SHELL=shell-command
The name of a preferred command interpreter. Default
is sh(C).
showto
When displaying the header summary and the message is
from you, print the recipient's name instead of the
author's name.
sign=string
The variable inserted into the text of a message when
the ~a (autograph) command is given. Not set by
default (see ~i under Tilde Escapes).
Sign=string
The variable inserted into the text of a message when
the ~A command is given. Not set by default (see also
~i under Tilde Escapes).
toplines=number
The number of lines of header to print with the top
command. Default is 5.
VISUAL=shell-command
The name of a preferred screen editor. Default is
vi(C).
Files
$HOME/.mailrc personal start-up file
$HOME/mbox secondary storage file
/usr/spool/mail post office directory
/usr/lib/mail/mail.help* help message files
/usr/lib/mail/mailrc optional global start-up file
/tmp/R[emqsx]* temporary files
See Also
ls(C), mail(C), more(C)
Notes
The -h, -r and -U options can be used only if mail is built
with a delivery program other than /bin/mail.
Where shell-command is shown as valid, arguments are not
always allowed. Experimentation is recommended.
Internal variables imported from the execution environment
cannot be unset.
The full internet addressing is not fully supported by mail.
The new standards need some time to settle down.
A line consisting only of a ``.'' is treated as the end of
the message.
Standards Conformance
mail is conformant with:
AT&T SVID Issue 2, Select Code 307-127;
and The X/Open Portability Guide II of January 1987.
(printed 8/28/89) MAIL(C)