mail(1) User Commands mail(1)
mail, rmail - read mail or send mail to users
mail [-tw] [-m message_type] recipient...
rmail [-tw] [-m message_type] recipient...
mail [-ehpPqr] [-f file]
mail [-x debug_level] [other_mail_options] recipient...
A recipient is usually a domain style address ("user@machine") or a user name recognized
by login(1). When recipients are named, mail assumes a message is being sent. It reads
from the standard input up to an end-of-file (Control-d) or, if reading from a terminal
device, until it reads a line consisting of just a period. When either of those indicators
is received, mail adds the letter to the mailfile for each recipient.
A letter is composed of some header lines followed by a blank line followed by the message
content. The header lines section of the letter consists of one or more UNIX postmarks:
From sender date_and_time [remote from remote_system_name]
followed by one or more standardized message header lines of the form:
keyword-name: [printable text]
where keyword-name is comprised of any printable, non-whitespace characters other than
colon (`:'). A MIME-version: header line indicates that the message is formatted as
described in RFC 2045. A Content-Length: header line, indicating the number of bytes in
the message content, is always present unless the letter consists of only header lines
with no message content. A Content-Type: header line that describes the type of the mes-
sage content (such as text/plain, application/octet-stream, and so on) is also present,
unless the letter consists of only header lines with no message content. Header lines may
be continued on the following line if that line starts with white space.
The following command-line arguments affect sending mail:
-m message_type A Message-Type: line is added to the message header with the value of
-t A To: line is added to the message header for each of the intended
-w A letter is sent to a remote recipient without waiting for the comple-
tion of the remote transfer program.
If a letter is found to be undeliverable, it is returned to the sender with diagnostics
that indicate the location and nature of the failure. If mail is interrupted during input,
the message is saved in the file dead.letter to allow editing and resending. dead.letter
is always appended to, thus preserving any previous contents. The initial attempt to
append to (or create) dead.letter is in the current directory. If this fails, dead.letter
is appended to (or created in) the user's login directory. If the second attempt also
fails, no dead.letter processing is done.
rmail only permits the sending of mail; uucp(1C) uses rmail as a security precaution. Any
application programs that generate mail messages should be sure to invoke rmail rather
than mail for message transport and/or delivery.
If the local system has the Basic Networking Utilities installed, mail can be sent to a
recipient on a remote system. There are numerous ways to address mail to recipients on
remote systems depending on the transport mechanisms available to the local system. The
two most prevalent addressing schemes are Domain-style and UUCP-style.
Domain-style addressing Remote recipients are specified by appending an `@' and domain
(and possibly sub-domain) information to the recipient name
(such as firstname.lastname@example.org). (The local system administrator
should be consulted for details on which addressing conventions
are available on the local system.)
UUCP-style addressing Remote recipients are specified by prefixing the recipient name
with the remote system name and an exclamation point, such as
sysa!user. If csh(1) is the default shell, sysa\!user should be
used. A series of system names separated by exclamation points
can be used to direct a letter through an extended network
(such as sysa!sysb!sysc!user or sysa\!sysb\!sysc\!user).
The following command-line arguments affect reading mail:
-e Test for the presence of mail. mail prints nothing.
An exit status of 0 is returned if the user has mail. Otherwise, an exit status
of 1 is returned.
-E Similar to -e, but tests only for the presence of new mail.
An exit status of 0 is returned if the user has new mail to
read, an exit status of 1 is returned if the user has no mail, or
an exit status of 2 is returned if the user has mail which has
already been read.
-h A window of headers are initially displayed rather than the latest message. The
display is followed by the ? prompt.
-p All messages are printed without prompting for disposition.
-P All messages are printed with all header lines displayed, rather than the
default selective header line display.
-q mail terminates after interrupts. Normally an interrupt causes only the termi-
nation of the message being printed.
-r Messages are printed in first-in, first-out order.
-f file mail uses file (such as mbox) instead of the default mailfile.
mail, unless otherwise influenced by command-line arguments, prints a user's mail messages
in last-in, first-out order. The default mode for printing messages is to display only
those header lines of immediate interest. These include, but are not limited to, the UNIX
From and >From postmarks, From:, Date:, Subject:, and Content-Length: header lines, and
any recipient header lines such as To:, Cc:, Bcc:, and so forth. After the header lines
have been displayed, mail displays the contents (body) of the message only if it contains
no unprintable characters. Otherwise, mail issues a warning statement about the message
having binary content and not display the content. This can be overridden by means of the
For each message, the user is prompted with a ? and a line is read from the standard
input. The following commands are available to determine the disposition of the message:
# Print the number of the current message.
- Print previous message.
<new-line>,+, or n Print the next message.
!command Escape to the shell to do command.
a Print message that arrived during the mail session.
d, or dp Delete the current message and print the next message.
d n Delete message number n. Do not go on to next message.
dq Delete message and quit mail.
h Display a window of headers around current message.
hn Display a window of headers around message number n.
h a Display headers of all messages in the user's mailfile.
h d Display headers of messages scheduled for deletion.
m [ persons ] Mail (and delete) the current message to the named persons.
n Print message number n.
p Print current message again, overriding any indications of binary
(that is, unprintable) content.
P Override default brief mode and print current message again, dis-
playing all header lines.
q, or Control-d Put undeleted mail back in the mailfile and quit mail.
r [ users ] Reply to the sender, and other users, then delete the message.
s [ files ] Save message in the named files (mbox is default) and delete the
u [ n ] Undelete message number n (default is last read).
w [ files ] Save message contents, without any header lines, in the named files
(mbox is default) and delete the message.
x Put all mail back in the mailfile unchanged and exit mail.
y [ files ] Same as -w option.
? Print a command summary.
When a user logs in, the presence of mail, if any, is usually indicated. Also, notifica-
tion is made if new mail arrives while using mail.
The permissions of mailfile can be manipulated using chmod(1) in two ways to alter the
function of mail. The other permissions of the file can be read-write(0666), read-only(0664), or neither read nor write(0660) to allow different levels of privacy. If changed
to other than the default (mode 0660), the file is preserved even when empty to perpetuate
the desired permissions. (The administrator can override this file preservation using the
DEL_EMPTY_MAILFILE option of mailcnfg.)
The group ID of the mailfile must be mail to allow new messages to be delivered, and the
mailfile must be writable by group mail.
The following command-line arguments cause mail to provide debugging information:
-x debug_level mail creates a trace file containing debugging information.
The -x option causes mail to create a file named /tmp/MLDBGprocess_id that contains debug-
ging information relating to how mail processed the current message. The absolute value of
debug_level controls the verboseness of the debug information. 0 implies no debugging. If
debug_level is greater than 0, the debug file is retained only if mail encountered some
problem while processing the message. If debug_level is less than 0, the debug file is
always be retained. The debug_level specified via -x overrides any specification of DEBUG
in /etc/mail/mailcnfg. The information provided by the -x option is esoteric and is proba-
bly only useful to system administrators.
Several forms of notification are available for mail by including one of the following
lines in the message header.
Transport-Options: [ /options ]
Default-Options: [ /options ]
>To: recipient [ /options ]
Where the "/options" can be one or more of the following:
/delivery Inform the sender that the message was successfully delivered to the recip-
/nodelivery Do not inform the sender of successful deliveries.
/ignore Do not inform the sender of failed deliveries.
/return Inform the sender if mail delivery fails. Return the failed message to the
/report Same as /return except that the original message is not returned.
The default is /nodelivery/return. If contradictory options are used, the first is recog-
nized and later, conflicting, terms are ignored.
The following operand is supported for sending mail:
recipient A domain style address ("user@machine") or user login name recognized by
See largefile(5) for the description of the behavior of mail and rmail when encountering
files greater than or equal to 2 Gbyte ( 2^31 bytes).
See environ(5) for descriptions of the following environment variables that affect the
execution of mail: LC_CTYPE, LC_MESSAGES, and NLSPATH.
TZ Determine the timezone used with date and time strings.
The following exit values are returned:
0 Successful completion when the user had mail.
1 The user had no mail or an initialization error occurred.
>1 An error occurred after initialization.
dead.letter unmailable text
/etc/passwd to identify sender and locate recipients
$HOME/mbox saved mail
$MAIL variable containing path name of mailfile
/tmp/MLDBG* debug trace file
/var/mail/*.lock lock for mail directory
/var/mail/:saved directory for holding temp files to prevent loss of data in the event
of a system crash
/var/mail/user incoming mail for user; that is, the mailfile
var/tmp/ma* temporary file
See attributes(5) for descriptions of the following attributes:
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
|Availability |SUNWcsu |
chmod(1), csh(1), login(1), mailx(1), uucp(1C), uuencode(1C), vacation(1), write(1),
attributes(5), environ(5), largefile(5)
Solaris Advanced User's Guide
The interpretation and resulting action taken because of the header lines described in the
Delivery Notifications section only occur if this version of mail is installed on the sys-
tem where the delivery (or failure) happens. Earlier versions of mail might not support
any types of delivery notification.
Conditions sometimes result in a failure to remove a lock file.
After an interrupt, the next message might not be printed. Printing can be forced by typ-
ing a p.
SunOS 5.11 24 Jul 2008 mail(1)