


          ()                                                             ()














                               EEllmm CCoonnffiigguurraattiioonn GGuuiiddee




                  _H_o_w _t_o _i_n_s_t_a_l_l _a_n_d _c_u_s_t_o_m_i_z_e _t_h_e _E_l_m _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

















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







                                                                          1





          ()                                                             ()



























































                                                                          1





          ()                                                             ()







                               EEllmm CCoonnffiigguurraattiioonn 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



          This  document is intended as a supplement to the _E_l_m _U_s_e_r_s _G_u_i_d_e
          and _E_l_m _R_e_f_e_r_e_n_c_e _G_u_i_d_e and should be of interest mainly to  peo-
          ple at a site either installing or maintaining the source code to
          the EEllmm mail system, or modifying the code.

          It is _r_e_q_u_i_r_e_d that installation be done by using  the  _C_o_n_f_i_g_u_r_e
          script  supplied  with  the system.  Please see the file _I_n_s_t_r_u_c_t
          for further information on running _C_o_n_f_i_g_u_r_e.

          The remainder of this document will discuss the various questions
          asked  by  the  _C_o_n_f_i_g_u_r_e  script  and  the options available via
          direct editing of various files  and  parameters.   As  indicated
          above,  almost  all of the sites that install EEllmm should find the
          _C_o_n_f_i_g_u_r_e script more than  sufficient.   _C_o_n_f_i_g_u_r_e  is  a  shell
          script that will automatically determine the type of system it is
          running on and tune the parameters of Elm to fit that system  and
          its environment.  Where the installer has a choice, it asks ques-
          tions of the installer.  _C_o_n_f_i_g_u_r_e provides its own  instructions
          when  run,  so  they  are  not  repeated here.  However, when the
          installer is presented with a choice, this next section  explains
          some  of the options available.  Not all the questions or options
          to those questions are explained.



                                                                          1





          ()                                                             ()


          UUssee ffccnnttll ssttyyllee lloocckkiinngg??
          UUssee fflloocckk ssttyyllee lloocckkiinngg??
          UUssee ddoottlloocckk ((..lloocckk)) ssttyyllee lloocckkiinngg??

          EEllmm, like all Mail User Agents, has times when it needs exclusive
          access  to the mail spool file.  There are three methods of lock-
          ing the mail spool file: .lock, fcntl() and  flock().   .lock  is
          the  original  method, and is used by mail MUA and Mail Transport
          Agents (MTAs).  Whenever possible  .lock  should  be  enabled  to
          assure backwards compatibility with older MUAs and MTAs.

          BSD  systems  introduced flock() style locking.  It uses a system
          call to lock the file on the local node.  System V  later  intro-
          duced  fcntl()  style  locking, which can also use a protocol for
          remote locking across the network.  Where both styles are  avail-
          able,  it is advisable to use both, unless you are sure that only
          one is in use at your site.

          Under many System V Release 4 systems, they  both  use  the  same
          underlying  system  call.   (Flock()  is  translated into fcntl()
          style locking) so for that version of UNIX, flock() is not needed
          and fcntl() style alone can be used.  EEnnaabbllee ccaalleennddaarr ffeeaattuurree??

          EEllmm has a feature to take specially marked lines within mail mes-
          sages and add them to a file for use by the system calendar  pro-
          gram.   The  command to do this extraction needs to be enabled to
          work.  There is also a follow on question regarding the  name  of
          the calendar file: DDeeffaauulltt ccaalleennddaarr ffiillee??

          which is usually calendar on most systems.  This file will reside
          in the user's home directory, not  their  .elm  directory.   DDooeess
          yyoouurr //eettcc//ppaasssswwdd ffiillee kkeeeepp ffuullll nnaammeess iinn BBeerrkkeelleeyy//VV77 ffoorrmmaatt ((nnaammee
          ffiirrsstt tthhiinngg aafftteerr ''::'' iinn GGCCOOSS ffiieelldd))??

          Elm uses the full name from the password file if it is available.
          There  are  two major ways this name is stored.  Berkeley/V7 sys-
          tems place the name as the entire GCOS field string, that  is  it
          starts  directly  after  the  ':'  that delimits the fields.  USG
          Group, or AT&T) systems put the user's name  after  a  department
          number and separate it from that number by a '-'.  The end of the
          user's full name in  these  systems  is  a  '('.   Look  at  your
          /etc/password  file  and if either version applies, answer yes to
          that version.  If neither applies, answer no.  EEllmm can still  get
          the  user's  name  from the ".fullname" file in their home direc-
          tory.  EEvveerryy nnooww aanndd tthheenn ssoommeeoonnee hhaass aa ((ggeetthhoossttnnaammee(()),,  uunnaammee(())))
          tthhaatt  lliieess aabboouutt tthhee hhoossttnnaammee bbuutt ccaann''tt bbee ffiixxeedd ffoorr ppoolliittiiccaall oorr
          eeccoonnoommiicc rreeaassoonnss..  WWoouulldd  yyoouu  lliikkee  ttoo  pprreetteenndd  ((ggeetthhoossttnnaammee(()),,
          uunnaammee(()))) iissnn''tt tthheerree aanndd mmaayybbee ccoommppiillee iinn tthhee hhoossttnnaammee??

          Elm  needs  to  know  the correct name of the host on which it is
          executing to be able to create the proper headers  for  the  out-
          bound  mail.  Some systems use one name for uucp and another name
          for the system and others just don't  reply  to  the  subroutines
          with  the  proper  name.   In  this  case it will be necessary to



                                                                          2





          ()                                                             ()


          compile in the name.  In all  other  cases  this  should  not  be
          needed.  It is provided just in case there is a problem with your
          system.  HHoonnoorrss CCoonntteenntt--LLeennggtthh:: hheeaaddeerr??

          Starting with System V Release 4,  many  of  the  Mail  Transport
          Agents  are  binary  transparent.  This allows for sending binary
          messages, such as Voice or graphics.  In doing so, they no longer
          can tolerate changes in the message content by the mailers to aid
          in determining the start of the  next  message.   To  solve  this
          problem  the Content-Length: header was added.  Elm generates the
          Content-Length: header, but to make full use of  it,  Elm  should
          also  not escape such sequences as 'From ' at the start of a line
          of the message.  If your Mail Transport Agent (mailer) does honor
          the  Content-Length: header for determining the start of the next
          message, answer this question YES.  Along the same lines, but now
          obsolete  and  being phased out, is a problem where a Mail Trans-
          port Agent will think a message is terminated by  a  single  lone
          period on a line.  Sendmail has an option to turn off this behav-
          ior and this option is set by  default  in  Configure.   If  your
          mailer  cannot  turn off this option, add a line to sysdefs.SH to
          define the symbol NEED_LONE_PERIOD_ESCAPE.  This symbol will turn
          a line with a lone period into a period and then a blank to avoid
          this problem.  This symbol is  ignored  if  the  honors  Content-
          Length:  is  answered  YES.  DDooeess yyoouurr mmaaiilleerr uunnddeerrssttaanndd IINNTTEERRNNEETT
          aaddddrreesssseess??

          Elm will work with systems that can process the `@' character  of
          INTERNET  format  addresses  or  with  the  `!'  format  of  uucp
          addresses.  If your mail delivery agent understands the `@'  for-
          mat  addresses, they should be used and this question is answered
          yes.  If when you send mail with the `@' format  addresses  (such
          as elm@dsi.com), they bounce, then answer this question no.  AAmm II
          ggooiinngg ttoo bbee rruunnnniinngg aass aa sseettggiidd pprrooggrraamm??

          On USG type systems and many other types, access to the mailboxes
          and the mailbox directory is via the group permissions.  The mail
          user agents, such as Elm, need write access into  this  directory
          to be able to move the mailbox around due to internal editing and
          to create lock files.  If the permissions on your mailbox  direc-
          tory are drwxrwxr-x, then Elm needs to be a setgid program.  WWhhaatt
          iiss tthhee ddeeffaauulltt eeddiittoorr oonn yyoouurr ssyysstteemm??

          If no editor is specified in the user's _._e_l_m_/_e_l_m_r_c _f_i_l_e_, this  is
          which editor to use.  The editor is used to compose outbound mail
          messages.  WWhhaatt ppaaggeerr ddoo yyoouu pprreeffeerr ttoo uussee wwiitthh EEllmm??

          This is the standard pager to use for reading messages.   Besides
          the usual system pagers, two EEllmm specific internal options exist:
          builtin and builtin+.  The built-in pager is  faster  to  execute
          but  much  less  flexible than the system provided pagers.  The +
          version just clears the page before  displaying  the  next  page.
          Otherwise  the two versions are identical.  The following parame-
          ters rarely need to be changed, but  are  provided  if  you  need
          them.   _C_o_n_f_i_g_u_r_e  does  not  prompt for their values.  To change



                                                                          3





          ()                                                             ()


          them, edit the _h_d_r_s_/_s_y_s_d_e_f_s_._h file directly after running Config-
          ure.   The maximum number of headers that can be specified in the
          weedout list of the _._e_l_m_/_e_l_m_r_c  file.   A  suggested  alternative
          approach  if  this number is too small is to specify initial sub-
          strings in the file rather than increasing the number.  For exam-
          ple, say you want to weedout the headers ``Latitude:'' and ``Lat-
          itudinal-Coords:'', you could  simply  specify  ``Latitud''"  and
          match them both!  Furthermore you could also specify headers like
          ``X-'' and remove all the user defined headers!  When replying to
          a  G)roup,  this is the maximum number of hops that a message can
          have taken.  This is used to try to optimize the  return  address
          (remove  cyclic loops and so on) and regular use should show that
          the default of 35 is plenty more than you'll ever need!  This  is
          the  source  text  file for the system level aliases.  See either
          the _n_e_w_a_l_i_a_s_(_1_L_) man page, or _T_h_e _E_l_m _A_l_i_a_s  _S_y_s_t_e_m  _U_s_e_r_s  _G_u_i_d_e
          for  further  details.  This is the file that contains the hashed
          version of the system  aliases.   This  is  the  other  file  the
          _n_e_w_a_l_i_a_s  command  installs in the system alias area and contains
          the actual addresses for each of the  aliases  contained  in  the
          hashed data file.  This is where the individual user's alias text
          file lives.  Where the hashed aliases are stored.  and where  the
          alias  address  data itself is kept.  The name of the file to put
          in the user's home directory if they choose to use the `-d' debug
          option.   The  name of the file to save the previous debug output
          as (this feature was added to ensure that users wanting  to  mail
          bug reports wouldn't automatically overwrite the debug log of the
          session in question).  Directory for lock files for XENIX.   Tem-
          porary file for sending outbound messages.  A place to store tem-
          porary forms (for Forms Mode) while  answering  them.   Place  to
          keep  copy  of  incoming  mailbox  to avoid collisions with newer
          mail.  File to use when creating a printout of a  message.   File
          to use when editing the mailbox file on XENIX.  Where to redirect
          output of the _u_u_n_a_m_e_(_1_M_) command.  File to  compare  date  to  to
          determine  if a given message is New since the last time the mail
          was read or not.  File to use when communicating with the _r_e_a_d_m_s_g
          program  (see  that  program  for more information).  Defines the
          flags to hand to _s_e_n_d_m_a_i_l if and when the program chooses to  use
          it.   Defines  the  flags  to  hand to _s_e_n_d_m_a_i_l in verbose voyeur
          mode.  If you don't have _s_e_n_d_m_a_i_l, this is the mailer that'll  be
          used.   The  help  file name prefix.  The file containing textual
          messages associated with each EEllmm variable setting in the  user's
          _`_`_._e_l_m_/_e_l_m_r_c_'_' file.  This is used when the user chooses to auto-
          save the options from within the main program.  The name  of  the
          automatic  control  file  within  the  _._e_l_m  directory (currently
          _e_l_m_r_c).  When a new elmrc file is saved,  the  old  one  is  also
          saved,  being renamed to whatever this identifier is set to.  The
          name of the global elmrc file (default is _$_l_i_b_/_e_l_m_._r_c).  This  is
          where the system administrator puts global default values for any
          parameters located in the  _._e_l_m_/_e_l_m_r_c  file.   The  name  of  the
          optional  file  that  users may have that will be included in the
          headers of each outbound message.  If the  user  decides  not  to
          send a message it will instead be saved to this filename in their
          home directory.  In the strange case  when  the  mailer  suddenly
          finds  all  the  directories it uses shut off (like _/_u_s_r_/_m_a_i_l and



                                                                          4





          ()                                                             ()


          _/_t_m_p) then it'll put the current mailbox into this  file  in  the
          user's  home  directory.   How  to install new aliases (note: you
          MUST have the '-q'  flag!).   What  the  _r_e_a_d_m_s_g_(_1_L_)  program  is
          installed  as.  No global default file is provided as part of the
          installation of EEllmm.  If you wish to override any default parame-
          ters  for  all  users,  create  a  file  as  defined in the "sys-
          tem_rc_file" above.  An easy way to create it is to copy a  saved
          _._e_l_m_/_e_l_m_r_c  and  edit  it to remove all user-specific parameters.
          Of particular interest are three additional  parameters  you  may
          set:   "hostdomain,"  "hostfullname,"  and  "hostname."  See  the
          "String Variables" section in the second chapter of the _E_l_m  _R_e_f_-
          _e_r_e_n_c_e  _G_u_i_d_e  for  details  on  these  variables.  The _C_o_n_f_i_g_u_r_e
          script has run successfully tens  of  thousands  of  times.   But
          maybe  your  system  is the one in ten thousand that will confuse
          it.  For example, _C_o_n_f_i_g_u_r_e assumes that if  your  system  has  a
          feature  it would like, then it should be used.  If vendors never
          made mistakes, then that might be a good assumption.  In reality,
          _C_o_n_f_i_g_u_r_e might want to use a feature you'd prefer it didn't.

          When _C_o_n_f_i_g_u_r_e completes its examination of your system, it gives
          you a final chance to make changes.  When _C_o_n_f_i_g_u_r_e asks  IIff  yyoouu
          nneeeedd ttoo eeddiitt ccoonnffiigg..sshh,, ddoo iitt aass aa sshheellll eessccaappee hheerree::

          you may briefly jump out of _C_o_n_f_i_g_u_r_e to make changes.  For exam-
          ple, if ``vi'' is your preferred editor, type ``!vi  config.sh''.

          Unfortunately,  _C_o_n_f_i_g_u_r_e  makes  the same mistakes every time it
          runs.  This means that if you ever apply updates  or  changes  to
          the  EEllmm  system  and  rerun _C_o_n_f_i_g_u_r_e, you will have to manually
          make the same configuration changes.  Or more likely, you'll for-
          get that the changes are required.

          The  solution  to this problem is to create a _c_o_n_f_i_g_._o_v_e_r file in
          the EEllmm base directory.  This file may contain any valid _s_h  com-
          mands,  and  is  loaded  by _C_o_n_f_i_g_u_r_e immediately before the _c_o_n_-
          _f_i_g_._s_h file is created.  For  example,  supposed  that  _C_o_n_f_i_g_u_r_e
          creates a _c_o_n_f_i_g_._s_h file with the definition dd__ffeeaattuurree==ddeeffiinnee

          but instead you want it to say dd__ffeeaattuurree==uunnddeeff

          All  you  need  to  do  is create a _c_o_n_f_i_g_._o_v_e_r file and put that
          final line in it.















                                                                          5


