













                   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


                       March 11, 2020


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.

____________________
   1 UNIX is a trademark of Bell Laboratories.












UUSSDD::77--22                                MMaaiill RReeffeerreennccee MMaannuuaall


     Here  is  how  messages  are  handled:  the mail system
accepts 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
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  mes-
sage,  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 let-
ter 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 let-
ter 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.

     The message your recipient reads will  consist  of  the
message  you  typed, preceded by a line telling who sent the










MMaaiill RReeffeerreennccee MMaannuuaall                                UUSSDD::77--33


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 command  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  mes-
sages  with  these  numbers.  _M_a_i_l keeps track of which mes-
sages 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  mes-
sages  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 command,
which may be abbreviated to simply tt.  For example,  if  you
had the following messages:

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

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!!










UUSSDD::77--44                                MMaaiill RReeffeerreennccee MMaannuuaall


Many  _M_a_i_l  commands that operate on messages take a message
number as an argument like the ttyyppee command.  For these com-
mands,  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.  RReeppllyy,
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 mes-
sage.  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  indi-
cate  its readiness to accept another command.  In our exam-
ple, if, after typing the first message, you wished to reply
to it, you might give the command:

    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  sub-
ject  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)










MMaaiill RReeffeerreennccee MMaannuuaall                                UUSSDD::77--55


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
    &


     The  rreeppllyy  command is especially useful for sustaining
extended conversations over the message system,  with  other
"listening" users receiving copies of the conversation.  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 particular  mes-
sage  you have received because it is only of passing inter-
est.  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










UUSSDD::77--66                                MMaaiill RReeffeerreennccee MMaannuuaall


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 liking
with the sseett  command.   The  sseett  command  has  two  forms,
depending  on  whether  you are setting a _b_i_n_a_r_y option or a
_v_a_l_u_e_d option.  Binary options are either on  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 oth-
erwise,  _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" option.

     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 screen-
ful 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  associated  with  it.
For  example,  an  alias can be defined for the members of a










MMaaiill RReeffeerreennccee MMaannuuaall                                UUSSDD::77--77


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 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 exam-
ple, 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 customize
_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, ".mailrc," which is found in the  user's
home  directory.   The system wide file is maintained by the
system administrator 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 sec-
tion 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  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










UUSSDD::77--88                                MMaaiill RReeffeerreennccee MMaannuuaall


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 example, if you have a col-
lection 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 com-
mand  are saved in the file "mbox" in your home directory 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 examine
are  normally retained in your system mailbox automatically.
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

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 mes-
sages you have typed but not deleted in  the  file  _m_b_o_x  in
your  login directory.  Deleted messages are discarded irre-
trievably, 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.










MMaaiill RReeffeerreennccee MMaannuuaall                                UUSSDD::77--99


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

     If,  instead, you want to execute a Shell command with-
out 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.

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  with-
out  causing  that  message  to  be removed from your system
mailbox, use the ccooppyy command, which  is  identical  in  all










UUSSDD::77--1100                               MMaaiill RReeffeerreennccee MMaannuuaall


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 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 ffoollddeerrss
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 look-
ing 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 provides 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, followed by a single charac-
ter which indicates the function to be performed.  For exam-
ple, to print the text of the message so far, use:

    ~p

which  will  print  a line of dashes, the recipients of your
message, and the text of the message  so  far.   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.











MMaaiill RReeffeerreennccee MMaannuuaall                               UUSSDD::77--1111


     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 modify-
ing 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 "EDI-
TOR" to something else.  For example, you might prefer:

    set EDITOR=/usr/ucb/ex


     Many systems offer a screen editor as an alternative 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 cur-
rent 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 contents
of some file in your message; the escape

    ~r filename

is provided for this purpose, and causes the named  file  to
be  appended to your current message.  _M_a_i_l complains if the
file doesn't exist or can't be read.  If the  read  is  suc-
cessful, 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










UUSSDD::77--1122                               MMaaiill RReeffeerreennccee MMaannuuaall


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 charac-
ters  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 mes-
sage, 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  decide
to  add additional people to the list of message recipients,
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.

     If you wish, you can associate a subject with your mes-
sage 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.










MMaaiill RReeffeerreennccee MMaannuuaall                               UUSSDD::77--1133


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 car-
bon copies the "Cc:" field.  If you wish to  edit  these  in
ways  impossible with the ~t, ~s, ~c and ~b escapes, you can
use the escape

    ~h

which prints "To:" followed by the current list  of  recipi-
ents  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

would  change  the  initial  recipients "root kurt" to "root
bill."  When you type a newline, _M_a_i_l advances to the  "Sub-
ject:"  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 mes-
sage.

     To effect a temporary escape to the shell, the escape

    ~!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










UUSSDD::77--1144                               MMaaiill RReeffeerreennccee MMaannuuaall


output as the new text of your message.  If the command pro-
duces  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.

     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,










MMaaiill RReeffeerreennccee MMaannuuaall                               UUSSDD::77--1155


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 people on the Arpanet
using a name of the form

    name@host.domain

where _n_a_m_e 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  connected  to  yours,
you can send mail to him using the syntax:

    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 interme-
diary 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 letter,
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










UUSSDD::77--1166                               MMaaiill RReeffeerreennccee MMaannuuaall


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  either
user names or aalliiaass names.  It is also possible to send mes-
sages directly to files or to programs, using  special  con-
ventions.   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  exam-
ple 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 com-
mand:

    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 mem-
bers of the project.  This file can be examined  using  _M_a_i_l
_-_f.

     It  is sometimes useful to send mail directly to a pro-
gram, for example one might write a project  billboard  pro-
gram  and want to access it using _M_a_i_l.  To send messages to
the billboard program, one can send mail to the special name
`|billboard'  for example.  _M_a_i_l treats recipient 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 argument 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"











MMaaiill RReeffeerreennccee MMaannuuaall                               UUSSDD::77--1177


55..  AAddddiittiioonnaall ffeeaattuurreess

     This section describes some additional commands  useful
for  reading  your mail, setting options, and handling 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 head-
ers associated with the message list passed to it.  The ffrroomm
command is particularly useful in conjunction with  some  of
the message list features described below.

     A  _m_e_s_s_a_g_e  _l_i_s_t consists of a list of message numbers,
ranges, and names, separated by  spaces  or  tabs.   Message
numbers  may be either decimal numbers, which directly spec-
ify messages, or one of the special characters "^"  "."   or
"$" to specify the first relevant, current, or last relevant
message, respectively.  _R_e_l_e_v_a_n_t here means, for  most  com-
mands  "not deleted" and "deleted" for the uunnddeelleettee command.

     A range of messages consists of two message numbers (of
the form described in the previous paragraph) separated by a
dash.  Thus, to print the first four messages, 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
selected  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,

    type *

prints all undeleted messages,










UUSSDD::77--1188                               MMaaiill RReeffeerreennccee MMaannuuaall


    delete *

deletes all undeleted messages, and

    undelete *

undeletes all deleted messages.

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

    from /pascal

Note that subject searching ignores upper/lower case differ-
ences.

55..22..  LLiisstt ooff ccoommmmaannddss

     This section describes all the _M_a_i_l commands  available
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 previous 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 abbre-
     viated 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 (respectively,  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 pref-
     acing 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 recipient named by "reply-to."  You type in
     your message using the same  conventions  available  to
     you  through  the  mmaaiill  command.  The RReeppllyy command is
     especially useful for replying to  messages  that  were
     sent  to  enormous  distribution groups when you really
     just want to send a message to the originator.  Use  it










MMaaiill RReeffeerreennccee MMaannuuaall                               UUSSDD::77--1199


     often.  RReeppllyy (and RReessppoonndd) can be abbreviated to RR.

TTyyppee
     Identical  to  the PPrriinntt command.  TTyyppee can be abbrevi-
     ated 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 peo-
     ple 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 mes-
     sages 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.  AAlltteerrnnaatteess is usually used in the .mailrc file.
     AAlltteerrnnaatteess 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  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.










UUSSDD::77--2200                               MMaaiill RReeffeerreennccee MMaannuuaall


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 being edited and  execut-
     ing  the  text  editor on it.  When you have edited the
     message to your satisfaction, 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 condi-
     tion 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 accidentally
     delete several messages, you  can  use  eexxiitt  to  avoid
     scrambling your mailbox.  EExxiitt can be abbreviated 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 directory.

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 argument, 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:


















MMaaiill RReeffeerreennccee MMaannuuaall                               UUSSDD::77--2211



              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  message is, and the
     "Subject:" header field of each  message,  if  present.
     In  addition, _M_a_i_l tags the message header of each mes-
     sage that has been the object of the  pprreesseerrvvee  command
     with  a  "P."  Messages 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  notion  of  the  current
     "window"  into your messages for the purposes of print-
     ing headers.  Use the zz command  to  move  forward  and
     back  a window.  You can move _M_a_i_l_'_s notion of the cur-
     rent window directly to a particular message by  using,
     for example,

         headers 40

     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.











UUSSDD::77--2222                               MMaaiill RReeffeerreennccee MMaannuuaall


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  mail-
     box,  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 abbreviated to hhoo.

iiff   Commands in your ".mailrc" file can be executed  condi-
     tionally  depending  on  whether  you  are  sending  or
     receiving mail with the iiff command.  For  example,  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 machine-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  entirety,  including  ignored
     fields.   If  iiggnnoorree  is executed with no arguments, it
     lists the current set of ignored fields.

lliisstt
     List the valid _M_a_i_l commands.  LLiisstt can be  abbreviated
     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 message, using










MMaaiill RReeffeerreennccee MMaannuuaall                               UUSSDD::77--2233


     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  inter-
     rupt 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 default
     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  new-
     line, 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

         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 indi-
     cates 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,  unsaved
     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










UUSSDD::77--2244                               MMaaiill RReeffeerreennccee MMaannuuaall


     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  during 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 rewrite  of
     edit file fails, in which case the user can escape with
     the eexxiitt command.  QQuuiitt can be abbreviated 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 origi-
     nal 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 recipient named by
     "reply-to."   You  type  in your message using the same
     conventions available to you through the mmaaiill  command.
     The  rreeppllyy  (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  message.   All
     other header fields are suppressed.  The TTyyppee and PPrriinntt
     commands  can  be  used  to  print  a  message  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  messages.   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 terminal.  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.










MMaaiill RReeffeerreennccee MMaannuuaall                               UUSSDD::77--2255


sseett
     Set  an option or give an option a value.  Used to cus-
     tomize _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.

sshheellll
     The sshheellll command allows you to escape  to  the  shell.
     SShheellll  invokes  an  interactive shell and allows 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  set-
     ting 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 charac-
     ters 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  abbre-
     viated 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










UUSSDD::77--2266                               MMaaiill RReeffeerreennccee MMaannuuaall


     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 hav-
     ing been read.  UUnnrreeaadd can be abbreviated to UU.

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

vviissuuaall
     It is often useful to be able to invoke one of two edi-
     tors,  based  on the type of terminal one is using.  To
     invoke a display  oriented  editor,  you  can  use  the
     vviissuuaall command.  The operation of the vviissuuaall command is
     otherwise identical to that of the eeddiitt command.

     Both the eeddiitt and vviissuuaall commands assume  some  default
     text  editors.  These default editors can be overridden
     by the valued options "EDITOR"  and  "VISUAL"  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 syntax 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 use-
     ful for such tasks as sending and receiving source pro-
     gram 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
     described  under  the  hheeaaddeerrss  command.   You can move
     _M_a_i_l_'_s attention forward to the next window  by  giving
     the

         z+










MMaaiill RReeffeerreennccee MMaannuuaall                               UUSSDD::77--2277


     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 or all upper  case
letters.  When I start a sentence such as: "Ask" causes _M_a_i_l
to prompt you for a subject header, I am  only  capitalizing
"ask" as a courtesy to English.

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 output
     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  messages  in  your
     system  mailbox.  By setting "append," you are request-
     ing that _m_b_o_x be appended to regardless.  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.










UUSSDD::77--2288                               MMaaiill RReeffeerreennccee MMaannuuaall


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 automatically.
     This is useful when quickly scanning and deleting  mes-
     sages in your mailbox.

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

ddeebbuugg
     The  binary option "debug" causes debugging information
     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 terminator 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 spe-
     cial  meaning,  and  need  no  longer be doubled at the
     beginning of a line.

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

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

iiggnnoorree
     The  binary  option  "ignore"  causes RUBOUT characters










MMaaiill RReeffeerreennccee MMaannuuaall                               UUSSDD::77--2299


     from your terminal to be  ignored  and  echoed  as  @'s
     while  you  are sending mail.  RUBOUT characters retain
     their original meaning in _M_a_i_l command  mode.   Setting
     the  "ignore"  option is equivalent to supplying 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 of a mes-
     sage.  "Ignoreeof" also applies to _M_a_i_l command mode.

kkeeeepp
     The "keep" option causes _M_a_i_l to truncate  your  system
     mailbox  instead of deleting it when it is empty.  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 peo-
     ple 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 "keep-
     save" 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 binary option "metoo."

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

nnoossaavvee
     Normally,  when  you  abort a message with two RUBOUTs,
     _M_a_i_l copies the partial letter to the  file  "dead.let-
     ter" 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










UUSSDD::77--3300                               MMaaiill RReeffeerreennccee MMaannuuaall


     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
     "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 program
     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 send-
     mail with the --vv flag, which causes it to go into  ver-
     bose  mode and announce expansion of aliases, etc. Set-
     ting 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  inter-
     est.

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












MMaaiill RReeffeerreennccee MMaannuuaall                               UUSSDD::77--3311


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

-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  subject
     of  the  message  being  composed.   If _s_t_r_i_n_g contains
     blanks, you must surround it with quote marks.

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

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

     The following command line flags are  also  recognized,
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 num-
     ber, 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 forwarding.

-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.   Also,  _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  for-
warding,  are  not used in practice since mail forwarding is
now handled separately.  They may disappear soon.














UUSSDD::77--3322                               MMaaiill RReeffeerreennccee MMaannuuaall


77..  FFoorrmmaatt ooff mmeessssaaggeess

     This section describes the format  of  messages.   Mes-
sages  begin  with  a  _f_r_o_m line, which consists of the word
"From" followed by a user name, followed by  anything,  fol-
lowed  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 Man-
ual.  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 mes-
sage  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 containing null charac-
ters.   Each line in the message body must be no longer than
512 characters and terminated with an ASCII newline  charac-
ter.  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.: uuen-
code).  For example, 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  not  be
deleted.

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











MMaaiill RReeffeerreennccee MMaannuuaall                               UUSSDD::77--3333


     It  should  be noted that some network transport proto-
cols 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, prefaced
     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  contains
     information  that  is part of the structure of the mes-
     sage.  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 tailor
     _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.

     The following table describes the commands:

 Command                             _D_e_s_c_r_i_p_t_i_o_n
--------------------------------------------------------------------------













UUSSDD::77--3344                               MMaaiill RReeffeerreennccee MMaannuuaall


++            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
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











MMaaiill RReeffeerreennccee MMaannuuaall                               UUSSDD::77--3355


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--3366                               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.











