nail - send and receive MIME conformant mail


nail [-BFintv~] [-s subject] [-a attachment ] [-c cc-addr]
       [-b bcc-addr] [-r from-addr] [-h hops] to-addr
       . . .
nail [-BeHiInNv~] [-T name] -f [name]
nail [-BeinNv~] [-u user]


Nail is an intelligent mail processing system, which has a
command syntax reminiscent of ed(1) with lines replaced by
messages. It is based on Berkeley Mail 8.1, is intended
to provide the functionality of the POSIX.2 mailx command,
and offers extensions for MIME messages, POP3 and SMTP.

The following options are accepted:

-a file
Attach the given file to the message.
-B Make standard input and standard output line
-b address
Send blind carbon copies to list. List should be a
comma-separated list of names.
-c address
Send carbon copies to list of users.
-e Just check if mail is present in the system mail
box. If yes, return an exit status of zero, else,
a non-zero value.
-f [file]
Read in the contents of your mbox (or the specified
file) for processing; when you quit, nail writes
undeleted messages back to this file.
-F Save the message to send in a file named after the
local part of the first recipient's address.
-H Print header summaries for all messages and exit.
-h hops
Invoke sendmail with the specified hop count. This
option has no effect when SMTP is used for sending
-i Ignore tty interrupt signals. This is particularly
useful when using nail on noisy phone lines.
-I Shows the `Newsgroup:' or `Article-Id:' fields in
the header summary. Only applicable in combination
with -f.
-n Inhibits reading /etc/mail.rc upon startup.
-N Inhibits the initial display of message headers
when reading mail or editing a mail folder.
-q file
Start the message with the contents of the speci
fied file. May be given in send mode only.
-r address
Sets the From address. Overrides any from variable specified in environment or startup files. Tilde
escapes are disabled. The -r address options are passed to the mail transfer agent unless SMTP is
-s subject
Specify subject on command line (only the first
argument after the -s flag is used as a subject; be
careful to quote subjects containing spaces).
-R address
Specify reply-to adress on command line. Only the
first argument after the -R flag is used as the
-T name
Writes the `Message-Id' and `Article-Id' header
fields of each message read in the file name.
Implies -I.
-t The message to be sent is expected to contain a
message header with `To:', `Cc:', or `Bcc:' fields
giving its recipients. Recipients specified on the
command line are ignored.
-u user
Reads the mailbox of the given user name.
-v Verbose mode. The details of delivery are dis
played on the user's terminal.
-V Print nail's version and exit.
-~ Enable tilde escapes even if not in interactive
Sending mail
To send a message to one or more people, nail can be
invoked with arguments which are the names of people to
whom the mail will be sent. You are then expected to type
in your message, followed by an `control-D' at the begin
ning of a line. The section below Replying to or origi
nating mail, describes some features of nail available to
help you compose your letter.
Reading mail
In normal usage nail is given no arguments and checks your
mail out of the post office, then prints out a one line
header of each message found. The current message is ini
tially the first message (numbered 1) and can be printed
using the print command which can be abbreviated `p').
You can move among the messages much as you move between
lines in ed(1), with the commands '+' and '-' moving back
wards and forwards, and simple numbers.
Disposing of mail
After examining a message you can delete `d') the message
or reply `r') to it. Deletion causes the nail program to
forget about the message. This is not irreversible; the
message can be undeleted `u') by giving its number, or the
nail session can be aborted by giving the exit `x') com
mand. 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 mes
sages at once. Thus 'delete 1 2' deletes messages 1 and 2, while 'delete 1-5' deletes messages 1 through 5. The following special message names exist:
:n All new messages.
:o All old messages.
:u All unread messages.
:d All deleted messages.
:r All read messages.
All messages that contain string in the subject field (case ignored).
All messages from address.
. The current message.
; The message that was previously the current mes
, The parent message of the current message, that is
the message with the Message-ID given in the `InReply-To:' field or the last entry of the `Refer
ences:' field of the current message.
- The previous message.
+ The next message.
^ The first message.
$ The last message.
* All messages.
Replying to or originating mail
You can use the reply command to set up a response to a
message, sending it back to the person who it was from.
Text you then type in, up to an end-of-file, defines the
contents of the message. While you are composing a mes
sage, nail treats lines beginning with the character '~'
specially. For instance, typing '~m' (alone on a line)
will place a copy of the current message into the response
right shifting it by a tabstop (see indentprefix variable,
below). Other escapes will set up subject fields, add and
delete recipients to the message, attach files to it and
allow you to escape to an editor to revise the message or
to a shell to run some commands. (These options are given
in the summary below.)
Ending a mail processing session
You can end a nail session with the quit `q') command.
Messages which have been examined go to your mbox file
unless they have been deleted in which case they are dis
carded. Unexamined messages go back to the post office.
(See the -f option above).
Personal and systemwide distribution lists
It is also possible to create a personal distribution
lists so that, for instance, you can send mail to
'cohorts' and have it go to a group of people. Such lists can be defined by placing a line like

alias cohorts bill ozalp jkf mark kridle@ucbcory
in the file .mailrc in your home directory. The current
list of such aliases can be displayed with the alias com
mand in nail. System wide distribution lists can be cre
ated by editing /etc/aliases, see aliases(5) and send_ mail(8); these are kept in a different syntax. In mail
you send, personal aliases will be expanded in mail sent
to others so that they will be able to reply to the recip
ients. System wide aliases are not expanded when the mail
is sent, but any reply returned to the machine will have
the system wide alias expanded as all mail goes through
Network mail (Internet / ARPA, UUCP, Berknet)
See mailaddr(7) for a description of network addresses. Nail has a number of options which can be set in the
.mailrc file to alter its behavior; thus 'set askcc' enables the askcc feature. (These options are summarized
MIME types
For any outgoing attachment, nail tries to determine the
content type. It does this by reading MIME type files
whose lines have the following syntax:

type/subtype extension [extension . . .]
where type/subtype are strings describing the file con
tents, 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 nail.
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, the first
for text or international text files, the second for any
file that contains formatting characters other than new
lines and horizontal tabulators.
MIME conformance
Nail is intended to be a MIME-conformant mail user agent,
with the following exception: No special handling of `mul
tipart/alternative' messages is performed. All parts with
content types of `text' or `message' are shown. This is
done because the user should see as much information as
Nail uses the LC_CTYPE locale setting to determine whether
a character is printable. Thus, its value has to match
the character set of the terminal nail runs on.
Character sets
If a message contains non-ASCII characters, the character
set being used must be declared within the header. Its
value can be declared using the charset variable. It is normally assumed that this is the terminal character set,
too. If the latter differs from the one that should be
used in outgoing mail, the ttycharset variable can be used for its declaration. An outgoing message is then con
verted, resulting in errors when this process cannot be
done for the entire text; if the message contains NUL
characters, it is not converted. Attachments are never
converted. Any message that is displayed on a terminal is
tried to convert, too, with characters not in the terminal
character set replaced by question marks.
Each command is typed on a line by itself, and may take
arguments following the command word. The command need
not be typed in its entirety - the first command which
matches the typed prefix is used. For commands which take
message lists as arguments, if no message list is given,
then the next message forward which satisfies the com
mand's requirements is used. If there are no messages
forward of the current message, the search proceeds back
wards, and if there are no good messages at all, nail
types 'applicable messages' and aborts the command. If the command begins with a # sign, the line is ignored.
- Print out the preceding message. If given a
numeric argument n, goes to the n'th previous mes
sage and prints it.
? Prints a brief summary of commands.
! Executes the shell (see sh(1) and csh(1)) command
which follows.
| A synonym for the pipe command.
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.
(alt) The alternates command is useful if you have
accounts on several machines. It can be used to
inform nail that the listed addresses are really
you. When you reply to messages, nail 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.
cd Same as chdir.
chdir (ch) Changes the user's working directory to that
specified, if given. If no directory is given,
then changes to the user's login directory.
copy (c) The copy command does the same thing that save
does, except that it does not mark the messages it
is used on for deletion when you quit.
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.
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.
Same as ignore.
dp or dt
Deletes the current message and prints the next
message. If there is no next message, nail says
'at EOF'.
echo Echoes its arguments, resolving special names as
documented for the folder command.
edit (e) Takes a list of messages and points the text
editor at each one in turn. On return from the
editor, the message is read back in.
else Marks the end of the then-part of an if statement
and the beginning 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 modifying the user's system mailbox, his
mbox file, or his edit file in -f.
file (fi) The same as folder.
List the names of the folders in your folder direc
folder (fold) The folder command switches to a new mail
file or folder. With no arguments, it tells you
which file you are currently reading. If you give
it an argument, it will write out changes (such as
deletions) you have made in the current file and
read in the new file. Some special conventions are
recognized for the name. # means the previous
file, % means your system mailbox, %user means user's system mailbox, & means your mbox file, and +file means a file in your folder directory. %:filespec expands to the same value as filespec, but the file is handled as a system mailbox e. g.
by the mbox and save commands. If the name matches
one of the strings defined with the shortcut com mand, it is replaced by its long form and expanded.
A name of the form

is taken as an internet mailbox specification. The
supported protocols are currently pop3 (POP3) and
pop3s (i. e. POP3 with SSL/TLS encryption).
(F) Similar to Respond, but saves the message in a file named after the local part of the first recip
ient's address.
(fo) Similar to respond, but saves the message in a file named after the local part of the first recip
ient's address.
Similar to followup, but responds to all recipients regardless of the flipr and Replyall variables.
Similar to Followup, but responds to the sender only regardless of the flipr and Replyall vari ables.
(For) Like forward, but does not add any header
lines. This is not a way to hide the sender's
identity, but useful for sending a message again to
the same recipients.
(for) Takes a list of messages and a user name and
sends each message to the named user.
from (f) Takes a list of messages and prints their mes
sage headers, piped through the pager if the output
does not fit on the screen.
(h) Lists the current range of headers, which is an
18-message group. If a '+' argument is given, then
the next 18-message group is printed, and if a '-'
argument is given, the previous 18-message group is
help A synonym for ?.
hold (ho, also preserve) Takes a message list and marks
each message therein to be saved in the user's sys
tem mailbox instead of in mbox. Does not override
the delete command.
if Commands in nail's startup files can be executed
conditionally depending on whether you are sending
or receiving mail with the if command. For exam
ple, you can do:

if receive
commands . . .
An else form is also available:

if receive
commands . . .
commands . . .
Note that the only allowed conditions are receive, send, and term (execute command if standard input is a tty).
ignore Add the list of header fields named to the ignored
list. Header fields in the ignore list are not
printed on your terminal when you print a message.
This command is very handy for suppression of cer
tain machine-generated header fields. The Type and
Print commands can be used to print a message in
its entirety, including ignored fields. If ignore
is executed with no arguments, it lists the current
set of ignored fields.
inc Same as newmail.
list Prints the names of all available commands.
Mail (M) Similar to mail, but saves the message in a
file named after the local part of the first recip
ient's address.
mail (m) Takes as argument login names and distribution
group names and sends mail to those people.
mbox Indicate that a list of messages be sent to mbox in
your home directory when you quit. This is the
default action for messages if you do not have the
hold option set.
Checks for new mail in the current folder without
commiting any changes before. If new mail is pre
sent, a message is printed. If the header variable is set, the headers of each new message are also
next (n) like + or CR) 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.
(pre) A synonym for hold.
Pipe (Pi) Like pipe but also pipes ignored header
pipe (pi) Takes a message list and a shell command and
pipes the messages through the command. Without an
argument, the current message is piped through the
command given by the cmd variable. If the page variable is set, every message is followed by a
formfeed character.
Print (P) Like print but also prints out ignored header
fields. 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.
quit (q) Terminates the session, saving all undeleted,
unsaved messages in the user's mbox file in his
login directory, 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 -f flag, then the edit file is rewritten.
A return to the Shell is effected, unless the
rewrite of edit file fails, in which case the user
can escape with the exit command.
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 message.
The default message must not be deleted.
Similar to reply, but responds to all recipients
regardless of the flipr and Replyall variables.
Similar to Reply, but responds to the sender only
regardless of the flipr and Replyall variables.
Same as Reply.
Same as reply.
Same as replyall.
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 your terminal when you print a mes
sage. All other header fields are suppressed. The
Type and Print commands can be used to print a mes
sage in its entirety. If retain is executed with
no arguments, it lists the current set of retained
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
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 deletion.
set (se) With no arguments, prints all variable values,
piped through the pager if the output does not fit
on the screen. Otherwise, sets option. Arguments
are of the form option=value (no space before or
after =) or option. Quotation marks may be placed
around any part of the assignment statement to
quote blanks or tabs, i.e. 'set indentprefix="->"'. If an argument begins with no, as in `set nosave', the effect is the same as invoking the unset com
mand with the remaining part of the variable
(`unset save').
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 con
tent information.
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 overrides
saveignore. The use of this command is strongly
discouraged since it may strip header fields that
are needed to decode the message correctly.
shell (sh) Invokes an interactive version of the shell.
Defines a shortcut name and its string for expan
sion, as described for the folder command. With no arguments, a list of defined shortcuts is printed.
size Takes a message list and prints out the size in
characters of each message.
source The source command reads commands from a file.
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 the mbox file.
Type (T) Identical to the Print command.
type (t) A synonym for print.
Takes a list of names defined by alias commands and
discards the remembered groups of users. The group
names no longer have any significance.
(u) Takes a message list and marks each message as
not being deleted.
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.
Removes the header field names from the list of
retained fields.
Removes the header field names from the list of
ignored fields for saving.
Removes the header field names from the list of
retained fields for saving.
unset Takes a list of option names and discards their
remembered values; the inverse of set.
Deletes the shortcut names given as arguments.
visual (v) Takes a message list and invokes the display
editor on each message.
write (w) For conventional messages, the body without all
headers is written. The output is converted to its
native format, if necessary. If a message is in
MIME multipart format, its first part is written to
the specified file, and the user is asked for a
filename to save each other part. In non-interac
tive mode, only the parts of the multipart message
that have a filename given in the part header are
written, the other are discarded. The original
message is never marked for deletion in the origi
nating mail folder. The contents of the destina
tion file are overwritten if the file previously
xit (x) A synonym for exit.
z Nail presents message headers in windowfuls as
described under the headers command. The z 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 nail scroll
to the last window of messages.
Tilde escapes
Here is a summary of the tilde escapes, which are used
when composing messages to perform special functions.
Tilde escapes are only recognized at the beginning of
lines. The name 'tilde escape' is somewhat of a misnomer since the actual escape character can be set by the option
Execute the indicated shell command, then return to
the message.
~. Same effect as typing the end-of-file character.
Identical to ~r.
Command is executed using the shell. Its standard
output is inserted into the message.
~@ [filename . . . ]
With no arguments, edit the attachment list.
First, the user can edit all existing attachment
data. 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, nail will
ask for further attachments, until an empty file
name is given. If filename arguments are speci fied, all of them are appended to the end of the
attachment list.
~A Inserts the string contained in the Sign variable
(same as `~i Sign').
~a Inserts the string contained in the sign variable
(same as `~i sign').
~bname . . .
Add the given names to the list of carbon copy
recipients but do not make the names visible in the
Cc: line (`blind' carbon copy).
~cname . . .
Add the given names to the list of carbon copy
~d Read the file 'dead.letter' from your home direc
tory into the message.
~e Invoke the text editor on the message collected so
far. After the editing session is finished, you
may continue appending text to the message.
Read the named messages into the message being
sent. If no messages are specified, read in the
current message. Message headers currently being
ignored (by the ignore or retain command) are not
Identical to ~f, except all message headers are
~h Edit the message header fields by typing each one
in turn and allowing the user to append text to the
end or modify the field by using the current termi
nal erase and kill characters.
Insert the value of the variable specified by
string into the message adding a newline character
at the end. If the variable is unset or empty, the
message remains unaltered.
Read the named messages into the message being
sent, indented by a tab or by the value of indent
prefix. If no messages are specified, read the
current message. Message headers currently being
ignored (by the ignore or retain command) are not
Identical to ~m, except all message headers are
~p Print out the message collected so far, prefaced by
the message header fields and followed by the
attachment list, if any. If the message text is
longer than the screen size, it is piped through
the pager.
~q Abort the message being sent, copying the message
to `dead.letter' in your home directory if save is set.
Use string as the Reply-To field.
Read the named file into the message.
Cause the named string to become the current sub
ject field.
~tname . . .
Add the given names to the direct recipient list.
~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 you quit the editor, you may resume appending
text to the end of your message.
Write the message onto the named file.
~x Same as ~q, except that the message is not saved to
the dead.letter file.
Pipe the message through the command as a filter.
If the command gives no output or terminates abnor
mally, retain the original text of the message.
The command fmt(1) is often used as command to
rejustify the message.
Execute the given nail command. Not all commands,
however, are allowed.
Identical to ~:.
Insert the string of text in the message prefaced
by a single ~. If you have changed the escape
character, the you should double that character in
order to send it.
Variable options
Options are controlled via set and unset commands, see
their entries for a syntax description. An option is also
set if it is passed to nail as part of the environment,
but a value given in a startup file overrides this.
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:
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
ask or asksub
Causes nail to prompt you for the subject of each
message you send. If you respond with simply a
newline, no subject field will be sent.
Causes the prompts for `Cc:' and `Bcc:' lists to
appear after the message has been edited.
If set, nail asks for files to attach at the end of
each message. Responding with a newline indicates
not to include an attachment.
askcc Causes you to be prompted for additional carbon
copy recipients (at the end of each message if
askatend or bsdcompat is set). Responding with a newline indicates your satisfaction with the cur
rent list.
askbcc Causes you to be prompted for additional blind car
bon copy recipients (at the end of each message if
askatend or bsdcompat is set). Responding with a newline indicates your satisfaction with the cur
rent list.
Same as newmail.
Causes the delete command to behave like dp - thus,
after deleting a message, the next one will be
typed automatically.
bang Enables the substitution of `!' by the contents of
the last command line in shell escapes.
Causes automatic display of a header summary after
executing a folder command.
Sets some cosmetical features to traditional BSD
style; has the same affect as setting `askatend'
and all other variables prefixed with `bsd', set
ting prompt to `& ', and changing the default pager
to more.
Changes the letters printed in the first column of
a header summary to traditional BSD style.
Changes the display of columns in a header summary
to traditional BSD style.
Changes some informational messages to traditional
BSD style.
Causes the `Subject:' field to appear immediately
after the `To:' field in message headers and with
the ~h tilde command.
bsdset Changes the output format of the set command to
traditional BSD style.
The date in a header summary is normally the date
of the mailbox `From ' line of the message. If
this variable is set, the date as given in the
`Date:' header field is used, converted to local
debug Prints debugging messages and disables the actual
delivery of messages.
dot The binary option dot causes nail to interpret a
period alone on a line as the terminator of a mes
sage you are sending.
When a message is edited while being composed, its
header is included in the editable text. `To:',
`Cc:', `Bcc:', and `Subject:' fields are accepted
within the header, other fields are ignored.
If set, an empty mailbox file is not removed. This
may improve the interoperability with other MUAs
when using a common folder directory.
If the mailbox is empty, nail normally prints 'No mail for user' and exits immediately. If this option is set, nail starts even with an empty mail
flipr Exchanges the Respond with the respond commands and
header Causes the header summary to be written at startup;
enabled by default.
hold This option is used to hold messages in the system
mailbox by default.
ignore Causes interrupt signals from your terminal to be
ignored and echoed as @'s.
An option related to dot is ignoreeof which makes
nail refuse to accept a control-d as the end of a
message. Ignoreeof also applies to nail command
keep This option causes nail to truncate your system
mailbox instead of deleting it when it is empty.
This should always be set, since it prevents mali
cious users from creating fake mail folders in a
world-writable spool directory.
When you save a message, nail usually discards it
from the originating folder when you quit. To
retain all saved messages, set this option.
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.
Checks for new mail in the current folder each time
the prompt is printed.
Setting the option noheader is the same as giving
the -N flag on the command line.
Causes the filename given in the record variable to be interpreted relative to the directory given in
the folder variable rather than to the current directory unless it is an absolute pathname.
page If set, each message the pipe command prints out is
followed by a formfeed character.
Send messages to the pipe command without perform
ing MIME and character set conversions.
quiet Suppresses the printing of the version when first
Reverses the sense of reply and Reply commands.
save When you abort a message with two RUBOUT (interrupt
characters) nail copies the partial letter to the
file 'dead.letter' in your home directory. This option is set by default.
If this option is set, then a message-list speci
fier in the form '/x:y' will expand to all messages
containing the substring 'y' in the header field
'x'. The string search is case insensitive.
When sending a message, wait until the mail trans
fer agent exits before accepting further commands.
Setting this option causes nail to start at the
last message instead of the first one when opening
a mail folder.
Causes nail to use the sender's real name instead
of the plain address in the header field summary
and in message specifications.
showto Causes the recipient of the message to be shown in
the header summary if the message was sent by the
Do not load the default CA locations to verify
SSL/TLS server certificates.
Accept SSLv2 connections. These are normally not
allowed because this protocol version is insecure.
Inhibits the generation of the `Message-Id:' and `User-Agent:' header fields that include obvious references to nail. There are two pitfalls associ
ated 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
Setting the option verbose is the same as using the
-v flag on the command line. When nail runs in
verbose mode, the actual delivery of messages is
displayed on the user's terminal.
String Options
The string options include the following:
Specifies a list of recipients to which a blind
carbon copy of each outgoing message will be sent
autocc Specifies a list of recipients to which a carbon
copy of each outgoing message will be sent automat
The name of the character set used by nail. If
unset, the encoding used by the current locale is
used if not ASCII. If the encoding is ASCII,
iso-8859-1 is the default. The character set of all outgoing messages that contain non-ASCII char
acters is declared using its value.
cmd The default value for the pipe command.
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
DEAD The name of the file to use for saving aborted mes
sages. This defaults to 'dead.letter' in the user's home directory.
EDITOR Pathname of the text editor to use in the edit com
mand and ~e escape. If not defined, then a default
editor is used.
The default MIME encoding to use in outgoing text
messages and message parts. Valid values are 8bit
or quoted-printable. The default is 8bit. In case the mail transfer system is not ESMTP compliant,
quoted-printable should be used instead. If there is no need to encode a message, 7bit transfer mode
is used, without regard to the value of this vari
able. Binary data is always encoded in base64 mode.
escape If defined, the first character of this option
gives the character to use in the place of ~ to
denote escapes.
folder The name of the directory to use for storing fold
ers of messages. If this name begins with a '/',
nail considers it to be an absolute pathname; oth
erwise, the folder directory is found relative to
your home directory.
from The address to put into the `From:' field of the
message header. If replying to a message, this
address is handled as if it were in the alternates
list. If this variable is set, a `Sender:' field containing the user's name is also generated,
unless the variable smtp is set and its value dif
fers from localhost. If the machine's hostname is not valid at the Internet (for example at a dialup
machine), you have to set this variable to get cor
rect Message-ID header fields.
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 contains spaces or tabs.
LISTER Pathname of the directory lister to use in the
folders command. Default is /bin/ls.
MAIL Is used as the user's mailbox, if set. Otherwise,
a system-dependent default is used. Can be a pro_
tocol:// string (see the folder command for more information).
A string to put at the beginning of each new mes
A string to put at the end of each new message.
MBOX The name of the mbox file. It can be the name of a
folder. The default is 'mbox' in the user's home
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 nail com
mands that are not understood by other mailx imple
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 crt variable is set. The default paginator
pg(1) or, in BSD compatibility mode, more(1) is used if this option is not defined.
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.
When a MIME message part of content/subcontent type is displayed or it is replied to, its text is fil
tered through the value of this variable inter
preted as a shell command. 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 example, a message sender could easily execute
arbitrary code on the system nail is running on.
Many POP3 servers will close the connection after a
period of inactivity. 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.
prompt The string printed when a command is accepted.
Defaults to `? ', or to `& ' if the bsdcompat vari able is set.
quote If set, nail starts a replying message with the
original message prefixed by the value of the vari
able indentprefix. Normally, 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 command then. If the string allhead_ ers is assigned, all headers are printed above the
message body, thus quote acts like an automatic ~M
command then.
screen When nail initially prints the message headers, it
determines the number to print by looking at the
speed of your terminal. The faster your terminal,
the more it prints. This option overrides this
calculation and specifies how many message headers
you want printed. This number is also used for
scrolling with the z command.
To use an alternate mail delivery system, set this
option to the full pathname of the program to use.
This should be used with care.
SHELL Pathname of the shell to use in the ! command and
the ~! escape. A default shell is used if this
option is not defined.
Sign A string for use with the ~A command.
sign A string for use with the ~a command.
smtp Normally, nail invokes sendmail(8) directly
to transfer messages. If smtp is set, a
SMTP connection 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.
Specifies a directory with CA certificates
for verification. See SSL_CTX_load_ver_ ify_locations(3) for more information.
Specifies a file with CA certificates for
verification. See SSL_CTX_load_verify_loca_ tions(3) for more information.
Sets the file name for a SSL/TLS client cer
tificate required by some servers.
Sets an account-specific file name for a
SSL/TLS client certificate required by some
servers. Overrides ssl-cert for the speci
fied account.
Specifies a list of ciphers for SSL/TLS con
nections. See ciphers(1) for more informa
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.
Sets an account-specific file name for the
private key of a SSL/TLS client certificate.
Overrides ssl-key for the specified account.
Selects a SSL/TLS protocol version; valid
values are `ssl2', `ssl3', and `tls1'. If
unset, the method is selected automatically,
if possible.
Gives the pathname to an entropy daemon
socket, see RAND_egd(3).
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.
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'.
record If defined, gives the pathname of the file
used to record all outgoing mail. If not
defined, then outgoing mail is not so saved.
The address to put into the `Reply-To:' field of the message header. If replying to
a message, this address is handled as if it
were in the alternates list.
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 individual mes
If defined, gives the number of lines of a
message to be printed out with the top com
mand; normally, the first five lines are
The character set of the terminal nail oper
ates on. There is normally no need to set
this variable since nail can determine this
automatically by looking at the LC_CTYPE
locale setting; if this succeeds, the value
is assigned at startup and will be displayed
by the set command. Note that this is not
necessarily a character set name that can be
used in Internet messages. If unset, its
default is the value of the charset vari
VISUAL Pathname of the text editor to use in the
visual command and ~v escape.


Besides the variables described above, nail uses
the following environment strings:

HOME The user's home directory.

See locale(7).
MAILRC Is used as startup file instead of ~/.mailrc
if set.
NAILRC If this variable is set and MAILRC is not
set, it is read as startup file.
TMPDIR Used as directory for temporary files
instead of /tmp, if set.


File giving initial commands.
System wide initialization file.
Personal MIME types.
System wide MIME types.


POP3 client setup
First, you need the following data from your ISP:
the host name of its POP3 server, user name and
password for this server, and a notice whether the
server uses SSL/TLS encryption. Assuming the host
name is `server.myisp.example' and your user name
for that server is `myname', you can refer to this
account using the folder command or -f command line
option with

(replace `pop3://' with `pop3s://' if the server
supports SSL/TLS). The string is not necessarily
the same as your internet mail address. As you
probably want messages to be deleted from this
account after saving them, prefix it with `%:'.
The shortcut command can be used to avoid typing
that many characters every time you want to con

shortcut myisp %:pop3://myname@server.myisp.example
You probably want to put this string into a startup
file. As the shortcut command is nail-specific and will confuse other mailx implementations, it should
not be used in ~/.mailrc, instead, put

set NAIL_EXTRA_RC=~/.nailrc
in ~/.mailrc and create a file ~/.nailrc containing the shortcut command above. Nail will ask you for a password string each time you connect to this
account. If you can reasonably trust the security
of the machine you are working on, you can give
this password in the startup file as

set password-myname@server.myisp.example="SECRET"
You should change the permissions of this file to
0600, see chmod(1). Many POP3 servers will close
the connection after a short period of inactivity.

set pop3-keepalive=30
to send a keepalive message each 30 seconds. 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 cer
tificate fails. If the failed certificate is
indeed valid, fetch it by executing

openssl s_client -connect server.myisp.example:pop3s
(see s_client(1)) and put it into the file speci
fied with ssl-ca-file.
Reading HTML mail
You need the w3m utility or another command-line
web browser that can write plain text to standard

set pipe-text/html="w3m -dump -T text/html"
will then cause HTML text to be converted into a
more friendly form, the command string depends on
the browser you are using.


fmt(1), newaliases(1), openssl(1), pg(1), proc
mail(1), more(1), vacation(1), ssl(3), aliases(5),
locale(7), mailaddr(7), sendmail(8)


Variables in the environment passed to nail cannot
be unset.

The character set conversion relies heavily on the
iconv(3) function. Its functionality differs
widely between the various system environments nail
runs on.

Nail expects input text to be in Unix format, with
lines separated by newline (^J, 0 characters
only.) charactersein additionawillebceartrrieaagteedretausrn (^M,
binary data; to send such files as text, strip
these characters e. g. by
tr -d ' 15' <input | nail . . .
or fix the tools that generate them.
POP3 mailboxes are limited in some ways: It is not
possible to edit messages, they can only be copied
and deleted. The line count for the header display
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 connec
tions; 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. An unencrypted POP3 message download
can be interrupted from the terminal, but the part
that was not downloaded will have to be downloaded
before the next command is sent. A SSL/TLS
encrypted POP3 message download should not be
interrupted, as this will very likely cause an
error in the SSL transport.
There is no support for SSL/TLS certificate
revocation lists (CRLs) yet.
A mail command appeared in Version 1 AT&T Unix.
Berkeley Mail was written in 1978 by Kurt Shoens.
This man page is derived from from The Mail Refer
ence Manual originally written by Kurt Shoens. A
revision for nail was done by Gunnar Ritter.
Copyright © 2010-2023 Platon Technologies, s.r.o.           Home | Man pages | tLDP | Documents | Utilities | About
Design by styleshout