


          ()                                                             ()


                                 TThhee EEllmm UUsseerrss GGuuiiddee



                     _A _p_a_i_n_l_e_s_s _i_n_t_r_o_d_u_c_t_i_o_n _t_o _e_l_e_c_t_r_o_n_i_c _m_a_i_l
                              _u_s_i_n_g _t_h_e EEllmm _m_a_i_l _s_y_s_t_e_m



                                 The Elm Mail System
                                    (Version 2.4)


                           Syd Weinstein, Elm Coordinator
                               Datacomp Systems, Inc.
                                   3837 Byron Road
                          Huntingdon Valley, PA 19006-2320

                          email: elm@DSI.COM  or  dsinc!elm




                                      AABBSSTTRRAACCTT

                    While   various   Unix  utilities  have  been
                    designed to take advantage of the CRT  screen
                    (rather  than  line-oriented  systems)  elec-
                    tronic  mail  systems  haven't  ``caught  the
                    wave''.    This   document  presents  _E_l_m,  a
                    sophisticated  full-screen  mail  system  for
                    interactive use.  _E_l_m offers all the features
                    of _/_b_i_n_/_m_a_i_l, _B_e_r_k_e_l_e_y  _M_a_i_l,  _u_u_m_a_i_l,  _N_M_a_i_l
                    and  the  AT&T  Mail  family  of Unix mailers
                    (namely _P_M_X_/_T_E_R_M) in a unified and  intuitive
                    fashion.












                       ((CC)) Copyright 1986,1987 by Dave Taylor
                ((CC)) Copyright 1988-1992 by The USENET Community Trust







                                                                          1





          ()                                                             ()







                                   EEllmm UUsseerrss GGuuiiddee

                         (The Elm Mail System, Version 2.4)

                                   October 1, 1992


                                    Syd Weinstein
                               Datacomp Systems, Inc.
                                   3837 Byron Road
                          Huntingdon Valley, PA 19006-2320

                          email: elm@DSI.COM  or  dsinc!elm


                                    Derived from
                         "The Elm Mail System, Version 2.0"
                                         by
                                     Dave Taylor
                                  Intuitive Systems
                              Mountain View, California
                    email: taylor@intuitive.com  or  limbo!taylor




          The  operating  system  was  originally  written  on  a small PDP
          machine, to work with  teletypewriters.   Consequently,  all  the
          original  software  for  the  operating system was written with a
          `tty' in mind; with line oriented interfaces, rather than  screen
          oriented.

          Gradually  this  began  to  change, and, with the addition of the
          Berkeley _v_i visual shell to the _e_d line editor, the  trend  began
          to  be  brought  to the attention of Unix systems designers.  And
          yet, this transition has seemed  too  subtle  for  many  software
          engineers,  and  so  precious  few  Unix  programs  are available
          designed to exploit the entire CRT screen.

          Consequently, after becoming more and more disenchanted with  the
          existing  electronic  mail facilities (_b_i_n_m_a_i_l and _B_e_r_k_e_l_e_y _M_a_i_l)
          Dave Taylor decided to undertake creating his own  system.   Once
          the  ball  was  rolling  it  became  quite  difficult not to keep
          enhancing it, especially as he  and  the  Elm  Development  Group
          became  more  and  more familiar with various different mail sys-
          tems, but the result, we hope, is a solid, unified  interface  to
          electronic mail suitable for almost any environment.

          One  thing  that sets TThhee EEllmm MMaaiill SSyysstteemm off from other packages



                                                                          1





          ()                                                             ()


          is that it comes with an extensive documentation set,  including;
          _T_h_e  _E_l_m  _U_s_e_r_s  _G_u_i_d_e,  which  you're holding, _T_h_e _E_l_m _R_e_f_e_r_e_n_c_e
          _G_u_i_d_e, _T_h_e _E_l_m _A_l_i_a_s _U_s_e_r_s _G_u_i_d_e, _T_h_e  _E_l_m  _F_i_l_t_e_r  _S_y_s_t_e_m  _U_s_e_r_s
          _G_u_i_d_e, _T_h_e _E_l_m _F_o_r_m_s _M_o_d_e _G_u_i_d_e, and _T_h_e _E_l_m _C_o_n_f_i_g_u_r_a_t_i_o_n _G_u_i_d_e.
          The names of each indicate what they discuss (not  unreasonably).

          This  particular document contains; this introduction, a tutorial
          session with the mailer, a discussion of non-interactive uses  of
          EEllmm,  a  brief foray into the EEllmm utilities, and finally, credits
          and references.

          _T_h_e _E_l_m _R_e_f_e_r_e_n_c_e _G_u_i_d_e contains a much more in-depth  discussion
          of all the possible options available within the EEllmm environment,
          including the _`_`_._e_l_m_/_e_l_m_r_c_'_' file, the  available  outbound  mail
          processing  features,  a section for expert users, suggestions on
          debugging strange installations, and many other useful topics.

          _T_h_e _E_l_m _A_l_i_a_s _U_s_e_r_s _G_u_i_d_e is the place to go to learn  about  the
          format  of the ``.elm/aliases.text'' file and the associated data
          files, system aliases, and other related topics.

          One of the more innovative features of  EEllmm  is  the  ability  to
          transmit  and receive ``forms'' (as defined by the AT&T Mail sys-
          tem).  To learn about how to create and reply to forms you should
          refer to _T_h_e _E_l_m _F_o_r_m_s _M_o_d_e _G_u_i_d_e.

          If  you  find  yourself  getting  too much mail delivered in your
          mailbox, you might be a good candidate for  the  _f_i_l_t_e_r  program.
          To learn more about what this program is and how to use it please
          consult _T_h_e _E_l_m _F_i_l_t_e_r _S_y_s_t_e_m _U_s_e_r_s _G_u_i_d_e.

          Finally, if you're working with the actual source  code  and  are
          interested  in  what  all  the locally configured options are and
          mean, please see _T_h_e _E_l_m _C_o_n_f_i_g_u_r_a_t_i_o_n  _G_u_i_d_e.   It  is  strongly
          suggested  that  all  system administrators and people installing
          the system print out the local ``sysdefs.h''  file  and  have  it
          handy while reading the configuration guide.

          The  recommended order of learning the EEllmm system is to skim this
          guide until you feel confident enough to start  up  the  program.
          Once  that's  reached,  _u_s_e  _i_t_!  Soon you'll find areas that you
          need to expand into, and you can achieve that by going  into  the
          _o_)_p_t_i_o_n_s  screen  within _e_l_m and changing your user level accord-
          ingly.  After a while, sit  down  again  and  read  through  this
          guide.   You  should have a couple of ``aha!'' intuitive flashes.
          After another period of time, you're ready to delve into the real
          power of the system and read the reference guide.  The other man-
          uals should be read as the need arises.

          In any case, the system should be usable without reading  _a_n_y  of
          the documentation!

          Any  comments  or  problems  with any of the documentation or the
          program itself are welcome; if you can't get electronic  mail  to



                                                                          2





          ()                                                             ()


          the  Elm Development group, please feel free instead to drop me a
          note via the overland mail address in the title page.


          Upon entry to the program, the main screen will be  displayed  as
          below;


            MMaaiillbbooxx iiss ''//uussrr//mmaaiill//mmyymmaaiill'' wwiitthh 1155 mmeessssaaggeess  [[EEllmm 22..44PPLL00]]
           -->>   NN     11   AApprr 2244   LLaarrrryy FFeennsskkee   ((4499))    HHeelllloo tthheerree
                NN     22   AApprr 2244   jjaadd@@hhppccnnooee     ((8844))    CChhiiccoo??  WWhhyy ggoo tthheerree??
                EE     33   AApprr 2233   CCaarrll SSmmiitthh     ((5533))    DDiinnnneerr ttoonniigghhtt??
                NNUU    44   AApprr 1188   DDoonn KKnnuutthh      ((335544))   YYoouurr vveerrssiioonn ooff TTeeXX......
                NN     55   AApprr 1188   ggaammeess          ((2266))    BBuugg iinn ccrriibbbbaaggee ggaammee
                 AA    66   AApprr 1155   kkeevviinn          ((2277))    MMoorree ssooffttwwaarree rreeqquueessttss
                      77   AApprr 1133   JJoohhnn JJaaccoobbss    ((119944))   HHooww ccaann yyoouu hhaattee RRUUSSHH??
                 UU    88   AApprr 88    ddeeccvvaaxx!!mmoouussee   ((6688))    RRee:: yyoouurr UUsseenneett aarrttiiccllee
                      99   AApprr 66    rroooott           ((77))
                OO    1100   AApprr 55    rroooott           ((1133))

          YYoouu ccaann uussee aannyy ooff tthhee ffoolllloowwiinngg ccoommmmaannddss bbyy pprreessssiinngg tthhee ffiirrsstt cchhaarraacctteerr;;
          dd))eelleettee  oorr  uu))nnddeelleettee  mmaaiill,, mm))aaiill aa mmeessssaaggee,, rr))eeppllyy oorr ff))oorrwwaarrdd
                                     mmaaiill,, qq))uuiitt
          TToo rreeaadd aa mmeessssaaggee,, pprreessss <<rreettuurrnn>>..  jj == mmoovvee ddoowwnn,, kk == mmoovvee uupp,, ??
                                       == hheellpp
           CCoommmmaanndd :: @@
          ____________________________________________________________________________________________________________________________________

          There  are  a  number  of  things  to notice about this, the main
          screen;

          Most likely, on your computer the  message  currently  ``active''
          will  be  displayed in an inverse bar rather than being delimited
          by the two character arrow as here.  It's nothing to worry about;
          displaying  inverse  video  is  just quite difficult on printable
          guides!

          The first line on the screen always displays the name of the cur-
          rent  folder,  the number of messages in the folder, and the cur-
          rent EEllmm version number.

          The arrow (``->'') or inverse  video  bar  will  always  indicate
          which is the current message.

          The  first field that appears associated with each message is the
          status field.  This can be blank (as with most of the ones above,
          or can have any combination of the following:

          The first character signifies temporary status:

                 E      for an _e_x_p_i_r_e_d message
                 N      for a _n_e_w message
                 O      for an _o_l_d (i.e. not new but not read) message
                 D      for a _d_e_l_e_t_e_d message



                                                                          3





          ()                                                             ()


          The second character which signifies permanent status:

                 C      for _C_o_n_f_i_d_e_n_t_i_a_l mail
                 U      for _u_r_g_e_n_t mail
                 P      for a _P_r_i_v_a_t_e message
                 A      for messages that have an _a_c_t_i_o_n associated with them
                 F      for a _f_o_r_m letter
                 M      for a _M_I_M_E compliant Message

          The  third  character of the status field can be a ``+'' to indi-
          cate that the message is _t_a_g_g_e_d too.

          Continuing from left to right, the next field is the message num-
          ber.   For  the most part you can ignore these unless you want to
          quickly move to a specific message (as we'll see later).

          The date associated with each message is typically the  date  the
          person actually _s_e_n_t the message.

          The next field displayed indicates whom the message is from.  EEllmm
          will try to display the _f_u_l_l _n_a_m_e of the person who sent the mes-
          sage,  rather  than  the  their return address or computer login.
          Some systems don't generate the correct  headers,  though,  hence
          messages like numbers 2 and 8, where it's their return address.

          The  number  in  parentheses  is the total number of lines in the
          message.

          The final field is the subject of the message.  Notice that  mes-
          sages might not have any subject, as in messages #9 and #10.

          A  maximum  of  ten  messages  are displayed at one time1.  1. On
          screens with greater than 24 lines, more messages  will  be  dis-
          played  automatically.   Further,  if  you choose to turn off the
          Menu display, you can have  an  even  greater  number  displayed.
          Further  into the document we'll learn how to change ``pages'' in
          the folder.

          The three line Menu display will  always  indicate  the  relevant
          commands.  There are actually two possible menus that can be dis-
          played, based on the _u_s_e_r _l_e_v_e_l as set from either  the  o)ptions
          screen  or  the  _._e_l_m_/_e_l_m_r_c  file.   The alternate menu, for more
          advanced users, lists more options;

           ||==ppiippee,, !!==sshheellll,, ??==hheellpp,, <<nn>>==sseett ccuurrrreenntt ttoo nn,, //==sseeaarrcchh ppaatttteerrnn
          aa))lliiaass,, CC))ccooppyy,, cc))hhaannggee ffoollddeerr,, dd))eelleettee,, ee))ddiitt,, ff))oorrwwaarrdd,,  gg))rroouupp
                                    rreeppllyy,, mm))aaiill,,
          nn))eexxtt,,  oo))ppttiioonnss,,  pp))rriinntt,, rr))eeppllyy,, ss))aavvee,, tt))aagg,, qq))uuiitt,, uu))nnddeelleettee,,
                                      oorr ee((xx))iitt

          Finally, the '@' character indicates where the cursor  would  be,
          awaiting your input.





                                                                          4





          ()                                                             ()


          The  typical  action  at this point is to use the _<_r_e_t_u_r_n_> key to
          read the current message, which will clear the screen and display
          the current message:

           MMeessssaaggee 11//1155 ffrroomm LLaarrrryy FFeennsskkee         AApprr 2244 ''8877 aatt 88::4455 ppmm eeddtt
                                     HHeelllloo tthheerree
           DDaavvee,,
                JJuusstt wwaanntteedd ttoo ddrroopp yyoouu aa bbrriieeff nnoottee ttoo sseeee wwhhaatt wwaass ggooiinngg oonn wwiitthh
           yyoouu tthhiiss aafftteerrnnoooonn..  LLiiffee hheerree hhaass bbeeeenn tthhee uussuuaall ffuunn aanndd ggaammeess......
eellll,, ooffff ttoo tthhee ggrreeaatt wwiillddss bbeeyyoonndd tthhee ddeesskk!!
                        LLaarrrryy
          __CC__oo__mm__mm__aa__nn__dd____((__''__ii__''____tt__oo____rr__ee__tt__uu__rr__nn____tt__oo____ii__nn__dd__ee__xx__))__::____@@______________________________________________________________

          Before  we  go  further  with  our  example,  however, let's very
          quickly look at all the functions available from the main screen:
          Action

          Read current message.  Pipe current message or tagged messages to
          specified system command.  Shell escape.   Resynchronize  folder.
          Help  mode  --  any  key pressed will be explained.  Display next
          page of headers.  Display previous page of headers.  Set  current
          message  to 1.  Set current to last message.  Set current message
          to number _n_u_m_b_e_r.  Search  for  pattern  in  subject/from  lines.
          Search  for  pattern in entire folder.  Scan message for calendar
          entries.2 2. Some sites might opt not to have the  calendar  fea-
          ture available.  A synonym for `s' -- _s_a_v_e message or messages.

          Alias, change to ``alias'' mode.  Bounce -- remail message [see _f
          _-_- _f_o_r_w_a_r_d too].  Copy current  message  or  tagged  messages  to
          folder.   Change  to  another  folder.   Delete  current message.
          Delete all messages matching  specified  pattern.   Edit  current
          folder,  resyncing upon re-entry.3 3. Some sites might opt not to
          have the edit folder feature available.  Forward message to spec-
          ified  user.4  4.  The  difference  between _F_o_r_w_a_r_d and _B_o_u_n_c_e is
          rather subtle -- a forwarded message is ``from''  you,  with  the
          original  message  included,  whereas  a bounced message is still
          from the original sender.  Group reply -- reply to  everyone  who
          received the current message.  Display message with headers.  Set
          current to next message.  Set current to next message not  marked
          deleted.  Set current to previous message.  Set current to previ-
          ous message not marked deleted.  Limit displayed  messages  based
          on  the  specified  criteria.  Rewrite screen.  Mail to arbitrary
          user(s).  Read current message, then increment  to  next  message
          not marked deleted.  Alter current system options.  Print current
          message or tagged messages.  Quit -- maybe prompting for messages
          to  delete,  store, or keep.  Quick quit -- like quit but without
          prompting.  Reply to the author of current message.  Save current
          message  or tagged messages to folder.  Tag current message.  Tag
          all messages matching specified pattern.  Undelete  current  mes-
          sage.  Undelete all messages matching specified pattern.  Exit --
          prompt if mailbox changed, don't record as  read,  don't  save...
          Exit immediately -- don't record as read, don't save...





                                                                          5





          ()                                                             ()


          But  let's  go  back to our example and see some of this at work,
          shall we?

          We were reading the message from  Larry  and  the  screen  looked
          like:

           MMeessssaaggee 11//1155 ffrroomm LLaarrrryy FFeennsskkee         AApprr 2244 ''8877 aatt 88::4455 ppmm eeddtt
                                     HHeelllloo tthheerree
           DDaavvee,,
                JJuusstt wwaanntteedd ttoo ddrroopp yyoouu aa bbrriieeff nnoottee ttoo sseeee wwhhaatt wwaass ggooiinngg oonn wwiitthh
           yyoouu tthhiiss aafftteerrnnoooonn..  LLiiffee hheerree hhaass bbeeeenn tthhee uussuuaall ffuunn aanndd ggaammeess......
eellll,, ooffff ttoo tthhee ggrreeaatt wwiillddss bbeeyyoonndd tthhee ddeesskk!!
                        LLaarrrryy
          __CC__oo__mm__mm__aa__nn__dd____((__''__ii__''____tt__oo____rr__ee__tt__uu__rr__nn____tt__oo____ii__nn__dd__ee__xx__))__::____@@______________________________________________________________

          From  this  point let's go ahead and reply to the message.  To do
          this, we can use the _r_e_p_l_y command...  To do this, we type  ``r''
          and the last few lines change to something like:

          --------------------------------------------------------------------------------------------------------------------------------------------------------------
          CCoommmmaanndd:: RReeppllyy ttoo mmeessssaaggee                 CCooppyy mmeessssaaggee ((yy//nn)) ?? @@


          To which we decide that we don't need the text of this message in
          our new one, so we reply _n_o by pressing the ``n'' key.  The  bot-
          tom part of the window then changes to:

          --------------------------------------------------------------------------------------------------------------------------------------------------------------
          CCoommmmaanndd:: RReeppllyy ttoo mmeessssaaggee                       TToo:: LLaarrrryy FFeennsskkee
          SSuubbjjeecctt:: RRee:: HHeelllloo tthheerree@@


          at  this  point  we can either decide to enter a new subject (you
          could use either _b_a_c_k_u_p _w_o_r_d (<control>-W) or _b_a_c_k_u_p  _l_i_n_e  (this
          is  the  same as your `line kill' character, <control>-X or <con-
          trol>-U usually)) or go  with  this  one  by  pressing  _<_r_e_t_u_r_n_>.
          We'll  just  leave  it  as it is and press _<_r_e_t_u_r_n_>, changing the
          screen to:

          --------------------------------------------------------------------------------------------------------------------------------------------------------------
          CCoommmmaanndd:: rreeppllyy ttoo mmeessssaaggee                       TToo:: LLaarrrryy FFeennsskkee
          SSuubbjjeecctt:: RRee:: HHeelllloo tthheerree
          CCooppiieess ttoo:: @@

          There's no one we want to have receive copies of this message, so
          we'll just press _<_r_e_t_u_r_n_> again to indicate this.

          Once  you've  answered  these  questions the program will put you
          into your favorite editor and let you compose a  response.   When
          you're done it then asks:

   --------------------------------------------------------------------------------------------------------------------------------------------------------------
          PPlleeaassee cchhoooossee oonnee ooff tthhee ffoolllloowwiinngg ooppttiioonnss bbyy ppaarreenntthheessiizzeedd lleetttteerr:: @@
                ee))ddiitt mmeessssaaggee,, eeddiitt hh))eeaaddeerrss,, ss))eenndd iitt,, oorr ff))oorrggeett iitt..



                                                                          6





          ()                                                             ()


          Since  we're  just  interested  in sending the message out, we'll
          choose the _s_e_n_d option and press ``s''.  The program  then  sends
          the message, indicating that by the line below saying:

              SSeennddiinngg mmaaiill......

          then  putting at the bottom of the screen ``Mail sent!'' and giv-
          ing us the prompt:

   --------------------------------------------------------------------------------------------------------------------------------------------------------------
          CCoommmmaanndd::                            ((UUssee ''ii'' ttoo rreettuurrnn ttoo iinnddeexx..))

          Pretty easy, isn't it?  Let's continue by going back to the  main
          screen  by  requesting _i_n_d_e_x: pressing the ``i'' key.  The screen
          is then:


            MMaaiillbbooxx iiss ''//uussrr//mmaaiill//mmyymmaaiill'' wwiitthh 1155 mmeessssaaggeess  [[EEllmm 22..44PPLL00]]
           -->>         11   AApprr 2244   LLaarrrryy FFeennsskkee   ((4499))    HHeelllloo tthheerree
                NN     22   AApprr 2244   jjaadd@@hhppccnnooee     ((8844))    CChhiiccoo??  WWhhyy ggoo tthheerree??
                EE     33   AApprr 2233   CCaarrll SSmmiitthh     ((5533))    DDiinnnneerr ttoonniigghhtt??
                NNUU    44   AApprr 1188   DDoonn KKnnuutthh      ((335544))   YYoouurr vveerrssiioonn ooff TTeeXX......
                NN     55   AApprr 1188   ggaammeess          ((2266))    BBuugg iinn ccrriibbbbaaggee ggaammee
                 AA    66   AApprr 1155   kkeevviinn          ((2277))    MMoorree ssooffttwwaarree rreeqquueessttss
                      77   AApprr 1133   JJoohhnn JJaaccoobbss    ((119944))   HHooww ccaann yyoouu hhaattee RRUUSSHH??
                 UU    88   AApprr 88    ddeeccvvaaxx!!mmoouussee   ((6688))    RRee:: yyoouurr UUsseenneett aarrttiiccllee
                      99   AApprr 66    rroooott           ((77))
                OO    1100   AApprr 55    rroooott           ((1133))

          YYoouu ccaann uussee aannyy ooff tthhee ffoolllloowwiinngg ccoommmmaannddss bbyy pprreessssiinngg tthhee ffiirrsstt cchhaarraacctteerr;;
          dd))eelleettee oorr uu))nnddeelleettee mmaaiill,, mm))aaiill aa mmeessssaaggee,,  rr))eeppllyy  oorr  ff))oorrwwaarrdd
                                     mmaaiill,, qq))uuiitt
          TToo rreeaadd aa mmeessssaaggee,, pprreessss <<rreettuurrnn>>..  jj == mmoovvee ddoowwnn,, kk == mmoovvee uupp,, ??
                                       == hheellpp
           CCoommmmaanndd :: @@
          ____________________________________________________________________________________________________________________________________

          Notice that the first message is no longer marked  as  _n_e_w  since
          we've now read it.

          Let's go ahead and read the message from kevin (message #6) since
          it has some sort of _a_c_t_i_o_n associated  with  it  anyway.   To  do
          this, we simply press the ``6'' key, which will change the bottom
          of the screen to:

          CCoommmmaanndd:: NNeeww CCuurrrreenntt MMeessssaaggee          SSeett ccuurrrreenntt mmeessssaaggee ttoo :: 66@@

          We'll just press _<_r_e_t_u_r_n_> to move the active message pointer (the
          arrow).

          Now we're pointing at the new message, so let's go ahead and read
          it by pressing _<_r_e_t_u_r_n_> again, giving us:





                                                                          7





          ()                                                             ()


           MMeessssaaggee 66//1155 ffrroomm kkeevviinn               AApprr 1155 ''8877 aatt 1111::3366 aamm ppsstt
                                MMoorree ssooffttwwaarree rreeqquueessttss
           AAccttiioonn:: pplleeaassee aacckknnoowwlleeddggee rreecceeiipptt
           II ddoonn''tt ssuuppppoossee yyoouu hhaavvee aa nniiffttyy nneettnneewwss rreeaaddeerr aarroouunndd  ttoooo,,  ddoo
          yyoouu????
           ----
           kkeevviinn
          __CC__oo__mm__mm__aa__nn__dd____((__''__ii__''____tt__oo____rr__ee__tt__uu__rr__nn____tt__oo____ii__nn__dd__ee__xx__))__::____@@______________________________________________________________


          Well,  it  turns out that we don't, but a friend of ours does, so
          let's _f_o_r_w_a_r_d the message to them by pressing ``f'':

          --------------------------------------------------------------------------------------------------------------------------------------------------------------
          CCoommmmaanndd:: FFoorrwwaarrdd mmeessssaaggee         EEddiitt oouuttggooiinngg mmeessssaaggee ((yy//nn)) ?? @@


          No need to edit it, so let's answer _n_o with ``n'':

          --------------------------------------------------------------------------------------------------------------------------------------------------------------
          CCoommmmaanndd:: FFoorrwwaarrdd mmeessssaaggee        EEddiitt oouuttggooiinngg mmeessssaaggee ((yy//nn)) ?? NNoo
          TToo:: @@

          We type in the address of the person we're forwarding to (in this
          case uusseenneett) and press _<_r_e_t_u_r_n_>:

          --------------------------------------------------------------------------------------------------------------------------------------------------------------
          CCoommmmaanndd:: FFoorrwwaarrdd mmeessssaaggee                              TToo:: uusseenneett
          SSuubbjjeecctt:: MMoorree ssooffttwwaarree rreeqquueessttss ((ffwwdd))@@

          To  which  we  again  press _<_r_e_t_u_r_n_> to take the default subject.
          EEllmm asks for any possible copy recipients, asks us if we're  sure
          we want to send it, and shoots it off.

          Enough  mail  for  now,  however, so we just _e_x_i_t by pressing the
          ``x'' key and the program drops us back into our shell.


          As you can see, it's quite easy to use the EEllmm system, so  rather
          than  continue with our example, let's look at some other aspects
          of the program.


          Before we go ahead and discuss the EEllmm utilities, it's worth not-
          ing  that  there  are a couple of other ways to use the main mail
          system, namely to `send only' and to send files (batchmail).

          To send a message to someone without any of the associated  over-
          head  of reading in a mail folder, you can invoke the mailer with
          the name(s) of the people to send to.  For example:
            $ eellmm ddaavvee__ttaayylloorr
          The mailer will then prompt for Subject, Copies,  and  then  drop
          you  in  your  editor (defined in the _._e_l_m_/_e_l_m_r_c file) to compose
          the message.   When composition is complete, the program verifies



                                                                          8





          ()                                                             ()


          transmission then terminates.

          The  mailer also supports batch type mailing, of files and so on,
          by using the following command:
            $ eellmm ddaavvee__ttaayylloorr << hheellpp..cc
          which will read in the file and  transmit  it  to  the  specified
          user.

          A  subject  may  be specified with ``-s _s_u_b_j_e_c_t'' as an option to
          the program in either `send only' or `batch' modes, as in:
            $ eellmm --ss ""FFiillee hheellpp..cc,, aass pprroommiisseedd"" ddaavvee__ttaayylloorr << hheellpp..cc

          EEllmm also has an option to specify that a certain file be used  as
          the  initial  text of the message.  This is make it easier to use
          EEllmm with other programs that interface with a mailer.   Use  ``-i
          _f_i_l_e''  as an option to EEllmm in `send only' mode.  For example, to
          specify to _r_n to use EEllmm as the mailer, define the  following  in
          RRNNIINNIITT:
              --EEMMAAIILLPPOOSSTTEERR==""eellmm --ii %%hh --ss \\""RRee:: %%SS\\"" %%tt""
          See  the  man  page  for _r_n(1) or the newsreader you use for more
          specific information.



          The EEllmm mail system is really much more than a single program for
          reading  and writing mail.  It's a unified environment for intel-
          ligently dealing with electronic  correspondence.   As  a  conse-
          quence, it contains a number of other programs to aid in the easy
          processing of `email', including the following;

          An answering-machine transcription program.  Please see the  man-
          ual entry for more information on how to use this program.

          This  program,  in  conjunction  with the ``arepdaemon'', enables
          users to automatically reply to incoming mail  when  they're  not
          directly available.

          A script for checking aliases simply.

          A  script  that  lists  the  number  of messages in the specified
          folder.  Suitable for login scripts and such.

          This program monitors a mailbox or set of mailboxes and can  out-
          put  notification  of  new  mail  in one of two possible formats;
          either:

          >>>> NNeeww mmaaiill ffrroomm JJiimmmmyy CCaarrtteerr -- UUrrggeenntt mmaatttteerrss ooff ssttaattee
          >>>> NNeeww mmaaiill ffrroomm jjooee@@uuccbbvvaaxx..aarrppaa -- DDiidd II hheeaarr ssoommeeoonnee ssaayy PPAARRTTYY????

          if running as _n_e_w_m_a_i_l or:

          JJiimmmmyy CCaarrtteerr ---- UUrrggeenntt mmaatttteerrss ooff ssttaattee
          jjooee@@uuccbbvvaaxx..aarrppaa ---- DDiidd II hheeaarr ssoommeeoonnee ssaayy PPAARRTTYY????




                                                                          9





          ()                                                             ()


          if  running as _w_n_e_w_m_a_i_l.  BSD Users will find this is a far supe-
          rior _b_i_f_f program.

          This is the same program as newmail, but has  different  defaults
          if invoked this way.

          This handy little program can be used in two ways.  First off, it
          can be used to easily read a specific  message  in  the  incoming
          mailbox,  specified  by ordinal number, by a string that the mes-
          sage contains, by the metacharacter `$' which represents the last
          message  in  the folder, or `*' which matches all the messages in
          the folder.

          For example;

          $ rreeaaddmmssgg 44 55 99 || llpprr

          would generate a  printout,  _s_a_n_s  superfluous  headers,  of  the
          fourth, fifth and ninth messages in your mailbox.

          $ rreeaaddmmssgg CCaarrtteerr || ppaaggee

          would be a fast way to read what `ole Jimmy has to say...  and

          $ rreeaaddmmssgg --hh hheeaarr ssoommeeoonnee ssaayy

          would  list,  including all the message headers, the message con-
          taining the string ``hear someone say''.

          Similar to the Berkeley  _f_r_o_m  command,  this  will  give  you  a
          ``table  of contents'' or a summary of either the current mailbox
          or a mailbox of your choice.   It's useful to see  what  mail  is
          pending,  or  what's in a mailbox.  If used with the `-n' option,
          it will number each message in a way compatible  with  the  argu-
          ments _r_e_a_d_m_s_g expects to get, too!

          This  is  used to install new user/group aliases.  Please see _T_h_e
          _E_l_m _A_l_i_a_s _U_s_e_r_s _G_u_i_d_e for further information on this!

          Sometimes you want to have a batchmailing system  that  works  as
          quickly  as  possible,  not  bothering with aliases or any of the
          other ``deluxe'' features of EEllmm.  An example of this would be if
          you  have  a large mailing list for a newsletter, say.  This com-
          mand, _f_a_s_t_m_a_i_l, is designed just for that purpose.  It avoids the
          lengthy startup time of EEllmm while still generating valid _R_F_C_-_8_2_25
          mail.  5. If you don't know what RFC-822 is,  don't  worry  about
          it!   Please  see  the  manual entry for more information on this
          command.


          This mailer has been  evolving  over  the  past  few  years  with
          invaluable comments on the interface and general mail issues from
          the following people; Jim Davis, Steve Wolf (or should  that  say
          Steve!! Wolf!!!! perhaps?), Larry Fenske, Rob Sartin, John Dilley



                                                                         10





          ()                                                             ()


          and Carl Dierschow.

          For the Berkeley implementation, lots of help came from both John
          Lebovitz and Ken Stone.

          For  the  Amdahl/UTS implementation, thanks to Scott McGregor and
          Stan Isaacs.

          For the Sun problems, Dave England in Lancaster (UK)  turned  out
          to be ``bloody useful'', as he would no doubt say.

          The  Pyramid  version  is  due to the work of Steve Malone of the
          University of Washington.

          A number of other  people  have  been  amazingly  disciplined  at
          reporting  problems  and  (usually, much to my relief) indicating
          the fixes needed, especially Guy Hillyer, Bruce Townsend and Eric
          Negaard.

          There  have been many, many others, too numerous to mention, that
          have inspired me with questions like "Why can't Elm..."  or  "Why
          does  it  ..."  or  "Can  we  make  it..."  too.  A loud round of
          applause and an enthusiastic THANK YOU to you all!!

          Also helpful was the ability to have my `own' machine to close up
          the many many iterative loops that this software has gone through
          -- since being on a big multi-user machine tends to slow it  down
          to  a  standstill...   For that, I thank Hewlett-Packard Colorado
          Networks Division for their initial support, and now HP Laborato-
          ries for the wonderful working environment that I have here (more
          than any one person is safe having, I suspect).

          Mailers that have influenced the  design  and  implementation  of
          EEllmm, for better or worse, include the following;

          The most basic of mailers, this one was simply the example of how
          _n_o_t to force the user to interact with a program.

          A surprisingly sophisticated mailer, especially the version  with
          4.3  BSD,  _B_e_r_k_e_l_e_y _M_a_i_l still suffers from the tendency to force
          the user to know too much about the  system,  and  also  lacks  a
          friendly, non-cryptic interface for the large subset of the popu-
          lation  that  use  Unix  but  aren't  interested  in  becoming  a
          ``hacker''.

          This  is  another nifty mailer.  The main difference between this
          and the other mailers about is that it is a discrete set of  pro-
          grams rather than a single unified interface.  This is quite use-
          ful for those people that receive _l_o_t_s of mail and are willing to
          spend  some  time  learning the intricacies of the program.  It's
          quite powerful, but again, misses some of the basic friendly fea-
          tures the majority of users are interested in.

          A sort of mutated cross between _M_H and _B_e_r_k_e_l_e_y _M_a_i_l, it was this



                                                                         11





          ()                                                             ()


          program that convinced me to implement the _L_i_m_i_t functions.

          (a part of the HP AI  Workstation  Software  Environment).   This
          program  hints  at  the power that mailers could be given to help
          deal with mail in a quick and intelligent fashion.  Most of  what
          it  can  do,  and  a  lot more, are therefore part of EEllmm.  Indu-
          bitably.  And quite faster too!

          Part of the AT&T Mail package, a single glance at this  interface
          convinced  me that a PC interface, with almost half of the screen
          taken up by a silly function key mapping, is most  certainly  _n_o_t
          the way to do things!!  On the other hand, it also shows that the
          _F_o_r_m_s mode can be quite nicely integrated into a  more  sophisti-
          cated mailer.

          A  nickel  addition to the _/_b_i_n_/_m_a_i_l program to add some rudimen-
          tary screen interface stuff, this nonetheless interesting  mailer
          is part of the AT&T Toolchest.

          A program only available within Xerox PARC, this was an interest-
          ing early attempt at a graphics based full-screen  mail  program.
          The one, perhaps trivial, part of the interface I really like was
          the fact that it would _c_r_o_s_s _o_u_t a message that  was  marked  for
          deletion.   One  day when we get real graphics and the ability to
          use them indicated in a facility (not too) like _t_e_r_m_c_a_p,  perhaps
          EEllmm will do this too!

          Part  of  the  Sun distribution package, this program is a really
          nice example of what can be done by putting a smart shell on  top
          of  a dumb program -- it uses _/_b_i_n_/_m_a_i_l for all the `dirty work'.
          Other than that, it's not a particularly interesting interface or
          mailer, and it certainly doesn't add much functionality!

          What  can I say?  This isn't even a real mailer, but is just what
          I dream of as an interface to mail in the future.  A program that
          works  sort  of like HHAALL did in _2_0_0_1_: _A _S_p_a_c_e _O_d_y_s_s_e_y -- where it
          interrupts me as appropriate for important mail, and  can  answer
          inane  and  other  queries  itself  according to what I teach it.
          Maybe EEllmm, by some sort of groupmind metamorphosis,  will  change
          into that someday.  Maybe not.  Maybe no-one bothers to read this
          far into the document!!

          Finally, it's also been a very useful  experience  overall,  con-
          firming  my  beliefs that iterative software design and keeping a
          close watch on users (not to mention an open mind  and  mailbox!)
          improves  a product manyfold.  Comments, feedback and bug reports
          (and fixes!) are, of course, always welcome!


          As coordinator of the Elm Development Group, I must  add  to  the
          credits.   This  group  of volunteers has taken the Elm code from
          Dave Taylor and added features, made it  more  robust,  and  more
          portable.




                                                                         12





          ()                                                             ()


          For  getting  the  Usenet  Elm  group  going, for without which I
          wouldn't be writing this, thanks to Greg Hackney at  Southwestern
          Bell Telephone Co.

          For  the  Configuration  system  and  its newer Dist 2.0 version,
          thanks are due to Larry Wall of JPL-NASA.

          For his over two hundred sets of changes to version 2.2, Elm owes
          a lot to Rob Bernardo who was at Pacbell at that time.

          The ability to run Elm at all on Intel 286 machines owes a lot to
          the insistent nudging of the coordinator by Chip Salzenberg, Chip
          Rosenthal, and Tim Evans.

          For  getting  us the rights to use the news macros and converting
          all the documentation over to those macros, thanks to Mike Brown.

          For  pushing  us  into  the 90s and forcing the issues of NLS and
          foreign language support, I thank Jan Saell of  Administration  &
          Systemkonsult AB along with Larry Philps of SCO Canada.
          I'd  also like to thank the many current and prior members of the
          Elm development and testing groups.  The list varies from time to
          time as people come and go.  Also, to all the Elm users out there
          that send in patches.  The group can use all the  extra  help  it
          gets.   As  a  PostScript,  if you wish to join the group, all it
          takes is some time to work on things, and to ask.

          Syd Weinstein, Elm Coordinator.





























                                                                         13


