













                   MMAAIILL RREEFFEERREENNCCEE MMAANNUUAALL




                        _K_u_r_t _S_h_o_e_n_s


                         Revised by


                _C_r_a_i_g _L_e_r_e_s and _M_a_r_k _A_n_d_r_e_w_s


                        Version 5.5


11..  IInnttrroodduuccttiioonn

     _M_a_i_l  provides  a  simple  and friendly environment for
sending and receiving mail.  It divides incoming  mail  into
its  constituent  messages  and allows the user to deal with
them in any order.  In addition, it provides a  set  of  _e_d-
like  commands  for  manipulating messages and sending mail.
_M_a_i_l offers the user simple editing capabilities to ease the
composition  of  outgoing messages, as well as providing the
ability to define and send to names which address groups  of
users.   Finally,  _M_a_i_l is able to send and receive messages
across such networks as the ARPANET, UUCP, and Berkeley net-
work.

     This  document describes how to use the _M_a_i_l program to
send and receive messages.  The reader is not assumed to  be
familiar  with other message handling systems, but should be
familiar with the UNIX1 shell, the text editor, and some  of
the  common  UNIX commands.  "The UNIX Programmer's Manual,"
"An Introduction to Csh," and "Text Editing with Ex and  Vi"
can be consulted for more information on these topics.

     Here  is  how messages are handled: the mail system ac-
cepts incoming _m_e_s_s_a_g_e_s for you from other people  and  col-
lects  them in a file, called your _s_y_s_t_e_m _m_a_i_l_b_o_x.  When you
____________________
   1 UNIX is a trademark of Bell Laboratories.












UUSSDD::77--22                                MMaaiill RReeffeerreennccee MMaannuuaall


login, the system notifies you if  there  are  any  messages
waiting  in your system mailbox.  If you are a _c_s_h user, you
will be notified when new mail arrives  if  you  inform  the
shell  of  the location of your mailbox.  On NetBSD systems,
your system mailbox is located in the directory /var/mail in
a  file  with your login name.  If your login name is "sam,"
then you can make _c_s_h notify you of new  mail  by  including
the following line in your .cshrc file:

    set mail=/var/mail/sam

    When you read your mail using
    _M_a_i_l,
    it reads your system mailbox and separates that file into the
    individual messages that have been sent to you.  You can then
    read, reply to, delete, or save these messages.
    Each message is marked with its author and the date they sent it.

22..  CCoommmmoonn uussaaggee

     The _M_a_i_l 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 login
name is, say, "root," use the shell command:

    % Mail root

    then type your message.  When you reach the end of the message, type
    an EOT (control-d) at the beginning of a line, which will cause
    _M_a_i_l
    to echo "EOT" and return you to the Shell.  When the user you sent mail
    to next logs in, he will receive the message:

        You have mail.

        to alert him to the existence of your message.

     If, while you are composing the message you  decide
that you do not wish to send it after all, you can abort
the letter with a RUBOUT.  Typing a single RUBOUT causes
_M_a_i_l to print

    (Interrupt -- one more to kill letter)

    Typing a second
    RUBOUT causes
    _M_a_i_l
    to save your partial letter on the file
    "dead.letter"
    in your home directory and abort the letter.
    Once you have
    sent mail to someone, there is no way to undo the act, so be
    careful.










MMaaiill RReeffeerreennccee MMaannuuaall                                UUSSDD::77--33


     The  message  your  recipient reads will consist of
the message you typed, preceded by a  line  telling  who
sent the message (your login name) and the date and time
it was sent.

     If you want to send the  same  message  to  several
other people, you can list their login names on the com-
mand line.  Thus,

    % Mail sam bob john
    Tuition fees are due next Friday.  Don't forget!!
    <Control-d>
    EOT
    %

    will send the reminder to sam, bob, and john.

     If, when you log in, you see the message,

    You have mail.

    you can read the mail by typing simply:

        % Mail

        _M_a_i_l
        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.
        _M_a_i_l
        keeps track of which messages are
        _n_e_w
        (have been sent since you last read your mail) and
        _r_e_a_d
        (have been read by you).  New messages have an
        NN
        next to them in the header listing and old, but unread messages have
        a
        UU
        next to them.
        _M_a_i_l
        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  ttyyppee  com-
mand,  which  may be abbreviated to simply tt.  For exam-
ple, if you had the following messages:

    N 1 root     Wed Sep 21 09:21  "Tuition fees"
    N 2 sam      Tue Sep 20 22:55










UUSSDD::77--44                                MMaaiill RReeffeerreennccee MMaannuuaall


    you could examine the first message by giving the command:

        type 1

        which might cause
        _M_a_i_l
        to respond with, for example:

            Message  1:
            From root  Wed Sep 21 09:21:45 1978
            Subject: Tuition fees
            Status: R

            Tuition fees are due next Wednesday.  Don't forget!!


            Many
            _M_a_i_l
            commands that operate on messages take a message number as an
            argument like the
            ttyyppee
            command.  For these commands, there is a notion of a current
            message.  When you enter the
            _M_a_i_l
            program, the current message is initially the first 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 simply 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 _M_a_i_l by simply typing a newline.  As
a  special  case,  you  can type a newline as your first
command to _M_a_i_l to type the first message.

     If, after typing a message, you wish to immediately
send a reply, you can do so with the rreeppllyy command.  RRee--
ppllyy, like ttyyppee, takes a message number as  an  argument.
_M_a_i_l  then  begins  a  message addressed to the user who
sent you the message.  You may then type in your  letter
in  reply, followed by a <control-d> at the beginning of
a line, as before.  _M_a_i_l will type EOT,  then  type  the
ampersand prompt to indicate its readiness to accept an-
other command.  In our example,  if,  after  typing  the
first message, you wished to reply to it, you might give
the command:










MMaaiill RReeffeerreennccee MMaannuuaall                                UUSSDD::77--55


    reply

    _M_a_i_l
    responds by typing:

        To: root
        Subject: Re: Tuition fees

        and waiting for you to enter your letter.
        You are now in the message collection mode described at the beginning
        of this section and
        _M_a_i_l
        will gather up your message up to a control-d.
        Note that it 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, the information found will also be used.
        For example, if the letter had a
        "To:"
        header listing several recipients,
        _M_a_i_l
        would arrange to send your replay to the same people as well.
        Similarly, if the original message contained a
        "Cc:"
        (carbon copies to) field,
        _M_a_i_l
        would send your reply to
        _t_h_o_s_e
        users, too.
        _M_a_i_l
        is careful, though, not too send the message to
        _y_o_u,
        even if you appear in the
        "To:"
        or
        "Cc:"
        field, unless you ask to be included explicitly.  See section 4 for more
        details.

     After typing in your letter, the dialog  with  _M_a_i_l
might look like the following:

    reply
    To: root
    Subject: Tuition fees

    Thanks for the reminder
    EOT
    &













UUSSDD::77--66                                MMaaiill RReeffeerreennccee MMaannuuaall


     The rreeppllyy command is especially useful for sustain-
ing extended conversations over the message system, with
other  "listening" users receiving copies of the conver-
sation.  The rreeppllyy command can be abbreviated to rr.

     Sometimes you will receive a message that has  been
sent  to  several  people  and wish to reply _o_n_l_y to the
person who sent it.  RReeppllyy with a capital RR 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
mmaaiill command, which takes as arguments the names of  the
recipients  you wish to send to.  For example, to send a
message to "frank," you would do:

    mail frank
    This is to confirm our meeting next Friday at 4.
    EOT
    &

    The
    mmaaiill
    command can be abbreviated to
    mm.

     Normally, each message you receive is saved in  the
file  _m_b_o_x in your login directory at the time you leave
_M_a_i_l.  Often, however, you will not want to save a  par-
ticular  message you have received because it is only of
passing interest.  To avoid saving a message in _m_b_o_x you
can delete it using the ddeelleettee command.  In our example,

    delete 1

    will prevent
    _M_a_i_l
    from saving message 1 (from root) in
    _m_b_o_x.
    In addition to not saving deleted messages,
    _M_a_i_l
    will not let
    you type them, either.  The effect is to make the message disappear
    altogether, along with its number.  The
    ddeelleettee
    command can be abbreviated to simply
    dd.

     Many features of _M_a_i_l can be tailored to your  lik-
ing  with  the  sseett  command.   The  sseett command has two
forms, depending on whether you are setting a _b_i_n_a_r_y op-
tion  or  a _v_a_l_u_e_d option.  Binary options are either on










MMaaiill RReeffeerreennccee MMaannuuaall                                UUSSDD::77--77


or off.  For example, the "ask" option informs _M_a_i_l that
each  time you send a message, you want it to prompt you
for a subject header, to be included in the message.  To
set the "ask" option, you would type

    set ask


     Another  useful _M_a_i_l option is "hold."  Unless told
otherwise, _M_a_i_l moves  the  messages  from  your  system
mailbox to the file _m_b_o_x in your home directory when you
leave _M_a_i_l.  If you want _M_a_i_l to keep  your  letters  in
the  system  mailbox instead, you can set the "hold" op-
tion.

     Valued options are values which _M_a_i_l uses to  adapt
to  your  tastes.  For example, the "SHELL" option tells
_M_a_i_l which shell you like to use, and is specified by

    set SHELL=/bin/csh

    for example.  Note that no spaces are allowed in
    "SHELL=/bin/csh."
    A complete list of the
    _M_a_i_l
    options appears in section 5.

     Another important valued option is "crt."   If  you
use  a  fast video terminal, you will find that when you
print long messages, they fly by too quickly for you  to
read  them.   With  the  "crt" option, you can make _M_a_i_l
print any message larger than a given number of lines by
sending  it  through  a  paging program. This program is
specified by the valued option PPAAGGEERR.  If PPAAGGEERR  is  not
set, a default paginator is used.  For example, most CRT
users with 24-line screens should do:

    set crt=24

    to paginate messages that will not fit on their screens.
    In the default state, _m_o_r_e (default paginator) prints a screenful of
    information, then types --More--.  Type a space to see the next screenful.

     Another adaptation to user needs that _M_a_i_l provides
is  that  of  _a_l_i_a_s_e_s.   An alias is simply a name which
stands for one or more real user names.  _M_a_i_l sent to an
alias is really sent to the list of real users associat-
ed with it.  For example, an alias can  be  defined  for
the  members  of a project, so that you can send mail to
the whole project by sending mail to just a single name.
The  aalliiaass  command  in  _M_a_i_l defines an alias.  Suppose
that the users in a project are named Sam, Sally, Steve,
and  Susan.   To  define  an  alias called "project" for










UUSSDD::77--88                                MMaaiill RReeffeerreennccee MMaannuuaall


them, you would use the _M_a_i_l command:

    alias project sam sally steve susan

    The
    aalliiaass
    command can also be used to provide a convenient name for someone
    whose user name is inconvenient.  For example, if a user named
    "Bob Anderson"
    had the login name
    "anderson,""
    you might want to use:

        alias bob anderson

        so that you could send mail to the shorter name,
        "bob."

     While the aalliiaass and sseett commands allow you to  cus-
tomize  _M_a_i_l,  they  have the drawback that they must be
retyped each time you enter _M_a_i_l.   To  make  them  more
convenient  to use, _M_a_i_l always looks for two files when
it is invoked.   It  first  reads  a  system  wide  file
"/usr/lib/Mail.rc,"  then  a user specific file, ".mail-
rc," which is found in the user's home  directory.   The
system wide file is maintained by the system administra-
tor and contains sseett commands that are applicable to all
users of the system.  The ".mailrc" file is usually used
by each user to set options the way he likes and  define
individual  aliases.  For example, my .mailrc file looks
like this:

    set ask nosave SHELL=/bin/csh

    As you can see, it is possible to set many options in the
    same
    sseett
    command.  The
    "nosave"
    option is described in section 5.

     Mail aliasing is  implemented  at  the  system-wide
level  by  the  mail  delivery  system  _s_e_n_d_m_a_i_l.  These
aliases are stored in the file /usr/lib/aliases and  are
accessible  to  all  users  of the system.  The lines in
/usr/lib/aliases are of the form:

    alias: name1, name2, name3

    where
    _a_l_i_a_s
    is the mailing list name and the
    _n_a_m_e_i










MMaaiill RReeffeerreennccee MMaannuuaall                                UUSSDD::77--99


    are the members of the list.  Long lists can be continued onto the next
    line by starting the next line with a space or tab.  Remember that you
    must execute the shell command
    _n_e_w_a_l_i_a_s_e_s
    after editing /usr/lib/aliases since the delivery system
    uses an indexed file created by
    _n_e_w_a_l_i_a_s_e_s.

     We have seen that _M_a_i_l can be invoked with  command
line  arguments which are people to send the message to,
or with no arguments to read mail.   Specifying  the  --ff
flag  on  the  command line causes _M_a_i_l to read messages
from a file other than your system mailbox.   For  exam-
ple,  if  you  have a collection of messages in the file
"letters" you can use _M_a_i_l to read them with:

    % Mail -f letters

    You can use all
    the
    _M_a_i_l
    commands described in this document to examine, modify, or delete
    messages from your
    "letters"
    file, which will be rewritten when you leave
    _M_a_i_l
    with the
    qquuiitt
    command described below.

     Since mail that you read is saved in the file  _m_b_o_x
in  your home directory by default, you can read _m_b_o_x in
your home directory by using simply

    % Mail -f


     Normally, messages that you examine using the  ttyyppee
command are saved in the file "mbox" in your home direc-
tory if you leave _M_a_i_l with the qquuiitt  command  described
below.   If  you wish to retain a message in your system
mailbox you can use the pprreesseerrvvee command to tell _M_a_i_l to
leave  it there.  The pprreesseerrvvee command accepts a list of
message numbers, just like ttyyppee and may  be  abbreviated
to pprree.

     Messages in your system mailbox that you do not ex-
amine are normally retained in your system mailbox auto-
matically.   If you wish to have such a message saved in
_m_b_o_x without reading it, you may use the mmbbooxx command to
have them so saved.  For example,

    mbox 2










UUSSDD::77--1100                               MMaaiill RReeffeerreennccee MMaannuuaall


    in our example would cause the second message (from sam)
    to be saved in
    _m_b_o_x
    when the
    qquuiitt
    command is executed.
    MMbbooxx
    is also the way to direct messages to your
    _m_b_o_x
    file if you have set the
    "hold"
    option described above.
    MMbbooxx
    can be abbreviated to
    mmbb.

     When you have perused all the messages of interest,
you can leave _M_a_i_l with the qquuiitt  command,  which  saves
the  messages you have typed but not deleted in the file
_m_b_o_x in your login directory.  Deleted messages are dis-
carded  irretrievably,  and  messages left untouched are
preserved in your system mailbox so that  you  will  see
them the next time you type:

    % Mail

    The
    qquuiitt
    command can be abbreviated to simply
    qq.

     If  you  wish for some reason to leave _M_a_i_l quickly
without altering either your system mailbox or _m_b_o_x, you
can  type the xx command (short for eexxiitt), which will im-
mediately return you to the Shell without changing  any-
thing.

     If,  instead,  you  want to execute a Shell command
without leaving _M_a_i_l, you can type the command  preceded
by  an  exclamation  point,  just as in the text editor.
Thus, for instance:

    !date

    will print the current date without leaving
    _M_a_i_l.

     Finally, the hheellpp command is available to print out
a  brief  summary  of  the _M_a_i_l commands, using only the
single character command abbreviations.













MMaaiill RReeffeerreennccee MMaannuuaall                               UUSSDD::77--1111


33..  MMaaiinnttaaiinniinngg ffoollddeerrss

     _M_a_i_l includes a  simple  facility  for  maintaining
groups  of  messages  together in folders.  This section
describes this facility.

     To use the folder  facility,  you  must  tell  _M_a_i_l
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 _M_a_i_l where your folder directory  is,
put a line of the form

    set folder=letters

    in your
    _._m_a_i_l_r_c
    file.  If, as in the example above, your folder directory does not
    begin with a `/,'
    _M_a_i_l
    will assume that your folder directory is to be found starting from
    your home directory.  Thus, if your home directory is
    //uussrr//ppeerrssoonn
    the above example told
    _M_a_i_l
    to find your folder directory in
    //uussrr//ppeerrssoonn//lleetttteerrss.

     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 ssaavvee command, you can
use:

    save +classwork

    to save the current message in the
    _c_l_a_s_s_w_o_r_k
    folder.  If the
    _c_l_a_s_s_w_o_r_k
    folder does not yet exist, it will be created.  Note that messages
    which are saved with the
    ssaavvee
    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 ccooppyy command, which is identical
in all other respects to the ssaavvee command.  For example,

    copy +classwork

    copies the current message into the
    _c_l_a_s_s_w_o_r_k










UUSSDD::77--1122                               MMaaiill RReeffeerreennccee MMaannuuaall


    folder and leaves a copy in your system mailbox.

     The ffoollddeerr command can be used to  direct  _M_a_i_l  to
the contents of a different folder.  For example,

    folder +classwork

    directs
    _M_a_i_l
    to read the contents of the
    _c_l_a_s_s_w_o_r_k
    folder.  All of the commands that you can use on your system
    mailbox are also applicable to folders, including
    ttyyppee,
    ddeelleettee,
    and
    rreeppllyy.
    To inquire which folder you are currently editing, use simply:

        folder


     To  list your current set of folders, use the ffoolldd--
eerrss command.

     To start _M_a_i_l reading one of your folders, you  can
use the --ff option described in section 2.  For example:

    % Mail -f +classwork

    will cause
    _M_a_i_l
    to read your
    _c_l_a_s_s_w_o_r_k
    folder without looking at your system mailbox.

44..  MMoorree aabboouutt sseennddiinngg mmaaiill

44..11..  TTiillddee eessccaappeess

     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.  _M_a_i_l pro-
vides  these  capabilities  through _t_i_l_d_e _e_s_c_a_p_e_s, which
consist of a tilde (~) at the beginning of a line,  fol-
lowed 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










MMaaiill RReeffeerreennccee MMaannuuaall                               UUSSDD::77--1133


    the text of the message so far.
    Since
    _M_a_i_l
    requires two consecutive RUBOUT's to abort a letter, you
    can use a single RUBOUT to abort the output of ~p or any other
    ~ escape without killing your letter.

     If  you  are  dissatisfied  with  the message as it
stands, you can invoke the text editor on it  using  the
escape

    ~e

    which causes the message to be copied into a temporary file and an
    instance of the editor to be spawned.  After modifying the message to
    your satisfaction, write it out and quit the editor.
    _M_a_i_l
    will respond
    by typing

        (continue)

        after which you may continue typing text which will be appended to your
        message, or type <control-d> to end the message.
        A standard text editor is provided by
        _M_a_i_l.
        You can override this default by setting the valued option
        "EDITOR"
        to something else.  For example, you might prefer:

            set EDITOR=/usr/ucb/ex


     Many  systems  offer a screen editor as an alterna-
tive to the standard text editor, such as the _v_i  editor
from  UC Berkeley.  To use the screen, or _v_i_s_u_a_l editor,
on your current message, you can use the escape,

    ~v

    ~v works like ~e, except that the screen editor is invoked instead.
    A default screen editor is defined by
    _M_a_i_l.
    If it does not suit you, you can set the valued option
    "VISUAL"
    to the path name of a different editor.

     It is often useful to be able to include  the  con-
tents of some file in your message; the escape

    ~r filename

    is provided for this purpose, and causes the named file to be appended










UUSSDD::77--1144                               MMaaiill RReeffeerreennccee MMaannuuaall


    to your current message.
    _M_a_i_l
    complains if the file doesn't exist
    or can't be read.  If the read is successful, the number of lines and
    characters appended to your message is printed, after which you may continue
    appending text.  The filename may contain shell metacharacters like * and ?
    which are expanded according to the conventions of your shell.

     As a special case of ~r, the escape

    ~d

    reads in the file
    "dead.letter"
    in your home directory.  This is often useful since
    _M_a_i_l
    copies the text
    of your message there when you abort a message with RUBOUT.

     To  save the current text of your message on a file
you may use the

    ~w filename

    escape.
    _M_a_i_l
    will print out the number of lines and characters written
    to the file, after which you may continue appending text to your message.
    Shell metacharacters may be used in the filename, as in ~r and are expanded
    with the conventions of your shell.

     If you are sending mail from within _M_a_i_l_'_s  command
mode you can read a message sent to you into the message
you are constructing with the escape:

    ~m 4

    which will read message 4 into the current message, shifted right by
    one tab stop.  You can name any non-deleted message, or list of messages.
    Messages can also be forwarded without shifting by a tab stop with ~f.
    This is the usual way to forward a message.

     If, in the process of composing a message, you  de-
cide to add additional people to the list of message re-
cipients, you can do so with the escape

    ~t name1 name2 ...

    You may name as few or many additional recipients as you wish.  Note
    that the users originally on the recipient list will still receive
    the message; you cannot remove someone from the recipient
    list with ~t.











MMaaiill RReeffeerreennccee MMaannuuaall                               UUSSDD::77--1155


     If you wish, you can associate a subject with  your
message by using the escape

    ~s Arbitrary string of text

    which replaces any previous subject with
    "Arbitrary string of text."
    The subject, if given, is sent near the
    top of the message prefixed with
    "Subject:"
    You can see what the message will look like by using ~p.

     For  political reasons, one occasionally prefers to
list certain people as recipients of carbon copies of  a
message rather than direct recipients.  The escape

    ~c name1 name2 ...

    adds the named people to the
    "Cc:"
    list, similar to ~t.
    Again, you can execute ~p to see what the message will look like.

     The escape

    ~b name1 name2 ...

    adds the named people to the
    "Cc:"
    list, but does not make the names visible in the
    "Cc:"
    line ("blind" carbon copy).

     The  recipients  of the message together constitute
the "To:" field, the subject the "Subject:"  field,  and
the  carbon copies the "Cc:" field.  If you wish to edit
these in ways impossible with the ~t, ~s, ~c and ~b  es-
capes, you can use the escape

    ~h

    which prints
    "To:"
    followed by the current list of recipients and leaves the cursor
    (or printhead) at the end of the line.  If you type in ordinary
    characters, they are appended to the end of the current list of
    recipients.  You can also use your erase character to erase back into
    the list of recipients, or your kill character to erase them altogether.
    Thus, for example, if your erase and kill characters are the standard
    (on printing terminals) # and @ symbols,

        ~h
        To: root kurt####bill










UUSSDD::77--1166                               MMaaiill RReeffeerreennccee MMaannuuaall


        would change the initial recipients
        "root kurt"
        to
        "root bill."
        When you type a newline,
        _M_a_i_l
        advances to the
        "Subject:"
        field, where the same rules apply.  Another newline brings you to
        the
        "Cc:"
        field, which may be edited in the same fashion.  Another newline
        brings you to the
        "Bcc:"
        ("blind" carbon copy) field, which follows the same rules as the "Cc:"
        field.  Another newline
        leaves you appending text to the end of your message.  You can use
        ~p to print the current text of the header fields and the body
        of the message.

     To  effect a temporary escape to the shell, the es-
cape

    ~!command

    is used, which executes
    _c_o_m_m_a_n_d
    and returns you to mailing mode without altering the text of
    your message.  If you wish, instead, to filter the body of your
    message through a shell command, then you can use

        ~|command

        which pipes your message through the command and uses the output
        as the new text of your message.  If the command produces no output,
        _M_a_i_l
        assumes that something is amiss and retains the old version
        of your message.  A frequently-used filter is the command
        _f_m_t,
        designed to format outgoing mail.

     To effect a temporary escape to _M_a_i_l  command  mode
instead, you can use the

    ~:_M_a_i_l _c_o_m_m_a_n_d

    escape.  This is especially useful for retyping the message you are
    replying to, using, for example:

        ~:t

        It is also useful for setting options and modifying aliases.











MMaaiill RReeffeerreennccee MMaannuuaall                               UUSSDD::77--1177


     If  you wish abort the current message, you can use
the escape

    ~q

    This will terminate the current message and return you to the
    shell (or _M_a_i_l if you were using the mmaaiill command).
    If the ssaavvee option is set, the message will be copied
    to the file
    "dead.letter"
    in your home directory.

     If you wish (for some reason)  to  send  a  message
that  contains  a  line beginning with a tilde, you must
double it.  Thus, for example,

    ~~This line begins with a tilde.

    sends the line

        ~This line begins with a tilde.


     Finally, the escape

    ~?

    prints out a brief summary of the available tilde escapes.

     On some terminals (particularly ones with no  lower
case) tilde's are difficult to type.  _M_a_i_l allows you to
change the escape character with  the  "escape"  option.
For example, I set

    set escape=]

    and use a right bracket instead of a tilde.  If I ever need to
    send a line beginning with right bracket, I double it, just as for ~.
    Changing the escape character removes the special meaning of ~.

44..22..  NNeettwwoorrkk aacccceessss

     This  section  describes how to send mail to people
on other machines.  Recall that sending to a plain login
name sends mail to that person on your machine.  If your
machine is directly  (or  sometimes,  even,  indirectly)
connected  to the Arpanet, you can send messages to peo-
ple on the Arpanet using a name of the form

    name@host.domain

    where
    _n_a_m_e










UUSSDD::77--1188                               MMaaiill RReeffeerreennccee MMaannuuaall


    is the login name of the person you're trying to reach,
    _h_o_s_t
    is the name of the machine on the Arpanet,
    and
    _d_o_m_a_i_n
    is the higher-level scope within which the hostname is known, e.g. EDU (for educational
    institutions), COM (for commercial entities), GOV (for governmental agencies),
    ARPA for many other things, BITNET or CSNET for those networks.

     If your recipient logs in on a machine connected to
yours  by  UUCP  (the Bell Laboratories supplied network
that communicates over telephone  lines),  sending  mail
can  be  a bit more complicated.  You must know the list
of machines through which your message  must  travel  to
arrive at his site.  So, if his machine is directly con-
nected to yours, you can send mail to him using the syn-
tax:

    host!name

    where, again,
    _h_o_s_t
    is the name of the machine and
    _n_a_m_e
    is the login name.
    If your message must go through an intermediary machine first, you
    must use the syntax:

        intermediary!host!name

        and so on.  It is actually a feature of UUCP that the map of all
        the systems in the network is not known anywhere (except where people
        decide to write it down for convenience).  Talk to your system administrator
        about good ways to get places; the
        _u_u_n_a_m_e
        command will tell you systems whose names are recognized, but not which
        ones are frequently called or well-connected.

     When you use the rreeppllyy command to respond to a let-
ter, there is a problem of figuring out the names of the
users  in the "To:" and "Cc:" lists _r_e_l_a_t_i_v_e _t_o _t_h_e _c_u_r_-
_r_e_n_t _m_a_c_h_i_n_e.  If the original letter was sent to you by
someone on the local machine, then this problem does not
exist, but if the message came from  a  remote  machine,
the  problem  must be dealt with.  _M_a_i_l uses a heuristic
to build the correct name for each user relative to  the
local  machine.   So, when you rreeppllyy to remote mail, the
names in the "To:" and "Cc:" lists may change  somewhat.

44..33..  SSppeecciiaall rreecciippiieennttss

     As  described  previously, you can send mail to ei-
ther user names or aalliiaass names.  It is also possible  to










MMaaiill RReeffeerreennccee MMaannuuaall                               UUSSDD::77--1199


send  messages  directly  to files or to programs, using
special conventions.  If a recipient name has a  `/'  in
it  or  begins  with a `+', it is assumed to be the path
name of a file into which to send the message.   If  the
file  already exists, the message is appended to the end
of the file.  If you want to name a file in your current
directory  (ie, one for which a `/' would not usually be
needed) you can precede the name with `./' So,  to  send
mail  to  the  file "memo" in the current directory, you
can give the command:

    % Mail ./memo

    If the name begins with a `+,' it is expanded into the full path name
    of the folder name in your folder directory.
    This ability to send mail to files can be used for a variety of
    purposes, such as maintaining a journal and keeping a record of
    mail sent to a certain group of users.  The second example can be
    done automatically by including the full pathname of the record
    file in the
    aalliiaass
    command for the group.  Using our previous
    aalliiaass
    example, you might give the command:

        alias project sam sally steve susan /usr/project/mail_record

        Then, all mail sent to "project" would be saved on the file
        "/usr/project/mail_record"
        as well as being sent to the members of the project.  This file
        can be examined using
        _M_a_i_l _-_f.

     It is sometimes useful to send mail directly  to  a
program, for example one might write a project billboard
program and want to access it using _M_a_i_l.  To send  mes-
sages to the billboard program, one can send mail to the
special name `|billboard' for example.  _M_a_i_l treats  re-
cipient names that begin with a `|' as a program to send
the mail to.  An aalliiaass can be set up to reference a  `|'
prefaced name if desired.  _C_a_v_e_a_t_s: the shell treats `|'
specially, so it must be quoted  on  the  command  line.
Also,  the `| program' must be presented as a single ar-
gument to mail.  The safest course is  to  surround  the
entire  name  with  double quotes.  This also applies to
usage in the aalliiaass command.  For example, if  we  wanted
to alias `rmsgs' to `rmsgs -s' we would need to say:

    alias rmsgs "| rmsgs -s"














UUSSDD::77--2200                               MMaaiill RReeffeerreennccee MMaannuuaall


55..  AAddddiittiioonnaall ffeeaattuurreess

     This  section  describes  some  additional commands
useful for reading your mail, setting options, and  han-
dling lists of messages.

55..11..  MMeessssaaggee lliissttss

     Several  _M_a_i_l commands accept a list of messages as
an argument.  Along with ttyyppee and ddeelleettee,  described  in
section  2,  there is the ffrroomm command, which prints the
message headers associated with the message list  passed
to  it.  The ffrroomm command is particularly useful in con-
junction with some of  the  message  list  features  de-
scribed below.

     A  _m_e_s_s_a_g_e  _l_i_s_t consists of a list of message num-
bers, ranges, and names, separated by  spaces  or  tabs.
Message numbers may be either decimal numbers, which di-
rectly specify messages, or one of the  special  charac-
ters "^" "."  or "$" to specify the first relevant, cur-
rent, or last relevant message, respectively.   _R_e_l_e_v_a_n_t
here  means, for most commands "not deleted" and "delet-
ed" for the uunnddeelleettee command.

     A range of messages consists of two message numbers
(of  the form described in the previous paragraph) sepa-
rated by a dash.  Thus, to print  the  first  four  mes-
sages, use

    type 1-4

    and to print all the messages from the current message to the last
    message, use

        type .-$


     A _n_a_m_e is a user name.  The user names given in the
message list are collected together and each message se-
lected  by  other  means  is checked to make sure it was
sent by one of the named users.  If the message consists
entirely  of  user names, then every message sent by one
of those users that is _r_e_l_e_v_a_n_t (in the sense  described
earlier) is selected.  Thus, to print every message sent
to you by "root," do

    type root


     As a shorthand notation, you can specify simply "*"
to get every _r_e_l_e_v_a_n_t (same sense) message.  Thus,











MMaaiill RReeffeerreennccee MMaannuuaall                               UUSSDD::77--2211


    type *

    prints all undeleted messages,

        delete *

        deletes all undeleted messages, and

            undelete *

            undeletes all deleted messages.

     You  can  search for the presence of a word in sub-
ject lines with //.  For example, to print the headers of
all messages that contain the word "PASCAL," do:

    from /pascal

    Note that subject searching ignores upper/lower case differences.

55..22..  LLiisstt ooff ccoommmmaannddss

     This section describes all the _M_a_i_l commands avail-
able when receiving mail.

--    The -- command goes  to  the  previous  message  and
     prints  it.   The  -- command may be given a decimal
     number _n as an argument, in which case the _nth pre-
     vious message is gone to and printed.

??    Prints a brief summary of commands.

!!    Used  to  preface  a  command to be executed by the
     shell.

PPrriinntt
     Like pprriinntt,  but  also  print  out  ignored  header
     fields.   See also pprriinntt, iiggnnoorree and rreettaaiinn.  PPrriinntt
     can be abbreviated to PP.

RReeppllyy or RReessppoonndd
     Note the capital RR in the name.  Frame a reply to a
     one or more messages.  The reply (or replies if you
     are using this on multiple messages) will  be  sent
     ONLY  to  the  person who sent you the message (re-
     spectively, the set of people who sent the messages
     you are replying to).  You can add people using the
     ~~tt, ~~cc and ~~bb tilde escapes.  The subject  in  your
     reply  is  formed  by  prefacing the subject in the
     original message with "Re:" unless it already began
     thus.   If  the original message included a "reply-
     to" header field, the reply will go _o_n_l_y to the re-
     cipient named by "reply-to."  You type in your mes-










UUSSDD::77--2222                               MMaaiill RReeffeerreennccee MMaannuuaall


     sage using the same conventions  available  to  you
     through the mmaaiill command.  The RReeppllyy command is es-
     pecially useful for replying to messages that  were
     sent to enormous distribution groups when you real-
     ly just want to send a message to  the  originator.
     Use  it often.  RReeppllyy (and RReessppoonndd) can be abbrevi-
     ated to RR.

TTyyppee
     Identical to the PPrriinntt command.  TTyyppee can be abbre-
     viated to TT.

aalliiaass
     Define  a  name  to stand for a set of other names.
     This is used when you want to send  messages  to  a
     certain  group of people and want to avoid retyping
     their names.  For example

         alias project john sue willie kathryn

         creates an alias
         _p_r_o_j_e_c_t
         which expands to the four people John, Sue, Willie, and Kathryn.
         If no arguments are given, all currently-defined aliases are printed.
         If one argument is given, that alias is printed (if it exists).
         AAlliiaass can be abbreviated to aa.

aalltteerrnnaatteess
     If you have accounts on several machines,  you  may
     find  it  convenient to use the /usr/lib/aliases on
     all the machines except one to direct your mail  to
     a  single  account.  The aalltteerrnnaatteess command is used
     to inform _M_a_i_l that each of these  other  addresses
     is  really  _y_o_u.   _A_l_t_e_r_n_a_t_e_s  takes a list of user
     names and remembers that they are all actually you.
     When you rreeppllyy to messages that were sent to one of
     these alternate names, _M_a_i_l will not bother to send
     a  copy of the message to this other address (which
     would simply be directed back to you by  the  alias
     mechanism).  If _a_l_t_e_r_n_a_t_e_s is given no argument, it
     lists the current set of alternate  names.   AAlltteerr--
     nnaatteess  is usually used in the .mailrc file.  AAlltteerr--
     nnaatteess can be abbreviated to aalltt.

cchhddiirr
     The cchhddiirr command allows you to change your current
     directory.  CChhddiirr takes a single argument, which is
     taken to be the pathname of the directory to change
     to.  If no argument is given, cchhddiirr changes to your
     home directory.  CChhddiirr can be abbreviated to cc.

ccooppyy
     The ccooppyy command does  the  same  thing  that  ssaavvee










MMaaiill RReeffeerreennccee MMaannuuaall                               UUSSDD::77--2233


     does,  except that it does not mark the messages it
     is used on for deletion when you quit.  CCooppyy can be
     abbreviated to ccoo.

ddeelleettee
     Deletes  a  list of messages.  Deleted messages can
     be reclaimed with the uunnddeelleettee command.  DDeelleettee can
     be abbreviated to dd.

ddpp or ddtt
     These commands delete the current message and print
     the next message.   They  are  useful  for  quickly
     reading and disposing of mail.  If there is no next
     message, _m_a_i_l says ``at EOF.''

eeddiitt
     To edit individual messages using the text  editor,
     the  eeddiitt  command  is  provided.  The eeddiitt command
     takes a list of messages  as  described  under  the
     ttyyppee  command and processes each by writing it into
     the file Message_x where _x is the message number be-
     ing  edited  and  executing  the text editor on it.
     When you have edited the message to your  satisfac-
     tion,  write  the  message out and quit, upon which
     _M_a_i_l will read the  message  back  and  remove  the
     file.  EEddiitt can be abbreviated to ee.

eellssee
     Marks  the  end of the then-part of an iiff statement
     and the beginning of the part to take effect if the
     condition of the iiff statement is false.

eennddiiff
     Marks the end of an iiff statement.

eexxiitt or xxiitt
     Leave  _M_a_i_l  without updating the system mailbox or
     the file your were reading.  Thus, if you  acciden-
     tally  delete several messages, you can use eexxiitt to
     avoid scrambling your mailbox.  EExxiitt can be  abbre-
     viated to eexx or xx.

ffiillee
     The same as ffoollddeerr.  FFiillee can be abbreviated to ffii.

ffoollddeerrss
     List the names of the folders in your folder direc-
     tory.

ffoollddeerr
     The  ffoollddeerr  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 argu-










UUSSDD::77--2244                               MMaaiill RReeffeerreennccee MMaannuuaall


     ment, it will write out changes (such as deletions)
     you  have made in the current file and read the new
     file.  Some special conventions are recognized  for
     the name:


              Name                  Meaning
             --------------------------------------------
             #          Previous file read
             %          Your system mailbox
             %name      _N_a_m_e's system mailbox
             &          Your ~/mbox file
             +folder    A file in your folder directory


FFoollddeerr can be abbreviated to ffoo.

ffrroomm
     The  ffrroomm  command  takes a list of messages and prints
     out the header lines for each one; hence

         from joe

         is the easy way to display all the message headers from "joe."
         FFrroomm can be abbreviated to ff.

hheeaaddeerrss
     When you start up _M_a_i_l to read your mail, it  lists
     the  message  headers that you have.  These headers
     tell you who each message is from, when  they  were
     received,  how  many lines and characters each mes-
     sage is, and the "Subject:" header  field  of  each
     message,  if  present.   In addition, _M_a_i_l tags the
     message header of each message that  has  been  the
     object  of  the  pprreesseerrvvee command with a "P."  Mes-
     sages that have been ssaavveedd or wwrriitttteenn  are  flagged
     with  a  "*."   Finally,  ddeelleetteedd  messages are not
     printed at all.  If you wish to reprint the current
     list  of  message  headers,  you can do so with the
     hheeaaddeerrss command.  The hheeaaddeerrss command (and thus the
     initial  header  listing)  only  lists the first so
     many message headers.  The number of headers listed
     depends on the speed of your terminal.  This can be
     overridden by specifying the number of headers  you
     want  with the _w_i_n_d_o_w option.  _M_a_i_l maintains a no-
     tion of the current "window" into your messages for
     the  purposes  of printing headers.  Use the zz com-
     mand to move forward and back a  window.   You  can
     move  _M_a_i_l_'_s  notion of the current window directly
     to a particular message by using, for example,

         headers 40











MMaaiill RReeffeerreennccee MMaannuuaall                               UUSSDD::77--2255


         to move
         _M_a_i_l_'_s
         attention to the messages around message 40.
         If a ``+'' argument is given, then the next screenful of message headers is
         printed, and if a ``-'' argument is given, the previous screenful of message
         headers is printed.
         HHeeaaddeerrss can be abbreviated to hh.

hheellpp
     Print a brief and usually out of date help  message
     about  the commands in _M_a_i_l.  The _m_a_n page for _m_a_i_l
     is usually more up-to-date  than  either  the  help
     message  or  this manual.  It is also a synonym for
     ??.

hhoolldd
     Arrange to hold a list of messages  in  the  system
     mailbox, instead of moving them to the file _m_b_o_x in
     your home directory.  If you set the binary  option
     _h_o_l_d,  this  will  happen  by default.  It does not
     override the ddeelleettee command.  HHoolldd can be  abbrevi-
     ated to hhoo.

iiff   Commands  in  your  ".mailrc"  file can be executed
     conditionally depending on whether you are  sending
     or  receiving  mail with the iiff command.  For exam-
     ple, you can do:

         if receive
              _c_o_m_m_a_n_d_s...
         endif

         An
         eellssee
         form is also available:

             if send
                  _c_o_m_m_a_n_d_s...
             else
                  _c_o_m_m_a_n_d_s...
             endif

             Note that the only allowed conditions are
             rreecceeiivvee
             and
             sseenndd.

iiggnnoorree
     NN..BB..:: _I_g_n_o_r_e has been superseded by _r_e_t_a_i_n_.
     Add the list of header fields named to  the  _i_g_n_o_r_e
     _l_i_s_t.   Header  fields  in  the ignore list are not
     printed on your terminal when you print a  message.
     This allows you to suppress printing of certain ma-










UUSSDD::77--2266                               MMaaiill RReeffeerreennccee MMaannuuaall


     chine-generated header fields, such  as  _V_i_a  which
     are  not  usually  of interest.  The TTyyppee and PPrriinntt
     commands can be used to print a message in its  en-
     tirety, including ignored fields.  If iiggnnoorree is ex-
     ecuted with no arguments, it lists the current  set
     of ignored fields.

lliisstt
     List the valid _M_a_i_l commands.  LLiisstt can be abbrevi-
     ated to ll.

mmaaiill
     Send mail to one or more people.  If you  have  the
     _a_s_k  option set, _M_a_i_l will prompt you for a subject
     to your message.  Then you can type  in  your  mes-
     sage, using tilde escapes as described in section 4
     to edit, print, or modify your message.  To  signal
     your  satisfaction  with  the  message and send it,
     type control-d at the beginning of a line, or  a  .
     alone  on  a  line  if  you set the option _d_o_t.  To
     abort the message, type  two  interrupt  characters
     (RUBOUT  by default) in a row or use the ~~qq escape.
     The mmaaiill command can be abbreviated to mm.

mmbbooxx
     Indicate that a list of messages be sent to _m_b_o_x in
     your home directory when you quit.  This is the de-
     fault action for messages if you do  _n_o_t  have  the
     _h_o_l_d option set.

nneexxtt or ++
     The nneexxtt command goes to the next message and types
     it.  If given a message  list,  nneexxtt  goes  to  the
     first such message and types it.  Thus,

         next root

         goes to the next message sent by
         "root"
         and types it.  The
         nneexxtt
         command can be abbreviated to simply a newline, which means that one
         can go to and type a message by simply giving its message number or
         one of the magic characters
         "^"
         "."
         or
         "$".
         Thus,

             .

             prints the current message and










MMaaiill RReeffeerreennccee MMaannuuaall                               UUSSDD::77--2277


                 4

                 prints message 4, as described previously.
                 NNeexxtt can be abbreviated to nn.

pprreesseerrvvee
     Same  as hhoolldd.  Cause a list of messages to be held
     in your system mailbox when you quit.  PPrreesseerrvvee can
     be abbreviated to pprree.

pprriinntt
     Print  the  specified messages. If the ccrrtt variable
     is set, messages longer than the number of lines it
     indicates  are  paged through the command specified
     by the PPAAGGEERR variable.  The pprriinntt  command  can  be
     abbreviated to pp.

qquuiitt
     Terminates  the  session, saving all undeleted, un-
     saved and unwritten messages  in  the  user's  _m_b_o_x
     file  in  their login directory (messages marked as
     having been read), preserving all  messages  marked
     with  hhoolldd or pprreesseerrvvee or never referenced in their
     system mailbox.  Any messages  that  were  deleted,
     saved,  written  or  saved to _m_b_o_x are removed from
     their system mailbox.  If new mail has arrived dur-
     ing  the session, the message ``You have new mail''
     is given.  If given while editing  a  mailbox  file
     with  the --ff flag, then the edit file is rewritten.
     A return to the Shell is effected, unless  the  re-
     write  of  edit  file fails, in which case the user
     can escape with the eexxiitt command.  QQuuiitt can be  ab-
     breviated to qq.

rreeppllyy or rreessppoonndd
     Frame  a reply to a single message.  The reply will
     be sent to the person who sent you the message  (to
     which  you  are  replying), plus all the people who
     received the original message, except you.  You can
     add  people  using the ~~tt, ~~cc and ~~bb tilde escapes.
     The subject in your reply is  formed  by  prefacing
     the  subject in the original message with "Re:" un-
     less it already began thus.  If the  original  mes-
     sage  included a "reply-to" header field, the reply
     will go _o_n_l_y to the recipient named by  "reply-to."
     You type in your message using the same conventions
     available to you through the mmaaiill command.  The rree--
     ppllyy  (and rreessppoonndd) command can be abbreviated to rr.

rreettaaiinn
     Add the list of header fields named to the _r_e_t_a_i_n_e_d
     _l_i_s_t.   Only  the  header fields in the retain list
     are shown on your terminal when you  print  a  mes-










UUSSDD::77--2288                               MMaaiill RReeffeerreennccee MMaannuuaall


     sage.  All other header fields are suppressed.  The
     TTyyppee and PPrriinntt commands can be used to print a mes-
     sage  in  its entirety.  If rreettaaiinn is executed with
     no arguments, it lists the current set of  retained
     fields.

ssaavvee
     It  is  often useful to be able to save messages on
     related topics in a file.  The ssaavvee  command  gives
     you the ability to do this.  The ssaavvee command takes
     as an argument a list of message numbers,  followed
     by  the  name of the file in which to save the mes-
     sages.  The messages  are  appended  to  the  named
     file, thus allowing one to keep several messages in
     the file, stored in the order they were put  there.
     The  filename in quotes, followed by the line count
     and character count is echoed on the user's  termi-
     nal.   An  example  of the ssaavvee command relative to
     our running example is:

         s 1 2 tuitionmail

         SSaavveedd
         messages are not automatically saved in
         _m_b_o_x
         at quit time, nor are they selected by the
         nneexxtt
         command described above, unless explicitly specified.
         SSaavvee can be abbreviated to ss.

sseett
     Set an option or give an option a value.   Used  to
     customize _M_a_i_l.  Section 5.3 contains a list of the
     options.  Options can be _b_i_n_a_r_y, in which case they
     are  _o_n  or _o_f_f, or _v_a_l_u_e_d.  To set a binary option
     _o_p_t_i_o_n _o_n, do

         set option

         To give the valued option
         _o_p_t_i_o_n
         the value
         _v_a_l_u_e,
         do

             set option=value

             There must be no space before or after the ``='' sign.
             If no arguments are given, all variable values are printed.
             Several options can be specified in a single
             sseett
             command.
             SSeett can be abbreviated to ssee.










MMaaiill RReeffeerreennccee MMaannuuaall                               UUSSDD::77--2299


sshheellll
     The sshheellll command  allows  you  to  escape  to  the
     shell.   SShheellll invokes an interactive shell and al-
     lows you to type commands to it.   When  you  leave
     the shell, you will return to _M_a_i_l.  The shell used
     is a default assumed by _M_a_i_l; you can override this
     default by setting the valued option "SHELL," eg:

         set SHELL=/bin/csh

         SShheellll can be abbreviated to sshh.

ssiizzee
     Takes  a  message  list  and prints out the size in
     characters of each message.

ssoouurrccee
     The ssoouurrccee command reads _m_a_i_l commands from a file.
     It  is  useful  when  you  are  trying  to fix your
     ".mailrc" file and you need to re-read it.   SSoouurrccee
     can be abbreviated to ssoo.

ttoopp
     The ttoopp command takes a message list and prints the
     first five lines of each addressed message.  If you
     wish,  you  can change the number of lines that ttoopp
     prints out by setting the valued option "toplines."
     On a CRT terminal,

         set toplines=10

         might be preferred.
         TToopp can be abbreviated to ttoo.

ttyyppee
     Same  as pprriinntt.  Takes a message list and types out
     each message on the terminal.  The ttyyppee command can
     be abbreviated to tt.

uunnddeelleettee
     Takes  a message list and marks each message as _n_o_t
     being deleted.  UUnnddeelleettee can be abbreviated to uu.

uunnrreeaadd
     Takes a message list and marks each message as  _n_o_t
     having  been read.  UUnnrreeaadd can be abbreviated to UU.

uunnsseett
     Takes a list of option names and discards their re-
     membered values; the inverse of sseett .

vviissuuaall
     It  is often useful to be able to invoke one of two










UUSSDD::77--3300                               MMaaiill RReeffeerreennccee MMaannuuaall


     editors, based on the type of terminal one  is  us-
     ing.   To invoke a display oriented editor, you can
     use the vviissuuaall command.  The operation of the vviissuu--
     aall  command  is  otherwise identical to that of the
     eeddiitt command.

     Both the eeddiitt and vviissuuaall commands assume  some  de-
     fault  text  editors.  These default editors can be
     overridden by the valued options "EDITOR" and  "VI-
     SUAL"  for  the  standard  and screen editors.  You
     might want to do:

         set EDITOR=/usr/ucb/ex VISUAL=/usr/ucb/vi

         VViissuuaall can be abbreviated to vv.

wwrriittee
     The ssaavvee command always writes the entire  message,
     including  the headers, into the file.  If you want
     to write just the message itself, you can  use  the
     wwrriittee command.  The wwrriittee command has the same syn-
     tax as the ssaavvee command, and can be abbreviated  to
     simply  ww.  Thus, we could write the second message
     by doing:

         w 2 file.c

         As suggested by this example, the
         wwrriittee
         command is useful for such tasks as sending and receiving
         source program text over the message system.
         The filename in quotes, followed by the line
         count and character count is echoed on the user's terminal.

zz    _M_a_i_l presents message headers in windowfuls as  de-
     scribed  under  the  hheeaaddeerrss command.  You can move
     _M_a_i_l_'_s attention forward to the next window by giv-
     ing the

         z+

         command.  Analogously, you can move to the previous window with:

             z-


55..33..  CCuussttoomm ooppttiioonnss

     Throughout  this  manual,  we have seen examples of
binary and valued options.  This section describes  each
of  the  options  in  alphabetical order, including some
that you have not seen yet.  To avoid confusion,  please
note  that the options are either all lower case letters










MMaaiill RReeffeerreennccee MMaannuuaall                               UUSSDD::77--3311


or all upper case letters.  When I start a sentence such
as:  "Ask" causes _M_a_i_l to prompt you for a subject head-
er, I am only capitalizing "ask" as a  courtesy  to  En-
glish.

EEDDIITTOORR
     The  valued option "EDITOR" defines the pathname of
     the text editor to be used in the eeddiitt command  and
     ~e.  If not defined, a standard editor is used.

PPAAGGEERR
     Pathname  of the program to use for paginating out-
     put when it exceeds _c_r_t lines.  A default paginator
     is used if this option is not defined.

SSHHEELLLL
     The  valued  option  "SHELL" gives the path name of
     your shell.  This shell is used for the !!   command
     and  ~!  escape.   In  addition, this shell expands
     file names with shell metacharacters like *  and  ?
     in them.

VVIISSUUAALL
     The  valued option "VISUAL" defines the pathname of
     the screen editor to be used in the vviissuuaall  command
     and ~v escape.  A standard screen editor is used if
     you do not define one.

aappppeenndd
     The "append" option is binary and  causes  messages
     saved in _m_b_o_x to be appended to the end rather than
     prepended.  Normally, _M_a_i_l  will  put  messages  in
     _m_b_o_x  in  the  same order that the system puts mes-
     sages in your system mailbox.  By setting "append,"
     you are requesting that _m_b_o_x be appended to regard-
     less.  It is in any event quicker to append.

aasskk
     "Ask" is a  binary  option  which  causes  _M_a_i_l  to
     prompt  you  for  the  subject  of each message you
     send.  If you respond with  simply  a  newline,  no
     subject field will be sent.

aasskkcccc
     "Askcc"  is  a binary option which causes you to be
     prompted for additional carbon copy  recipients  at
     the end of each message.  Responding with a newline
     shows your satisfaction with the current list.

aauuttoopprriinntt
     "Autoprint" is a binary  option  which  causes  the
     ddeelleettee  command  to  behave  like ddpp -- thus, after
     deleting a message, the next one will be typed  au-










UUSSDD::77--3322                               MMaaiill RReeffeerreennccee MMaannuuaall


     tomatically.   This is useful when quickly scanning
     and deleting messages in your mailbox.

ccrrtt
     The valued option is used as a threshold to  deter-
     mine  how  long  a  message must be before PPAAGGEERR is
     used to read it.

ddeebbuugg
     The binary option "debug" causes debugging informa-
     tion  to  be  displayed.  Use of this option is the
     same as using the --dd command line flag.

ddoott
     "Dot" is a binary option which, if set, causes _M_a_i_l
     to interpret a period alone on a line as the termi-
     nator of the message you are sending.

eessccaappee
     To allow you to change the  escape  character  used
     when  sending  mail,  you can set the valued option
     "escape."  Only the first character of the "escape"
     option  is used, and it must be doubled if it is to
     appear as the first character of  a  line  of  your
     message.  If you change your escape character, then
     ~ loses all its special meaning, and need no longer
     be doubled at the beginning of a line.

ffoollddeerr
     The  name of the directory to use for storing fold-
     ers of messages.  If this name begins  with  a  `/'
     _M_a_i_l  considers it to be an absolute pathname; oth-
     erwise, the folder directory is found  relative  to
     your home directory.

hhoolldd
     The  binary option "hold" causes messages that have
     been read but not manually dealt with to be held in
     the  system  mailbox.  This  prevents such messages
     from being automatically swept into your _m_b_o_x file.

iiggnnoorree
     The binary option "ignore" causes RUBOUT characters
     from your terminal to be ignored and echoed as  @'s
     while  you are sending mail.  RUBOUT characters re-
     tain their original meaning in _M_a_i_l  command  mode.
     Setting  the  "ignore" option is equivalent to sup-
     plying the --ii flag on the command line as described
     in section 6.

iiggnnoorreeeeooff
     An  option  related  to  "dot" is "ignoreeof" which
     makes _M_a_i_l refuse to accept a control-d as the  end










MMaaiill RReeffeerreennccee MMaannuuaall                               UUSSDD::77--3333


     of  a  message.   "Ignoreeof"  also applies to _M_a_i_l
     command mode.

kkeeeepp
     The "keep" option causes _M_a_i_l to truncate your sys-
     tem  mailbox instead of deleting it when it is emp-
     ty.  This is useful if you elect  to  protect  your
     mailbox, which you would do with the shell command:

         chmod 600 /var/mail/yourname

         where
         _y_o_u_r_n_a_m_e
         is your login name.  If you do not do this, anyone can probably read
         your mail, although people usually don't.

kkeeeeppssaavvee
     When you ssaavvee a message, _M_a_i_l usually  discards  it
     when  you  qquuiitt.  To retain all saved messages, set
     the "keepsave" option.

mmeettoooo
     When sending mail to an alias, _M_a_i_l makes sure that
     if  you  are  included in the alias, that mail will
     not be sent to you.  This is  useful  if  a  single
     alias  is  being  used by all members of the group.
     If however, you wish to receive a copy of  all  the
     messages you send to the alias, you can set the bi-
     nary option "metoo."

nnoohheeaaddeerr
     The binary option "noheader" suppresses the  print-
     ing  of  the version and headers when _M_a_i_l is first
     invoked. Setting this option is the same  as  using
     --NN on the command line.

nnoossaavvee
     Normally,   when  you  abort  a  message  with  two
     RUBOUTs, _M_a_i_l copies the partial letter to the file
     "dead.letter"  in your home directory.  Setting the
     binary option "nosave" prevents this.

RReeppllyyaallll
     Reverses the sense of _r_e_p_l_y and _R_e_p_l_y commands.

qquuiieett
     The binary option "quiet" suppresses  the  printing
     of  the version when _M_a_i_l is first invoked, as well
     as printing the for example "Message 4:"  from  the
     ttyyppee command.

rreeccoorrdd
     If you love to keep records, then the valued option










UUSSDD::77--3344                               MMaaiill RReeffeerreennccee MMaannuuaall


     "record" can be set to the name of a file  to  save
     your  outgoing  mail.  Each new message you send is
     appended to the end of the file.

ssccrreeeenn
     When _M_a_i_l 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.   The valued option "screen"
     overrides this calculation and specifies  how  many
     message  headers  you want printed.  This number is
     also used for scrolling with the zz command.

sseennddmmaaiill
     To use an alternate mail delivery system,  set  the
     "sendmail"  option to the full pathname of the pro-
     gram to use.  Note:   this  is  not  for  everyone!
     Most people should use the default delivery system.

ttoopplliinneess
     The valued option "toplines" defines the number  of
     lines that the "top" command will print out instead
     of the default five lines.

vveerrbboossee
     The binary option "verbose" causes _M_a_i_l  to  invoke
     sendmail  with  the  --vv flag, which causes it to go
     into verbose mode and announce expansion of  alias-
     es, etc. Setting the "verbose" option is equivalent
     to invoking _M_a_i_l with the --vv flag as  described  in
     section 6.

66..  CCoommmmaanndd lliinnee ooppttiioonnss

     This  section  describes  command  line options for
_M_a_i_l and what they are used for.

-N   Suppress the initial printing of headers.

-d   Turn on debugging information.  Not of general  in-
     terest.

-f file
     Show  the  messages  in _f_i_l_e instead of your system
     mailbox.  If _f_i_l_e is omitted, _M_a_i_l  reads  _m_b_o_x  in
     your home directory.

-i   Ignore  tty  interrupt  signals.   Useful  on noisy
     phone lines,  which  generate  spurious  RUBOUT  or
     DELETE  characters.  It's usually more effective to
     change your interrupt character to  control-c,  for
     which see the _s_t_t_y shell command.











MMaaiill RReeffeerreennccee MMaannuuaall                               UUSSDD::77--3355


-n   Inhibit reading of /usr/lib/Mail.rc.  Not generally
     useful, since /usr/lib/Mail.rc is usually empty.

-s string
     Used for sending mail.  _S_t_r_i_n_g is used as the  sub-
     ject of the message being composed.  If _s_t_r_i_n_g con-
     tains blanks,  you  must  surround  it  with  quote
     marks.

-u name
     Read  _n_a_m_e_s_'_s  mail instead of your own.  Unwitting
     others often neglect to  protect  their  mailboxes,
     but  discretion is advised. Essentially, --uu uusseerr is
     a shorthand way of doing --ff //vvaarr//mmaaiill//uusseerr.

-v   Use the --vv flag when invoking sendmail.  This  fea-
     ture  may  also  be  enabled  by setting the option
     "verbose".

     The following command line flags  are  also  recog-
nized,  but  are  intended  for use by programs invoking
_M_a_i_l and not for people.

-T file
     Arrange to print on _f_i_l_e the contents of the  _a_r_t_i_-
     _c_l_e_-_i_d fields of all messages that were either read
     or deleted.  --TT is for  the  _r_e_a_d_n_e_w_s  program  and
     should NOT be used for reading your mail.

-h number
     Pass  on hop count information.  _M_a_i_l will take the
     number, increment it, and pass it with  --hh  to  the
     mail  delivery  system.   --hh  only  has effect when
     sending mail and is used for network mail  forward-
     ing.

-r name
     Used  for  network mail forwarding:  interpret _n_a_m_e
     as the sender of the message.  The _n_a_m_e and --rr  are
     simply sent along to the mail delivery system.  Al-
     so, _M_a_i_l will wait for the message to be  sent  and
     return  the exit status.  Also restricts formatting
     of message.

     Note that --hh and --rr, which  are  for  network  mail
forwarding, are not used in practice since mail forward-
ing is now handled separately.  They may disappear soon.

77..  FFoorrmmaatt ooff mmeessssaaggeess

     This  section  describes  the  format  of messages.
Messages begin with a _f_r_o_m line, which consists  of  the
word  "From"  followed  by a user name, followed by any-










UUSSDD::77--3366                               MMaaiill RReeffeerreennccee MMaannuuaall


thing, followed by a date in the format returned by  the
_c_t_i_m_e library routine described in section 3 of the Unix
Programmer's Manual.  A possible _c_t_i_m_e format date is:

    Tue Dec  1 10:58:23 1981

    The
    _c_t_i_m_e
    date may be optionally followed by a single space and a
    time zone indication, which
    should be three capital letters, such as PDT.

     Following the _f_r_o_m line are  zero  or  more  _h_e_a_d_e_r
_f_i_e_l_d lines.  Each header field line is of the form:

    name: information

    _N_a_m_e
    can be anything, but only certain header fields are recognized as
    having any meaning.  The recognized header fields are:
    _a_r_t_i_c_l_e_-_i_d,
    _b_c_c,
    _c_c,
    _f_r_o_m,
    _r_e_p_l_y_-_t_o,
    _s_e_n_d_e_r,
    _s_u_b_j_e_c_t,
    and
    _t_o.
    Other header fields are also significant to other systems; see,
    for example, the current Arpanet message standard for much more
    information on this topic.
    A header field can be continued onto following lines by making the
    first character on the following line a space or tab character.

     If  any  headers are present, they must be followed
by a blank line.  The part that follows  is  called  the
_b_o_d_y  of  the  message, and must be ASCII text, not con-
taining null characters.  Each line in the message  body
must  be  no  longer  than 512 characters and terminated
with an ASCII newline character.  If binary data must be
passed  through  the  mail  system, it is suggested that
this data be encoded in a system which encodes six  bits
into  a printable character (i.e.: uuencode).  For exam-
ple, one could use the upper and lower case letters, the
digits,  and  the characters comma and period to make up
the 64 characters.  Then, one can send a  16-bit  binary
number  as three characters.  These characters should be
packed into lines, preferably lines about 70  characters
long as long lines are transmitted more efficiently.

     The  message  delivery  system  always adds a blank
line to the end of each message.  This blank  line  must










MMaaiill RReeffeerreennccee MMaannuuaall                               UUSSDD::77--3377


not be deleted.

     The  UUCP  message delivery system sometimes adds a
blank line to the end of a message each time it is  for-
warded through a machine.

     It should be noted that some network transport pro-
tocols enforce limits to the lengths of messages.

88..  GGlloossssaarryy

     This section contains  the  definitions  of  a  few
phrases peculiar to _M_a_i_l.

_a_l_i_a_s
     An alternative name for a person or list of people.

_f_l_a_g An option, given on the command line of _M_a_i_l, pref-
     aced with a -.  For example, --ff is a flag.

_h_e_a_d_e_r _f_i_e_l_d
     At  the  beginning  of a message, a line which con-
     tains information that is part of the structure  of
     the message.  Popular header fields include _t_o, _c_c,
     and _s_u_b_j_e_c_t.

_m_a_i_l
     A  collection  of  messages.   Often  used  in  the
     phrase, "Have you read your mail?"

_m_a_i_l_b_o_x
     The  place  where your mail is stored, typically in
     the directory /var/mail.

_m_e_s_s_a_g_e
     A single letter from someone, initially  stored  in
     your _m_a_i_l_b_o_x.

_m_e_s_s_a_g_e _l_i_s_t
     A  string  used  in _M_a_i_l command mode to describe a
     sequence of messages.

_o_p_t_i_o_n
     A piece of special purpose information used to tai-
     lor _M_a_i_l to your taste.  Options are specified with
     the sseett command.

99..  SSuummmmaarryy ooff ccoommmmaannddss,, ooppttiioonnss,, aanndd eessccaappeess

     This section gives a quick summary of the _M_a_i_l com-
mands, binary and valued options, and tilde escapes.












UUSSDD::77--3388                               MMaaiill RReeffeerreennccee MMaannuuaall


     The following table describes the commands:

 Command                             _D_e_s_c_r_i_p_t_i_o_n
--------------------------------------------------------------------------
++            Same as nneexxtt
--            Back up to previous message
??            Print brief summary of _M_a_i_l commands
!!            Single command escape to shell
PPrriinntt        Type message with ignored fields
RReeppllyy        Reply to author of message only
RReessppoonndd      Same as RReeppllyy
TTyyppee         Type message with ignored fields
aalliiaass        Define an alias as a set of user names
aalltteerrnnaatteess   List other names you are known by
cchhddiirr        Change working directory, home by default
ccooppyy         Copy a message to a file or folder
ddeelleettee       Delete a list of messages
ddpp           Same as ddtt
ddtt           Delete current message, type next message
eeddiitt         Edit a list of messages
eellssee         Start of else part of conditional; see iiff
eennddiiff        End of conditional statement; see iiff
eexxiitt         Leave mail without changing anything
ffiillee         Interrogate/change current mail file
ffoollddeerr       Same as ffiillee
ffoollddeerrss      List the folders in your folder directory
ffrroomm         List headers of a list of messages
hheeaaddeerrss      List current window of messages
hheellpp         Same as ??
hhoolldd         Same as pprreesseerrvvee
iiff           Conditional execution of _M_a_i_l commands
iiggnnoorree       Set/examine list of ignored header fields
lliisstt         List valid _M_a_i_l commands
llooccaall        List other names for the local host
mmaaiill         Send mail to specified names
mmbbooxx         Arrange to save a list of messages in _m_b_o_x
nneexxtt         Go to next message and type it
pprreesseerrvvee     Arrange to leave list of messages in system mailbox
pprriinntt        Print messages
qquuiitt         Leave _M_a_i_l; update system mailbox, _m_b_o_x as appropriate
rreeppllyy        Compose a reply to a message
rreessppoonndd      Same as rreeppllyy
rreettaaiinn       Supersedes iiggnnoorree
ssaavvee         Append messages, headers included, on a file
sseett          Set binary or valued options
sshheellll        Invoke an interactive shell
ssiizzee         Prints out size of message list
ssoouurrccee       Read _m_a_i_l commands from a file
ttoopp          Print first so many (5 by default) lines of list of messages
ttyyppee         Same as pprriinntt













MMaaiill RReeffeerreennccee MMaannuuaall                               UUSSDD::77--3399


uunnddeelleettee     Undelete list of messages
uunnrreeaadd       Marks list of messages as not been read
uunnsseett        Undo the operation of a sseett
vviissuuaall       Invoke visual editor on a list of messages
wwrriittee        Append messages to a file, don't include headers
xxiitt          Same as eexxiitt
zz            Scroll to next/previous screenful of headers



     The  following  table  describes the options.  Each
option is shown as being either a binary or  valued  op-
tion.

 Option      _T_y_p_e                         _D_e_s_c_r_i_p_t_i_o_n
---------------------------------------------------------------------------
EDITOR      _v_a_l_u_e_d   Pathname of editor for ~e and eeddiitt
PAGER       _v_a_l_u_e_d   Pathname of paginator for PPrriinntt, pprriinntt, TTyyppee and ttyyppee
SHELL       _v_a_l_u_e_d   Pathname of shell for sshheellll, ~! and !!
VISUAL      _v_a_l_u_e_d   Pathname of screen editor for ~v, vviissuuaall
append      _b_i_n_a_r_y   Always append messages to end of _m_b_o_x
ask         _b_i_n_a_r_y   Prompt user for Subject: field when sending
askcc       _b_i_n_a_r_y   Prompt user for additional Cc's at end of message
autoprint   _b_i_n_a_r_y   Print next message after ddeelleettee
crt         _v_a_l_u_e_d   Minimum number of lines before using PPAAGGEERR
debug       _b_i_n_a_r_y   Print out debugging information
dot         _b_i_n_a_r_y   Accept . alone on line to terminate message input
escape      _v_a_l_u_e_d   Escape character to be used instead of  ~
folder      _v_a_l_u_e_d   Directory to store folders in
hold        _b_i_n_a_r_y   Hold messages in system mailbox by default
ignore      _b_i_n_a_r_y   Ignore RUBOUT while sending mail
ignoreeof   _b_i_n_a_r_y   Don't terminate letters/command input with ^^DD
keep        _b_i_n_a_r_y   Don't unlink system mailbox when empty
keepsave    _b_i_n_a_r_y   Don't delete ssaavveed messages by default
metoo       _b_i_n_a_r_y   Include sending user in aliases
noheader    _b_i_n_a_r_y   Suppress initial printing of version and headers
nosave      _b_i_n_a_r_y   Don't save partial letter in _d_e_a_d_._l_e_t_t_e_r
quiet       _b_i_n_a_r_y   Suppress printing of _M_a_i_l version and message numbers
record      _v_a_l_u_e_d   File to save all outgoing mail in
screen      _v_a_l_u_e_d   Size of window of message headers for zz, etc.
sendmail    _v_a_l_u_e_d   Choose alternate mail delivery system
toplines    _v_a_l_u_e_d   Number of lines to print in ttoopp
verbose     _b_i_n_a_r_y   Invoke sendmail with the --vv flag




















UUSSDD::77--4400                               MMaaiill RReeffeerreennccee MMaannuuaall



     The  following  table  summarizes the tilde escapes
available while sending mail.

Escape    _A_r_g_u_m_e_n_t_s                   _D_e_s_c_r_i_p_t_i_o_n
----------------------------------------------------------------
~!       _c_o_m_m_a_n_d        Execute shell command
~b       _n_a_m_e _._._.       Add names to "blind" Cc: list
~c       _n_a_m_e _._._.       Add names to Cc: field
~d                      Read _d_e_a_d_._l_e_t_t_e_r into message
~e                      Invoke text editor on partial message
~f       _m_e_s_s_a_g_e_s       Read named messages
~h                      Edit the header fields
~m       _m_e_s_s_a_g_e_s       Read named messages, right shift by tab
~p                      Print message entered so far
~q                      Abort entry of letter; like RUBOUT
~r       _f_i_l_e_n_a_m_e       Read file into message
~s       _s_t_r_i_n_g         Set Subject: field to _s_t_r_i_n_g
~t       _n_a_m_e _._._.       Add names to To: field
~v                      Invoke screen editor on message
~w       _f_i_l_e_n_a_m_e       Write message on file
~|       _c_o_m_m_a_n_d        Pipe message through _c_o_m_m_a_n_d
~:       _M_a_i_l _c_o_m_m_a_n_d   Execute a _M_a_i_l command
~~       _s_t_r_i_n_g         Quote a ~ in front of _s_t_r_i_n_g




     The following table shows the  command  line  flags
that _M_a_i_l accepts:

  Flag                        Description
------------------------------------------------------------
-N           Suppress the initial printing of headers
-T _f_i_l_e      Article-id's of read/deleted messages to _f_i_l_e
-d           Turn on debugging
-f _f_i_l_e      Show messages in _f_i_l_e or _~_/_m_b_o_x
-h _n_u_m_b_e_r    Pass on hop count for mail forwarding
-i           Ignore tty interrupt signals
-n           Inhibit reading of /usr/lib/Mail.rc
-r _n_a_m_e      Pass on _n_a_m_e for mail forwarding
-s _s_t_r_i_n_g    Use _s_t_r_i_n_g as subject in outgoing mail
-u _n_a_m_e      Read _n_a_m_e_'_s mail instead of your own
-v           Invoke sendmail with the --vv flag



Notes: --TT, --dd, --hh, and --rr are not for human use.











