mailx man page on Archlinux
Printed from http://www.polarhome.com/service/man/?qf=mailx&af=0&tf=2&of=Archlinux
MAIL(1) BSD General Commands Manual MAIL(1)
NAME
Mail [v14.6.4] — send and receive Internet mail
SYNOPSIS
mail [-BDdEFintv~] [-A account] [-a attachment] [-b bcc-addr]
[-c cc-addr] [-O mta-option] [-q quote-file] [-r from-addr]
[-S variable[=value]] [-s subject] to-addr ...
mail [-BDdEeHiNnRv~#] [-A account] [-L spec-list] [-S variable[=value]]
-f [file]
mail [-BDdEeHiNnRv~#] [-A account] [-L spec-list] [-S variable[=value]]
[-u user]
DESCRIPTION
Mail is a mail processing system with a command syntax reminiscent of
ed(1) with lines replaced by messages. It is intended to provide the
functionality of the POSIX mailx(1) command and offers (mostly optional)
extensions for line editing, IDNA, MIME, S/MIME, SMTP and POP3 (and
IMAP). It is usable as a mail batch language.
In the following list of supported command line options, -D, -d, -E, -i,
-N and -v are implemented by means of setting the respective option, as
via -S.
-A account Executes an account command (see below) for account after the
startup files have been read.
-a file Attach the given file to the message. The same filename con‐
ventions as described in the section Commands apply.
-B Make standard input and standard output line-buffered.
-b address Send blind carbon copies to the given list of addresses.
Sending mail below goes into more detail on that.
-c address Send carbon copies to the given list of addresses.
-D [Optional] Set the disconnected variable.
-d Set the debug variable, which enables debug messages and dis‐
ables message delivery. Note that this is not a real `sand‐
box' mode.
-E Set the skipemptybody variable and thus discard messages with
an empty message part body. This is useful for sending mes‐
sages from scripts.
-e Just check if mail is present in the system mailbox. If yes,
return an exit status of zero, a non-zero value otherwise.
-F Save the message to send in a file named after the local part
of the first recipient's address.
-f [file] Read in the contents of the user's mbox (or the specified
file) for processing; when Mail is quit, it writes undeleted
messages back to this file. The string file is interpreted
as described for the folder command below. Note that file is
not a direct argument to the flag -f, but is instead taken
from the command line after option processing has been com‐
pleted.
-H Print a header summary of all messages and exit. A config‐
urable summary view is available via the -L option.
-i Set the ignore variable to ignore tty interrupt signals.
-L spec-list
Print a header summary of only those messages that match the
given spec-list, then exit. See the section Specifying
messages for the format of spec-list. If the -H option has
been given in addition to -L, then printing of the header
summary is suppressed, and Mail will instead indicate via its
exit status wether spec-list matched any messages (`0') or
not (`1'); note that messages are forcefully suppressed,
then, and unless verbosity is explicitly enabled (e.g., by
using the -v option).
-N Unset the header variable and thus inhibits the initial dis‐
play of message headers when reading mail or editing a mail
folder.
-n Inhibits reading /etc/mail.rc upon startup. This option
should be activated for Mail scripts that are invoked on more
than one machine, because the contents of that file may dif‐
fer between them. (The same behaviour can be achieved by
setting the NAIL_NO_SYSTEM_RC environment variable.)
-O mta-option
Pass the given option through to the mail-transfer-agent
(MTA). This option has no effect when mail is send via SMTP.
E.g., use `-O-h -Onumber' to specify the hop count for an old
sendmail(1). Options set like that persist for an entire
(interactive) session.
-q file Start the message with the contents of the specified file.
May be given in send mode only.
-R Opens any folders read-only.
-r address Sets the envelope sender address by passing an -r option to
the MTA when a message is send. If a non-empty address argu‐
ment is given it'll be checked for validity and then fixated
to the given value, but otherwise the content of the variable
from will be used for that purpose – i.e., it'll be passed
through to the MTA via the -r option whenever a message is
send. A valid non-empty value will also be set as if an
additional `-Sfrom=VALUE' option had been used and therefore
affect sending of messages via SMTP (as a consideration for
`From:').
-S variable[=value]
Sets the internal option variable and, in case of a value
option, assigns value to it. Even though options set via -S
may be overwritten from within resource files, the command
line setting will be reestablished after all resources have
been loaded.
-s subject Specify the subject on the command line (be careful to quote
subjects containing spaces).
-t The message to be sent is expected to contain a message
header with `To:', `Cc:', or `Bcc:' fields giving its recipi‐
ents and `Subject:' giving the subject of the message.
Recipients and subject specified on the command line are
ignored.
-u user Read the system mailbox of user (appropriate privileges pre‐
sumed), and `assume to be' user in some aspects, e.g. in
respect to expansions of `%' etc. Also see USER.
-V Print Mail's version and exit.
-v Sets the verbose option, which enables more verbose messages.
-~ Enable tilde escapes even if not in interactive mode.
-# This sets multiple options to prepare Mail for working in
batch mode (most likely in non-interactive mode): dot,
emptystart, noheader, quiet, sendwait, as well as MBOX and
folder to /dev/null. it also enables processing of tilde
escapes. E.g., the following should send an email message to
`alias'.
printf 'm alias\n~s Subject\nBody\n.\nx\n' |
MAILRC=/dev/null s-nail -n -#
Sending mail
To send a message to one or more people, Mail can be invoked with argu‐
ments which are the names of people to whom the mail will be sent. These
names may be aliases, plain addresses or full address specifications
including user names and comments, in which case care for proper quoting
may be necessary. If this manual refers to a list of addresses, then
Mail expects a comma-separated list of such names. The section Recipient
address specifications below explains the interpretation of names in more
detail. The user is then expected to type in his message, followed by a
`control-D' at the beginning of a line. The section Replying to or
originating mail describes some features of Mail available to help when
composing letters.
Reading mail
In normal usage Mail is given no arguments and checks the user's mail out
of the post office, then prints out a one line header of each message
found. The current message is initially the first message (numbered 1)
and can be printed using the print command, which can be abbreviated `p'.
The commands `p+' and `p-' move forward to the next and backward to the
previous message, respectively, and messages can be addressed directly by
specifying their message number, as in `p 1'.
Disposing of mail
After examining a message the user can delete (`d') the message or reply
(`r') to it. Deletion causes the Mail program to forget about the mes‐
sage. This is not irreversible; one can undelete (`u') the message by
giving its number, or the Mail session can be ended by giving the exit
(`x') command. Deleted messages will, however, usually disappear never
to be seen again.
Specifying messages
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, whereas `delete 1-5' will delete the messages 1
through 5. In sorted or threaded mode (see the sort and thread com‐
mands), `delete 1-5' will delete the messages that are located between
(and including) messages 1 through 5 in the sorted/threaded order, as
shown in the header summary. The following special message names exist:
:n All new messages.
:o All old messages (any not in state read or new).
:u All unread messages.
:d All deleted messages (for the undelete command).
:r All read messages.
:f All `flagged' messages.
:a All answered messages (cf. the markanswered variable).
:t All messages marked as draft.
:s [Optional] All messages classified as spam.
. The current message.
; The message that was previously the current message.
, The parent message of the current message, that is the message
with the Message-ID given in the `In-Reply-To:' field or the
last entry of the `References:' field of the current message.
- The next previous undeleted message, or the next previous
deleted message for the undelete command. In sorted/threaded
mode, the next previous such message in the sorted/threaded
order.
+ The next undeleted message, or the next deleted message for the
undelete command. In sorted/threaded mode, the next such mes‐
sage in the sorted/threaded order.
^ The first undeleted message, or the first deleted message for
the undelete command. In sorted/threaded mode, the first such
message in the sorted/threaded order.
$ The last message. In sorted/threaded mode, the last message in
the sorted/threaded order.
&x In threaded mode, selects the message addressed with x, where x
is any other message specification, and all messages from the
thread that begins at it. Otherwise it is identical to x. If
x is omitted, the thread beginning with the current message is
selected.
* All messages.
` All messages that were included in the message list for the
previous command.
/string All messages that contain string in the subject field (case
ignored). See also the searchheaders variable. If string is
empty, the string from the previous specification of that type
is used again.
[@name-list]@expr
All messages that contain the given case-insensitive search
expression; if the [Optional] regular expression support is
available expr will be interpreted as one if any of the
`magic'al regular expression characters is seen. If the
optional @name-list part is missing, the search is restricted
to the subject field body, but otherwise name-list specifies a
comma-separated list of header fields to search, as in
'@to,from,cc@Someone i ought to know'
The special names `body' and `text' can be used to search in
message bodies – whereas the former searches only the body, the
latter form also performs a fulltext search in the header
fields. In order to search for a string that includes a `@'
(commercial at) character the name-list is effectively non-
optional, but may be given as the empty string.
address All messages from address. By default, this is a case-sensi‐
tive search for the complete email address. If the allnet
variable is set, only the local part of the addresses is evalu‐
ated for the comparison. Otherwise if the showname variable is
set, a case-sensitive search for the complete real name of a
sender is performed. The IMAP-style `(from address)' expres‐
sion can be used instead if substring matches are desired.
[Optional] IMAP-style SEARCH expressions may also be used. This address‐
ing mode is available with all types of folders; for folders not located
on IMAP servers, or for servers unable to execute the SEARCH command,
Mail will perform the search locally. Strings must be enclosed by double
quotes `"' in their entirety if they contain white space or parentheses;
within the quotes, only backslash `\' is recognized as an escape charac‐
ter. All string searches are case-insensitive. When the description
indicates that the `envelope' representation of an address field is used,
this means that the search string is checked against both a list con‐
structed as
("name" "source" "local-part" "domain-part")
for each address, and the addresses without real names from the respec‐
tive header field. These search expressions can be nested using paren‐
theses, see below for examples.
(criterion)
All messages that satisfy the given criterion.
(criterion1 criterion2 ... criterionN)
All messages that satisfy all of the given criteria.
(or criterion1 criterion2)
All messages that satisfy either criterion1 or criterion2, or
both. To connect more than two criteria using `or', (or) spec‐
ifications have to be nested using additional parentheses, as
with `(or a (or b c))', since `(or a b c)' really means `((a or
b) and c)'. For a simple `or' operation of independent criteria
on the lowest nesting level, it is possible to achieve similar
effects by using three separate criteria, as with `(a) (b)
(c)'.
(not criterion)
All messages that do not satisfy criterion.
(bcc "string")
All messages that contain string in the `envelope' representa‐
tion of the `Bcc:' field.
(cc "string")
All messages that contain string in the `envelope' representa‐
tion of the `Cc:' field.
(from "string")
All messages that contain string in the `envelope' representa‐
tion of the `From:' field.
(subject "string")
All messages that contain string in the `Subject:' field.
(to "string")
All messages that contain string in the `envelope' representa‐
tion of the `To:' field.
(header name "string")
All messages that contain string in the specified Name: field.
(body "string")
All messages that contain string in their body.
(text "string")
All messages that contain string in their header or body.
(larger size)
All messages that are larger than size (in bytes).
(smaller size)
All messages that are smaller than size (in bytes).
(before date)
All messages that were received before date, which must be in
the form d[d]-mon-yyyy, where `d' denotes the day of the month
as one or two digits, `mon' is the name of the month – one of
`Jan', `Feb', `Mar', `Apr', `May', `Jun', `Jul', `Aug', `Sep',
`Oct', `Nov', or `Dec', and `yyyy' is the year as four digits,
e.g., "28-Dec-2012".
(on date)
All messages that were received on the specified date.
(since date)
All messages that were received since the specified date.
(sentbefore date)
All messages that were sent on the specified date.
(senton date)
All messages that were sent on the specified date.
(sentsince date)
All messages that were sent since the specified date.
() The same criterion as for the previous search. This specifica‐
tion cannot be used as part of another criterion. If the pre‐
vious command line contained more than one independent crite‐
rion then the last of those criteria is used.
Replying to or originating mail
The command reply can be used to set up a response to a message, sending
it back to the person who it was from. Text the user types in, up to an
end-of-file, defines the contents of the message. While the user is com‐
posing a message Mail treats lines beginning with the character `~' spe‐
cially. For instance, typing `~m' (alone on a line) will place a copy of
the current message into the response right shifting it by a tabstop
(more about the indentprefix variable below). Other escapes will set up
subject fields, add and delete recipients to the message, attach files to
it and allow the user 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.)
Ending a mail processing session
The user can end a Mail session by issuing the quit (`q') command. Mes‐
sages which have been examined go to the user's mbox file unless they
have been deleted, in which case they are discarded. Unexamined messages
go back to the post office. (Also see the -f option above.) When com‐
mand line history is tracked, an updated history file is written. None
of these actions is performed when the command exit (`x') is used instead
of quit (`q').
Personal and systemwide distribution lists
It is possible to create personal distribution lists so that, for
instance, the user can send mail to `cohorts' and have it go to a group
of people. Such lists can be defined via the alias command by, e.g.,
placing lines like
alias cohorts bill ozalp jkf mark kridle@ucbcory
in the file ~/.mailrc in the user's home directory. Using alias without
arguments lists all the currently known aliases.
Please note that this mechanism has nothing in common with the system
wide aliases that may be used by the local MTA (mail-transfer-agent) and
are often tracked in a file /etc/aliases (and documented in aliases(5)
and sendmail(1)). Personal aliases will be expanded by Mail before the
message is sent. They are a convenient alternative to specifying each
addressee by itself.
Recipient address specifications
When an address is used to name a recipient (in `To:', `Cc:', or `Bcc:'),
names of local mail folders and pipes to external commands may also be
specified – the message text is then written to them. The rules are: Any
name which starts with a `|' (vertical bar) character specifies a pipe –
the command string following the `|' is executed and the message is sent
to its standard input; any other name which contains a `@' (at sign)
character is treated as a mail address; any other name which starts with
a `+' (plus sign) character specifies a folder name; any other name which
contains a `/' (slash) character but no `!' (exclamation mark) or `%'
(percent sign) character before also specifies a folder name; what
remains is treated as a mail address. Compressed folders are handled as
described for the folder command.
Network mail (Internet / ARPA, UUCP, Berknet)
See mailaddr(7) for a description of network addresses. If support for
IDNA (internationalized domain names for applications) has been compiled
into Mail, then the domain name part of network addresses will be con‐
verted via IDNA mechanisms as necessary, effectively treating it as a
name in the ttycharset character set; see Character sets for the complete
picture about character sets.
Mail has a number of options which can be set in the ~/.mailrc file to
alter its behavior; e.g., set askcc enables the askcc feature, and set
idna-disable will disable the mentioned IDNA conversion even if support
is available. (These options are summarized below.)
MIME types
For any outgoing attachment Mail tries to determine the content type. It
does this by reading MIME type files whose lines have the following syn‐
tax:
type/subtype extension [extension ...]
where `type/subtype' are strings describing the file contents, and
`extension' is the part of a filename starting after the last dot. Any
line not immediately beginning with an ASCII alphabetical character is
ignored by Mail. The variable mimetypes-load-control can be used to con‐
trol the sources of MIME types, and the mimetypes command can be used to
show the list of mime types known to Mail. If there is a match with the
`extension' of the file to attach, the given `type/subtype' pair is used.
Otherwise, or if the filename has no extension, the content types
`text/plain' or `application/octet-stream' are used, dependent upon file
content inspection. Also see mime-allow-text-controls.
Character sets
Mail normally detects the character set of the terminal by using mecha‐
nisms that are controlled by the `LC_CTYPE' locale setting, if such are
supported; the variable ttycharset will be set to the detected terminal
character set and will thus show up in the output of the command set.
A user supplied ttycharset value is not overwritten by this detection
mechanism; this feature must be used if the detection doesn't work prop‐
erly, and it may be used to adjust the name of the locale character set.
E.g., on BSD systems one may use a locale with the character set
`ISO8859-1', which is not a valid name for this character set; to be on
the safe side, one may set ttycharset to the correct name, `ISO-8859-1'.
Note that changing the value doesn't mean much beside that, since several
aspects of the real character set are implied by the locale environment
of the system, and that stays unaffected by the content of an overwritten
ttycharset variable. (This is mostly an issue when interactively using
Mail, though. It is actually possible to send mail in a completely
"faked" locale environment.)
If no character set conversion capabilities have been compiled into Mail
(i.e., no iconv(3) library has been found), then ttycharset will be the
only supported character set, it is simply assumed that it can be used to
exchange 8 bit messages, and the rest of this section does not apply; it
may however still be necessary to explicitly set it if automatic detec‐
tion fails, since in that case it defaults to `ISO-8859-1'.
When reading messages, their text is converted into ttycharset as neces‐
sary in order to display them on the users terminal. Unprintable charac‐
ters and illegal byte sequences are detected and replaced by proper sub‐
stitution characters (unless the variable print-all-chars was set once
Mail was started).
When sending messages all their parts and attachments are classified.
Whereas no character set conversion is performed on those parts which
appear to be binary data, the character set being used must be declared
within the MIME header of an outgoing text part if it contains characters
that do not conform to the set of characters that are allowed by the
email standards. Permissible values for character sets can be declared
using the sendcharsets variable, and charset-8bit, which defines a catch-
all last-resort fallback character set that is implicitly appended to the
list of character-sets in sendcharsets.
All the specified character sets are tried in order unless the conversion
of the part or attachment succeeds. If none of the tried (8 bit) charac‐
ter sets is capable to represent the content of the part or attachment,
then the message will not be sent and its text will be saved to DEAD. In
general, if the message `Cannot convert from a to b' appears, either some
characters are not appropriate for the currently selected (terminal)
character set, or the needed conversion is not supported by the system.
In the first case, it is necessary to set an appropriate `LC_CTYPE'
locale and/or the variable ttycharset.
The best results are usually achieved when Mail is run in a UTF-8 locale
on a UTF-8 capable terminal, in which case the full Unicode spectrum of
characters is available. In this setup characters from various countries
can be displayed, while it is still possible to use more simple character
sets for sending to retain maximum compatibility with older mail clients.
Command line editor
[Optional] Mail can be configured to support a command line editor and
command history lists which are saved in between sessions. One may link
against fully-fledged external libraries (readline(3), editline(3)) or
use the Mail command line editor instead, which should work in all envi‐
ronments which comply to ISO C (ISO/IEC 9899:1990/Amendment 1:1995).
When an external library is used, interactive behaviour of Mail relies on
that library and may not correspond one-to-one to what is described in
this manual.
Regardless of the actually used command line editor history entries will
be created for lines entered in command mode only, and creation of such
an entry can be forcefully suppressed by starting the line with a space
character. Note that history handling is by itself an optional feature
and may therefore not be available. For more information see the docu‐
mentation of the options emptystart, line-editor-disable, NAIL_HISTFILE
and NAIL_HISTSIZE.
The builtin Mail command line editor supports the following operations;
the notation `^-character' stands for the combination of the `control'
key plus the mentioned character, e.g., `^A' means "hold control key
while adding an A key on top of it":
^A Go to the start of the line.
^B Move the cursor backward one character.
^D Forward delete the character under the cursor; quits Mail if used on
the empty line, unless the ignoreeof option is set.
^E Go to the end of the line.
^F Move the cursor forward one character.
^G Cancel current operation, full reset. If there is an active history
search or tabulator expansion then this command will first reset
that, reverting to the former line content; thus a second reset is
needed for a full reset in this case. In all cases Mail will reset
a possibly used multibyte character input state machine.
^H The same as `backspace': backward delete one character.
^I [Optional] The same as `horizontal tabulator': try to expand the
"word" before the cursor. Here "expansion" refers to the Mail
expansion, as documented for folder, and thus includes shell word
expansion (as a last step). I.e., this is Mail "expansion", not
what one usually expects from "tab-completion".
^J The same as `ENTER': complete this line of input.
^K Delete all characters from the cursor to the end of the line.
^L Repaint the line.
^N [Optional] Go to the next history entry.
^P [Optional] Go to the previous history entry.
^R [Optional] Complete the current line from (the remaining older) his‐
tory entries.
^U The same as `^A' followed by `^K'.
^W Delete the characters from the one preceding the cursor to the pre‐
ceding word boundary.
^X Move the cursor forward one word boundary.
^Y Move the cursor backward one word boundary.
If problems with commands that are based upon rightwise movement are
encountered, adjustments of the option line-editor-cursor-right may solve
the problem, as documented for it.
Coloured message display
[Optional] Mail can be configured to support coloured message display.
Colours are used only when the TERM environment variable is set and the
terminal type can be found in colour-terms. Beyond that, if a command
requires to output through the PAGER (also see crt) then the used PAGER
must be mentioned in the variable colour-pagers, otherwise no colours
will be used regardless of the actual terminal type.
"Coloured message display" can be configured through font attributes
(`ft=' – `bold', `invers' and `underline'), foreground (`fg=') and back‐
ground (`bg=') colours (`black', `blue', `green', `red', `brown',
`magenta', `cyan' and `white'). Multiple specifications can be joined in
a comma separated list, as in
set colour-msginfo="ft=bold,fg=magenta,bg=cyan"
Options to be set are colour-msginfo, colour-partinfo, colour-from_,
colour-header and colour-uheader, as well as colour-user-headers, which
is a list of headers to be colourized via colour-uheader instead of the
default colour-header. To forcefully disable colours, set
colour-disable.
Commands
Each command is typed on a line by itself, and may take arguments follow‐
ing the command word. The command need not be typed in its entirety –
the first command which matches the typed prefix is used. (The command
list prints a sorted list of available commands, and the command ?, when
given an argument, will show a documentation string for the expansion, as
in `?unc'; documentation strings are however [Optional].)
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. If
the command begins with a `#' (number sign) character, the line is
ignored.
The arguments to commands can be quoted, using the following methods:
· An argument can be enclosed between paired double-quotes
`"argument"' or single-quotes `'argument''; any white space,
shell word expansion, or backslash characters (except as
described next) within the quotes are treated literally as part
of the argument. A double-quote will be treated literally
within single-quotes and vice versa. Inside such a quoted
string the actually used quote character can be used nonethe‐
less by escaping it with a backslash `\', as in `"y\"ou"'.
· An argument that is not enclosed in quotes, as above, can usu‐
ally still contain space characters if those spaces are back‐
slash-escaped.
· A backslash outside of the enclosing quotes is discarded and
the following character is treated literally as part of the
argument.
· An unquoted backslash at the end of a command line is discarded
and the next line continues the command.
Filenames, where expected, are subsequently subjected to the following
transformations, in sequence:
· If the filename begins with an unquoted plus sign, and the
folder variable is defined, the plus sign will be replaced by
the value of the folder variable followed by a slash. If the
folder variable is unset or is set to null, the filename will
be unchanged.
· Shell word expansions are applied to the filename. If more
than a single pathname results from this expansion and the com‐
mand is expecting one file, an error results.
The following commands are provided:
~ Interprets the remainder of the word as a macro name and passes
it through to the call command; e.g., `~mymacro' is a shorter
synonym for `call mymacro'.
- Print out the preceding message. If given a numeric argument n,
goes to the n'th previous message and prints it.
? Prints a brief summary of commands. [Optional] Given an argu‐
ment a synopsis for the command in question is printed instead.
! Executes the shell (see sh(1) and csh(1)) command which follows.
| A synonym for the pipe command.
account (ac) Creates, selects or lists an email account. An account is
formed by a group of commands, primarily of those to set vari‐
ables. With two arguments, of which the second is a `{', the
first argument gives an account name, and the following lines
create a group of commands for that account until a line con‐
taining a single `}' appears. With one argument the previously
created group of commands for the account name is executed, and
a folder command is executed for the system mailbox or inbox of
that account. Without arguments the list of accounts and their
contents are printed. As an example,
account myisp {
set folder=imaps://mylogin@imap.myisp.example
set record=+Sent
set from="myname@myisp.example (My Name)"
set smtp=smtp.myisp.example
}
creates an account named `myisp' which can later be selected by
specifying `account myisp'. The special account `null' (case-
insensitive) always exists. Accounts can be deleted via
unaccount.
alias (a) 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. unalias
can be used to delete aliases.
alternates
(alt) The alternates command is useful if the user has accounts
on several machines. It can be used to inform Mail that the
listed addresses all belong to the invoking user. When replying
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.
answered
(ans) Takes a message list and marks each message as having been
answered. This mark has no technical meaning in the mail sys‐
tem; it just causes messages to be marked in the header summary,
and makes them specially addressable.
cache [Optional] Only applicable to cached IMAP mailboxes; takes a
message list and reads the specified messages into the IMAP
cache.
call Calls a macro (see the define command).
cd Same as chdir.
certsave
[Optional] Only applicable to S/MIME signed messages. Takes a
message list and a file name and saves the certificates con‐
tained within the message signatures to the named file in both
human-readable and PEM format. The certificates can later be
used to send encrypted messages to the respective message
senders by setting smime-encrypt-user@host variables.
chdir (ch) Changes the user's working directory to the specified one,
or to the user's login directory, if none was given.
collapse
(coll) Only applicable to threaded mode. Takes a message list
and makes all replies to these messages invisible in header sum‐
maries, unless they are in state `new'.
connect [Optional] (conn) If operating in disconnected mode on an IMAP
mailbox, switch to online mode and connect to the mail server
while retaining the mailbox status. See the description of the
disconnected variable for more information.
copy (c) The copy command does the same thing that save does except
that it does not mark the given messages for deletion when the
user quits. Compressed files and IMAP mailboxes are handled as
described for the folder command.
Copy (C) Similar to copy, but saves the messages in a file named
after the local part of the sender address of the first message.
cwd Print the current working directory.
decrypt [Optional] (dec) For unencrypted messages, this command is iden‐
tical to copy. Encrypted messages are first decrypted, if pos‐
sible, and then copied.
Decrypt P (Dec) Similar to decrypt, but saves the messages in a file
named after the local part of the sender address of the first
message.
define (def) Without arguments the current list of macros, including
their content, is printed. If arguments are given this command
defines a macro. A macro definition is a sequence of commands
in the following form:
define name {
command1
command2
...
commandN
}
A defined macro can be explicitly invoked using call or ~, or it
can be implicitly invoked by setting the folder-hook or
folder-hook-fullname variables. Macros can be deleted via
undefine.
delete (d) 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.
discard Same as ignore.
disconnect
[Optional] (disco) If operating in online mode on an IMAP mail‐
box, switch to disconnected mode while retaining the mailbox
status. See the description of the disconnected variable for
more. A list of messages may optionally be given as argument;
the respective messages are then read into the cache before the
connection is closed. Thus `disco *' makes the entire mailbox
available for disconnected use.
dp or dt
Deletes the current message and prints the next message. If
there is no next message, Mail says `at EOF'.
draft Takes a message list and marks each given message as a draft.
This mark has no technical meaning in the mail system; it just
causes messages to be marked in the header summary, and makes
them specially addressable.
echo Echoes its arguments, resolving special names as documented for
the command folder. The escape sequences `\a', `\b', `\c',
`\f', `\n', `\r', `\t', `\v', `\\', and `\0octal-num' are inter‐
preted just as they are by printf(1) (proper quoting provided).
edit (e) Point the text editor at each message from the given list in
turn. Modified contents are discarded unless the
writebackedited variable is set.
else Marks the end of the then-part of an if statement and the begin‐
ning of the part to take effect if the condition of the if
statement is false.
endif Marks the end of an if statement.
exit (ex or x) Effects an immediate return to the Shell without modi‐
fying the user's system mailbox, his `mbox' file, or his edit
file in -f, as well as a possibly tracked command line editor
history file.
features
Print the list of features that have been compiled into Mail.
file (fi) The same as folder.
flag (fl) Takes a message list and marks the messages as `flagged'
for urgent/special attention. This mark has no technical mean‐
ing in the mail system; it just causes messages to be high‐
lighted in the header summary, and makes them specially address‐
able.
folder (fold) The folder command switches to a new mail file or folder.
With no arguments, it tells the user which file he is currently
reading. If an argument is given, it will write out changes
(such as deletions) the user has made in the current file and
read in the new file. Some special conventions are recognized
for the name argument:
# (number sign) means the previous file,
% (percent sign) means the invoking user's sys‐
tem mailbox (or the value of folder for IMAP
folders),
%user means the system mailbox of `user' (and never
the value of folder, regardless of its actual
setting),
& (ampersand) means the invoking user's `mbox'
file (see MBOX) and
+file means a `file' in the folder directory.
%:filespec expands to the same value as `filespec', but
the file is handled as a system mailbox by,
e.g., the mbox and save commands.
If the name matches one of the strings defined with the command
shortcut, it is replaced by its long form and expanded. If the
name ends with `.gz', `.bz2' or `.xz' it is treated as being
compressed with gzip(1), bzip2(1) or xz(1), respectively. If
`name' refers to a directory with the subdirectories `tmp',
`new', and `cur', then it is treated as a folder in `maildir'
format. A name of the form
protocol://[user@]host[:port][/file]
is taken as an Internet mailbox specification. The (optionally)
supported protocols are `imap' (IMAP v4r1), `imaps' (IMAP with
SSL/TLS encrypted transport), `pop3' (POP3) and `pop3s' (POP3
with SSL/TLS encrypted transport). If `user' contains special
characters, in particular `/' or `%', they must be escaped in
URL notation, as `%2F' or `%25'. The optional `file' part
applies to IMAP only; if it is omitted, the default `INBOX' is
used.
If Mail is connected to an IMAP server, a name of the form
`@mailbox' refers to the `mailbox' on that server, but otherwise
a `@' prefix has no special meaning.
folders With no arguments, list the names of the folders in the folder
directory. With an existing folder as an argument, lists the
names of folders below the named folder; e.g. the command `fold‐
ers @' lists the folders on the base level of the current IMAP
server. See also the variable imap-list-depth.
Followup
(F) Similar to Respond, but saves the message in a file named
after the local part of the first recipient's address.
followup
(fo) Similar to respond, but saves the message in a file named
after the local part of the first recipient's address.
followupall
Similar to followup, but responds to all recipients regardless
of the flipr and Replyall variables.
followupsender
Similar to Followup, but responds to the sender only regardless
of the flipr and Replyall variables.
forward (fwd) Takes a message and the address of a recipient and for‐
wards the message to him. The text of the original message is
included in the new one, with the value of the fwdheading vari‐
able printed before. The fwdignore and fwdretain commands spec‐
ify which header fields are included in the new message. Only
the first part of a multipart message is included unless the
forward-as-attachment option is set.
Forward (Fwd) Similar to forward, but saves the message in a file named
after the local part of the recipient's address.
from (f) Takes a list of messages and prints their message headers,
piped through the pager if the output does not fit on the
screen.
fwdignore
Specifies which header fields are to be ignored with the command
forward. This command has no effect when the
forward-as-attachment option is set.
fwdretain
Specifies which header fields are to be retained with the com‐
mand forward. fwdretain overrides fwdignore. This command has
no effect when the forward-as-attachment option is set.
ghost Without arguments it lists all currently defined command
aliases, so-called ghosts. With two arguments it defines a new
command alias: the first argument is the name under which the
second should be accessible. The content of the second argument
can be just about anything. A ghost can be used everywhere a
normal command can be used, but always takes precedence; any
arguments that are given to the command alias are joined onto
the alias content, and the resulting string forms the command
line that is, in effect, executed. Also see unghost.
? ghost ls '!ls -latro'
? ls /usr/local
headers (h) Lists the current range of headers, which is an 18-message
group. If a `+' argument is given the next 18-message group is
printed, likewise the previous is printed if the argument was
`-'.
help A synonym for `?'.
history [Optional] Either show or clear the list of history entries; a
decimal NUMBER argument selects and shows the respective history
entry – press `ENTER' to accept it, and the history entry will
become the new history top. The default mode if no arguments
are given is show.
hold (ho, 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. Mail deviates
from the POSIX standard with this command, as a next command
issued after hold will display the following message, not the
current one.
if Commands in Mail's startup files can be executed conditionally
by testing conditions via the nestable command `if', as in:
if receive
commands ...
else
commands ...
endif
Note that the only allowed conditions are `[Rr]eceive',
`[Ss]end', `[Tt]erm' (execute if standard input is a tty), as
well as `0' (never execute) and `1' (always execute). In addi‐
tion it is possible to conditionalize upon wether an option is
set, or set to a specific value, by using the `$' conditional
trigger, e.g.:
if $debug
commands ...
endif
if $encoding == "UTF-8"
commands ...
endif
if $encoding != "UTF-8"
commands ...
endif
The first form simply checks wether an option is set, the other
two also perform value content comparison (equality and non-
equality, respectively); an unset value is treated as the empty
string, then.
ignore Add the list of header fields named to the ignored list. Header
fields in the ignore list are not printed on the terminal when a
message is printed. This command is very handy for suppression
of certain machine-generated header fields. The Type and Print
commands can be used to print a message in its entirety, includ‐
ing ignored fields. It lists the current set of ignored fields
if no arguments were given.
imap [Optional] Sends command strings directly to the current IMAP
server. Mail operates always in IMAP `selected state' on the
current mailbox; commands that change this will produce undesir‐
able results and should be avoided. Useful IMAP commands are:
create Takes the name of an IMAP mailbox as an
argument and creates it.
getquotaroot (RFC 2087) Takes the name of an IMAP mail‐
box as an argument and prints the quotas
that apply to the mailbox. Not all IMAP
servers support this command.
namespace (RFC 2342) Takes no arguments and prints
the Personal Namespaces, the Other User's
Namespaces and the Shared Namespaces. Each
namespace type is printed in parentheses;
if there are multiple namespaces of the
same type, inner parentheses separate them.
For each namespace a prefix and a hierarchy
separator is listed. Not all IMAP servers
support this command.
inc Same as newmail.
list Prints the names of all available commands, alphabetically
sorted.
localopts
Can only be used inside of a macro definition block introduced
by account or define, and is interpreted as a boolean (value `0'
means false, everything else true). Any option that had been
set while `localopts' was in effect will be reverted to its for‐
mer value once the block is left / the `account' is switched.
define temporary_settings {
set global_option1
localopts 1
set local_option1
set local_option2
localopts 0
set global_option2
}
Note that these options stack upon each other, i.e., if macro1
sets `localopts' and calls macro2, which explicitly resets
`localopts', then any values set within macro2 will still be
cleaned up by macro1.
Mail (M) Similar to mail, but saves the message in a file named after
the local part of the first recipient's address.
mail (m) Takes a (list of) recipient address(es) as (an) argument(s),
or asks on standard input if none were given; then collects the
remaining mail content and sends it out.
mbox The given message list is to be sent to `mbox' when Mail is
quit. This is the default action unless the hold option is set.
Mail deviates from the POSIX standard with this command, as a
next command issued after mbox will display the following mes‐
sage, not the current one.
mimetypes
Either (show or) clear the mime.types(5) cache. In the former
case all sources are loaded first as necessary. The
mimetypes-load-control option can be used to fine-tune which
sources are loaded.
move (mv) Acts like copy but marks the messages for deletion if they
were transferred successfully.
more Takes a message list and invokes the PAGER on that list, print‐
ing a form-feed (`\f') in between messages.
More Like more, but also prints ignored header fields and all MIME
parts.
Move (Mv) Similar to move, but moves the messages to a file named
after the local part of the sender address of the first message.
newmail Checks for new mail in the current folder without committing any
changes before. If new mail is present, a message is printed.
If the header variable is set, the headers of each new message
are also printed.
next (n) (like `+' or `ENTER') Goes to the next message in sequence
and types it. With an argument list, types the next matching
message.
New Same as unread.
new Same as unread.
online Same as connect.
noop If the current folder is located on an IMAP or POP3 server, a
`NOOP' command is sent. Otherwise, no operation is performed.
Pipe (Pi) Like pipe but also pipes ignored header fields and all
parts of MIME `multipart/alternative' messages.
pipe (pi) Takes a message list and a shell command and pipes the mes‐
sages through the command. Without an argument the current mes‐
sage is piped through the command given by the cmd variable. If
the page variable is set, every message is followed by a form‐
feed character.
preserve
(pre) A synonym for hold.
Print (P) Like print but also prints out ignored header fields and all
parts of MIME `multipart/alternative' messages. See also print,
ignore and retain.
print (p) Takes a message list and types out each message on the
user's terminal. If the message is a MIME multipart message,
all parts with a content type of `text' or `message' are shown,
the other are hidden except for their headers. Messages are
decrypted and converted to the terminal character set if neces‐
sary.
quit (q) Terminates the session, saving all undeleted, unsaved mes‐
sages in the current `mbox', preserving all messages marked with
hold or preserve or never referenced in his system mailbox, and
removing all other messages from his 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
command line flag -f, 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.
redirect
(red) Same as resend.
Redirect
(Red) Same as Resend.
remove (rem) Removes the named folders. The user is asked for confir‐
mation in interactive mode.
rename (ren) Takes the name of an existing folder and the name for the
new folder and renames the first to the second one. Both fold‐
ers must be of the same type and must be located on the current
server for IMAP.
Reply (R) Reply to originator. Does not reply to other recipients of
the original message.
reply (r) Takes a message list and sends mail to the sender and all
recipients of the specified messages. The default message must
not be deleted.
replyall
Similar to reply, but responds to all recipients regardless of
the flipr and Replyall variables.
replysender
Similar to Reply, but responds to the sender only regardless of
the flipr and Replyall variables.
Resend Like resend, but does not add any header lines. This is not a
way to hide the sender's identity, but useful for sending a mes‐
sage again to the same recipients.
resend Takes a list of messages and a user name and sends each message
to the named user. `Resent-From:' and related header fields are
prepended to the new copy of the message.
Respond Same as Reply.
respond Same as reply.
respondall
Same as replyall.
respondsender
Same as replysender.
retain Add the list of header fields named to the retained list. Only
the header fields in the retain list are shown on the terminal
when a message is printed, all other header fields are sup‐
pressed. The Type and Print commands can be used to print a
message in its entirety. The current set of retained fields is
shown if retain is used without arguments.
Save (S) Similar to save, but saves the messages in a file named
after the local part of the sender of the first message instead
of taking a filename argument.
save (s) Takes a message list and a filename and appends each message
in turn to the end of the file. If no filename is given, the
`mbox' file is used. The filename in quotes, followed by the
line count and character count is echoed on the user's terminal.
If editing a system mailbox the messages are marked for dele‐
tion. Compressed files and IMAP mailboxes are handled as
described for the -f command line option above.
savediscard
Same as saveignore.
saveignore
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'. This command should only be
applied to header fields that do not contain information needed
to decode the message, as MIME content fields do. If saving
messages on an IMAP account ignoring fields makes it impossible
to copy the data directly on the server, thus operation usually
becomes much slower.
saveretain
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 over‐
rides saveignore. The use of this command is strongly discour‐
aged since it may strip header fields that are needed to decode
the message correctly.
set (se) With no arguments, prints all variable values. Otherwise,
sets an option. Arguments are of the form `option=value' (no
space before or after `='), or plain `option' if there is no
value. Quotation marks may be placed around any part of the
assignment statement to quote blanks or tabs, e.g.,
set indentprefix="->"
If an argument begins with `no', as in `set nosave', the effect
is the same as invoking the unset command with the remaining
part of the variable (`unset save').
seen Takes a message list and marks all messages as having been read.
shell (sh) Invokes an interactive version of the shell.
shortcut
Defines a shortcut name and its string for expansion, as
described for the folder command. If used without arguments the
currently defined shortcuts are printed.
show (Sh) Like print, but performs neither MIME decoding nor decryp‐
tion so that the raw message text is shown.
size Print the size in characters of each message of the given mes‐
sage-list.
sort Create a sorted representation of the current folder, and change
the next command and the addressing modes such that they refer
to messages in the sorted order. Message numbers are the same
as in regular mode. If the header variable is set, a header
summary in the new order is also printed. Possible sorting cri‐
teria are:
date Sort the messages by their `Date:' field, that is
by the time they were sent.
from Sort messages by the value of their `From:'
field, that is by the address of the sender. If
the showname variable is set, the sender's real
name (if any) is used.
size Sort the messages by their size.
spam [Optional] Sort the message by their spam score,
as has been classified via the command spamrate.
status Sort the messages by their message status (new,
read, old, etc.).
subject Sort the messages by their subject.
thread Create a threaded order, as with the command
thread.
to Sort messages by the value of their `To:' field,
that is by the address of the recipient. If the
showname variable is set, the recipient's real
name (if any) is used.
If no argument is given, the current sorting criterion is
printed.
source The source command reads commands from a file.
spamclear
[Optional] Takes a list of messages and clears their `is-spam'
flag.
spamforget
[Optional] Takes a list of messages and forces the spam detector
to forget it has ever used them to train its Bayesian filter,
wether as `ham' or `spam'.
spamham [Optional] Takes a list of messages and teaches them to the spam
detector as being `ham'. This also clears the `is-spam' flag of
the messages in question.
spamrate
[Optional] Takes a list of messages and rates them using the
configured spam detector, setting their `is-spam' flag as appro‐
priate. Note that the messages are not modified, and due to
that the rating will get lost once the mailbox is left. Refer
to the manual section Handling spam for the complete picture of
spam handling in Mail.
spamset [Optional] Takes a list of messages and sets their `is-spam'
flag.
spamspam
[Optional] Takes a list of messages and teaches them to the spam
detector as being `spam'. This also sets the `is-spam' flag of
the messages in question.
thread (th) Create a threaded representation of the current folder,
i.e. indent messages that are replies to other messages in the
header display and change the next command and the addressing
modes such that they refer to messages in the threaded order.
Message numbers are the same as in unthreaded mode. If the
header variable is set, a header summary in threaded order is
also printed.
top Takes a message list and prints the top few lines of each. The
number of lines printed is controlled by the variable toplines
and defaults to five.
touch Takes a message list and marks the messages for saving in
`mbox'. Mail deviates from the POSIX standard with this com‐
mand, as a next command issued after `mbox' will display the
following message instead of the current one.
Type (T) Identical to the Print command.
type (t) A synonym for print.
unaccount
Delete all given accounts. An error message is printed if a
given account is not defined. Attempts to delete the currently
active account are rejected.
unalias Takes a list of names defined by alias commands and discards the
remembered groups of users.
unanswered
Takes a message list and marks each message as not having been
answered.
uncollapse
(unc) Only applicable to threaded mode. Takes a message list
and makes the message and all replies to it visible in header
summaries again. When a message becomes the current message, it
is automatically made visible. Also when a message with col‐
lapsed replies is printed, all of these are automatically uncol‐
lapsed.
undefine
Undefine all given macros. An error message is printed if a
given macro is not defined.
undelete
(u) Takes a message list and marks each message as not being
deleted.
undraft Takes a message list and undrafts each message.
unflag Takes a message list and marks each message as not being
flagged.
unfwdignore
Removes the header field names from the list of ignored fields
for the forward command.
unfwdretain
Removes the header field names from the list of retained fields
for the forward command.
unghost Remove an existing command ghost.
unignore
Removes the header field names from the list of ignored fields.
Unread Same as unread.
unread (U) Takes a message list and marks each message as not having
been read.
unretain
Removes the header field names from the list of retained fields.
unsaveignore
Removes the header field names from the list of ignored fields
for saving.
unsaveretain
Removes the header field names from the list of retained fields
for saving.
unset Takes a list of option names and discards their remembered val‐
ues; the inverse of set.
unshortcut
Deletes the shortcut names given as arguments.
unsort Disable sorted or threaded mode (see the sort and thread com‐
mands), return to normal message order and, if the header vari‐
able is set, print a header summary.
unthread
(unth) Same as unsort.
varshow Show information about all given options.
verify [Optional] (verif) Takes a message list and verifies each mes‐
sage. If a message is not an S/MIME signed message, verifica‐
tion will fail for it. The verification process checks if the
message was signed using a valid certificate, if the message
sender's email address matches one of those contained within the
certificate, and if the message content has been altered.
visual (v) Takes a message list and invokes the display editor on each
message. Modified contents are discarded unless the
writebackedited variable is set.
write (w) For conventional messages the body without all headers is
written. The output is decrypted and converted to its native
format as necessary. If the output file exists, the text is
appended. If a message is in MIME multipart format its first
part is written to the specified file as for conventional mes‐
sages, and the user is asked for a filename to save each other
part. For convience saving of each part may be skipped by giv‐
ing an empty value; the same result can also be achieved by
writing it to /dev/null. For the second and subsequent parts a
leading `|' character causes the part to be piped to the remain‐
der of the user input interpreted as a shell command; otherwise
the user input is expanded as usually for folders, e.g., tilde
expansion is performed. In non-interactive mode, only the parts
of the multipart message that have a filename given in the part
header are written, the others are discarded. The original mes‐
sage is never marked for deletion in the originating mail
folder. For attachments, the contents of the destination file
are overwritten if the file previously existed. No special han‐
dling of compressed files is performed.
xit (x) A synonym for exit.
z Mail presents message headers in windowfuls as described under
the headers command. This command scrolls to the next window of
messages. If an argument is given, it specifies the window to
use. A number prefixed by `+' or `-' indicates that the window
is calculated in relation to the current position. A number
without a prefix specifies an absolute window number, and a `$'
lets Mail scroll to the last window of messages.
Z Similar to z, but scrolls to the next or previous window that
contains at least one new or `flagged' message.
Tilde escapes
Here is a summary of the tilde escapes, which are used to perform special
functions when composing messages. Tilde escapes are only recognized at
the beginning of lines. The name `tilde escape' is somewhat of a mis‐
nomer since the actual escape character can be set by the option escape.
~~ string Insert the string of text in the message prefaced by a sin‐
gle `~'. (If the escape character has been changed, that
character must be doubled in order to send it at the begin‐
ning of a line.)
~! command Execute the indicated shell command, then return to the mes‐
sage.
~. Same effect as typing the end-of-file character.
~: Mail-command or ~_ Mail-command
Execute the given Mail command. Not all commands, however,
are allowed.
~? Write a summary of command escapes.
~< filename Identical to ~r.
~<! command command is executed using the shell. Its standard output is
inserted into the message.
~@ [filename...]
With no arguments, edit the attachment list interactively.
If an attachment's file name is left empty, that attachment
is deleted from the list. When the end of the attachment
list is reached, Mail will ask for further attachments until
an empty name is given. If a given file name solely con‐
sists of the number sign `#' followed by a valid message
number of the currently active mailbox, the given message is
attached as a MIME `message/rfc822' and the rest of this
section does not apply.
If character set conversion has been compiled into Mail,
then this mode gives the user the option to specify input
and output character sets, unless the file extension indi‐
cates binary content, in which case Mail asks wether this
step shall be skipped for the attachment in question. If
not skipped, then the charset that succeeds to represent the
attachment data will be used in the `charset=' MIME parame‐
ter of the mail message.
· If input and output character sets are specified, then
the conversion is performed on the fly. The user will
be asked repeatedly until the desired conversion suc‐
ceeds.
· If only an output character set is specified, then the
input is assumed to be in the ttycharset charset and
will be converted to the given output charset on the
fly. The user will be asked repeatedly until the
desired conversion succeeds.
· If no character sets are specified at all then the algo‐
rithm that is documented in the section Character sets
is applied, but directly and on the fly. The user will
be asked repeatedly until the desired conversion suc‐
ceeds.
· Finally, if an input-, but no output character set is
specified, then no conversion is ever performed, but the
`charset=' MIME parameter will still be set to the user
input.
· The character set selection loop can be left by typing
`control-C', i.e., causing an interrupt. XXX Note that
before Mail version 15.0 this terminates the entire cur‐
rent attachment selection, not only the character set
selection.
Without character set conversion support, Mail will ask for
the input character set only, and it'll set the `charset='
MIME parameter to the given input, if any; if no user input
is seen then the ttycharset character set will be used for
the `charset=' parameter instead. Note that the file exten‐
sion check isn't performed in this mode, since no conversion
will take place anyway.
Note that in non-interactive mode, for reproduceabilities
sake, there will always be two questions for each attach‐
ment, regardless of wether character set conversion is
available and what the file extension is. The first asks
for the filename, and the second asks for the input charac‐
ter set to be passed through to the `charset=' MIME parame‐
ter; no conversion will be tried if there is input to the
latter question, otherwise the usual conversion algorithm,
as above, is applied. For message attachments, the answer
to the second question is completely ignored.
If filename arguments are specified, they are treated as a
comma separated list of files, which are all expanded and
appended to the end of the attachment list. (Filenames with
commas, or with leading or trailing whitespace can only be
added via the command line or the first method. Message
attachments can only be added via the first method; file‐
names which clash with message numbers can only be added via
the command line or the second method.) In this mode the
(text) attachments are assumed to be in ttycharset encoding,
and will be evaluated as documented in the section Character
sets.
~A Inserts the string contained in the Sign variable (same as
`~i Sign'). The escape sequences `\t' (tabulator) and `\n'
(newline) are understood.
~a Inserts the string contained in the sign variable (same as
`~i sign'). The escape sequences `\t' (tabulator) and `\n'
(newline) are understood.
~b name ... Add the given names to the list of blind carbon copy recipi‐
ents.
~c name ... Add the given names to the list of carbon copy recipients.
~d Read the file specified by the DEAD variable into the mes‐
sage.
~e Invoke the text editor on the message collected so far.
After the editing session is finished, the user may continue
appending text to the message.
~f messages Read the named messages into the message being sent. If no
messages are specified, read in the current message. Mes‐
sage headers currently being ignored (by the ignore or
retain command) are not included. For MIME multipart mes‐
sages, only the first printable part is included.
~F messages Identical to `~f', except that all message headers and MIME
parts are included.
~h Edit the message header fields `To:', `Cc:', `Bcc:', and
`Subject:' by typing each one in turn and allowing the user
to edit the field.
~H Edit the message header fields `From:', `Reply-To:',
`Sender:' and `Organization:' in the same manner as
described for ~h. The default values for these fields orig‐
inate from the from, replyto, sender and ORGANIZATION vari‐
ables.
~i variable Insert the value of the specified variable into the message,
adding a newline character at the end. The message remains
unaltered if the variable is unset or empty. The escape
sequences `\t' (tabulator) and `\n' (newline) are under‐
stood.
~m messages Read the named messages into the message being sent,
indented by a tab or by the value of indentprefix. If no
messages are specified, read the current message. Message
headers currently being ignored (by the ignore or retain
commands) are not included. For MIME multipart messages,
only the first printable part is included.
~M messages Identical to `~m', except that all message headers and MIME
parts are included.
~p Print out the message collected so far, prefaced by the mes‐
sage header fields and followed by the attachment list, if
any.
~q Abort the message being sent, copying it to the file speci‐
fied by the DEAD variable if save is set.
~r filename Read the named file into the message.
~s string Cause the named string to become the current subject field.
~t name ... Add the given name(s) to the direct recipient list.
~u messages Like `~f', but exclude all message headers.
~U messages Like `~m', but exclude all message headers.
~v Invoke an alternate editor (defined by the VISUAL option) on
the message collected so far. Usually, the alternate editor
will be a screen editor. After the editor is quit, the user
may resume appending text to the end of the message.
~w filename Write the message onto the named file. If the file exists,
the message is appended to it.
~x Same as `~q', except that the message is not saved at all.
~| command Pipe the message through the specified filter command. If
the command gives no output or terminates abnormally, retain
the original text of the message. E.g., the command fmt(1)
is often used as a rejustifying filter.
Variable options
Options are controlled via set and unset commands, see the corresponding
entries for a syntax description. An option is also set if it is passed
to Mail as part of the program environment (this is not restricted to
specific variables as in the POSIX standard). A value given in a startup
file overrides a value imported from the environment. 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.
Binary options
The binary options include the following:
add-file-recipients
When file or pipe recipients have been specified, mention them
in the corresponding address fields of the message instead of
silently stripping them from their recipient list. By default
such addressees are not mentioned.
allnet Causes only the local part to be evaluated when comparing
addresses.
append Causes messages saved in mbox to be appended to the end rather
than prepended. This should always be set.
ask or asksub
Causes Mail to prompt for the subject of each message sent.
If the user responds with simply a newline, no subject field
will be sent.
askatend Causes the prompts for `Cc:' and `Bcc:' lists to appear after
the message has been edited.
askattach If set, Mail asks for files to attach at the end of each mes‐
sage. An empty line finalizes the list.
askcc Causes the user to be prompted for additional carbon copy
recipients (at the end of each message if askatend or
bsdcompat are set). An empty line finalizes the list.
askbcc Causes the user to be prompted for additional blind carbon
copy recipients (at the end of each message if askatend or
bsdcompat are set). An empty line finalizes the list.
asksign [Optional] Causes the user to be prompted if the message is to
be signed at the end of each message. The smime-sign variable
is ignored when this variable is set.
autocollapse
Causes threads to be collapsed automatically when threaded
mode is entered (see the collapse command).
autoprint Causes the delete command to behave like `dp -'; thus, after
deleting a message the next one will be typed automatically.
autothread
Causes threaded mode (see the thread command) to be entered
automatically when a folder is opened.
bang Enables the substitution of `!' by the contents of the last
command line in shell escapes.
batch-exit-on-error
If the batch mode has been enabled via the -# command line
option, then this variable will be consulted whenever Mail
completes one operation (returns to the command prompt); if it
is set then Mail will terminate if the last operation gener‐
ated an error.
bsdannounce
Causes automatic display of a header summary after executing a
folder command.
bsdcompat Sets some cosmetical features to traditional BSD style; has
the same affect as setting askatend and all other variables
prefixed with `bsd'; it also changes the meaning of the Mail
specific `\&' prompt escape sequence.
bsdflags Changes the letters printed in the first column of a header
summary to traditional BSD style.
bsdheadline
Changes the display of columns in a header summary to tradi‐
tional BSD style.
bsdmsgs Changes some informational messages to traditional BSD style.
bsdorder Causes the `Subject:' field to appear immediately after the
`To:' field in message headers and with the `~h' tilde com‐
mand.
bsdset Changes the output format of the set command to traditional
BSD style.
colour-disable
[Optional] Forcefully disable usage of colours. Also see the
section Coloured message display.
debug Prints debugging messages and disables the actual delivery of
messages. Unlike verbose, this option is intended for Mail
development only.
disconnected
[Optional] When an IMAP mailbox is selected and this variable
is set, no connection to the server is initiated. Instead,
data is obtained from the local cache (see imap-cache). Mail‐
boxes that are not present in the cache and messages that have
not yet entirely been fetched from the server are not avail‐
able; to fetch all messages in a mailbox at once, the command
`copy * /dev/null' can be used while still in online mode.
Changes that are made to IMAP mailboxes in disconnected mode
are queued and committed later when a connection to that
server is opened in online mode. This procedure is not com‐
pletely reliable since it cannot be guaranteed that the IMAP
unique identifiers (UIDs) on the server still match the ones
in the cache at that time. Data is saved to DEAD when this
problem occurs.
disconnected-user@host
The specified account is handled as described for the
disconnected variable above, but other accounts are not
affected.
dot The binary option dot causes Mail to interpret a period alone
on a line as the terminator of a message the user is sending.
editalong If this variable is set then the editor is started automati‐
cally when composing a message in an interactive mode, as if
the `~e' tilde command had been specified. The editheaders
variable is implied for this automatically spawned editor ses‐
sion.
editheaders
When a message is edited while being composed, its header is
included in the editable text. The `To:', `Cc:', `Bcc:',
`Subject:', `From:', `Reply-To:', `Sender:', and 'Organiza‐
tion:' fields are accepted within the header, other fields are
ignored.
emptybox If set, an empty mailbox file is not removed. This may
improve the interoperability with other mail user agents when
using a common folder directory.
emptystart
If the mailbox is empty Mail normally prints `No mail for
user' and exits immediately. If this option is set Mail
starts even with an empty mailbox.
flipr Exchanges the Respond with the respond commands and vice-
versa.
forward-as-attachment
Original messages are normally sent as inline text with the
forward command, and only the first part of a multipart mes‐
sage is included. With this option messages are sent as MIME
`message/rfc822' attachments with all of their parts included.
The fwdignore and fwdretain options are ignored when the
forward-as-attachment option is set.
fullnames When replying to a message Mail normally removes the comment
parts of email addresses, which by convention contain the full
names of the recipients. If this variable is set such strip‐
ping is not performed, and comments are retained.
header Causes the header summary to be written at startup and after
commands that affect the number of messages or the order of
messages in the current folder; enabled by default.
hold This option is used to hold messages in the system mailbox by
default.
idna-disable
[Optional] Can be used to turn off the automatic conversion of
domain names according to the rules of IDNA (internationalized
domain names for applications). Since the IDNA code assumes
domain names are specified with the ttycharset character set,
an UTF-8 locale charset is required to represent all possible
international domain names (before conversion, that is).
ignore Causes interrupt signals from the terminal to be ignored and
echoed as `@'s.
ignoreeof An option related to dot is ignoreeof, which makes Mail refuse
to accept a `control-D' as the end of a message. This option
also applies to Mail command mode.
imap-use-starttls
[Optional] Causes Mail to issue a `STARTTLS' command to make
an unencrypted IMAP session SSL/TLS encrypted. This function‐
ality is not supported by all servers, and is not used if the
session is already encrypted by the IMAPS method.
imap-use-starttls-user@host
Activates imap-use-starttls for a specific account.
keep This option causes Mail to truncate the user's system mailbox
instead of deleting it when it is empty. This should always
be set since it prevents malicious users from creating fake
mail folders in a world-writable spool directory.
keepsave When a message is saved it is usually discarded from the orig‐
inating folder when Mail is quit. Setting this option causes
all saved message to be retained.
line-editor-disable
Turn off any enhanced command line editing capabilities (see
Command line editor for more).
markanswered
When a message is replied to and this variable is set, it is
marked as having been answered. This mark has no technical
meaning in the mail system; it just causes messages to be
marked in the header summary, and makes them specially
addressable.
message-id-disable
By setting this option the generation of `Message-ID:' can be
completely suppressed, effectively leaving this task up to the
mail-transfer-agent (MTA) or the SMTP server. (According to
RFC 5321 your SMTP server is not required to add this field by
itself, so you should ensure that it accepts messages without
a `Message-ID'.)
metoo Usually, when a group is expanded that contains the sender,
the sender is removed from the expansion. Setting this option
causes the sender to be included in the group.
mime-allow-text-controls
When sending messages, each part of the message is MIME-
inspected in order to classify the `Content-Type:' and `Con‐
tent-Transfer-Encoding:' that is required to send this part
over mail transport, i.e., a computation rather similar to
what the file(1) command produces when used with the --mime
option.
This classification however treats text files which are
encoded in UTF-16 (often found for HTML files) and similar
character sets as binary octet-streams, forcefully changing
any `text/plain' or `text/html' specification to `applica‐
tion/octet-stream'; if that actually happens, then a yet unset
charset MIME parameter is set to `binary', effectively making
it impossible for the receiving MUA to automatically interpret
the contents of the part.
If this option is set, and the data was unambiguously identi‐
fied as text data at first glance (by a `.txt' or `.html' file
extension), then the original `Content-Type:' will not be
overwritten.
mime-counter-evidence
Normally the `Content-Type:' field is used to decide how to
treat a messages MIME part. Some MUAs however don't use
mime.types(5) or a similar mechanism to correctly classify
content, but simply specify `application/octet-stream', even
for plain text attachments like `text/diff'. If this variable
is set then Mail will use the file extension of attachments to
classify such MIME message parts, if possible.
noheader Setting this option is the same as using the command line
option -N.
outfolder Causes the filename given in the record variable and the
sender-based filenames for the Copy and Save commands to be
interpreted relative to the directory given in the folder
variable rather than to the current directory, unless it is
set to an absolute pathname.
page If set, each message the pipe command prints out is followed
by a formfeed character.
piperaw Send messages to the pipe command without performing MIME and
character set conversions.
pop3-bulk-load
[Optional] When accessing a POP3 server Mail loads the headers
of the messages, and only requests the message bodies on user
request. For the POP3 protocol this means that the message
headers will be downloaded twice. If this option is set then
Mail will download only complete messages from POP3 servers
instead. It may be useful to define a macro that temporarily
sets this option, then accesses a POP3 account that is known
to only get small text messages, and then unsets this variable
again.
pop3-no-apop
[Optional] Unless this variable is set the `APOP' authentica‐
tion method will be used when connecting to a POP3 server that
advertises support. The advantage of APOP over `USER/PASS'
authentication is that the password is not sent in clear text
over the wire and that only a single packet is sent for the
user/password tuple.
pop3-no-apop-user@host
Disables usage of the `APOP' authentication method (see
pop3-no-apop) for a specific account.
pop3-use-starttls
[Optional] Causes Mail to issue a `STLS' command to make an
unencrypted POP3 session SSL/TLS encrypted. This functional‐
ity is not supported by all servers, and is not used if the
session is already encrypted by the POP3S method.
pop3-use-starttls-user@host
Activates pop3-use-starttls for a specific account.
print-all-chars
This option causes all characters to be considered printable.
It is only effective if given in a startup file. With this
option set some character sequences in messages may put the
user's terminal in an undefined state when printed; it should
only be used as a last resort if no working system locale can
be found.
print-alternatives
When a MIME message part of type `multipart/alternative' is
displayed and it contains a subpart of type `text/plain',
other parts are normally discarded. Setting this variable
causes all subparts to be displayed, just as if the surround‐
ing part was of type `multipart/mixed'.
quiet Suppresses the printing of the version when first invoked.
quote-as-attachment
If this is set, then the original message is added in its
entirety as a `message/rfc822' MIME attachment when replying
to a message. Note this works regardless of the setting of
quote.
recipients-in-cc
On group replies, specify only the sender of the original mail
in `To:' and mention it's other recipients in the secondary
`Cc:'.
record-resent
If both this variable and the record variable are set, the
resend and Resend commands save messages to the record folder
as it is normally only done for newly composed messages.
reply-in-same-charset
If this variable is set Mail first tries to use the same char‐
acter set of the original message for replies. If this fails,
the mechanism described in Character sets is evaluated as
usual.
Replyall Reverses the sense of reply and Reply commands.
rfc822-body-from_
This variable can be used to force the display of a so-called
`From_' line for messages that are embedded into an envelope
mail via the `message/rfc822' MIME mechanism.
save When the user aborts a message with two `RUBOUT' (interrupt,
`control-C') characters, Mail will copy the partial letter to
the file DEAD. This option is set by default.
searchheaders
Expand message-list specifiers in the form `/x:y' to all mes‐
sages containing the substring `y' in the header field `x'.
The string search is case insensitive.
sendcharsets-else-ttycharset
[Optional] If this variable is set, but sendcharsets is not,
then Mail acts as if sendcharsets had been set to the value of
the variable ttycharset. In effect this combination passes
through the message data in the character set of the current
locale (given that ttycharset hasn't been set manually), i.e.,
without converting it to the charset-8bit fallback character
set. Thus, mail message text will be in `ISO-8859-1' encoding
when send from within a `ISO-8859-1' locale, and in `UTF-8'
encoding when send from within an `UTF-8' locale. If no char‐
acter set conversion capabilities are available in Mail then
the only supported character set is ttycharset.
sendwait When sending a message wait until the MTA exits before accept‐
ing further commands. If the MTA returns a non-zero exit sta‐
tus, the exit status of mail will also be non-zero.
showlast Setting this option causes Mail to start at the last message
instead of the first one when opening a mail folder.
showname Causes Mail to use the sender's real name instead of the plain
address in the header field summary and in message specifica‐
tions.
showto Causes the recipient of the message to be shown in the header
summary if the message was sent by the user.
skipemptybody
If an outgoing message does not contain any text in its first
or only message part, do not send it but discard it silently
(see also the command line option -E).
smime-force-encryption
[Optional] Causes Mail to refuse sending unencrypted messages.
smime-sign
[Optional] S/MIME sign outgoing messages with the user's pri‐
vate key. Signing a message enables a recipient to verify
that the sender used a valid certificate, that the email
addresses in the certificate match those in the message header
and that the message content has not been altered. It does
not change the message text, and people will be able to read
the message as usual.
smime-no-default-ca
[Optional] Don't load default CA locations when verifying
S/MIME signed messages.
smtp-use-starttls
[Optional] Causes Mail to issue a `STARTTLS' command to make
an SMTP session SSL/TLS encrypted. Not all servers support
this command – because of common implementation defects it
can't be automatically determined whether a server supports it
or not.
ssl-no-default-ca
[Optional] Don't load default CA locations to verify SSL/TLS
server certificates.
ssl-v2-allow
[Optional] Accept SSLv2 connections. These are normally not
allowed because this protocol version is insecure.
keep-content-length
When (editing messages and) writing MBOX mailbox files Mail
can be told to keep the `Content-Length:' and `Lines:' header
fields that some MUAs generate by setting this variable.
Since Mail does neither use nor update these non-standardized
header fields (which in itself shows one of their conceptual
problems), stripping them should increase interoperability in
between MUAs that work with with same mailbox files. Note
that, if this is not set but writebackedited, as below, is, a
possibly performed automatic stripping of these header fields
already marks the message as being modified.
verbose Setting the option verbose is the same as using the command
line option -v. When Mail runs in verbose mode details of the
actual message delivery and protocol conversations for IMAP,
POP3, and SMTP, as well as of other internal processes, are
displayed on the user's terminal. This is sometimes useful to
debug problems. Mail prints all data that is sent to remote
servers in clear texts, including passwords, so care should be
taken that no unauthorized option can view the screen if this
option is enabled.
writebackedited
If this variable is set messages modified using the edit or
visual commands are written back to the current folder when it
is quit; it is only honoured for writable folders in `mbox'
format, though. Note that the editor will be pointed to the
raw message content in that case, i.e., neither MIME decoding
nor decryption will have been performed, and proper RFC 4155
`From ' quoting of newly added or edited content is also left
as an excercise to the user.
Value options
The value options include the following:
attrlist A sequence of characters to print in the `attribute' column of
a header summary, each for one type of messages in the follow‐
ing order: new (N), unread but old (U), new but read (R), read
and old (O), saved (S), preserved (P), mboxed (M), flagged
(F), answered (A), draft (T), start of a collapsed thread (+),
collapsed (-), classified as spam ($). The default is
`NUROSPMFAT+-$', or `NU *HMFAT+-$' if bsdflags or the SYSV3
environment variable are set.
autobcc Specifies a list of recipients to which a blind carbon copy of
each outgoing message will be sent automatically.
autocc Specifies a list of recipients to which a carbon copy of each
outgoing message will be sent automatically.
autosort Causes sorted mode (see the sort command) to be entered auto‐
matically with the value of this option as sorting method when
a folder is opened.
charset-7bit
The value that should appear in the `charset=' parameter of
`Content-Type:' MIME header fields when no character set con‐
version of the message data was performed. This defaults to
`US-ASCII', and the chosen character set should be `US-ASCII'
compatible.
charset-8bit
[Optional] The default 8 bit character set that is used as an
implied last member of the variable sendcharsets. Defaults to
`UTF-8'. If no character set conversion capabilities are
available in Mail then the only supported character set is
ttycharset. Refer to the section Character sets for the com‐
plete picture of character set conversion in Mail.
cmd The default value for the pipe command.
colour-from_
[Optional] The colour specification for so-called `From_'
lines. See the section Coloured message display for the for‐
mat of the value.
colour-header
[Optional] The colour specification for header lines. See the
section Coloured message display for the format of the value.
colour-msginfo
[Optional] The colour specification for the introductional
message info line. See the section Coloured message display
for the format of the value.
colour-pagers
[Optional] A comma-separated list of PAGERs for which coloured
message display can be used. Note that only a substring com‐
parison is performed, meaning that the string `lesser' will
match the string `less'. See the section Coloured message
display for more on this. The default is set to the sole
string `less'.
colour-partinfo
[Optional] The colour specification for MIME part info lines.
See the section Coloured message display for the format of the
value.
colour-terms
[Optional] A comma-separated list of TERMinals for which
coloured message display can be used. The default is
cons25,linux,rxvt,rxvt-unicode,screen,sun,vt100,vt220,
wsvt25,xterm,xterm-color
colour-uheader
[Optional] The colour specification for those header lines
that have been placed in the colour-user-headers list. See
the section Coloured message display for the format of the
value.
colour-user-headers
A comma separated list of (case-insensitive) header names
which should be colourized with the alternative colour-uheader
colours. The default value is `from,subject'.
crt The valued option crt is used as a threshold to determine how
long a message must be before 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 LINES and stty(1)).
DEAD The name of the file to use for saving aborted messages. This
defaults to `dead.letter' in the user's home directory.
datefield The date in a header summary is normally the date of the mail‐
box `From ' line of the message. If this variable is set,
then the date as given in the `Date:' field is used, converted
to local time. It is possible to control the display of the
date by assigning a value, in which case the strftime(3) func‐
tion will be used to format the date accordingly. Please read
your system manual for the available formats. Note that the
`%n' format should not be used, because Mail doesn't take
embedded newlines into account when calculating how many lines
fit onto the screen.
datefield-markout-older
This option, when set in addition to datefield, modifies the
display of messages that are not really current in a way that
is rather comparable to the -l option of the POSIX ls(1) com‐
mand. The interpretation of the value is identical to what
has been described for datefield.
EDITOR Pathname of the text editor to use in the edit command and ~e
tilde escape. A default editor is used if this value is not
defined.
encoding The default MIME encoding to use in outgoing text messages and
message parts. Valid values are the default `quoted-print‐
able', `8bit' and `base64'. `8bit' may cause problems with
mail transfers that are not ESMTP compliant. If there is no
need to encode a message, `7bit' transfer mode is always used
regardless of this variable. Binary data is always encoded as
`base64'.
escape If defined, the first character of this option gives the char‐
acter to use in place of `~' to denote tilde escapes.
folder The name of the directory to use for storing folders of mes‐
sages. All folder names that begin with `+' refer to files
below it. The same special conventions as documented for the
folder command may be used when specifying a new value for
folder, but be aware that the expansion is fully performed
immediately. E.g., if the expanded name refers to an IMAP
account, all names that begin with `+' refer to IMAP mailboxes
below the folder target box.
Note: some IMAP servers do not accept the creation of mail‐
boxes in the hierarchy base, but require that they are created
as subfolders of `INBOX' – with such servers a folder name of
the form
imaps://mylogin@imap.myisp.example/INBOX.
should be used (the last character is the server's hierarchy
delimiter). Folder names prefixed by `+' will then refer to
folders below `INBOX', while folder names prefixed by `@'
refer to folders below the hierarchy base. See the imap
namespace command for a method to detect the appropriate pre‐
fix and delimiter.
folder-hook
When a folder is opened and this variable is set, the macro
corresponding to the value of this variable is executed. The
macro is also invoked when new mail arrives, but message lists
for commands executed from the macro only include newly
arrived messages then.
folder-hook-fullname
When a folder named `fullname' is opened, the macro corre‐
sponding to the value of this variable is executed. Unlike
other folder specifications, the fully expanded name of a
folder, without metacharacters, is used to avoid ambiguities.
The macro specified with folder-hook is not executed if this
variable is effective for a folder (but it can be called from
within the actually executed macro).
from The address (or a list of addresses) to put into the `From:'
field of the message header. If replying to messages these
addresses are handled as if they were in the alternates list.
If the machine's hostname is not valid at the Internet (for
example at a dialup machine), then either this variable or
hostname have to be set. If from contains more than one
address, the sender variable must also be set.
fwdheading
The string to print before the text of a message with the
forward command (unless the forward-as-attachment variable is
set). Defaults to `-------- Original Message --------' if
unset. No heading is printed if it is set to the empty
string.
headline A format string to use for the header summary, similar to
printf(3) formats. A `%' character introduces a format speci‐
fier. It may be followed by a number indicating the field
width. If the (possibly implicitly implied) field width is
negative, the field is to be left-aligned. Valid format spec‐
ifiers are:
%a Message attributes.
%d The date when the message was received.
%e The indenting level in threaded mode.
%f The address of the message sender.
%i The message thread structure. (Note that this for‐
mat doesn't support a field width.)
%l The number of lines of the message.
%m Message number.
%o The number of octets (bytes) in the message.
%s Message subject (if any).
%S Message subject (if any) in double quotes.
%t The position in threaded/sorted order.
%> A `>' for the current message, otherwise ` '.
%< A `<' for the current message, otherwise ` '.
%$ The spam score of the message, as has been classi‐
fied via the command spamrate.
%% A `%' character.
The default is `%>%a%m %-18f %16d %4l/%-5o %i%-s', or
`%>%a%m %20-f %16d %3l/%-5o %i%-S' if bsdcompat is set.
hostname Use this string as hostname when expanding local addresses
instead of the value obtained from uname(2) and
getaddrinfo(3), i.e., in `Message-ID:' and `From:' fields.
Note that when smtp transport is not used then it is normally
the responsibility of the MTA to create these fields; you
should produce some test messages with the desired combination
of hostname, and/or from, sender etc. first.
imap-auth [Optional] Sets the IMAP authentication method. Valid values
are `login' for the usual password-based authentication (the
default), `cram-md5', which is a password-based authentication
that does not send the password over the network in clear
text, and `gssapi' for GSSAPI-based authentication.
imap-auth-user@host
Sets the IMAP authentication method for a specific account.
imap-cache
[Optional] Enables caching of IMAP mailboxes. The value of
this variable must point to a directory that is either exis‐
tent or can be created by Mail. All contents of the cache can
be deleted by Mail at any time; it is not safe to make assump‐
tions about them.
imap-keepalive
[Optional] IMAP servers may close the connection after a
period of inactivity; the standard requires this to be at
least 30 minutes, but practical experience may vary. Setting
this variable to a numeric `value' greater than 0 causes a
`NOOP' command to be sent each `value' seconds if no other
operation is performed.
imap-list-depth
[Optional] When retrieving the list of folders on an IMAP
server, the folders command stops after it has reached a cer‐
tain depth to avoid possible infinite loops. The value of
this variable sets the maximum depth allowed. The default is
2. If the folder separator on the current IMAP server is a
slash `/', this variable has no effect and the folders command
does not descend to subfolders.
indentprefix
String used by the `~m' and `~M' tilde escapes and by the
quote option for indenting messages, in place of the normal
tab character (`^I'). Be sure to quote the value if it con‐
tains spaces or tabs.
LISTER Pathname of the directory lister to use in the folders command
when operating on local mailboxes. Default is /bin/ls.
line-editor-cursor-right
[Optional] If the builtin command line editor is used, actions
which are based on rightwise movement may not work on some
terminals. If you encounter such problems, set this variable
to the terminal control sequence that is necessary to move the
cursor one column to the right. The default is `\033[C',
which should work for most terminals. Less often occur
`\033OC' and `\014'. Note that `ESCAPE' and other control
character have to be written as shell-style escape sequences,
e.g., `\033' for `ESCAPE'.
MAIL Is used as the user's mailbox, if set. Otherwise, a system-
dependent default is used. Supports a logical subset of the
special conventions that are documented for the folder command
and the folder option.
MBOX The name of the mbox file. Supports a logical subset of the
special conventions that are documented for the folder command
and the folder option. The fallback default is `mbox' in the
user's home directory.
mimetypes-load-control
This option can be used to control which of the mime.types(5)
MIME type databases are loaded by Mail. If the letter `u' (or
`U') is part of this options value, then the user's personal
~/.mime.types file will be loaded (if it exists); likewise the
letter `s' (or `S') controls loading of the system wide
/etc/mime.types. If this option is not set Mail will try to
load both files instead. Incorporation of the MIME types that
are compiled into Mail cannot be suppressed.
NAIL_EXTRA_RC
The name of an optional startup file to be read after
~/.mailrc. This variable is ignored if it is imported from
the environment; it has an effect only if it is set in
/etc/mail.rc or ~/.mailrc to allow bypassing the configuration
with, e.g., `MAILRC=/dev/null'. Use this file for commands
that are not understood by other Mail implementations.
NAIL_HEAD A string to put at the beginning of each new message. The
escape sequences `\t' (tabulator) and `\n' (newline) are
understood.
NAIL_HISTFILE
[Optional] If a command line editor is available then this can
be set to name the (expandable) path of the location of a per‐
manent history file.
NAIL_HISTSIZE
[Optional] If a command line editor is available this value
restricts the amount of history entries that are saved into a
set and valid NAIL_HISTFILE. A value of less than 0 disables
this feature; note that loading and incorporation of
NAIL_HISTFILE upon program startup can also be suppressed by
doing this. An unset or invalid value, or 0, causes a default
value to be used. Dependent on the available command line
editor this will also define the number of history entries in
memory; it is also editor-specific wether runtime updates of
this value will be honoured.
NAIL_TAIL A string to put at the end of each new message. The escape
sequences `\t' (tabulator) and `\n' (newline) are understood.
newfolders
If this variable has the value `maildir', newly created local
folders will be in `maildir' format.
newmail Checks for new mail in the current folder each time the prompt
is printed. For IMAP mailboxes the server is then polled for
new mail, which may result in delayed operation if the connec‐
tion to the server is slow. A `maildir' folder must be re-
scanned to determine if new mail has arrived.
If this variable is set to the special value `nopoll' an IMAP
server is not actively asked for new mail, but new mail may
still be detected and announced with any other IMAP command
that is sent to the server. A `maildir' folder is not
scanned, then.
In either case the IMAP server may send notifications about
messages that have been deleted on the server by another
process or client. In this case, `Expunged X messages' is
printed regardless of this variable, and message numbers may
have changed.
ORGANIZATION
The value to put into the `Organization:' field of the message
header.
PAGER Pathname of the program to use in the more command or when the
crt variable is set. The default paginator is more(1).
password-user@host
Set the password for `user' when connecting to `host'. If no
such variable is defined for a host, the user will be asked
for a password on standard input. Specifying passwords in a
startup file is generally a security risk; the file should be
readable by the invoking user only.
pipe-content/subcontent
When a MIME message part of `content/subcontent' type is dis‐
played or is replied to, its text is filtered through the
value of this variable interpreted as a shell command.
The special value `@' can be used to force interpretation of
the message part as plain text, e.g., `set pipe-applica‐
tion/pgp-signature=@' will henceforth treat signatures as
plain text and display them "as is".
Also, if a normal shell command is prefixed with `@', then the
command will only be used to prepare the MIME message part if
the message is displayed by itself, but not when multiple mes‐
sages are displayed at once.
Finally, if a normal shell command is prefixed with `@&',
then, in addition to what has been described for the plain `@'
shell command prefix, the command will be run asynchronously,
i.e., without blocking Mail, which may be a handy way to dis‐
play a, e.g., PDF file while also continuing to read the mail
message.
Special care must be taken when using such commands as mail
viruses may be distributed by this method; if messages of type
`application/x-sh' were filtered through the shell, for exam‐
ple, a message sender could easily execute arbitrary code on
the system Mail is running on.
pop3-keepalive
[Optional] POP3 servers close the connection after a period of
inactivity; the standard requires this to be at least 10 min‐
utes, but practical experience may vary. Setting this vari‐
able to a numeric `value' greater than 0 causes a `NOOP' com‐
mand to be sent each `value' seconds if no other operation is
performed.
prompt The string printed when a command is accepted. Prompting may
be prevented by either setting this to the null string or by
setting noprompt. The same XSI escape sequences that are
understood by the echo command may be used within prompt.
In addition, the following Mail specific additional sequences
are understood: `\&', which expands to `?' unless bsdcompat is
set, in which case it expands to `&'; note that "\& " is the
default value for prompt. `\?', which will expand to `1' if
the last command failed, and to `0' otherwise, `\$', which
will expand to the name of the currently active account, if
any, and to the empty string otherwise, and `\@', which will
expand to the name of the currently active mailbox. (Note
that the prompt buffer is size-limited, excess is cut off.)
When a newer version of the editline(3) Command line editor is
used, any escape sequence must itself be encapsulated with
another escape character for usage with the EL_PROMPT_ESC
mechanism: Mail configures the control character `\01' for
this.
quote If set, Mail starts a replying message with the original mes‐
sage prefixed by the value of the variable indentprefix. Nor‐
mally, a heading consisting of `Fromheaderfield wrote:' is
printed before the quotation. If the string `noheading' is
assigned to the quote variable, this heading is omitted. If
the string `headers' is assigned, the headers selected by the
ignore/retain commands are printed above the message body,
thus quote acts like an automatic `~m' tilde escape command,
then. If the string `allheaders' is assigned, all headers are
printed above the message body and all MIME parts are
included, making quote act like an automatic `~M' command.
Also see quote-as-attachment.
quote-fold
[Optional] Can be set in addition to indentprefix. Setting
this turns on a more fancy quotation algorithm in that leading
quotation characters are compressed and overlong lines are
folded. quote-fold can be set to either one or two (space
separated) numeric values, which are interpreted as the maxi‐
mum (goal) and the minimum line length, respectively, in a
spirit rather equal to the fmt(1) program, but line-, not
paragraph-based. If not set explicitly the minimum will
reflect the goal algorithmically. The goal can't be smaller
than the length of indentprefix plus some additional pad.
Necessary adjustments take place silently.
record If defined, gives the pathname of the folder used to record
all outgoing mail. If not defined, then outgoing mail is not
saved. When saving to this folder fails the message is not
sent, but instead saved to DEAD.
replyto A list of addresses to put into the `Reply-To:' field of the
message header. Members of this list are handled as if they
were in the alternates list.
screen When Mail initially prints the message headers it determines
the number to print by looking at the speed of the terminal.
The faster the terminal, the more it prints. This option
overrides this calculation and specifies how many message
headers are printed. This number is also used for scrolling
with the z command.
sendcharsets
[Optional] A comma-separated list of character set names that
can be used in outgoing Internet mail. The value of the vari‐
able charset-8bit is automatically appended to this list of
character-sets. If no character set conversion capabilities
are compiled into Mail then the only supported charset is
ttycharset. Also see sendcharsets-else-ttycharset and refer
to the section Character sets for the complete picture of
character set conversion in Mail.
sender An address that is put into the `Sender:' field of outgoing
messages. This field needs not normally be present. It is,
however, required if the `From:' field contains more than one
address. It can also be used to indicate that a message was
sent on behalf of someone else – in this case, `From:' should
contain the address of the person that took responsibility for
the message, and `Sender:' should contain the address of the
person that actually sent the message. The sender address is
handled as if it were in the alternates list.
sendmail To use an alternate mail delivery system, set this option to
the full pathname of the program to use. It may be necessary
to set sendmail-progname in addition.
sendmail-progname
Many systems use a so-called mailwrapper(8) environment to
ensure compatibility with sendmail(1). This works by inspect‐
ing the name that was used to invoke the mail delivery system.
If this variable is set then the mailwrapper (the program that
is actually executed when calling `sendmail') will treat its
contents as that name. The default is `sendmail'.
SHELL Pathname of the shell to use in the ! command and the `~!'
tilde escape. A default shell is used if this option is not
defined.
Sign A string for use with the `~A' tilde escape.
sign A string for use with the `~a' tilde escape.
signature Must correspond to the name of a readable file if set. The
file's content is then appended to each singlepart message and
to the first part of each multipart message. Be warned that
there is no possibility to edit the signature for an individ‐
ual message.
smime-ca-dir
[Optional] Specifies a directory with CA certificates in PEM
(Privacy Enhanced Mail) format for verification of S/MIME
signed messages.
smime-ca-file
[Optional] Specifies a file with CA certificates in PEM format
for verification of S/MIME signed messages.
smime-cipher-user@host
[Optional] Specifies a cipher to use when generating S/MIME
encrypted messages for `user@host'. RFC 5751 mandates a
default of `aes-128' (AES-128 CBC).
The actually available cipher algorithms depend on the crypto‐
graphic library that Mail uses; possible values are, in
decreasing cipher strength: `aes-256' (AES-256 CBC), `aes-192'
(AES-192 CBC), `aes-128' (AES-128 CBC), `des3' (DES EDE3 CBC,
168 bits; default if `aes-128' isn't available) and `des' (DES
CBC, 56 bits).
The following ciphers have been obsoleted and are no longer
mentioned by the S/MIME specification (RFC 5751), but may be
selected if available: `rc2-64' (RC2 CBC, 64 bits) and
`rc2-40' (RC2 CBC, 40 bits).
smime-crl-file
[Optional] Specifies a file that contains a CRL in PEM format
to use when verifying S/MIME messages.
smime-crl-dir
[Optional] Specifies a directory that contains files with CRLs
in PEM format to use when verifying S/MIME messages.
smime-encrypt-user@host
[Optional] If this variable is set, messages to `user@host'
are encrypted before sending. The value of the variable must
be set to the name of a file that contains a certificate in
PEM format.
If a message is sent to multiple recipients, each of them for
whom a corresponding variable is set will receive an individu‐
ally encrypted message; other recipients will continue to
receive the message in plain text unless the
smime-force-encryption variable is set. It is recommended to
sign encrypted messages, i.e., to also set the smime-sign
variable.
smime-sign-cert
[Optional] Points to a file in PEM format that contains the
user's private key as well as his certificate. Both are used
with S/MIME for signing and decrypting messages.
smime-sign-cert-user@host
Overrides smime-sign-cert for the specific addresses. When
signing messages and the value of the from variable is set to
`user@host', the specific file is used. When decrypting mes‐
sages, their recipient fields (`To:' and `Cc:') are searched
for addresses for which such a variable is set. Mail always
uses the first address that matches, so if the same message is
sent to more than one of the user's addresses using different
encryption keys, decryption might fail.
smime-sign-include-certs
[Optional] If used, this must be set to a comma-separated list
of files, each of which containing a single certificate in PEM
format to be included in the S/MIME message in addition to the
smime-sign-cert certificate. This is most useful for long
certificate chains if it is desired to aid the receiving
party's verification process.
smime-sign-include-certs-user@host
Overrides smime-sign-include-certs for the specific addresses.
Refer to the discussion of smime-sign-cert-user@host for more
on this topic.
smtp [Optional] Normally Mail invokes sendmail(1) directly to
transfer messages. If the smtp variable is set, a SMTP con‐
nection to the server specified by the value of this variable
is used instead. If the SMTP server does not use the standard
port, a value of `server:port' can be given, with `port' as a
name or as a number.
There are two possible methods to get SSL/TLS encrypted SMTP
sessions: First, the `STARTTLS' command can be used to encrypt
a session after it has been initiated, but before any user-
related data has been sent; see smtp-use-starttls above. Sec‐
ond, some servers accept sessions that are encrypted from
begin on. This mode is configured by assigning
`smtps://server[:port]' to the smtp variable.
The SMTP transfer is executed in a child process, which runs
asynchronously unless either the sendwait or the verbose vari‐
able is set. If it receives a TERM signal, it will abort and
save the message to DEAD.
smtp-auth [Optional] Sets the SMTP authentication method. If set to
`login', or if unset and smtp-auth-user is set, `AUTH LOGIN'
is used. If set to `cram-md5', `AUTH CRAM-MD5' is used; if
set to `plain', `AUTH PLAIN' is used. Otherwise, no SMTP
authentication is performed.
smtp-auth-user@host
Overrides smtp-auth for specific values of sender addresses,
dependend upon the variable from.
smtp-auth-password
[Optional] Sets the global password for `SMTP AUTH'. Both
user and password have to be given for `AUTH LOGIN' and `AUTH
CRAM-MD5'.
smtp-auth-password-user@host
Overrides smtp-auth-password for specific values of sender
addresses, dependent upon the variable from.
smtp-auth-user
[Optional] Sets the global user name for `SMTP AUTH'. Both
user and password have to be given for `AUTH LOGIN' and `AUTH
CRAM-MD5'. If this variable is set but neither
smtp-auth-password nor a matching smtp-auth-password-user@host
can be found, Mail will ask for a password on the user's ter‐
minal.
smtp-auth-user-user@host
Overrides smtp-auth-user for specific values of sender
addresses, dependent upon the variable from.
spam-command
[Optional] The path to the spam detector. Note that the path
is not expanded, but used "as is". A fallback path will have
been compiled into the Mail binary if the spamc(1) executable
had been found during compilation.
spam-host [Optional] Can be used to specify the host on which spamd(1)
listens for connections; if not set, defaults to `localhost'.
spam-maxsize
[Optional] Spam detectors like spamc(1) decline to work with
messages which exceed a specific size; if this variable is set
then Mail won't even try to pass messages which exceed the
given limit. The default is 420000 bytes.
spam-port [Optional] Can be used to explicitly specify the port on which
spamd(1) listens for connections.
spam-socket
[Optional] If the spam detector listens on a path-based UNIX
domain socket, then setting this variable to the fully quali‐
fied path will force its usage for communication.
spam-user [Optional] This can be used to support multiple, per-used con‐
figuration files of the spam detector. Note that Mail doesn't
automatically set this to reflect a possibly set -u option.
ssl-ca-dir
[Optional] Specifies a directory with CA certificates in PEM
(Pricacy Enhanced Mail) for verification of of SSL/TLS server
certificates. See SSL_CTX_load_verify_locations(3) for more
information.
ssl-ca-file
[Optional] Specifies a file with CA certificates in PEM format
for verification of SSL/TLS server certificates. See
SSL_CTX_load_verify_locations(3) for more information.
ssl-cert [Optional] Sets the file name for a SSL/TLS client certificate
required by some servers.
ssl-cert-user@host
Sets an account-specific file name for a SSL/TLS client cer‐
tificate required by some servers. Overrides ssl-cert for the
specified account.
ssl-cipher-list
[Optional] Specifies a list of ciphers for SSL/TLS connec‐
tions. See ciphers(1) for more information.
ssl-crl-file
[Optional] Specifies a file that contains a CRL in PEM format
to use when verifying SSL/TLS server certificates.
ssl-crl-dir
[Optional] Specifies a directory that contains files with CRLs
in PEM format to use when verifying SSL/TLS server certifi‐
cates.
ssl-key [Optional] Sets the file name for the private key of a SSL/TLS
client certificate. If unset, the name of the certificate
file is used. The file is expected to be in PEM format.
ssl-key-user@host
Sets an account-specific file name for the private key of a
SSL/TLS client certificate. Overrides ssl-key for the speci‐
fied account.
ssl-method
[Optional] Selects the used TLS/SSL protocol version. The
actually available protocol versions depend on the TLS/SSL
library that Mail uses; possible values are, from newest to
oldest: `tls1.2', `tls1.1', `tls1', `ssl3' and `ssl2'.
Setting ssl-method to any of these values will fixate the used
protocol, which means that connections will fail if the server
doesn't support it. The value `auto', which is the default,
chooses a compatibility method that automatically uses the
newest protocol version that the server is capable to under‐
stand.
It has to be noted that `auto' is used as a fallback method if
the actual setting of ssl-method isn't supported by the used
TLS/SSL library — in this case an error message will be
printed first, however.
ssl-method-user@host
Overrides ssl-method for a specific account.
ssl-rand-egd
[Optional] Gives the pathname to an entropy daemon socket, see
RAND_egd(3).
ssl-rand-file
[Optional] Gives the pathname to a file with entropy data, see
RAND_load_file(3). If the file is a regular file writable by
the invoking user, new data is written to it after it has been
loaded.
ssl-verify
[Optional] Sets the action to be performed if an error occurs
during SSL/TLS server certificate validation. Valid values
are `strict' (fail and close connection immediately), `ask'
(ask whether to continue on standard input), `warn' (print a
warning and continue), `ignore' (do not perform validation).
The default is `ask'.
ssl-verify-user@host
Overrides ssl-verify for a specific account.
stealthmua
If only set without an assigned value, then this option
inhibits the generation of the `Message-Id:' and `User-Agent:'
header fields that include obvious references to Mail. There
are two pitfalls associated with this: First, the message id
of outgoing messages is not known anymore. Second, an expert
may still use the remaining information in the header to track
down the originating mail user agent. If set to the value
`noagent', then the mentioned `Message-Id:' suppression
doesn't occur.
toplines If defined, gives the number of lines of a message to be
printed out with the top command; normally, the first five
lines are printed.
ttycharset
The character set of the terminal Mail operates on, and the
one and only supported character set that Mail can use if no
character set conversion capabilities have been compiled into
it, in which case it defaults to `ISO-8859-1' unless it can
deduce a value from the `LC_CTYPE' locale environment. Refer
to the section Character sets for the complete picture about
character sets.
VISUAL Pathname of the text editor to use in the visual command and
`~v' tilde escape.
ENVIRONMENT
Besides the variables described above, Mail uses the following environ‐
ment variables:
COLUMNS
The user's preferred width in column positions for the terminal
screen or window (only used during startup).
HOME The user's home directory.
LANG, LC_ALL, LC_COLLATE, LC_CTYPE, LC_MESSAGES
See locale(7).
LESS [Optional] When a pager is started, this variable is set to the
string `FRXi' unless it already exists in the environment, in
which case it is left alone.
LINES The user's preferred number of lines on a page or the vertical
screen or window size in lines (only used during startup).
MAILRC Is used as a startup file instead of ~/.mailrc if set. When Mail
scripts are invoked on behalf of other users, this variable
should be set to /dev/null to avoid side-effects from reading
their configuration files.
NAILRC If this variable is set and MAILRC is not, it is treated as a
startup configuration file and read.
NAIL_NO_SYSTEM_RC
If this variable is set then reading of /etc/mail.rc at startup
is inhibited, i.e., the same effect is achieved as if Mail had
been started up with the option -n.
SYSV3 Changes the letters printed in the first column of a header sum‐
mary.
TERM [Optional] The terminal type for which output is to be prepared.
TMPDIR Used as directory for temporary files instead of /tmp, if set.
USER Can be used to force identification as USER, i.e., identical to
the -u command line option.
FILES
~/.mailrc File giving initial commands.
/etc/mail.rc System wide initialization file.
~/.mime.types Personal MIME types.
/etc/mime.types System wide MIME types.
EXAMPLES
Getting started
The Mail command has two distinct usages, according to whether one wants
to send or receive mail. Sending mail is simple: to send a message to a
user whose email address is, say, `<bill@host.example>', use the shell
command:
$ mail bill@host.example
then type your message. Mail will prompt you for a message `Subject:'
first; after that, lines typed by you form the body of the message. When
you reach the end of the message, type an EOT (`control-D') at the begin‐
ning of a line, which will cause Mail to echo `EOT' and return you to the
shell.
If, while you are composing the message you decide that you do not wish
to send it after all, you can abort the letter by typing two `RUBOUT'
(interrupt, `control-C') characters. Typing a single `RUBOUT' causes
Mail to print `(Interrupt -- one more to kill letter)'. Typing a second
`RUBOUT' causes Mail to save your partial letter on the file DEAD and
abort the letter. Once you have sent mail to someone, there is no way to
undo the act, so be careful.
If you want to send the same message to several other people, you can
list their email addresses on the command line.
$ mail sam@workstation.example bob@server.example
Subject: Fees
Tuition fees are due next Friday. Don't forget!
<control-D>
EOT
$
will sendout to `<sam@workstation.example>' and `<bob@server.example>'.
To read your mail, simply type
$ mail
Mail will respond by typing its version number and date and then listing
the messages you have waiting. Then it will type a prompt and await your
command. The messages are assigned numbers starting with 1 – you refer
to the messages with these numbers. Mail keeps track of which messages
are `new' (have been sent since you last read your mail) and `read' (have
been read by you). New messages have an `N' next to them in the header
listing and old, but unread messages have a `U' next to them. Mail keeps
track of new/old and read/unread messages by putting a header field
called `Status' into your messages.
To look at a specific message, use the type command, which may be abbre‐
viated to simply `t'. For example, if you had the following messages:
O 1 drfoo@myhost.example Wed Sep 1 19:52 5/421 "Fees"
O 2 sam@friends.example Thu Sep 2 00:08 30/895
you could examine the first message by giving the command:
type 1
which might cause Mail to respond with, for example:
[-- Message 1 -- 5 lines, 421 bytes --]:
From drfoo@myhost.example Wed Sep 1 19:52:25 2004
Subject: Fees
Status: R
Tuition fees are due next Wednesday. Don't forget!
Many Mail commands that operate on messages take a message number as an
argument, just as the shown type command. For these commands, there is a
notion of a current message. When you enter the Mail program, the cur‐
rent message is initially the first (or the first recent) one. Thus, you
can often omit the message number and use, for example, `t` to type the
current message. As a further shorthand, you can type a message by sim‐
ply giving its message number – hence `1` would type the first message.
Frequently, it is useful to read the messages in your mailbox in order,
one after another. You can read the next message in Mail by simply typ‐
ing a newline. As a special case, you can type a newline as your first
command to Mail to type the first message.
If, after typing a message, you wish to immediately send a reply, you can
do so with the command reply. This command, like type, takes a message
number as an argument. Mail then begins a message addressed to the user
who sent you the message and let you type in your letter in reply, fol‐
lowed by a `<control-D>' at the beginning of a line, as before.
Note that Mail copies the subject header from the original message. This
is useful in that correspondence about a particular matter will tend to
retain the same subject heading, making it easy to recognize. If there
are other header fields in the message, like `Cc:', the information found
will also be used.
Sometimes you will receive a message that has been sent to several people
and wish to reply only to the person who sent it. Reply (with a capital
`R') replies to a message, but sends a copy to the sender only.
If you wish, while reading your mail, to send a message to someone, but
not as a reply to one of your messages, you can send the message directly
with the mail command, which takes as arguments the names of the recipi‐
ents you wish to send to. For example, to send a message to
`<frank@machine.example>':
mail frank@machine.example
To delete a message from the mail folder, you can use the command delete.
In addition to not saving deleted messages, Mail will not let you type
them, either. The effect is to make the message disappear altogether,
along with its number.
Many features of Mail can be tailored to your liking with the set com‐
mand; it has two forms, depending on whether you are setting a `binary'
or a `valued' option. Binary options are either on or off – for example,
the askcc option informs Mail that each time you send a message, you want
it to prompt you for a `Cc:' header to be included in the message. To
set the askcc option, you would type
set askcc
Valued options are values which Mail uses to adapt to your tastes. For
example, the record option tells Mail where to save messages sent by you,
and is specified by, e.g.,
set record=Sent
Note that no spaces are allowed in `set record=Sent'.
Mail includes a simple facility for maintaining groups of messages
together in folders. To use the folder facility, you must tell Mail
where you wish to keep your folders. Each folder of messages will be a
single file. For convenience, all of your folders are kept in a single
directory of your choosing. To tell Mail where your folder directory is,
put a line of the form
set folder=letters
in your ~/.mailrc file. If, as in the example above, your folder direc‐
tory does not begin with a `/', Mail will assume that your folder direc‐
tory is to be found starting from your home directory.
Anywhere a file name is expected, you can use a folder name, preceded
with `+'. For example, to put a message into a folder with the save com‐
mand, you can use:
save +classwork
to save the current message in the `classwork' folder. If the `class‐
work' folder does not yet exist, it will be created. Note that messages
which are saved with the save command are automatically removed from your
system mailbox.
In order to make a copy of a message in a folder without causing that
message to be removed from your system mailbox, use the copy command,
which is identical in all other respects to the save command.
The folder command can be used to direct Mail to the contents of a dif‐
ferent folder. For example,
folder +classwork
directs Mail to read the contents of the `classwork' folder. All of the
commands that you can use on your system mailbox are also applicable to
folders, including type, delete, and reply. To inquire which folder you
are currently editing, use `folder' without arguments. And to list your
current set of folders, use the folders command.
Finally, the help command is available to print out a brief summary of
the most important Mail commands.
While typing in a message to be sent to others it is often useful to be
able to invoke the text editor on the partial message, print the message,
execute a shell command, or do some other auxiliary function. Mail pro‐
vides these capabilities through `tilde escapes', which consist of a
tilde (`~') at the beginning of a line, followed by a single character
which indicates the function to be performed. For example, to print the
text of the message so far, use:
~p
which will print a line of dashes, the recipients of your message, and
the text of the message so far. A list of the most important tilde
escapes is available with `~?'.
IMAP or POP3 client setup
[Optional] First you need the following data from your ISP: the host name
of the IMAP or POP3 server, user name and password for this server, and a
notice whether the server uses SSL/TLS encryption. Assuming the SSL/TLS
secured host name of your IMAP account is `server.myisp.example' and your
user name for that server is `mylogin', you could refer to this account
using the folder command or the -f command line option with
imaps://mylogin@server.myisp.example
(This string is not necessarily the same as your Internet mail address.)
Even if the server does not accept IMAPS or POP3S connections, it is pos‐
sible that it supports the `STARTTLS' method of upgrading already con‐
nected, but not yet authenticated sessions to use SSL/TLS encryption.
The only reliable method to see if this works is to try it; enter one of
set imap-use-starttls
set pop3-use-starttls
before you initiate the connection, dependent on the actual protocol.
As you probably want messages to be deleted from this account after sav‐
ing them, prefix it with `%:'. The shortcut command can be used to avoid
typing that many characters every time you want to connect:
shortcut myisp %:imaps://mylogin@server.myisp.example
You might want to put this string into a startup file. shortcut is one
of those commands that are specific to Mail and will thus confuse other
implementations of POSIX mailx(1), so it should possibly not be placed in
~/.mailrc. Instead, put
set NAIL_EXTRA_RC=.mailrc
in ~/.mailrc and create a file ~/.mailrc containing all the commands that
are specific to Mail. You can then access your remote mailbox by invok‐
ing
mail -f myisp
on the command line, or by executing
fi myisp
within Mail. If you want to use more than one IMAP mailbox on a server,
or if you want to use the IMAP server for mail storage too, the account
command (which is also Mail-specific) is possibly more appropriate. You
can put the following in ~/.mailrc:
account myisp {
set folder=imaps://mylogin@server.myisp.example
set record=+Sent MBOX=+mbox outfolder
}
and can then access incoming mail for this account by invoking `mail -A
myisp' on the command line or by executing `ac myisp' within Mail. After
that, a command like `copy 1 +otherfolder' will refer to `otherfolder' on
the IMAP server. In particular, `fi &' will change to the `mbox' folder,
and `fi +Sent' will show your recorded sent mail, with both folders
located on the IMAP server.
Mail will ask you for a password string each time you connect to a remote
account. If you can reasonably trust the security of your workstation,
you can give this password in the startup file as
set password-mylogin@server.myisp.example="SECRET"
You should change the permissions of this file to 0600, see chmod(1).
Mail supports different authentication methods for both IMAP and POP3.
If Kerberos is used at your location, you can try to activate (the
optional) GSSAPI-based authentication via
set imap-auth=gssapi
The advantage of this method is that Mail doesn't need to know your pass‐
word at all, nor does it have to send sensitive data over the network.
If that isn't possible, try to use authentication methods that at least
avoid sending the password in clear over the wire, which is especially
important if SSL/TLS cannot be used, e.g.,
set imap-auth=cram-md5
For POP3 Mail will try to use the `APOP' mechanism automatically unless
explicitly disabled. If the server does not offer any such authentica‐
tion methods, conventional user/password based authentication must be
used. It is sometimes helpful, especially when setting up an account or
when there are authentification problems, to enable verbosity by setting
the verbose option – Mail will display all data sent to the server in
clear text on the screen when this option is set. (Because this may also
include passwords you should take care that no unauthorized person can
look at your terminal when this option is set.)
If you regularly use the same workstation to access IMAP accounts, you
can greatly enhance performance by enabling local caching of IMAP mes‐
sages. For any message that has been fully or partially fetched from the
server, a local copy is made and is used when the message is accessed
again, so most data is transferred over the network once only. To enable
the IMAP cache, select a local directory name and put
set imap-cache=~/localdirectory
in the (Mail-specific) startup file. All files within that directory can
be overwritten or deleted by Mail at any time, so you should not use the
directory to store other information.
Once the cache contains some messages, it is not strictly necessary any‐
more to open a connection to the IMAP server to access them. When Mail
is invoked with the option -D, or when the disconnected variable is set,
only cached data is used for any folder you open. Messages that have not
yet been completely cached are not available then, but all other messages
can be handled as usual. Changes made to IMAP mailboxes in disconnected
mode are committed to the IMAP server next time it is used in online
mode. Synchronizing the local status with the status on the server is
thus partially within your responsibility; if you forget to initiate a
connection to the server again before you leave your location, changes
made on one workstation are not available on others. Also if you alter
IMAP mailboxes from a workstation while uncommitted changes are still
pending on another, the latter data may become invalid. The same might
also happen because of internal server status changes. You should thus
carefully evaluate this feature in your environment before you rely on
it.
Many servers will close the connection after a short period of inactivity
– use one of
set pop3-keepalive=30
set imap-keepalive=240
to send a keepalive message each 30 seconds for POP3, or each 4 minutes
for IMAP.
If you encounter problems connecting to a SSL/TLS server, try the
ssl-rand-egd and ssl-rand-file variables (see the OpenSSL FAQ for more
information) or specify the protocol version with ssl-method. Contact
your ISP if you need a client certificate or if verification of the
server certificate fails. If the failed certificate is indeed valid,
fetch its CA certificate by executing the shell command
$ </dev/null openssl s_client -showcerts -connect \
server.myisp.example:imaps 2>&1 | tee log.txt
(see s_client(1)) and put it into the file specified with ssl-ca-file.
The data you need is located at the end of the certificate chain within
(and including) the `BEGIN CERTIFICATE' and `END CERTIFICATE' lines.
Note that the example above is insecure! One should use the `-verify'
and `-CAfile' options of s_client(1) to be "on the safe side" regarding
the fetched certificates.
Reading HTML mail
You need either the elinks(1) or lynx(1) utility or another command-line
web browser that can write plain text to standard output.
set pipe-text/html="elinks -force-html -dump 1"
set pipe-text/html="lynx -stdin -dump -force_html"
will cause HTML message parts to be converted into a more friendly form.
Viewing PDF attachments
Most PDF viewers do not accept input directly from a pipe. It is thus
necessary to store the attachment in a temporary file first:
set pipe-application/pdf="@&cat >/tmp/mail$$.pdf; \
acroread /tmp/mail$$.pdf; rm /tmp/mail$$.pdf"
Note that security defects are discovered in PDF viewers from time to
time. Automatical command execution like this can compromise your system
security, in particular if you stay not always informed about such
issues.
Signed and encrypted messages with S/MIME
[Optional] S/MIME provides two central mechanisms: message signing and
message encryption. A signed message contains some data in addition to
the regular text. The data can be used to verify that the message was
sent using a valid certificate, that the sender's address in the message
header matches that in the certificate, and that the message text has not
been altered. Signing a message does not change its regular text; it can
be read regardless of whether the recipient's software is able to handle
S/MIME. It is thus usually possible to sign all outgoing messages if so
desired. Encryption, in contrast, makes the message text invisible for
all people except those who have access to the secret decryption key. To
encrypt a message, the specific recipient's public encryption key must be
known. It is thus not possible to send encrypted mail to people unless
their key has been retrieved from either previous communication or public
key directories. A message should always be signed before it is
encrypted. Otherwise, it is still possible that the encrypted message
text is altered.
A central concept to S/MIME is that of the certification authority (CA).
A CA is a trusted institution that issues certificates. For each of
these certificates it can be verified that it really originates from the
CA, provided that the CA's own certificate is previously known. A set of
CA certificates is usually delivered with OpenSSL and installed on your
system. If you trust the source of your OpenSSL software installation,
this offers reasonable security for S/MIME on the Internet. In general,
a certificate cannot be more secure than the method its CA certificate
has been retrieved with, though. Thus if you download a CA certificate
from the Internet, you can only trust the messages you verify using that
certificate as much as you trust the download process.
The first thing you need for participating in S/MIME message exchange is
your personal certificate, including a private key. The certificate con‐
tains public information, in particular your name and your email address,
and the public key that is used by others to encrypt messages for you,
and to verify signed messages they supposedly received from you. The
certificate is included in each signed message you send. The private key
must be kept secret. It is used to decrypt messages that were previously
encrypted with your public key, and to sign messages.
For personal use it is recommended that you get a S/MIME certificate from
one of the major CAs on the Internet using your WWW browser. (Many CAs
offer such certificates for free.) You will usually receive a combined
certificate and private key in PKCS#12 format which Mail does not
directly accept. To convert it to PEM format, use the following shell
command:
$ openssl pkcs12 -in cert.p12 -out cert.pem -clcerts -nodes
If you omit the `-nodes' parameter, you can specifiy an additional `PEM
pass phrase' for protecting the private key. Mail will then ask you for
that pass phrase each time it signs or decrypts a message. You can then
use
set smime-sign-cert-myname@myisp.example=cert.pem
to make this private key and certificate known to Mail. You can now sign
outgoing messages. Just use
set smime-sign
to do so. From each signed message you send, the recipient can fetch
your certificate and use it to send encrypted mail back to you. Accord‐
ingly if somebody sends you a signed message, you can do the same. First
use the verify command to check the validity of the certificate. After
that, retrieve the certificate and tell Mail that it should use it for
encryption:
certsave filename
set smime-encrypt-user@host=filename
You should carefully consider if you prefer to store encrypted messages
in decrypted form. If you do, anybody who has access to your mail fold‐
ers can read them, but if you do not, you might be unable to read them
yourself later if you happen to lose your private key. The decrypt com‐
mand saves messages in decrypted form, while the save, copy, and move
commands leave them encrypted.
Note that neither S/MIME signing nor encryption applies to message sub‐
jects or other header fields. Thus they may not contain sensitive infor‐
mation for encrypted messages, and cannot be trusted even if the message
content has been verified. When sending signed messages, it is recom‐
mended to repeat any important header information in the message text.
Using CRLs with S/MIME or SSL/TLS
[Optional] Certification authorities (CAs) issue certificate revocation
lists (CRLs) on a regular basis. These lists contain the serial numbers
of certificates that have been declared invalid after they have been
issued. Such usually happens because the private key for the certificate
has been compromised, because the owner of the certificate has left the
organization that is mentioned in the certificate, etc. To seriously use
S/MIME or SSL/TLS verification, an up-to-date CRL is required for each
trusted CA. There is otherwise no method to distinguish between valid
and invalidated certificates. Mail currently offers no mechanism to
fetch CRLs, nor to access them on the Internet, so you have to retrieve
them by some external mechanism.
Mail accepts CRLs in PEM format only; CRLs in DER format must be con‐
verted, like, e.g.:
$ openssl crl -inform DER -in crl.der -out crl.pem
To tell Mail about the CRLs, a directory that contains all CRL files (and
no other files) must be created. The smime-crl-dir or ssl-crl-dir vari‐
ables, respectively, must then be set to point to that directory. After
that, Mail requires a CRL to be present for each CA that is used to ver‐
ify a certificate.
Handling spam
[Optional] Mail can make use of spam detection and learning facilities –
more precisely, SpamAssassin (<http://spamassassin.apache.org>). A very
comprehensive documentation of spamassassin(1) can be found at the
O'Reilly Commons (‐
<http://commons.oreilly.com/wiki/index.php/SpamAssassin>).
Currently Mail supports interaction with spamassassin(1) only via its
daemonized spamd(1) / spamc(1) server / client pair, which means that, in
order to detect and work with spam through Mail, an instance of the
spamd(1) daemon must be running (the examples are equivalent):
$ spamd -i localhost:2142 -i /tmp/.spamsock -d [-L] [-l]
$ spamd --listen=localhost:2142 --listen=/tmp/.spamsock \
--daemonize [--local] [--allow-tell]
Note that if spamd(1) should only listen on a local, path-based UNIX
domain socket instead of offering its service over the network, it maybe
necessary to use a single --socketpath option instead of the shown
--listen. In order to support training of the Bayesian classifier
through Mail, spamd(1) must have been started with the --allow-tell
option.
Once spamd(1) is running Mail can classify messages by using the client
side program, spamc(1), as in:
$ mail -Sspam-command=/usr/local/bin/spamc \
-Sspam-socket=/tmp/.spamsock -Sspam-maxsize=500000
The commands offered are spamclear and spamset, which simply set an `is-
spam' flag that can be used for, e.g., message selection, spamrate, which
passes messages through to the spam detector in order to gain a spam
score and conditionally set the `is-spam' flag accordingly, as well as
the Bayesian filter related spamforget, spamham and spamspam.
Because messages must exist on local storage in order to be scored (or
used for Bayesian filter training), it is possibly a good idea to perform
the local spam check last:
define spamdelhook {
# Server side DCC
spamset (header x-dcc-brand-metrics "bulk")
# Server-side spamassassin(1)
spamset (header x-spam-flag "YES")
del :s # TODO we HAVE to be able to do `spamrate :u ! :s'
# And finally the local spamc(1)
spamrate :u
del :s
}
set folder-hook-FOLDER=spamdelhook
See also the documentation for the variables spam-command, spam-host,
spam-port, spam-socket, spam-user and spam-maxsize.
Sending mail from scripts
If you want to send mail from scripts, you must be aware that Mail reads
the user's configuration files by default. So unless your script is only
intended for your own personal use (as, e.g., a cron job), you need to
circumvent this:
MAILRC=/dev/null mail -n
You then need to create a script-local configuration for Mail. This can
be done by either pointing the MAILRC variable to a custom configuration
file, by passing the configuration in environment variables, or by using
the -S command line option to specify options. Since many configuration
options are not valid shell variables, the env(1) command is useful if
the approach via environment variables is used:
env MAILRC=/dev/null from=scriptreply@domain smtp=host \
smtp-auth-user=login smtp-auth-password=secret \
smtp-auth=login mail -n -s "subject" \
-a attachment_file recipient@domain < content_file
SEE ALSO
bzip2(1), file(1), fmt(1), gzip(1), less(1), more(1), newaliases(1),
openssl(1), printf(1), sendmail(1), sh(1,) spamassassin(1), spamc(1),
spamd(1), vacation(1), xz(1), editline(3), iconv(3), readline(3),
setlocale(3), ssl(3), aliases(5), locale(7), mailaddr(7), re_format(7),
mailwrapper(8)
IMPLEMENTATION NOTES
The character set conversion uses and relies upon the iconv(3) function.
Its functionality differs widely between the various system environments
Mail runs on.
Limitations with IMAP mailboxes are: It is not possible to edit messages,
but it is possible to append them. Thus to edit a message, create a
local copy of it, edit it, append it, and delete the original. The line
count for the header display is only appropriate if the entire message
has been downloaded from the server. The marking of messages as `new' is
performed by the IMAP server; use of the exit command instead of quit
will not cause it to be reset, and if the newmail variable is unset, mes‐
sages that arrived during a session will not be in state `new' anymore
when the folder is opened again. Also if commands queued in disconnected
mode are committed, the IMAP server will delete the `new' flag for all
messages in the changed folder, and new messages will appear as unread
when it is selected for viewing later. The `flagged', `answered', and
`draft' attributes are usually permanent, but some IMAP servers are known
to drop them without notification. Message numbers may change with IMAP
every time before the prompt is printed if Mail is notified by the server
that messages have been deleted by some other client or process. In this
case, `Expunged n messages' is printed, and message numbers may have
changed.
Limitations with POP3 mailboxes are: It is not possible to edit messages,
they can only be copied and deleted. The line count for the header dis‐
play is only appropriate if the entire message has been downloaded from
the server. The status field of a message is maintained by the server
between connections; some servers do not update it at all, and with a
server that does, the `exit' command will not cause the message status to
be reset. The `newmail' command and the `newmail' variable have no
effect. It is not possible to rename or to remove POP3 mailboxes.
If a `RUBOUT' (interrupt, `control-C') is typed while an IMAP or POP3
operation is in progress, Mail will wait until the operation can be
safely aborted, and will then return to the command loop and print the
prompt again. When a second `RUBOUT' is typed while Mail is waiting for
the operation to complete, the operation itself will be cancelled. In
this case, data that has not been fetched yet will have to be fetched
before the next command can be performed. If the cancelled operation was
using an SSL/TLS encrypted channel, an error in the SSL transport will
very likely result and render the connection unusable.
As Mail is a mail user agent, it provides only basic SMTP services. If
it fails to contact its upstream SMTP server, it will not make further
attempts to transfer the message at a later time, and it does not leave
other information about this condition than an error message on the ter‐
minal and an entry in DEAD. This is usually not a problem if the SMTP
server is located in the same local network as the computer on which Mail
is run. However, care should be taken when using a remote server of an
ISP; it might be better to set up a local SMTP server then which just
acts as a proxy.
Mail immediately contacts the SMTP server (or sendmail(1)) even when
operating in disconnected mode. It would not make much sense for Mail to
defer outgoing mail since SMTP servers usually provide much more elabo‐
rated delay handling than Mail could perform as a client. Thus the rec‐
ommended setup for sending mail in disconnected mode is to configure a
local SMTP server such that it sends outgoing mail as soon as an external
network connection is available again, i.e., to advise it to do that from
a network startup script.
HISTORY
A mail command appeared in Version 1 AT&T Unix. Berkeley Mail was writ‐
ten in 1978 by Kurt Shoens. This man page is derived from from The Mail
Reference Manual originally written by Kurt Shoens. "Heirloom Mailx"
enhancements are maintained and documented by Gunnar Ritter. "S-nail" is
maintained and documented by Steffen (Daode) Nurpmeso.
Portions of this text are reprinted and reproduced in electronic form
from IEEE Std 1003.1, 2003 Edition, Standard for Information Technology –
Operating System Interface (POSIX), The Open Group Base Specifications
Issue 6, Copyright © 2001-2003 by the Institute of Electrical and Elec‐
tronics Engineers, Inc and The Open Group. In the event of any discrep‐
ancy between this version and the original IEEE and The Open Group Stan‐
dard, the original IEEE and The Open Group Standard is the referee docu‐
ment. The original Standard can be obtained online at
<http://www.opengroup.org/unix/online.html>. Redistribution of this
material is permitted so long as this notice remains intact.
AUTHORS
Kurt Shoens,
Christos Zoulas,
Gunnar Ritter,
Steffen (Daode) Nurpmeso ⟨s-nail-users@lists.sourceforge.net⟩
BUGS
Variables in the environment passed to Mail cannot be unset.
Apr 05, 2014
[top]
List of man pages available for Archlinux
Copyright (c) for man pages and the logo by the respective OS vendor.
For those who want to learn more, the polarhome community provides shell access and support.
[legal]
[privacy]
[GNU]
[policy]
[cookies]
[netiquette]
[sponsors]
[FAQ]
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
|
Vote for polarhome
|