| MAIL(1) | General Commands Manual | MAIL(1) |
mail, mailx,
Mail — send and receive
mail
mail |
[-dEIinv]
[-a header]
[-b bcc-addr]
[-c cc-addr]
[-r from-addr]
[-s subject]
[--] to-addr ... |
mail |
[-dEIiNnv] -f
[file] |
mail |
[-dEIiNnv] [-u
user] |
mail is an intelligent mail processing
system which has a command syntax reminiscent of ed(1)
with lines replaced by messages.
The options are as follows:
-amail adds by default to each outgoing mail, see
Character sets and MIME
below. You have to use quotes if the string contains spaces. This argument
may be specified more than once, the headers will then be
concatenated.-b
bcc-addr-c
cc-addr-dmail to output all sorts of information
useful for debugging mail.-E-fmail writes undeleted messages back to
this file.-Imail to run in interactive mode, even when
input is not a terminal. In particular, the special
~ command character, used when sending mail, is
only available interactively.-imail on noisy phone lines.-N-n-r
from-addr-s
subject-s flag is used as a subject; be careful to quote
subjects containing spaces).-u
user$ mail -f
/var/mail/userexcept that locking is done.
-v--Note:
For security reasons the -- separator is
strongly recommended for scripts that need to send mails to addresses
obtained from untrusted sources (such as web forms).
At startup time, mail will execute
commands in the system command file, /etc/mail.rc,
unless explicitly told not to by using the -n
option. Next, the commands in the user's personal command file
~/.mailrc are executed. mail
then examines its command line options to determine whether the user
requested a new message to be sent or existing messages in a mailbox to be
examined.
To send a message to one or more people,
mail can be invoked with arguments which are the
names of people to whom the mail will be sent. You are then expected to type
in your message, followed by a control-D (‘^D’) at the
beginning of a line. The section below,
Replying to or
originating mail, describes some features of
mail available to help you compose your letter.
In normal usage, mail is given no
arguments and checks your mail out of the post office, then prints out a one
line header of each message found. The current message is initially set to
the first message (numbered 1) and can be printed using the
print command (which can be abbreviated
p). Moving among the messages is much like moving
between lines in ed(1); you may use
+ and - to shift forwards
and backwards, or simply enter a message number to move directly.
After examining a message, you can delete
(d) or reply
(r) to it. Deletion causes the
mail program to forget about the message. This is
not irreversible; the message can be undeleted
(u) by giving its number, or the
mail session can be aborted by giving the
exit (x) command. Deleted
messages, however, will usually disappear, never to be seen again.
Commands such as print and
delete can be given a list of message numbers as
arguments to apply to a number of messages at once. Thus
delete 1 2 deletes messages 1 and 2, while
delete 1-5 deletes messages 1 through 5.
Messages may also be selected using one of the following categories:
Thus the command top, which prints the
first few lines of a message, could be used in top *
to print the first few lines of all messages.
You can use the reply command to set up a
response to a message, sending it back to the person who it was from. Text
you then type in, up to an end-of-file, defines the contents of the message.
While you are composing a message, mail treats lines
beginning with the tilde (‘~’) character specially. For
instance, typing ~m (alone on a line) will place a
copy of the current message into the response, right shifting it by a single
tab-stop (see the indentprefix variable, below). Other
escapes will set up subject fields, add and delete recipients to the
message, and allow you to escape to an editor to revise the message or to a
shell to run some commands. (These options are given in the summary
below.)
You can end a mail session with the
quit (q) command. Messages
which have been examined go to your mbox file unless
they have been deleted, in which case they are discarded. Unexamined
messages go back to the post office (see the -f
option above).
It is also possible to create personal distribution lists so that,
for instance, you can send mail to
“cohorts” and have it go to a group of
people. Such lists can be defined by placing a line like
alias cohorts bill ozalp jkf mark
kridle@ucbcoryin the file .mailrc in your home
directory. The current list of such aliases can be displayed with the
alias command in mail.
System wide distribution lists can be created by editing
/etc/aliases, (see aliases(5));
these are kept in a different syntax. In mail you send, personal aliases
will be expanded in mail sent to others so that they will be able to
reply to the recipients. System wide aliases are not
expanded when the mail is sent, but any reply returned to the machine will
have the system wide alias expanded as all mail goes through an MTA.
Recipient addresses (any of the “To”,
“Cc” or “Bcc” header fields) are subject to
expansion when the expandaddr option is set.
An address may be expanded as follows:
|’) character is treated as a
command to run. The command immediately following the
‘|’ is executed with the message as
its standard input.+’
character is treated as a folder./’
character but no ‘!’,
‘%’, or
‘@’ characters is also treated as a
folder.If the expandaddr option is not set (the
default), no expansion is performed and the recipient is treated as a local
or network mail address.
Generally mail does not handle neither
different character sets nor any other MIME feature. Especially it does not
perform any any conversions between character sets while displaying or
sending mails.
Starting from April 2017, however, as a Debian extension this
version of mail adds a few MIME headers to every
outgoing mail in order to indicate that the mail is sent as 8-bit plain text
data that uses character set encoding detected from the current
locale(7) settings. The -a
command-line option can be used to override those headers, for example:
$ mail -a 'Content-Type: text/plain;
charset="ISO-8859-1"'(Adapted from the “Mail Reference Manual”.)
Each command is typed on a line by itself, and may take arguments
following the command word. The command need not be typed in its entirety
— the first command which matches the typed prefix is used. For
commands which take message lists as arguments, if no message list is given,
then the next message forward which satisfies the command's requirements is
used. If there are no messages forward of the current message, the search
proceeds backwards, and if there are no good messages at all,
mail types “No applicable messages”
and aborts the command.
-=?!aliasa) With no arguments, prints out all currently
defined aliases. With one argument, prints out that alias. With more than
one argument, creates a new alias or changes an old one.alternatesalt) The alternates
command is useful if you have accounts on several machines. It can be used
to inform mail that the listed addresses are
really you. When you reply to messages,
mail will not send a copy of the message to any of
the addresses listed on the alternates list. If
the alternates command is given with no argument,
the current set of alternate names is displayed.chdircd or ch) Changes the
user's working directory to that specified, if given. If no directory is
given, then changes to the user's login directory.copyc) The copy command does
the same thing that save does, except that it does
not mark the messages it is used on for deletion when you quit.deleted) Takes a list of messages as argument and marks
them all as deleted. Deleted messages will not be saved in
mbox, nor will they be available for most other
commands.dpdt) Deletes the current message and prints
the next message. If there is no next message,
mail says “No more
messages.”edite) Takes a list of messages and points the text
editor at each one in turn. On return from the editor, the message is read
back in.exitex or x) Effects an
immediate return to the shell without modifying the user's system mailbox,
mbox file, or edit file in
-f.filefi) The same as
folder.folderfo) The folder command
switches to a new mail file or folder. With no arguments, it tells you
which file you are currently reading. If you give it an argument, it will
write out changes (such as deletions) you have made in the current file
and read in the new file. Some special conventions are recognized for the
name. # means the previous file, % means your system mailbox, %user means
user's system mailbox, & means your mbox file,
and +folder means a file in your folder directory.foldersfromf) Takes a list of messages and prints their
message headers.headersh) Lists the current windowful of headers. To
view the next or previous group of headers, see the
z command.help?.holdho, also preserve) Takes
a message list and marks each message therein to be saved in the user's
system mailbox instead of in mbox. Does not override
the delete command.ignoreType and Print commands
can be used to print a message in its entirety, including ignored fields.
If ignore is executed with no arguments, it lists
the current set of ignored fields.inclistl) List the valid mail
commands.mailm) Takes as argument login names and distribution
group names and sends mail to those people.mboxhold option set.moremo) Takes a message list and invokes the pager on
that list.nextn) (like + or CR) Goes to
the next message in sequence and types it. With an argument list, types
the next matching message.preservepre) A synonym for
hold.PrintP) Like print but also
prints out ignored header fields. See also print,
ignore, and retain.printp) Takes a message list and types out each
message on the user's terminal.quitq) Terminates the session, saving all undeleted,
unsaved messages in the mbox file in the user's
login directory, preserving all messages marked with
hold or preserve or never
referenced in the user's system mailbox, and removing all other messages
from the user's system mailbox. If new mail has arrived during the
session, the message “You have new
mail” is given. If given while editing a mailbox file with
the -f flag, then the edit file is rewritten. A
return to the shell is effected, unless the rewrite of edit file fails, in
which case the user can escape with the exit
command.ReplyR) Reply to originator. Does not reply to other
recipients of the original message.replyr) Takes a message list and sends mail to the
sender and all recipients of the specified message. The default message
must not be deleted.respondreply.retainType and Print
commands can be used to print a message in its entirety. If
retain is executed with no arguments, it lists the
current set of retained fields.saves) Takes a message list and a filename and
appends each message in turn to the end of the file. The filename in
quotes, followed by the line count and character count is echoed on the
user's terminal.saveignoresaveignore
is to save what ignore is
to print and type. Header
fields thus marked are filtered out when saving a message by
save or when automatically saving to
mbox.saveretainsaveretain
is to save what retain is
to print and type. Header
fields thus marked are the only ones saved with a message when saving by
save or when automatically saving to
mbox. saveretain overrides
saveignore.setse) With no arguments, prints all variable
values. Otherwise, sets option. Arguments are of the form
option=value (no space before or after =) or
option. Quotation marks may be placed around any
part of the assignment statement to quote blanks or tabs, i.e.,
set indentprefix="->".shellsh) Invokes an interactive version of the
shell.sizesourcesource command reads commands from a
file.toptoplines and defaults to five.TypeT) Identical to the Print
command.typet) A synonym for
print.unaliasalias commands
and discards the remembered groups of users. The group names no longer
have any significance.undeleteu) Takes a message list and marks each message as
not being deleted.unreadU) Takes a message list and marks each message as
not having been read.unsetset.visualv) Takes a message list and invokes the display
editor on each message.writew) Similar to save,
except that only the message body (without the
header) is saved. Extremely useful for such tasks as sending and receiving
source program text over the message system.xitx) A synonym for
exit.zmail presents message headers in windowfuls as
described under the headers command. You can move
mail's attention forward to the next window with
the z command. Also, you can move to the previous
window by using z-.Here is a summary of the tilde escapes, which are used when
composing messages to perform special functions. Tilde escapes are only
recognized at the beginning of lines. The name “tilde escape”
is somewhat of a misnomer since the actual escape character can be set by
the option escape.
~bname
...~cname
...~d~e~Fmessages~f, except all message headers are
included.
~fmessagesignore or
retain command) are not included.
~h~Mmessages~m, except all message headers are
included.
~mmessagesignore or
retain command) are not included.
~p~qsave is set.~Rstring~rfilename~<filename~sstring~tname
...~vVISUAL
option) on the message collected so far. Usually, the alternate editor
will be a screen editor. After you quit the editor, you may resume
appending text to the end of your message.
~wfilename~xsave is set.
~?~!command~|commandcommand to rejustify the message.
~:mail-command~_mail-command~~string~.A number of options can be set in the
.mailrc file to alter the behavior of
mail, controlled via the set
and unset commands. Options may be either binary, in
which case it is only significant to see whether they are set or not; or
string, in which case the actual value is of interest. The binary options
include the following:
mail to prompt you for the subject of each
message you send. If you respond with simply a newline, no subject field
will be sent.inc command at each
prompt, except that the current message is not reset when new mail
arrives.delete command to behave like
dp; thus, after deleting a message, the next one
will be typed automatically.-d on the command line and causes
mail to output all sorts of information useful for
debugging mail.mail to interpret a period alone on a line as the
terminator of a message you are sending.mail to expand message recipient addresses,
as explained in the section
Recipient address
specifications.mail to use the specified sender address in
the “From:” field of the message header. A stripped down
version of the address is also used in the message envelope. If unset, the
message will not include an explicit sender address and a default value
will be added by the MTA, typically “user@host”. This value
can be overridden by specifying the -r flag on the
command line.mail
refuse to accept a control-D as the end of a message.
ignoreeof also applies to
mail command mode.mail to truncate your
system mailbox instead of deleting it when it's empty.save command are not
normally saved in mbox at quit time. Use this option
to retain those messages.-N flag on the command line.mail copies the partial letter to the
file dead.letter in your home directory. Setting
the binary option nosave prevents this.reply and
Reply commands.-v flag on the command line. When
mail runs in verbose mode, the actual delivery of
messages is displayed on the user's terminal.EDITORedit
command and ~e escape. If not defined,
/usr/bin/ex is used.LISTERfolders command. Default is
/bin/ls.MBOXmbox” in the
user's home directory.PAGERmore command
or when the crt variable is set. The default
paginator more(1) is used if this option is not
defined.REPLYTOSHELL! command and
the ~! escape. A default shell is used if this
option is not defined.VISUALvisual
command and ~v escape. If not defined,
/usr/bin/vi is used.PAGER
is used to read it. If crt is set without a value,
then the height of the terminal screen stored in the system is used to
compute the threshold (see stty(1))./’,
mail considers it to be an absolute pathname;
otherwise, the folder directory is found relative to your home
directory.~m tilde escape for indenting
messages, in place of the normal tab character (‘^I’). Be
sure to quote the value if it contains spaces or tabs.z.top command; normally, the first five lines
are printed.mail utilizes the
HOME, LOGNAME,
USER, SHELL,
DEAD, PAGER,
LISTER, EDITOR,
VISUAL, REPLYTO,
MAIL, MAILRC, and
MBOX environment variables.
If the MAIL environment variable is set,
its value is used as the path to the user's mail spool.
MAIL
environment variable)MAILRC environment variableThe mail utility exits 0 on
success, and >0 if an error occurs.
fmt(1), newaliases(1), vacation(1), aliases(5), mail.local(8), newaliases(8), sendmail(8), smtpd(8)
Kurt Shoens, Mail Reference Manual, 4.4BSD User's Supplementary Documents (USD).
The mailx utility is compliant with the
IEEE Std 1003.1-2008 (“POSIX.1”)
specification.
The flags [-iNnu] are marked by
IEEE Std 1003.1-2008 (“POSIX.1”) as
being optional.
The flags [-eFH] are marked by
IEEE Std 1003.1-2008 (“POSIX.1”) as
being optional, and are not supported by this implementation of
mailx.
The flags [-abcdEIrv] are extensions to
the specification.
A mail command appeared in
Version 1 AT&T UNIX. This man page is
derived from the Mail Reference Manual originally
written by Kurt Shoens.
Usually, Mail and
mailx are just links to
mail, which can be confusing.
| March 31, 2022 | Ragnarok |