home *** CD-ROM | disk | FTP | other *** search
/ vsiftp.vmssoftware.com / VSIPUBLIC@vsiftp.vmssoftware.com.tar / FREEWARE / FREEWARE40.ZIP / pine / doc / tech_notes.txt < prev   
Encoding:
Text File  |  1994-04-06  |  176.0 KB  |  4,724 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.                     Pine Technical Notes
  9.                 Version 3.85, September 1993
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.           Pine is a trademark of the University of  Washing-
  70.           ton
  71.  
  72.           Copyright 1989-1993  University of Washington
  73.  
  74.           PC-Pine and  UNIX  Pine  are  still  under  active
  75.           development.   The  core functionality in Pine has
  76.           been in testing for many  months,  but  there  are
  77.           also     significant     new     features    (e.g.
  78.           multiple/remote folder collections) which have not
  79.           yet  been  extensively tested.  Therefore we still
  80.           consider this an experimental version.   New  ver-
  81.           sions  will  be  released  as  bug  fixes  and new
  82.           features become available.
  83.  
  84.           Permission to use, copy,  modify,  and  distribute
  85.           this  software  and its documentation for any pur-
  86.           pose and without fee to the University of Washing-
  87.           ton  is  hereby  granted,  provided that the above
  88.           copyright notice appears in all  copies  and  that
  89.           both  the  above copyright notice and this permis-
  90.           sion notice appear  in  supporting  documentation,
  91.           and  that the name of the University of Washington
  92.           not be used in advertising or publicity pertaining
  93.           to  distribution of the software without specific,
  94.           written prior permission.  This software  is  made
  95.           available as is.
  96.  
  97.           THE UNIVERSITY OF WASHINGTON DISCLAIMS ALL WARRAN-
  98.           TIES,  EXPRESS  OR  IMPLIED,  WITH  REGARD TO THIS
  99.           SOFTWARE, INCLUDING WITHOUT LIMITATION ALL IMPLIED
  100.           WARRANTIES  OF  MERCHANTABILITY  AND FITNESS FOR A
  101.           PARTICULAR PURPOSE, AND  IN  NO  EVENT  SHALL  THE
  102.           UNIVERSITY  OF  WASHINGTON  BE LIABLE FOR ANY SPE-
  103.           CIAL, INDIRECT OR  CONSEQUENTIAL  DAMAGES  OR  ANY
  104.           DAMAGES  WHATSOEVER  RESULTING  FROM  LOSS OF USE,
  105.           DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
  106.           TORT  (INCLUDING  NEGLIGENCE) OR STRICT LIABILITY,
  107.           ARISING OUT OF OR IN CONNECTION WITH  THE  USE  OR
  108.           PERFORMANCE OF THIS SOFTWARE.
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.                   - Pine Technical Notes -
  130.  
  131.  
  132.                        _S_e_c_t_i_o_n _1 - _I_n_t_r_o_d_u_c_t_i_o_n
  133.  
  134.  
  135.  
  136.           _D_e_s_i_g_n _G_o_a_l_s
  137.  
  138.           Pine was originally conceived in 1989 as a simple,
  139.           easy-to-use mailer for administrative staff at the
  140.           University of Washington in Seattle. The goal  was
  141.           to  provide  a  mailer  that naive users could use
  142.           without fear of making  mistakes.   We  wanted  to
  143.           cater  to  users who were less interested in using
  144.           electronic mail than in doing  their  jobs;  users
  145.           who  perhaps  had  some computer anxiety.  We felt
  146.           the way to do this was  to  build  a  system  that
  147.           didn't do surprising things the user didn't under-
  148.           stand, a mailer that had limited, well-thought-out
  149.           functionality.   At  the  time,  there was no such
  150.           UNIX mailer commercially or freely available.  Elm
  151.           seemed  closest to the goal, so we started modify-
  152.           ing it.
  153.  
  154.           One of the greatest problems with most mailers  on
  155.           UNIX  systems  is  the  editor.  One  can normally
  156.           choose between _e_m_a_c_s and _v_i. We experimented  with
  157.           some  versions  of  emacs  and settled on a hacked
  158.           version of  micro  emacs.   Eventually  it  became
  159.           heavily  modified  and tightly integrated with the
  160.           rest of Pine.  One of the main features of  having
  161.           a  tightly coupled editor is that it can guide the
  162.           user through editing the header  of  the  message,
  163.           and  Pine takes great care to do this. A very sim-
  164.           ple and efficient interface to the UNIX spell com-
  165.           mand  was also added. The emacs-style key bindings
  166.           were retained, though most of the other  wild  and
  167.           wonderful  emacs functions were not. The Pine com-
  168.           position editor is also available as a very simple
  169.           stand alone editor named "pico".
  170.  
  171.           Throughout Pine development, we have had to strike
  172.           a  balance  between  the  need to include features
  173.           which advanced users require and the need to  keep
  174.           things simple for beginning users.  To strike this
  175.           balance, we have tried to adhere to  these  design
  176.           principles:
  177.  
  178.  
  179.                - The underlying model presented to the  user
  180.                has  to be simple and clear.  Underlying sys-
  181.                tem operation is hidden as much as possible.
  182.  
  183.                - It's better to have a few easily understood
  184.                commands  that  can  be repeated than to have
  185.  
  186.  
  187.                            - 3 -
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.                   - Pine Technical Notes -
  196.  
  197.  
  198.                some more sophisticated command that will  do
  199.                the job all at once.
  200.  
  201.                - Whenever the user has to select a  command,
  202.                file  name,  address, etc., the user is given
  203.                or can get a menu  from  which  to  make  the
  204.                selection.  Menus are complete, small, organ-
  205.                ized and well thought out.
  206.  
  207.                - Pine provides immediate  feedback  for  the
  208.                user with each operation.
  209.  
  210.                - Pine must be very tolerant of user  errors.
  211.                Any  time  a  user  is  about  to  perform an
  212.                irreversible act  (send  a  message,  expunge
  213.                messages  from  a folder), Pine asks for con-
  214.                firmation.
  215.  
  216.                - Users can learn by exploration without fear
  217.                of  doing  anything wrong.  This is an impor-
  218.                tant feature so  the  user  can  get  started
  219.                quickly  without  reading  any manuals and so
  220.                fewer manuals are required.
  221.  
  222.                - The size  of  Pine  should  be  kept  to  a
  223.                minimum  so  users  don't  feel "lost" in all
  224.                these commands and concepts.
  225.  
  226.  
  227.           Just as there were goals relating to the look  and
  228.           feel  of  Pine, there were equally important goals
  229.           having to do with Pine's structure-the things that
  230.           users  never see but still rely on every time they
  231.           use Pine.  While Pine can be used as a stand-alone
  232.           mail  user  agent,  one of its strongest assets is
  233.           its use of the Interactive  Mail  Access  Protocol
  234.           (IMAP)  for  accessing  remote  email folders.  In
  235.           addition, Pine was one of the  first  programs  to
  236.           support  the Multipurpose Internet Mail Extensions
  237.           (MIME) specification.  With MIME, Pine  users  can
  238.           reliably  send any binary file to any other person
  239.           on the Internet who uses a  MIME  compliant  email
  240.           program.
  241.  
  242.           The choices to  use  IMAP  and  MIME  reflect  the
  243.           importance  of  interoperability,  standardization
  244.           and robustness in Pine.  As  you  work  with  Pine
  245.           more,  you  will  see other features which reflect
  246.           the same values. For example, Pine enforces strict
  247.           compliance  with RFC-822, implements a strong mail
  248.           folder locking mechanism and  verifies  a  process
  249.           before  overwriting  any  files (e.g. addressbook,
  250.           expunging messages).
  251.  
  252.  
  253.                            - 4 -
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.                   - Pine Technical Notes -
  262.  
  263.  
  264.           _P_i_n_e _C_o_m_p_o_n_e_n_t_s
  265.  
  266.           If you have picked up the Pine distribution,  then
  267.           you  already  know  that  Pine comes in a few dif-
  268.           ferent pieces.  They are:
  269.  
  270.  
  271.           _P_i_n_e This main code from which the Pine program is
  272.                compiled.
  273.  
  274.  
  275.           _P_i_c_o Pico is the name for the Pine composer.   The
  276.                Pico  code  is  used  in two ways:  (1) it is
  277.                compiled on its own to be a stand-alone  edi-
  278.                tor  or (2) compiled as a library for Pine to
  279.                support composition of messages within  Pine.
  280.                Pico  is  Pine's internal editor invoked when
  281.                users need to fill in header  lines  or  type
  282.                the text of an email message.
  283.  
  284.  
  285.           _I_m_a_p An  API  for  IMAP.   Includes  the  C-Client
  286.                library, which is compiled into Pine, and the
  287.                IMAP server IMAPd.  C-Client  implements  the
  288.                IMAP  protocol and also negotiates all access
  289.                between Pine and the mail folders it operates
  290.                on.  The C-Client routines are used for email
  291.                folder parsing  and  interpreting  MIME  mes-
  292.                sages.  IMAPd  is a separate server that han-
  293.                dles IMAP connections from any IMAP compliant
  294.                email  program.   When Pine accesses a remote
  295.                mailbox, the Pine program is the IMAP  client
  296.                and the IMAPd program is the IMAP server.
  297.  
  298.  
  299.  
  300.  
  301.  
  302.  
  303.  
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.                            - 5 -
  318.  
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325.                   - Pine Technical Notes -
  326.  
  327.  
  328.                       _S_e_c_t_i_o_n _2 - _B_a_c_k_g_r_o_u_n_d _D_e_t_a_i_l_s
  329.  
  330.  
  331.  
  332.  
  333.           _D_o_m_a_i_n _N_a_m_e_s
  334.  
  335.           Domain names are used to uniquely name  each  host
  336.           on  the  Internet.   A domain name has a number of
  337.           parts separated by periods.  Each label represents
  338.           a  level  in  the hierarchy.  An example of a name
  339.           is:
  340.  
  341.                        _o_l_i_v_e._c_a_c._w_a_s_h_i_n_g_t_o_n._e_d_u
  342.  
  343.           In this domain name the top-level  label  is  _e_d_u,
  344.           indicating  it  is  at an educational institution,
  345.           the second-level label is  _w_a_s_h_i_n_g_t_o_n,  indicating
  346.           the  University  of Washington.  _c_a_c is a specific
  347.           department within the  University  of  Washington,
  348.           and  _o_l_i_v_e  is the host name.  The top-level names
  349.           are assigned by Internet organizations, and  other
  350.           names  are assigned at the appropriate level.  The
  351.           Domain Name Service, DNS, is the distributed data-
  352.           base used to look up these names.
  353.  
  354.           Pine relies on domain names in multiple places.  A
  355.           domain  name  is embedded into the message-id line
  356.           generated for each piece of email.  A domain  name
  357.           is  needed to contact an IMAP server to get access
  358.           to remote INBOXes and folders.  Most  importantly,
  359.           domain  names  are  needed  to construct the From:
  360.           line of your outgoing messages so that  people  on
  361.           the  Internet  will  be  able to get email back to
  362.           you.
  363.  
  364.           On UNIX systems, you can set the  domain  via  the
  365.           _u_s_e_r-_d_o_m_a_i_n  variable  in  the  Pine configuration
  366.           file, or rely on the file /_e_t_c/_h_o_s_t_s which usually
  367.           sets  the  name of the local host.  While Pine can
  368.           often deliver email without the domain name  being
  369.           properly  configured,  it is best to have this set
  370.           right. Problems can usually be solved by adjusting
  371.           the  system's  entry  in the /_e_t_c/_h_o_s_t_s file.  The
  372.           fully-qualified name should be listed  before  any
  373.           abbreviations.
  374.  
  375.               128.95.112.99   olive.cac.washington.edu   olive
  376.  
  377.                           is preferred over
  378.  
  379.               128.95.112.99   olive   olive.cac.washington.edu
  380.  
  381.                            - 6 -
  382.  
  383.  
  384.  
  385.  
  386.  
  387.  
  388.  
  389.                   - Pine Technical Notes -
  390.  
  391.  
  392.           On PCs, the task of configuring the domain name is
  393.           a  bit  different.   Often  times, PCs do not have
  394.           domain names-they have IP addresses.  IP addresses
  395.           are the numbers which uniquely identify a computer
  396.           on the network.  The way  you  configure  your  IP
  397.           address  depends  on the networking software which
  398.           you use on the PC.  You can refer to the  documen-
  399.           tation which came with your networking software or
  400.           see the PC specific installation  notes  for  help
  401.           configuring  the  IP  address  with  your  network
  402.           software.
  403.  
  404.           With PCs, it is vital that users set the  variable
  405.           _u_s_e_r-_d_o_m_a_i_n   in   the   Pine  configuration  file
  406.           (_P_I_N_E_R_C).
  407.  
  408.           Details on configuring Pine  with  correct  domain
  409.           names  can be found in the Domain Settings section
  410.           of this document.
  411.  
  412.  
  413.           _R_F_C-_8_2_2 _C_o_m_p_l_i_a_n_c_e
  414.  
  415.           Pine tries to adhere  to  RFC-822  a  little  more
  416.           strongly  than  some  other  mailers  and uses the
  417.           "full  name  <address>"  format  rather  than  the
  418.           "address  (full  name)" format.  The intent of the
  419.           standard is that parentheses should  only  be  for
  420.           comments.   Pine  displays and generates the newer
  421.           format, but will parse the old format and  attempt
  422.           to turn it into the new one.
  423.  
  424.           As  far  as  outgoing  email  is  concerned,  Pine
  425.           fully-qualifies addresses whenever possible.  They
  426.           are even displayed in fully-qualified form on  the
  427.           terminal  as  the  user  composes a message.  This
  428.           makes addresses more clear and gives a hint to the
  429.           user  that  the  network  extends beyond the local
  430.           organization.   Pine  implements   fully-qualified
  431.           domain names by tacking on the local domain to all
  432.           unqualified addresses which a user types in.   Any
  433.           address which does not contain a "@" is considered
  434.           unqualified.
  435.  
  436.           The newer format for addresses  allow  for  spaces
  437.           and  special  characters  in  the  full name of an
  438.           address.  For this reason, commas are required  to
  439.           separate  addresses.  If any special characters as
  440.           defined in RFC-822 appear in the full name, quotes
  441.           are required around the address.  Pine will insert
  442.           the quotes automatically.  The common cases  where
  443.           this  happens  are with periods after initials and
  444.           parentheses.
  445.  
  446.  
  447.                            - 7 -
  448.  
  449.  
  450.  
  451.  
  452.  
  453.  
  454.  
  455.                   - Pine Technical Notes -
  456.  
  457.  
  458.           Because Pine fully complies with  RFC-822,  it  is
  459.           sometimes  difficult  to  use non-Internet address
  460.           formats  such  as  UUCP's  _h_o_s_t!_u_s_e_r  or  DECNet's
  461.           _U_S_E_R::_H_O_S_T  with  Pine.   People  who  run Pine on
  462.           these systems have  made  local  modifications  to
  463.           Pine  or  to  the mail transport agent (e.g. send-
  464.           mail) to make things work for them.  Another  spe-
  465.           cial  case  that  Pine  does not allow for are the
  466.           sites in the  United  Kingdom  which  require  two
  467.           "local"     domains     (one     in    the    form
  468.           _m_a_c_h_i_n_e._s_i_t_e._a_c._u_k for use outside the UK and  the
  469.           other  _u_k._a_c._s_i_t_e._m_a_c_h_i_n_e  for use inside the UK).
  470.           This special case requires local modifications  to
  471.           Pine.
  472.  
  473.           Pine expects dates to be in the  standard  RFC-822
  474.           format which is something like:
  475.  
  476.                [www, ] dd mmm yy hh:mm[:ss] [timezone]
  477.  
  478.           It will attempt to parse dates  that  are  not  in
  479.           this  format.   When an unparsable date is encoun-
  480.           tered it is displayed as _x_x_x _x_x when shown in  the
  481.           FOLDER INDEX screen.
  482.  
  483.  
  484.  
  485.           _S_M_T_P _a_n_d _S_e_n_d_m_a_i_l
  486.  
  487.           Pine is a _u_s_e_r _a_g_e_n_t not a _m_e_s_s_a_g_e _t_r_a_n_s_f_e_r _a_g_e_n_t.
  488.           In  plain  English,  that means Pine does not know
  489.           how to interact with other computers on the Inter-
  490.           net  to  deliver  or receive email. What Pine does
  491.           know how to do is help users  read,  organize  and
  492.           create  email.  The "dirty work" of delivering and
  493.           accepting email is handled by other programs.
  494.  
  495.           All outgoing email is delivered to a mail transfer
  496.           program  or  to  an  SMTP server.  The most common
  497.           mail transfer program is _s_e_n_d_m_a_i_l.  When Pine on a
  498.           UNIX  computer  uses  the local _s_e_n_d_m_a_i_l, it first
  499.           writes the message to a temporary  file  in  /_t_m_p.
  500.           Then Pine runs a shell in the background that runs
  501.           _s_e_n_d_m_a_i_l on the temporary file  and  then  removes
  502.           it.   This  is done with a shell in the background
  503.           so the user doesn't have to wait for  _s_e_n_d_m_a_i_l  to
  504.           finish.   By default, _s_e_n_d_m_a_i_l is invoked with the
  505.           -_t flag to cause it to read and parse  the  header
  506.           to  determine  the  recipients;  the  -_o_e_m flag to
  507.           cause errors to be mailed back; and the  -_o_i  flag
  508.           to  ignore  dots  in  incoming  messages.  Systems
  509.           administrators can choose to configure Pine to use
  510.           a different mail transfer program or even _s_e_n_d_m_a_i_l
  511.  
  512.  
  513.                            - 8 -
  514.  
  515.  
  516.  
  517.  
  518.  
  519.  
  520.  
  521.                   - Pine Technical Notes -
  522.  
  523.  
  524.           with different flags.  See  the  section  on  UNIX
  525.           Pine  Compile-time  Options  for  more  details on
  526.           this.
  527.  
  528.           Pine can also operate  as  an  SMTP  client.  SMTP
  529.           stands  for  _S_i_m_p_l_e  _M_a_i_l  _T_r_a_n_s_f_e_r  _P_r_o_t_o_c_o_l;  it
  530.           specifies the rules  by  which  computers  on  the
  531.           Internet pass email to one another.  In this case,
  532.           Pine passes outgoing email messages  to  a  desig-
  533.           nated  SMTP  server  instead of to a mail transfer
  534.           program on the local machine.  A  program  on  the
  535.           server  then takes care of delivering the message.
  536.           To make Pine operate as an SMTP client, the  _s_m_t_p-
  537.           _s_e_r_v_e_r  variable  must be set to the IP address or
  538.           host name of the SMTP server within your organiza-
  539.           tion.   This  variable  accepts  a comma separated
  540.           list of servers, so you can specify multiple  SMTP
  541.           servers.  PC-Pine only runs as an SMTP client.
  542.  
  543.  
  544.           _I_n_t_e_r_a_c_t_i_v_e _M_a_i_l _A_c_c_e_s_s _P_r_o_t_o_c_o_l (_I_M_A_P)
  545.  
  546.           IMAP is a mail access protocol.  Pine uses IMAP to
  547.           get at messages and folders which reside on remote
  548.           machines.  With IMAP,  all messages  are  kept  on
  549.           the  server.   An  IMAP  client (such as Pine) can
  550.           request specific messages, headers, message struc-
  551.           tures,  etc.   The  client can also issue commands
  552.           which delete messages from folders on the  server.
  553.           IMAP's  closest kin is POP, the Post Office Proto-
  554.           col, which works by transferring an entire mailbox
  555.           to  the  client where all the mail is kept.  For a
  556.           complete comparison of IMAP and POP, see the paper
  557.           _C_o_m_p_a_r_i_n_g _T_w_o _A_p_p_r_o_a_c_h_e_s _t_o _R_e_m_o_t_e _M_a_i_l_b_o_x _A_c_c_e_s_s:
  558.           _I_M_A_P _v_s. _P_O_P by Terry  Gray.   The  paper  can  be
  559.           found  as the file doc/imap.vs.pop in the standard
  560.           Pine distribution.
  561.  
  562.  
  563.           IMAP Features:
  564.  
  565.                Allows access to mail folders from more  than
  566.                one client computer.
  567.  
  568.                Works well over low-bandwidth  lines  because
  569.                information is sent in small pieces as needed
  570.                by the user.
  571.  
  572.                Email can be delivered and stored on a  well-
  573.                maintained   and  reliable  server  which  is
  574.                "always-up".
  575.  
  576.  
  577.                            - 9 -
  578.  
  579.  
  580.  
  581.  
  582.  
  583.  
  584.  
  585.                   - Pine Technical Notes -
  586.  
  587.  
  588.                Folders can be accessed and manipulated  from
  589.                anywhere on the Internet.
  590.  
  591.                Users can get to messages stored on different
  592.                folders within the same Pine session.
  593.  
  594.                Allows use of IMAP server for  searching  and
  595.                parsing.
  596.  
  597.  
  598.           IMAP2 is defined in RFC-1176.  IMAP2bis, the  pro-
  599.           posed  extension  to  IMAP2,  is  described in the
  600.           document imap2bis-draft-XX.txt in the /mail direc-
  601.           tory  of ftp.cac.washington.edu.  IMAP2bis will be
  602.           formally documented in an upcoming RFC.  Pine 3.85
  603.           is  an  IMAP2bis client. It takes advantage of the
  604.           extensions to  IMAP2  and  should  work  with  any
  605.           IMAP2bis server software.
  606.  
  607.  
  608.  
  609.           _M_u_l_t_i_p_u_r_p_o_s_e _I_n_t_e_r_n_e_t _M_a_i_l _E_x_t_e_n_s_i_o_n_s (_M_I_M_E)
  610.  
  611.           MIME is a way  of  encoding  a  multipart  message
  612.           structure  into a standard Internet email message.
  613.           The parts may be nested and may be of  seven  dif-
  614.           ferent types:  Text, Audio, Image, Video, Message,
  615.           Application  and  Multipart  (nested).   The  MIME
  616.           specification  allows  email programs such as Pine
  617.           to  reliably  and  simply  exchange  binary   data
  618.           (images, spreadsheets, etc.) MIME includes support
  619.           for international  character  sets,  tagging  each
  620.           part  of  a  message  with the character set it is
  621.           written in, and providing 7-bit encoding of  8-bit
  622.           character  sets.  It  also  provides a simple rich
  623.           text format for marking text as bold,  underlined,
  624.           and so on. There is a mechanism for splitting mes-
  625.           sages into multiple parts and reassembling them at
  626.           the receiving end.
  627.  
  628.           MIME is still relatively new, but already  we  are
  629.           seeing  it  used  widely  throughout the Internet.
  630.           The MIME standard was officially published in June
  631.           of  1992  as  RFC  1341.   Pine 3.0 was one of the
  632.           first email  programs  to  Implement  MIME.   Now,
  633.           there  are  a dozen public MIME email programs and
  634.           nearly that many commercial MIME  email  programs.
  635.           In addition, MIME is being added to newsreaders so
  636.           MIME messages can be posted  and  read  in  USENET
  637.           newsgroups.
  638.  
  639.           An actual MIME message looks something like this:
  640.  
  641.                            - 10 -
  642.  
  643.  
  644.  
  645.  
  646.  
  647.  
  648.  
  649.                   - Pine Technical Notes -
  650.  
  651.  
  652.               From lgl@olive.cac.washington.edu Tue Jul 14 17:55:17 1992
  653.               Date: Tue, 14 Jul 1992 17:55:17 -0700 (PDT)
  654.               From: Laurence Lundblade <lgl@cac.washington.edu>
  655.               Subject: Test MIME message
  656.               To: Laurence Lundblade <lgl@cac.washington.edu>
  657.  
  658.               --16820115-1435684063-711161753:#2306
  659.               Content-Type: TEXT/PLAIN; charset=US-ASCII
  660.  
  661.               The text of the message would go here. It is readable if
  662.               one doesn't mind wading around a little bit of the MIME
  663.               formatting. After this is a binary file in base 64
  664.               encoding. It has been shortened for this example. The
  665.               Base 64 stuff looks dorky in PostScript because
  666.               troff -me doesn't have a fixed font like courier.
  667.  
  668.               Laurence Lundblade                       206-543-5617
  669.                 lgl@cac.washington.edu
  670.                    Computing and Communications, University of Washington
  671.  
  672.               --16820115-1435684063-711161753:#2306
  673.               Content-Type: TEXT/plain; name=login
  674.               Content-Transfer-Encoding: BASE64
  675.               Content-Description: NeXT login program
  676.  
  677.               AYAAAABAAAAAQAAAAQAAAL4AAAAAQAAAAEAAAJYAAAAAAAAAAAA
  678.               AAAAAAAABfsAAADFAAAFswAAAAHAAAABwAAAAgAAAAAX190ZXh0
  679.               AAAAF9fVEVYVAAAAAAAAAAAAAAAAAAAAAAQpAAAAxQAAAABAAAA
  680.               AAAAAAAAAAAAABfX2Z2bWxpYl9pbml0MAAAX19URVhUAAAAAAAA
  681.               KQAAAEwAAATuAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAF9fZnZt
  682.               XQxAABfX1RFWFQAAAAAAAAAAAAAAAAR1AAAAAAAABToAAAAAgAA
  683.               AAAAAAAAAAAAAAAX19jc3RyaW5nAAAAAAAAAF9fVEVYVAAAAAAA
  684.               BHUAAADQQAAFOgAAAAAAAAAAAAAAAAAAAACAAAAAAAAAABfX2Nv
  685.               AAAAAAAX19URVhUAAAAAAAAAAAAAAAAFRgAAACsAAAYLAAAAAIA
  686.               AAAAAAAAAAAAAAAAF9fZGF0YQAAAAAAAAAAAABfX0RBVEEAAAAA
  687.               AAVxAAAAQgAABjYAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAX19i
  688.               AAAAAAAAF9fREFUQQAAAAAAAAAAAAAAABbMAAAADAAAAAAAAAAC
  689.               AAAAAABAAAAAAAAAABfX2NvbW1vbgAAAAAAAAAAX19EQVRBAAAA
  690.               CAlcwAlZCBMT0dJTiBGQUlMVVJFJXMgT04gJXMsICVzAHN1AGxv
  691.               Wxsb2Mgb3V0IG9mIG1lbW9yeQoAJXMgdG9vIGxvbmcNCgAvZXRj
  692.               3Vzci9hZG0vd3RtcAAAAABAKCMpUFJPR1JBTTpsb2dpbiAgUFJP
  693.               WRzLTQyICBERVZFTE9QRVI6cm9vdCAgQlVJTFQ6U3VuIE5vdiAx
  694.               zoyMSBQU1QgMTk5MAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  695.               AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  696.               AAAAAAAAAAAAAAAAAAAAAAAAAAAQCgjKSBDb3B5cmlnaHQgKGMp
  697.               DE5ODcsIDE5ODggVGhlIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNp
  698.               2FsaWZvcm5pYS4KIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgBAKCMp
  699.               wk1LjQwIChCZXJrZWxleSkgNS85Lzg5AAAAABHUAAAR1f//////
  700.               wAAEdQAABHUAAAR1AAAEdQAAAEsAxwREwT/GhkSDxcWAAAR2gAA
  701.               AAR5gAAEeoAABHuAAAR8gAAEfYAABH6AAAR/gAAEgIAABIGAAAA
  702.               AAB
  703.  
  704.               --16820115-1435684063-711161753:#2306--
  705.  
  706.  
  707.                            - 11 -
  708.  
  709.  
  710.  
  711.  
  712.  
  713.  
  714.  
  715.                   - Pine Technical Notes -
  716.  
  717.  
  718.           For more information about MIME, see RFC  1341  or
  719.           the  FAQ  in  the  newsgroup comp.mail.mime or the
  720.           paper _M_I_M_E _O_v_e_r_v_i_e_w by Mark Grand.  You  can  find
  721.           the  paper  via  ftp  on adad.premenos.sf.ca.us as
  722.           pub/mime.ps or /pub/mime.txt.  For  details  about
  723.           Pine's  implementation  of  MIME, see the two MIME
  724.           sections later in this document.
  725.  
  726.  
  727.           _F_o_l_d_e_r _C_o_l_l_e_c_t_i_o_n_s
  728.  
  729.           Folder Collections are Pine's way of dealing  with
  730.           more  than a single group of folders.  With advent
  731.           of PC-Pine and the  development  of  tools  within
  732.           IMAP to better manage remote folders, the time was
  733.           ripe to provide a mechanism for defining  a  group
  734.           of  remote  folders.   PC-Pine forced the issue in
  735.           that many potential PC-Pine users would be migrat-
  736.           ing  from  UNIX pine in a time sharing environment
  737.           and, thus, would have  some  investment  in  their
  738.           archived messages on that host.
  739.  
  740.           Currently, pine has no way to  dynamically  create
  741.           or  define  collections,  but  there  is much work
  742.           still going on in this area.  The hope is to  pro-
  743.           vide a general way to define, display and navigate
  744.           remote folder  collections  in  a  consistent  way
  745.           across platforms and applications.  Stay tuned!
  746.  
  747.           For a more complete description of Folder  Collec-
  748.           tions,  see  the  section  on  "Syntax for Collec-
  749.           tions".
  750.  
  751.  
  752.  
  753.  
  754.  
  755.  
  756.  
  757.  
  758.  
  759.  
  760.  
  761.  
  762.  
  763.  
  764.  
  765.  
  766.  
  767.  
  768.  
  769.  
  770.  
  771.                            - 12 -
  772.  
  773.  
  774.  
  775.  
  776.  
  777.  
  778.  
  779.                   - Pine Technical Notes -
  780.  
  781.  
  782.                 _S_e_c_t_i_o_n _3 - _B_u_i_l_d_i_n_g _a_n_d _I_n_s_t_a_l_l_a_t_i_o_n
  783.  
  784.  
  785.  
  786.           The Pine distribution is designed  to  require  as
  787.           little configuration and effort at compile time as
  788.           possible.  Still, there are  some  Pine  behaviors
  789.           which  are  set at the time you compile Pine.  For
  790.           each of these, there is a reasonable (our opinion)
  791.           default  built  into  the  code,  so  most systems
  792.           administrators will have no need for these steps.
  793.  
  794.  
  795.  
  796.           _U_N_I_X _P_i_n_e _C_o_m_p_i_l_e-_t_i_m_e _O_p_t_i_o_n_s
  797.  
  798.           The   files   you   may   need   to   modify   are
  799.           ./_p_i_n_e/_m_a_k_e_f_i_l_e._x_x_x    and   ./_p_i_n_e/_o_s_d_e_p/_o_s-_x_x_x._h
  800.           where "xxx" is the 3-letter code  for  your  plat-
  801.           form.   You can give the command _b_u_i_l_d _h_e_l_p to see
  802.           the list of ports incorporated into Pine and their
  803.           associated     3-letter     codes.     The    file
  804.           ./_p_i_n_e/_m_a_k_e_f_i_l_e._x_x_x is where you  would  set  your
  805.           compiler  options.   By default, Pine will be com-
  806.           piled with debugging on, optimization and  profile
  807.           off.   Note  that  if  you compile with DEBUG off,
  808.           then Pine will not create its normal debug  files,
  809.           no  matter  how  the debug-level and debug command
  810.           line flag are set.
  811.  
  812.           Most of Pine's  behaviors  are  set  in  the  file
  813.           ./_p_i_n_e/_o_s_d_e_p/_o_s-_x_x_x._h,   which  includes  comments
  814.           that explain each setting.  Some of these can only
  815.           be  set when you compile.  Others, however, can be
  816.           overridden by command-line flags to Pine  or  set-
  817.           tings  in  Pine's  user  or  system  configuration
  818.           files.  Some of the options which can be set  when
  819.           compiling:
  820.  
  821.                USE_QUOTAS:  Determines  whether  quotas  are
  822.                checked on startup.  Default for most systems
  823.                is to check the quota.
  824.  
  825.                DEFAULT_DEBUG: Sets the  level  of  debugging
  826.                output create in Pine's debug files.
  827.  
  828.                NEW_MAIL_TIME:   Interval  between   new-mail
  829.                checks.   Default  for  most  systems  is  30
  830.                seconds.
  831.  
  832.                OVERLAP: Number of lines  overlap  when  user
  833.                views the next page of a message.  Default on
  834.                most systems is 2.
  835.  
  836.  
  837.                            - 13 -
  838.  
  839.  
  840.  
  841.  
  842.  
  843.  
  844.  
  845.                   - Pine Technical Notes -
  846.  
  847.  
  848.                USE_TERMINFO: Instructs Pine to use the  ter-
  849.                minfo  database  instead of termcap.  Default
  850.                varies by system.
  851.  
  852.                SENDMAIL and SENDMAILFLAGS: Sets the name and
  853.                flags  for  the  local  program  that will be
  854.                called to handle outgoing email.  Default  is
  855.                /_u_s_r/_l_i_b/_s_e_n_d_m_a_i_l  -_o_i  -_o_e_m  -_t on most UNIX
  856.                systems.
  857.  
  858.                SYSTEM_PINERC: The name  of  the  file  which
  859.                holds  Pine configuration information for all
  860.                users on the system.  Default on UNIX systems
  861.                is /_u_s_r/_l_o_c_a_l/_l_i_b/_p_i_n_e._c_o_n_f.
  862.  
  863.           There are a couple of more obscure  options  which
  864.           are  in  the source code because a few people have
  865.           asked for them or because  we  changed  our  minds
  866.           about them being a good idea in general.
  867.  
  868.                ENCODE_FROMS: Use  Quoted-printable  encoding
  869.                so  that  _F_r_o_m'_s  at  the  beginning of lines
  870.                don't end up being escaped by >'s.  Most peo-
  871.                ple  seem  to  dislike  the Q-P encoding more
  872.                than the > escapes.
  873.  
  874.                NO_KEYBOARD_LOCK: Disable the keyboard  lock-
  875.                ing function in the main menu.
  876.  
  877.  
  878.  
  879.           _P_i_c_o _C_o_m_p_i_l_e-_t_i_m_e _O_p_t_i_o_n_s
  880.  
  881.                There are even fewer options needed when com-
  882.           piling  Pico.   The  two  interesting ones are for
  883.           UNIX Pico versions only.  The file that  may  need
  884.           some  changing  is  ./_p_i_c_o/_o_s__u_n_i_x._h.  Whatever is
  885.           set will effect the behavior of  the  Pico  stand-
  886.           alone program as well as the composer within Pine.
  887.  
  888.                SPELLER: Names the program called to do "nor-
  889.                mal" spell-checking.
  890.  
  891.                TERMCAP and  TERMINFO:  Determines  which  of
  892.                these terminal databases will be used.
  893.  
  894.  
  895.  
  896.           _I_M_A_P_d _C_o_m_p_i_l_e-_t_i_m_e _O_p_t_i_o_n_s
  897.  
  898.           There are no options or settings required for  the
  899.           version  of  IMAPd  distributed with Pine.  If you
  900.           need to be doing  more  complex  modifications  to
  901.  
  902.  
  903.                            - 14 -
  904.  
  905.  
  906.  
  907.  
  908.  
  909.  
  910.  
  911.                   - Pine Technical Notes -
  912.  
  913.  
  914.           IMAP, then you should pick up the IMAP development
  915.           package and work with that code.  The  developer's
  916.           version  of  IMAP  is  available for anonymous ftp
  917.           from _f_t_p._c_a_c._w_a_s_h_i_n_g_t_o_n._e_d_u in the directory _m_a_i_l.
  918.           The file is called _i_m_a_p._t_a_r._Z.
  919.  
  920.  
  921.  
  922.           _B_u_i_l_d_i_n_g _t_h_e _P_i_n_e _P_r_o_g_r_a_m_s
  923.  
  924.                You may have already compiled Pine and  tried
  925.           it out.  If so, great!  If not, you should be able
  926.           to do it without too  much  trouble  by  following
  927.           these step-by-step instructions:
  928.  
  929.           1.   Figure out what platform you're building for.
  930.                You  can  give  the command _b_u_i_l_d _h_e_l_p to see
  931.                the list of  ports  incorporated  into  Pine.
  932.                What  you  need  is the three letter code for
  933.                the platform.  Some examples are  _n_x_t  for  a
  934.                Next operating system and _u_l_t for Ultrix.  If
  935.                your platform is not in the  list  of  ports,
  936.                then  you  might have some work ahead of you.
  937.                First, check the file _d_o_c/_p_i_n_e-_p_o_r_t_s.  to see
  938.                if  there  are  others  working on a port for
  939.                your platform  or  to  see  if  the  port  is
  940.                included  in  the  "contrib"  section  of the
  941.                source code. Ports in the  _c_o_n_t_r_i_b  directory
  942.                were  contributed by Pine administrators from
  943.                around the world, but  the  Pine  development
  944.                team  has  not been able to test the code. If
  945.                Pine has not yet been ported to your platform
  946.                at  all,  read the section on Porting Pine in
  947.                this document.
  948.  
  949.  
  950.           2.   Make sure you're in  the  root  of  the  Pine
  951.                source.   When you type _l_s you should see the
  952.                following files and directories (or something
  953.                close to it):
  954.  
  955.                    README  build   doc     makefile           pine
  956.                    bin             contrib imap    pico
  957.  
  958.  
  959.  
  960.           3.   Make sure you're getting  a  clean  start  by
  961.                giving  the command _b_u_i_l_d _c_l_e_a_n.  This should
  962.                take only a few seconds to run.
  963.  
  964.  
  965.           4.   Give the command _b_u_i_l_d _x_x_x where _x_x_x  is  the
  966.                three  letter code you picked in step 1.  The
  967.  
  968.  
  969.                            - 15 -
  970.  
  971.  
  972.  
  973.  
  974.  
  975.  
  976.  
  977.                   - Pine Technical Notes -
  978.  
  979.  
  980.                compiler should grind away for a few minutes.
  981.  
  982.  
  983.           5.   When the compilation is complete the sizes of
  984.                the  four binaries built (pine, mtest, imapd,
  985.                pico) will be displayed.  The actual binaries
  986.                are  in  the  various  various  source direc-
  987.                tories.  In addition, the _b_i_n directory  con-
  988.                tains  a  link  to each program compiled. You
  989.                can just copy them out of  _b_i_n  or  try  them
  990.                from there.
  991.  
  992.  
  993.  
  994.           _I_n_s_t_a_l_l_i_n_g _P_i_n_e _a_n_d _P_i_c_o _o_n _U_N_I_X _P_l_a_t_f_o_r_m_s
  995.  
  996.           Installing Pine and  Pico  is  remarkably  simple.
  997.           You  take  the  program  files which you have just
  998.           transferred or built and  you  move  them  to  the
  999.           correct  directory on your system.  Most often the
  1000.           binaries go  in  /_u_s_r/_l_o_c_a_l/_b_i_n  though  sometimes
  1001.           they are placed in /_u_s_r/_b_i_n.  All the help text is
  1002.           compiled into Pine so there are no _r_e_q_u_i_r_e_d  auxi-
  1003.           liary files.
  1004.  
  1005.           There are, however, two optional auxiliary  files:
  1006.           /_u_s_r/_l_o_c_a_l/_l_i_b/_p_i_n_e._i_n_f_o                       and
  1007.           /_u_s_r/_l_o_c_a_l/_l_i_b/_p_i_n_e._c_o_n_f.  The file _p_i_n_e._i_n_f_o con-
  1008.           tains text on how to get further help on the local
  1009.           system.  It is presented as the first page of  the
  1010.           help  text  for  the main menu and should probably
  1011.           refer  to  the  local  help  desk  or  the  system
  1012.           administrator.   If this file doesn't exist a gen-
  1013.           eric version which suggests "talking to  the  com-
  1014.           puter  support  staff at your site" is shown.  The
  1015.           file _p_i_n_e._c_o_n_f is used to set system-wide  default
  1016.           configurations  for Pine.  See the section on Pine
  1017.           Configuration later in this document  for  details
  1018.           about the _p_i_n_e._c_o_n_f file.
  1019.  
  1020.  
  1021.  
  1022.           _I_n_s_t_a_l_l_i_n_g _P_C-_P_i_n_e
  1023.  
  1024.           Most of the PC-Pine configuration involves  making
  1025.           sure PC-Pine can interact correctly with your net-
  1026.           working software.  PC-Pine runs on top of whatever
  1027.           TCP/IP   networking   stack   you   already  have.
  1028.           Currently, PC-Pine  operates  with  FTP's  PC/TCP,
  1029.           Novell's  LAN  Workplace  for  DOS  and WATTCP for
  1030.           packet drivers.  Work is  underway  to  develop  a
  1031.           version  of  Pine  that works with Sun's PC/NFS as
  1032.           well.   PC-Pine  needs  to  be  able  to  interact
  1033.  
  1034.  
  1035.                            - 16 -
  1036.  
  1037.  
  1038.  
  1039.  
  1040.  
  1041.  
  1042.  
  1043.                   - Pine Technical Notes -
  1044.  
  1045.  
  1046.           closely  with the stack loaded on your PC. Most of
  1047.           the time,  this  occurs  automatically.   However,
  1048.           there are certain modifications that need be made.
  1049.  
  1050.  
  1051.           LAN Workplace for DOS Version 4.1
  1052.                Set the environment variable _E_X_C_E_L_A_N  in  the
  1053.                PC's  _A_U_T_O_E_X_E_C._B_A_T  file.   This provides the
  1054.                necessary links so that LAN Workplace for DOS
  1055.                4.1  can translate domain names to IP numbers
  1056.                correctly.  It is  needed  because  Pine  was
  1057.                developed  for   LAN  Workplace  4.0 and this
  1058.                particular variable is treated differently in
  1059.                4.1  than  in 4.0.  The _E_X_C_E_L_A_N variable must
  1060.                point to the directory in which LAN Workplace
  1061.                is installed.
  1062.  
  1063.           PC/TCP versions before 2.2
  1064.                You need a file called _P_C_T_C_P._I_N_I  which  con-
  1065.                tains  a  bare-minimum  2-line description of
  1066.                the PC's configuration.  It looks like this:
  1067.  
  1068.                                    [pctcp ifcust 0]
  1069.                                    ip-address=_x_x._x_x._x_x._x_x
  1070.  
  1071.  
  1072.                Where _x_x._x_x._x_x._x_x is the IP  address  of  the
  1073.                PC.  Pine  also requires an environment vari-
  1074.                able, _P_C_T_C_P, which points to this file.   For
  1075.                example:
  1076.  
  1077.                                    set PCTCP=C:\PINE\PCTCP.INI
  1078.  
  1079.  
  1080.           Packet Drivers
  1081.                Pine needs to be made aware of the PC's  net-
  1082.                work  configuration  file.   Simply  edit the
  1083.                file _W_A_T_T_C_P._C_F_G included in the Pine  distri-
  1084.                bution.   The  file  includes 5 configuration
  1085.                settings--IP-address,    gateway,    netmask,
  1086.                nameserver(s)  and domainslist. If you have a
  1087.                network configuration file  for  NCSA  Telnet
  1088.                then  _W_A_T_T_C_P._C_F_G is just a pared down version
  1089.                of the  _C_O_N_F_I_G._T_E_L  file  you  already  made.
  1090.                Take a look at _C_O_N_F_I_G._T_E_L to find the correct
  1091.                settings for _W_A_T_T_C_P._C_F_G.  Once the configura-
  1092.                tion  file is made, the DOS environment vari-
  1093.                able _W_A_T_T_C_P._C_F_G needs to point  at  it.   For
  1094.                example:
  1095.  
  1096.                                    set WATTCP.CFG=C:\PINE
  1097.  
  1098.  
  1099.                            - 17 -
  1100.  
  1101.  
  1102.  
  1103.  
  1104.  
  1105.  
  1106.  
  1107.                   - Pine Technical Notes -
  1108.  
  1109.  
  1110.           In addition to  networking  software  issues,  you
  1111.           might  need  to  worry about setting the timezone.
  1112.           PC-Pine includes the timezone as part of  outgoing
  1113.           email.  There is a generic way for PC applications
  1114.           to get the timezone, but, because PC-Pine  is  one
  1115.           of  a  very  few  applications which requires this
  1116.           information, timezone might not be previously con-
  1117.           figured.
  1118.  
  1119.           The trick is to add an environment  variable,  _T_Z,
  1120.           to your PC's _A_U_T_O_E_X_E_C._B_A_T file. The format for the
  1121.           _T_Z environment variable is as follows:
  1122.  
  1123.                          ZZZ[+H]H[:MM:SSTTT]
  1124.  
  1125.  
  1126.           First is the 3-letter code for your standard time,
  1127.           then  a  "+" or a "-" for direction of offset from
  1128.           GMT, then the amount of  offset  (hours,  minutes,
  1129.           seconds)  and  finally  the 3-letter code for your
  1130.           summer- or daylight savings time.   Everything  in
  1131.           [] brackets is optional.
  1132.  
  1133.           The default timezone is "PST-8PDT"  (U.S.  Pacific
  1134.           Time).  Coincidentally, Microsoft is headquartered
  1135.           in that timezone.
  1136.  
  1137.           As an example, people in the Eastern part  of  the
  1138.           US  should  add  this  line  to their _A_U_T_O_E_X_E_C._B_A_T
  1139.           files:
  1140.  
  1141.                              TZ=EST-5EDT
  1142.  
  1143.  
  1144.  
  1145.           _I_n_s_t_a_l_l_i_n_g _I_M_A_P_d
  1146.  
  1147.           When the Pine distribution is built on a UNIX sta-
  1148.           tion,  the IMAP server binary, _i_m_a_p_d, is compiled.
  1149.           Installing _i_m_a_p_d requires placing  the  binary  in
  1150.           the  appropriate  directory, usually /_u_s_r/_e_t_c, and
  1151.           adding    entries     to     /_e_t_c/_s_e_r_v_i_c_e_s     and
  1152.           /_e_t_c/_i_n_e_t_d._c_o_n_f  or  their counterparts.  The fol-
  1153.           lowing line is appropriate for /_e_t_c/_s_e_r_v_i_c_e_s:
  1154.  
  1155.             _i_m_a_p         _1_4_3/_t_c_p         # _M_a_i_l _t_r_a_n_s_f_e_r
  1156.  
  1157.           and   the   next   line   is    appropriate    for
  1158.           /_e_t_c/_i_n_e_t_d._c_o_n_f:
  1159.  
  1160.             _i_m_a_p     _s_t_r_e_a_m     _t_c_p         _n_o_w_a_i_t      _r_o_o_t
  1161.           /_u_s_r/_e_t_c/_i_m_a_p_d _i_m_a_p_d
  1162.  
  1163.                            - 18 -
  1164.  
  1165.  
  1166.  
  1167.  
  1168.  
  1169.  
  1170.  
  1171.                   - Pine Technical Notes -
  1172.  
  1173.  
  1174.           The /_e_t_c/_i_n_e_t_d._c_o_n_f file entry may  vary  on  dif-
  1175.           ferent  versions  of  UNIX.   Some have a slightly
  1176.           different set of fields.   Also  the  pathname  in
  1177.           /_e_t_c/_i_n_e_t_d._c_o_n_f must match the path where _i_m_a_p_d is
  1178.           installed.
  1179.  
  1180.           With this  configuration,  the  IMAP  server  runs
  1181.           without pre-authentication.  Each new IMAP connec-
  1182.           tion requires a  correct  username  and  password.
  1183.           IMAP can also be run with pre-authentication based
  1184.           on the standard _r_s_h mechanism.   To  enable  this,
  1185.           the user account on the IMAP server must contain a
  1186.           valid file  which  grants  access  to  the  client
  1187.           machine.  Enabling _r_i_m_a_p authentication is done by
  1188.           creating  a  link  called  /_e_t_c/_r_i_m_a_p_d  to  _i_m_a_p_d.
  1189.           Basically,  what is happening is that Pine is tak-
  1190.           ing advantage of the ability that _r_s_h has  to  use
  1191.           privileged  TCP ports so it doesn't have to run in
  1192.           privileged  mode.   If  the  _r_i_m_a_p  authentication
  1193.           fails  it will drop back to plain password authen-
  1194.           tication.
  1195.  
  1196.           PC-Pine cannot take advantage of _r_i_m_a_p authentica-
  1197.           tion.   Also,  if  your  system uses a distributed
  1198.           configuration database, like NIS, Yellow Pages  or
  1199.           Netinfo,  be sure that appropriate steps are taken
  1200.           to  ensure  the  above  mentioned  information  is
  1201.           updated.
  1202.  
  1203.  
  1204.  
  1205.           _S_u_p_p_o_r_t _F_i_l_e_s: _U_N_I_X _P_i_n_e
  1206.  
  1207.           This section lists the various  files  which  Pine
  1208.           uses  which  are  not email folders.  All of these
  1209.           are the default names  of  files,  they  may  vary
  1210.           based on Pine's configuration.
  1211.  
  1212.           /usr/local/lib/pine.conf
  1213.                Pine's global configuration file.
  1214.  
  1215.           ~/.pinerc
  1216.                Personal configuration file for each user.
  1217.  
  1218.           ~/.addressbook
  1219.                Personal addressbook
  1220.  
  1221.           ~/.newsrc
  1222.                Personal USENET subscription list.   This  is
  1223.                shared with other newsreading programs.
  1224.  
  1225.           ~/.pine-debugX
  1226.                The  files   created   for   debugging   Pine
  1227.  
  1228.  
  1229.                            - 19 -
  1230.  
  1231.  
  1232.  
  1233.  
  1234.  
  1235.  
  1236.  
  1237.                   - Pine Technical Notes -
  1238.  
  1239.  
  1240.                problems. By default, there are 4 .pine-debug
  1241.                files kept at any time.
  1242.  
  1243.           ~/.signature
  1244.                A signature file which will  be  included  in
  1245.                all outgoing email messages.
  1246.  
  1247.           ~/mail/interrupted-mail
  1248.                The text of a message which  was  interrupted
  1249.                by some unexpected error which Pine detected.
  1250.  
  1251.           ~/mail/postponed-mail
  1252.                The text of a message which the user chose to
  1253.                postpone.
  1254.  
  1255.           /etc/imapdrc
  1256.                Imapd global configuration file.
  1257.  
  1258.           ~/.imapdrc
  1259.                Personal imapd configuration file.
  1260.  
  1261.  
  1262.  
  1263.           _S_u_p_p_o_r_t _F_i_l_e_s: _P_C-_P_i_n_e
  1264.  
  1265.           This section lists the various files which PC-Pine
  1266.           uses  which  are  not email folders.  All of these
  1267.           are the default names  of  files,  they  may  vary
  1268.           based on Pine's configuration.
  1269.  
  1270.           $HOME\PINE\PINERC
  1271.                Personal configuration file for each user.
  1272.  
  1273.           $HOME\PINE\ADDRBOOK
  1274.                Personal addressbook
  1275.  
  1276.           $HOME\PINE\PINE.SIG
  1277.                A signature file which will  be  included  in
  1278.                all outgoing email messages.
  1279.  
  1280.           $HOME\PINE\PINE.HLP
  1281.                File containing Pine's internal help text.
  1282.  
  1283.           $HOME\PINE\PINE.NDX
  1284.                Index of Pine's help text used by PC-Pine  to
  1285.                locate entries.
  1286.  
  1287.           $HOME\NEWSRC
  1288.                Personal USENET subscription list.   This  is
  1289.                shared with other newsreading programs.
  1290.  
  1291.           $HOME\MAIL\INTRUPTD
  1292.                The text of a message which  was  interrupted
  1293.  
  1294.  
  1295.                            - 20 -
  1296.  
  1297.  
  1298.  
  1299.  
  1300.  
  1301.  
  1302.  
  1303.                   - Pine Technical Notes -
  1304.  
  1305.  
  1306.                by some unexpected error which Pine detected.
  1307.  
  1308.           $HOME\MAIL\POSTPONE
  1309.                The text of a message which the user chose to
  1310.                postpone.
  1311.  
  1312.           PC-Pine  maintains  its  files  in  two  different
  1313.           directories  by  default, all relative to the _H_O_M_E
  1314.           environment variable.  When not set, the   default
  1315.           is  the  root  of  the current working drive.  The
  1316.           _P_I_N_E_R_C file's default location can  be  overridden
  1317.           by the _P_I_N_E_R_C environment variable.  This variable
  1318.           defines the path and name of the _P_I_N_E_R_C file  used
  1319.           by  pine.   It also defines where the _P_I_N_E._S_I_G and
  1320.           _A_D_D_R_B_O_O_K files are to be found, unless fully qual-
  1321.           ified in the _P_I_N_E_R_C configuration file.
  1322.  
  1323.           In the absense of  environment  variables  and  no
  1324.           \_P_I_N_E  directory on the current working drive, the
  1325.           _P_I_N_E_R_C is expected to reside in the same directory
  1326.           as the _P_I_N_E._E_X_E executable.
  1327.  
  1328.           PC-Pine's help text and help text index file,  are
  1329.           expected  to  reside  in the same directory as the
  1330.           _P_I_N_E_R_C (based on the above  rules).   If  missing,
  1331.           the  files  are  expected  to  reside  in the same
  1332.           directory as the _P_I_N_E._E_X_E executable.  These rules
  1333.           can  be  overridden  with the _P_I_N_E_H_O_M_E environment
  1334.           variable.  This variable  should  be  set  to  the
  1335.           directory where the _P_I_N_E._H_L_P and _P_I_N_E._N_D_X reside.
  1336.  
  1337.  
  1338.  
  1339.  
  1340.  
  1341.  
  1342.  
  1343.  
  1344.  
  1345.  
  1346.  
  1347.  
  1348.  
  1349.  
  1350.  
  1351.  
  1352.  
  1353.  
  1354.  
  1355.  
  1356.  
  1357.  
  1358.  
  1359.                            - 21 -
  1360.  
  1361.  
  1362.  
  1363.  
  1364.  
  1365.  
  1366.  
  1367.                   - Pine Technical Notes -
  1368.  
  1369.  
  1370.                   _S_e_c_t_i_o_n _4 - _C_o_m_m_a_n_d _L_i_n_e _A_r_g_u_m_e_n_t_s
  1371.  
  1372.  
  1373.  
  1374.           Pine and PC-Pine can accept quite a  few  command-
  1375.           line  arguments.   Many of these arguments overlap
  1376.           with variables in the Pine configuration file.  If
  1377.           there  is  an  difference,  then a flag set in the
  1378.           command line takes precedence.  Both Pine and  PC-
  1379.           Pine  expect command line arguments to be preceded
  1380.           by the "-" (dash) standardly  used  by  UNIX  pro-
  1381.           grams.
  1382.  
  1383.  
  1384.           -d   Debug Level:  Sets  the  level  of  debugging
  1385.                information  written by Pine. debug-level can
  1386.                be set to any integer 0-9.  A debug level  of
  1387.                0 turns off debugging for the session.
  1388.  
  1389.  
  1390.           -f   Startup folder:  Pine will open  this  folder
  1391.                in place of the standard INBOX.
  1392.  
  1393.  
  1394.           -i   Initial Keystrokes:  Pine will  execute  this
  1395.                comma-separated  sequence  of  commands  upon
  1396.                startup.  This allows users to  get  Pine  to
  1397.                start  in any of its menus/screens.  You can-
  1398.                not include any input into  the  composer  in
  1399.                the  initial keystrokes.  The key <Return> is
  1400.                represented by a "CR" in the keystroke  list;
  1401.                the  spacebar  is  designated  by the letters
  1402.                "SPACE".  If -i is used with  no  keystrokes,
  1403.                Pine   will  start-up  in  the  FOLDER  INDEX
  1404.                screen.  Configuration  equivalent:  _i_n_i_t_i_a_l-
  1405.                _k_e_y_s_t_r_o_k_e-_l_i_s_t
  1406.  
  1407.  
  1408.           -k   Function-Key Mode: When invoked in this  way,
  1409.                Pine  expects  the  input  of  commands to be
  1410.                function-keys.    Otherwise,   commands   are
  1411.                linked to the regular character keys.  Confi-
  1412.                guration    equivalent:     _u_s_e-_f_u_n_c_t_i_o_n-_k_e_y_s
  1413.                included in _f_e_a_t_u_r_e-_l_i_s_t.
  1414.  
  1415.  
  1416.           -l   Folder-List: With "-l" set, Pine will default
  1417.                to  an  expanded folder list. This means that
  1418.                the FOLDER LIST screen will always  show  all
  1419.                folders  in  all  collections.  Default is to
  1420.                show the folders in  the  current  collection
  1421.                only.   Configuration  equivalent:  _e_x_p_a_n_d_e_d-
  1422.                _v_i_e_w-_o_f-_f_o_l_d_e_r_s in _f_e_a_t_u_r_e-_l_i_s_t.
  1423.  
  1424.  
  1425.                            - 22 -
  1426.  
  1427.  
  1428.  
  1429.  
  1430.  
  1431.  
  1432.  
  1433.                   - Pine Technical Notes -
  1434.  
  1435.  
  1436.           -n   Message-Number: When specified,  Pine  starts
  1437.                up  in  the  FOLDER  INDEX  screen  with  the
  1438.                current message being the designated  message
  1439.                number.
  1440.  
  1441.  
  1442.           -o   Opens  the  specified   folder   (or   INBOX)
  1443.                readonly.
  1444.  
  1445.  
  1446.           -p   Uses the named file as  the  personal  confi-
  1447.                guration   file   instead   of   ~/_p_i_n_e_r_c  or
  1448.                $_H_O_M_E\_P_I_N_E\_P_I_N_E_R_C.
  1449.  
  1450.  
  1451.           -P   Uses the named file as the system wide confi-
  1452.                guration        file        instead        of
  1453.                /_u_s_r/_l_o_c_a_l/_l_i_b/_p_i_n_e._c_o_n_f.  UNIX Pine only.
  1454.  
  1455.  
  1456.           -r   Restricted Mode:  For UNIX Pine  only.   Pine
  1457.                in  restricted  mode  can  only send email to
  1458.                itself.  Save and export are limited.
  1459.  
  1460.  
  1461.           -sort
  1462.                Sort-Key: Specifies the order  messages  will
  1463.                be  displayed in for the FOLDER INDEX screen.
  1464.                Key can have the following  values:  subject,
  1465.                arrival,  date,  from, size, subject/reverse,
  1466.                arrival/reverse, date/reverse,  from/reverse,
  1467.                size/reverse.     The    default   value   is
  1468.                "arrival".   The   key   value   reverse   is
  1469.                equivalent  to  arrival/reverse.  This option
  1470.                will be expanded in the future to allow sort-
  1471.                ing   on   "to"   and   "cc".   Configuration
  1472.                equivalent: _s_o_r_t-_k_e_y.
  1473.  
  1474.  
  1475.           -z   Enable Suspend:  When run with this flag, the
  1476.                key  sequence  ctrl-z  will  suspend the Pine
  1477.                session.  Configuration  equivalent:  _e_n_a_b_l_e-
  1478.                _s_u_s_p_e_n_d included in _f_e_a_t_u_r_e-_l_i_s_t.
  1479.  
  1480.  
  1481.  
  1482.           _S_p_e_c_i_a_l _P_i_n_e _C_o_m_m_a_n_d-_L_i_n_e _M_o_d_e_s
  1483.  
  1484.  
  1485.           [address]
  1486.                Send-to:  If you put  an  unqualified  string
  1487.                (or  strings) in the command line, Pine reads
  1488.                them as email address.  Pine will startup  in
  1489.  
  1490.  
  1491.                            - 23 -
  1492.  
  1493.  
  1494.  
  1495.  
  1496.  
  1497.  
  1498.  
  1499.                   - Pine Technical Notes -
  1500.  
  1501.  
  1502.                the  composer  with  a message started to the
  1503.                person/people specified.  Once the message is
  1504.                sent, the Pine session closes.
  1505.  
  1506.  
  1507.           -h   Help:  Prints the list of available  command-
  1508.                line arguments to the screen.
  1509.  
  1510.  
  1511.           -conf
  1512.                Configuration: Prints a sample system  confi-
  1513.                guration  file to the screen or standard out-
  1514.                put.  UNIX Pine only.
  1515.  
  1516.  
  1517.  
  1518.  
  1519.  
  1520.  
  1521.  
  1522.  
  1523.  
  1524.  
  1525.  
  1526.  
  1527.  
  1528.  
  1529.  
  1530.  
  1531.  
  1532.  
  1533.  
  1534.  
  1535.  
  1536.  
  1537.  
  1538.  
  1539.  
  1540.  
  1541.  
  1542.  
  1543.  
  1544.  
  1545.  
  1546.  
  1547.  
  1548.  
  1549.  
  1550.  
  1551.  
  1552.  
  1553.  
  1554.  
  1555.                            - 24 -
  1556.  
  1557.  
  1558.  
  1559.  
  1560.  
  1561.  
  1562.  
  1563.                   - Pine Technical Notes -
  1564.  
  1565.  
  1566.                  _S_e_c_t_i_o_n _5 - _C_o_n_f_i_g_u_r_a_t_i_o_n _a_n_d _P_r_e_f_e_r_e_n_c_e_s
  1567.  
  1568.  
  1569.  
  1570.  
  1571.           _P_i_n_e _C_o_n_f_i_g_u_r_a_t_i_o_n
  1572.  
  1573.           There is very little in Pine which requires confi-
  1574.           guration.   In  almost every case, the compiled-in
  1575.           preferences will suit users just fine.  When  run-
  1576.           ning  Pine  on  a UNIX system, the built-in confi-
  1577.           guration can be changed by  setting  variables  in
  1578.           the        system        configuration       file,
  1579.           /_u_s_r/_l_o_c_a_l/_l_i_b/_p_i_n_e._c_o_n_f. Both  Pine  and  PC-Pine
  1580.           also   use   personal  (user-based)  configuration
  1581.           files. On UNIX machines, the  personal  configura-
  1582.           tion file is the file ~/._p_i_n_e_r_c.  For PC-Pine sys-
  1583.           tems,  the  personal  configuration  file  is   in
  1584.           \_P_I_N_E\_P_I_N_E_R_C.
  1585.  
  1586.           The syntax of a configuration variable is this:
  1587.  
  1588.               <variable> = <value>
  1589.  
  1590.           If the value is absent then the variable is unset.
  1591.           To set a variable to the empty value the syntax is
  1592.           "".  This is equivalent to an absent value  except
  1593.           that  it  overrides any system-wide value that may
  1594.           be set.  Quotes may be used around any value.  All
  1595.           values  are strings and end at the end of the line
  1596.           or the closing quote.  Leading and trailing  space
  1597.           is  ignored  unless  it is included in the quotes.
  1598.           For some variables the only appropriate values are
  1599.           _y_e_s  and  _n_o.  There is also a second valid syntax
  1600.           which has been introduced since the  last  version
  1601.           of Pine.  Some variables are now lists.  A list is
  1602.           a comma-separated list of values.  The syntax  for
  1603.           a list is:
  1604.  
  1605.               <variable> = <value> [, <value> , ... ]
  1606.  
  1607.           A list can be continued  on  subsequent  lines  by
  1608.           beginning  the  line  with  white-space.  Both the
  1609.           per-user and global configuration files  may  con-
  1610.           tain comments which are lines beginning with a #.
  1611.  
  1612.           For UNIX Pine, There are  four  ways  in  which  a
  1613.           variable  can be set.  In decreasing order of pre-
  1614.           cedence they are:
  1615.  
  1616.               (1) a command line argument
  1617.               (2) the personal configuration file
  1618.               (3) the system-wide configuration file
  1619.  
  1620.  
  1621.                            - 25 -
  1622.  
  1623.  
  1624.  
  1625.  
  1626.  
  1627.  
  1628.  
  1629.                   - Pine Technical Notes -
  1630.  
  1631.  
  1632.               (4) default in the source code.
  1633.  
  1634.           So, command line flags always take precedence over
  1635.           per-user  settings,  which  take  precedence  over
  1636.           system-wide  configuration  settings,  which  take
  1637.           precedence over source code defaults.  PC-Pine has
  1638.           the same precedence, but it does not us a  system-
  1639.           wide configuration file.
  1640.  
  1641.           You may get a sample/fresh copy of the system con-
  1642.           figuration file by running _p_i_n_e -_c_o_n_f.  The result
  1643.           will be printed on the standard output  with  com-
  1644.           ments   describing   each   variable.   Pine  will
  1645.           automatically create  the  personal  configuration
  1646.           file the first time it is run, so there is no need
  1647.           to generate a sample.  Pine reads and  writes  the
  1648.           personal  configuration  file  occasionally during
  1649.           normal operation.  The  user  may  add  additional
  1650.           comments  to  the  personal configuration file and
  1651.           they will be retained.  Pine  always  writes  this
  1652.           file  at  least  once when running so you can tell
  1653.           when a user last invoked Pine by checking the date
  1654.           on this file.
  1655.  
  1656.           References  to  environment   variables   may   be
  1657.           included in the Pine configuration file.  The for-
  1658.           mat is $_v_a_r_i_a_b_l_e or ${_v_a_r_i_a_b_l_e}.  The character  ~
  1659.           will  be  expanded  to the $_H_O_M_E environment vari-
  1660.           able.  Currently, most of these variables have  to
  1661.           be set by hand with an editor.
  1662.  
  1663.           When environment variables are used for Pine  set-
  1664.           tings  which  take  lists  (_f_e_a_t_u_r_e-_l_i_s_t,  _f_o_l_d_e_r-
  1665.           _c_o_l_l_e_c_t_i_o_n_s), you must have an  environment  vari-
  1666.           able  set for each member of the list.  Pine won't
  1667.           properly recognize  an  environment  variable  set
  1668.           equal  to  a  comma-delimitted  list.  It is OK to
  1669.           reference unset environment variables in the  Pine
  1670.           configuration file.
  1671.  
  1672.  
  1673.           _G_e_n_e_r_a_l _C_o_n_f_i_g_u_r_a_t_i_o_n _V_a_r_i_a_b_l_e_s
  1674.  
  1675.           The following variables can be found in  any  Pine
  1676.           configuration  file-be it UNIX or DOS, system-wide
  1677.           or personal.
  1678.  
  1679.  
  1680.           _u_s_e_r-_d_o_m_a_i_n
  1681.                Sets the domain or host name  for  the  user,
  1682.                overriding  the  system  host or domain name.
  1683.                See the domain name section.
  1684.  
  1685.                            - 26 -
  1686.  
  1687.  
  1688.  
  1689.  
  1690.  
  1691.  
  1692.  
  1693.                   - Pine Technical Notes -
  1694.  
  1695.  
  1696.           _u_s_e-_o_n_l_y-_d_o_m_a_i_n-_n_a_m_e
  1697.                Can be set to _y_e_s or _n_o.  At this point  any-
  1698.                thing  but  _y_e_s  means _n_o.  If set to _y_e_s the
  1699.                first label in the host name will  be  lopped
  1700.                off  to  get  the  domain name and the domain
  1701.                name will be used for outgoing mail and such.
  1702.                That    is,    if    the    host    name   is
  1703.                _c_a_r_s_o_n._u._e_x_a_m_p_l_e._e_d_u and this variable is set
  1704.                to  _y_e_s,  then  _u._e_x_a_m_p_l_e._e_d_u will be used on
  1705.                outgoing  mail.   Only  meaningful  if  _u_s_e_r-
  1706.                _d_o_m_a_i_n is NOT set.
  1707.  
  1708.  
  1709.           _i_n_b_o_x-_p_a_t_h
  1710.                This specifies the name of the folder to  use
  1711.                for the INBOX.  Normally this is unset so the
  1712.                system's default is used.   The  most  common
  1713.                reason  for  setting  this is to open an IMAP
  1714.                mailbox  for   the   INBOX.    For   example,
  1715.                {_i_m_a_p_5._u._e_x_a_m_p_l_e._e_d_u}_i_n_b_o_x   will   open  the
  1716.                user's standard _I_N_B_O_X  on  the  mail  server,
  1717.                imap5.
  1718.  
  1719.  
  1720.           _d_e_f_a_u_l_t-_f_c_c
  1721.                The name of the folder to which all  outgoing
  1722.                mail  goes  is  set  here.   The  compiled-in
  1723.                default  is  _s_e_n_t-_m_a_i_l  (UNIX)  or   _s_e_n_t_m_a_i_l
  1724.                (DOS).   It  can  be  set  to  "" (two double
  1725.                quotes with nothing between them) to turn off
  1726.                saving  copies  of  outgoing  mail.   If  the
  1727.                default-fcc is a relative filename,  then  it
  1728.                is  relative  to  your default collection for
  1729.                saves (see _f_o_l_d_e_r-_c_o_l_l_e_c_t_i_o_n_s).
  1730.  
  1731.  
  1732.           _s_m_t_p-_s_e_r_v_e_r
  1733.                One or more SMTP servers  (host  name  or  IP
  1734.                address)  which  Pine  will  use for outgoing
  1735.                mail.  If not set, Pine passes outgoing email
  1736.                to the _s_e_n_d_m_a_i_l program on the local machine.
  1737.                PC-Pine users must have this variable set  in
  1738.                order  to  send mail as they have no _s_e_n_d_m_a_i_l
  1739.                program.
  1740.  
  1741.  
  1742.           _i_m_a_g_e-_v_i_e_w_e_r
  1743.                This variable names the program to  call  for
  1744.                displaying  parts  of a MIME message that are
  1745.                of type image.  In a future version  of  Pine
  1746.                this  configuration  will  be replaced by the
  1747.                more general _m_a_i_l_c_a_p.
  1748.  
  1749.                            - 27 -
  1750.  
  1751.  
  1752.  
  1753.  
  1754.  
  1755.  
  1756.  
  1757.                   - Pine Technical Notes -
  1758.  
  1759.  
  1760.           _s_i_g_n_a_t_u_r_e-_f_i_l_e
  1761.                Names the file to be included as  the  signa-
  1762.                ture.   This defaults to ~/._s_i_g_n_a_t_u_r_e on UNIX
  1763.                and $_H_O_M_E\_P_I_N_E\_P_I_N_E._S_I_G on DOS.
  1764.  
  1765.  
  1766.           _m_a_i_l-_d_i_r_e_c_t_o_r_y
  1767.                This variable was more important in  previous
  1768.                versions of Pine.  Now it is used only as the
  1769.                directory for storing  postponed  and  inter-
  1770.                rupted  messages temporarily.  The default is
  1771.                ~/_m_a_i_l on UNIX and $_H_O_M_E\_M_A_I_L on DOS.
  1772.  
  1773.  
  1774.           _c_h_a_r_a_c_t_e_r-_s_e_t
  1775.                This sets the character set used by the  ter-
  1776.                minal.   Currently appropriate values are US-
  1777.                ASCII,  ISO-8859-1  through  ISO-8859-9   and
  1778.                ISO-2022-JP. See the section on international
  1779.                character sets for more details. The  default
  1780.                is US-ASCII.
  1781.  
  1782.  
  1783.           _i_n_c_o_m_i_n_g-_f_o_l_d_e_r_s
  1784.                This is a list of one or more  folders  other
  1785.                than  _I_N_B_O_X  that  may  receive new messages.
  1786.                This list is slightly special in that  it  is
  1787.                always expanded in the folder lister.  In the
  1788.                future, it  may  become  more  special.   For
  1789.                example, it would be nice if Pine would moni-
  1790.                tor the folders in this list for new mail.
  1791.  
  1792.  
  1793.           _f_o_l_d_e_r-_c_o_l_l_e_c_t_i_o_n_s
  1794.                This is a list of  one  or  more  collections
  1795.                where saved mail is stored.  See the sections
  1796.                describing folder collections and  collection
  1797.                syntax  for more information.  The first col-
  1798.                lection in this list is the  default  collec-
  1799.                tion for saves.
  1800.  
  1801.  
  1802.           _n_e_w_s-_c_o_l_l_e_c_t_i_o_n_s
  1803.                This is a  list  of  collections  where  news
  1804.                folders   are   located.    See  the  section
  1805.                describing collections for more information.
  1806.  
  1807.  
  1808.           _i_n_i_t_i_a_l-_k_e_y_s_t_r_o_k_e-_l_i_s_t
  1809.                This is a comma-separated list of  keystrokes
  1810.                which Pine executes on startup.  Items in the
  1811.                list are usually just characters,  but  there
  1812.                are some special values.  _S_P_A_C_E and _C_R mean a
  1813.  
  1814.  
  1815.                            - 28 -
  1816.  
  1817.  
  1818.  
  1819.  
  1820.  
  1821.  
  1822.  
  1823.                   - Pine Technical Notes -
  1824.  
  1825.  
  1826.                space  character  and  a   carriage   return,
  1827.                respectively.   _F_1  through _F_1_2 stand for the
  1828.                twelve function keys.  _U_P,  _D_O_W_N,  _L_E_F_T,  and
  1829.                _R_I_G_H_T  stand  for the arrow keys.  A restric-
  1830.                tion is that you can't mix function keys  and
  1831.                character  keys  in this list even though you
  1832.                can, in some cases,  mix  them  when  running
  1833.                Pine.   A  user  can always use all character
  1834.                keys in the startup list even if he or she is
  1835.                using function keys normally, or vice versa.
  1836.  
  1837.  
  1838.           _f_e_a_t_u_r_e-_l_i_s_t
  1839.                This is a list of  features  (options)  which
  1840.                should  be  turned  on.   You  may  also turn
  1841.                features off (the default) by prepending  the
  1842.                characters  _n_o-  to any of the features.  The
  1843.                _f_e_a_t_u_r_e-_l_i_s_t is additive.  That is, first the
  1844.                system-wide _f_e_a_t_u_r_e-_l_i_s_t is read and then the
  1845.                user's _f_e_a_t_u_r_e-_l_i_s_t is read.  This  makes  it
  1846.                possible  for the system manager to turn some
  1847.                of the features on  by  default  while  still
  1848.                allowing  the  user  to  cancel that default.
  1849.                However, some of  the  documentation  assumes
  1850.                that  all of the features are off by default,
  1851.                so use this with care.  Here is  the  current
  1852.                list of possible features with brief descrip-
  1853.                tions:
  1854.  
  1855.                    enable-full-header-cmd          _H_d_r_M_o_d_e command enabled
  1856.                    enable-unix-pipe-cmd            piping message to Unix enabled (not implemented yet)
  1857.                    enable-bounce-cmd               _B_o_u_n_c_e mail to someone else (not implemented yet)
  1858.                    enable-alternate-editor-cmd     ^_ command enabled
  1859.                    enable-suspend                  ^_Z job control enabled
  1860.                    enable-tab-completion           _T_A_B completion enabled for folder opening and saving
  1861.                    enable-jump-shortcut            can type just a number to _J_u_m_p in index
  1862.                    quit-without-confirm            won't ask for confirmation when quitting
  1863.                    enable-goto-cmd                 _G_o_t_o_F_l_d_r command enabled
  1864.                    enable-apply-cmd                _A_p_p_l_y command enabled (not implemented yet)
  1865.                    enable-flag-cmd                 _F_l_a_g command enabled (not implemented yet)
  1866.                    enable-zoom-cmd                 _Z_o_o_m command enabled
  1867.                    enable-forward-as-MIME          will ask if forwarded message should be attached
  1868.                    expanded-view-of-folders                folder lists pre-expanded in folder lister
  1869.                    use-function-keys               same as -_k flag
  1870.                    include-header-in-reply         when replying, include header lines from message
  1871.                    signature-at-bottom             signature comes at bottom instead of top
  1872.                    delete-skips-deleted            _D_e_l_e_t_e will skip to next undeleted message
  1873.  
  1874.  
  1875.  
  1876.           _s_o_r_t-_k_e_y
  1877.                This variable sets up the default index sort-
  1878.                ing.   The  default  is  to  sort  by arrival
  1879.  
  1880.  
  1881.                            - 29 -
  1882.  
  1883.  
  1884.  
  1885.  
  1886.  
  1887.  
  1888.  
  1889.                   - Pine Technical Notes -
  1890.  
  1891.  
  1892.                order.  It has the same functionality as  the
  1893.                -_s_o_r_t command line argument and the $ command
  1894.                in the folder index.  If a _s_o_r_t-_k_e_y  is  set,
  1895.                then all folders open during the session will
  1896.                have that as the default sort order.
  1897.  
  1898.  
  1899.           _s_a_v_e_d-_m_s_g-_n_a_m_e-_r_u_l_e
  1900.                Determines default folder name  when  saving.
  1901.                Currently,   Pine   will  accept  the  values
  1902.                "default-folder" or "by-sender".  If  set  to
  1903.                _d_e_f_a_u_l_t-_f_o_l_d_e_r,  then  Pine  will  offer  the
  1904.                folder "saved-messages" (UNIX) or  "SAVEMAIL"
  1905.                (DOS)  for  saving  messages.   If set to _b_y-
  1906.                _s_e_n_d_e_r, then Pine will offer to save the mes-
  1907.                sage  in  a  folder with the same name as the
  1908.                sender.  If set to  "last-folder-used",  then
  1909.                Pine  will  offer  to save in whatever folder
  1910.                you used previously.   We  expect  to  expand
  1911.                this list so that Pine can save messages with
  1912.                the rule "by recipient".
  1913.  
  1914.  
  1915.           _r_e_a_d-_m_e_s_s_a_g_e-_f_o_l_d_e_r
  1916.                If set, mail in the _I_N_B_O_X that has been  read
  1917.                but not deleted is moved here, or rather, the
  1918.                user is asked whether or not he or she  wants
  1919.                to move it here upon quitting Pine.
  1920.  
  1921.  
  1922.  
  1923.           _S_p_e_c_i_a_l _C_o_n_f_i_g_u_r_a_t_i_o_n _V_a_r_i_a_b_l_e_s
  1924.  
  1925.           Some configurations only make sense in  a  system-
  1926.           wide  file,  others  only make sense in a personal
  1927.           configuration file.  Also, there are certain  set-
  1928.           tings required in PC-Pine and others which make no
  1929.           sense there.  These are the variables you may need
  1930.           to  configure,  depending  on  which configuration
  1931.           file you are working with.
  1932.  
  1933.  
  1934.           _u_s_e_r-_i_d
  1935.                PC-Pine only.   Sets  the  username  that  is
  1936.                placed on all outgoing messages.
  1937.  
  1938.  
  1939.           _p_e_r_s_o_n_a_l-_n_a_m_e
  1940.                Personal  configuration  file  only.   User's
  1941.                full  personal  name.   On  UNIX systems, the
  1942.                default is taken from the accounts data  base
  1943.                (/etc/passwd).
  1944.  
  1945.                            - 30 -
  1946.  
  1947.  
  1948.  
  1949.  
  1950.  
  1951.  
  1952.  
  1953.                   - Pine Technical Notes -
  1954.  
  1955.  
  1956.           _p_r_i_n_t_e_r
  1957.                UNIX Pine only.  This is the current  setting
  1958.                for  a  user's printer.  This variable is set
  1959.                from  Pine's  printer-setup  function.    The
  1960.                value must be either
  1961.  
  1962.                    "attached-to-ansi"      -or-
  1963.                    the value of _p_e_r_s_o_n_a_l-_p_r_i_n_t-_c_o_m_m_a_n_d         -or-
  1964.                    the value of _s_t_a_n_d_a_r_d-_p_r_i_n_t_e_r from the system-wide configuration
  1965.  
  1966.  
  1967.  
  1968.           _s_t_a_n_d_a_r_d-_p_r_i_n_t_e_r
  1969.                System-wide configuration file only.   Speci-
  1970.                fies the command for printer selection number
  1971.                2 on the printer menu.
  1972.  
  1973.  
  1974.           _p_e_r_s_o_n_a_l-_p_r_i_n_t-_c_o_m_m_a_n_d
  1975.                UNIX personal configuration file only.   This
  1976.                corresponds  to  item  3 in the printer menu.
  1977.                This variable retains the value of  _p_e_r_s_o_n_a_l-
  1978.                _p_r_i_n_t-_c_o_m_m_a_n_d  when  the  printer  is  set to
  1979.                something other than item 3.   The  _p_e_r_s_o_n_a_l-
  1980.                _p_r_i_n_t-_c_o_m_m_a_n_d  can  be  set within Pine using
  1981.                the printer setup menu.
  1982.  
  1983.  
  1984.           _l_a_s_t-_t_i_m_e-_p_r_u_n_e-_q_u_e_s_t_i_o_n_e_d
  1985.                Personal configuration file only.  This vari-
  1986.                able  records  the  month  the  user was last
  1987.                asked if his/her sent-mail folders should  be
  1988.                pruned.   The   format  is  _y_y._m_m.   This  is
  1989.                automatically updated by Pine  when  the  the
  1990.                pruning is done or declined.
  1991.  
  1992.  
  1993.           _b_u_g_s-_n_i_c_k_n_a_m_e, _b_u_g_s-_f_u_l_l_n_a_m_e _a_n_d _b_u_g_s-_a_d_d_r_e_s_s
  1994.                System-wide configuration  file  only.   This
  1995.                trio  specifies an entry for the address book
  1996.                that is always inserted if found absent.   It
  1997.                is  a way to put the address to send requests
  1998.                for help to in  everyone's  address  book  so
  1999.                users  can  find  it  easily.   There  is  no
  2000.                default value.
  2001.  
  2002.  
  2003.           _e_d_i_t_o_r
  2004.                UNIX Pine only.  Sets the name of the  alter-
  2005.                nate  editor for composing mail (message text
  2006.                only, not headers). It will be  invoked  with
  2007.                the "^_" command.
  2008.  
  2009.                            - 31 -
  2010.  
  2011.  
  2012.  
  2013.  
  2014.  
  2015.  
  2016.  
  2017.                   - Pine Technical Notes -
  2018.  
  2019.  
  2020.           _l_a_s_t-_v_e_r_s_i_o_n-_u_s_e_d
  2021.                Personal configuration file  only.   This  is
  2022.                set  automatically  by  Pine.   It is used to
  2023.                keep track of the last version of  Pine  that
  2024.                was  run  by  the user.  Whenever the version
  2025.                changes, a new  version  message  is  printed
  2026.                out.   If  you  toggle back and forth between
  2027.                two versions you'll  get  the  message  every
  2028.                time, since it just checks for equality.
  2029.  
  2030.  
  2031.  
  2032.  
  2033.           _R_e_t_i_r_e_d _V_a_r_i_a_b_l_e_s
  2034.  
  2035.           Variables that are no longer used by  the  current
  2036.           Pine   version.   When  an  obsolete  variable  is
  2037.           encountered, its  value  is  applied  to  any  new
  2038.           corresponding  setting  and  a  comment  is  place
  2039.           before it noting that it is  no  longer  in  used.
  2040.           Several of the replaced values at the time of this
  2041.           document include:
  2042.  
  2043.  
  2044.           _e_l_m-_s_t_y_l_e-_s_a_v_e
  2045.                Replaced by _s_a_v_e_d-_m_s_g-_n_a_m_e-_r_u_l_e
  2046.  
  2047.  
  2048.           _h_e_a_d_e_r-_i_n-_r_e_p_l_y
  2049.                Replaced by  _i_n_c_l_u_d_e-_h_e_a_d_e_r-_i_n-_r_e_p_l_y  in  the
  2050.                _f_e_a_t_u_r_e-_l_i_s_t.
  2051.  
  2052.  
  2053.           _f_e_a_t_u_r_e-_l_e_v_e_l
  2054.                Replaced by _f_e_a_t_u_r_e-_l_i_s_t.
  2055.  
  2056.  
  2057.           _o_l_d-_s_t_y_l_e-_r_e_p_l_y
  2058.                Replaced  by   _s_i_g_n_a_t_u_r_e-_a_t-_b_o_t_t_o_m   in   the
  2059.                _f_e_a_t_u_r_e-_l_i_s_t.
  2060.  
  2061.  
  2062.           _s_a_v_e-_b_y-_s_e_n_d_e_r
  2063.                Replaced by _s_a_v_e_d-_m_s_g-_n_a_m_e-_r_u_l_e.
  2064.  
  2065.  
  2066.  
  2067.           _P_i_n_e _i_n _F_u_n_c_t_i_o_n _K_e_y _M_o_d_e
  2068.  
  2069.           The standard Pine uses alphabetic  keys  for  most
  2070.           commands,   and  control  keys  in  the  composer.
  2071.           Despite possible appearances, the current bindings
  2072.           are  the  result  of  much discussion and thought.
  2073.  
  2074.  
  2075.                            - 32 -
  2076.  
  2077.  
  2078.  
  2079.  
  2080.  
  2081.  
  2082.  
  2083.                   - Pine Technical Notes -
  2084.  
  2085.  
  2086.           All the commands in the composer are  single  con-
  2087.           trol  characters.  This keeps things very neat and
  2088.           simple for users.  Two character commands  in  the
  2089.           composer  are  a  possibility, but we're trying to
  2090.           avoid them because of the added complexity for the
  2091.           user.
  2092.  
  2093.           Pine can also operate in a function-key mode.   To
  2094.           go  into this mode invoke _p_i_n_e -_k or (on some UNIX
  2095.           systems) _p_i_n_e_f.  On a UNIX system, you can link or
  2096.           copy  the  _p_i_n_e  executable  to  _p_i_n_e_f  to install
  2097.           _p_i_n_e_f.  Alternatively, users and systems  adminis-
  2098.           trators  can  set the _u_s_e-_f_u_n_c_t_i_o_n-_k_e_y_s feature in
  2099.           the personal  or  system-wide  Pine  configuration
  2100.           file.   The  command  menus  at  the bottom of the
  2101.           screen will show _F_1-_F_1_2 instead of the  alphabetic
  2102.           commands.   In  addition, the help screens will be
  2103.           written in terms of function keys and  not  alpha-
  2104.           betic keys.
  2105.  
  2106.           One of the results of using Pine  in  function-key
  2107.           mode  is  that  users  can only choose from twelve
  2108.           commands at any  given  time.   In  alphabetic-key
  2109.           mode, a user can press a key for a command (say, q
  2110.           to quit) and that command can  be  fulfilled.   In
  2111.           function-key  mode, the command must be visible on
  2112.           the bottom key-menu in order to  be  used.   There
  2113.           are  some  screens  where  34  commands are opera-
  2114.           tional; function-key users can get to all of them,
  2115.           just not all at once.
  2116.  
  2117.  
  2118.           _D_o_m_a_i_n _S_e_t_t_i_n_g_s
  2119.  
  2120.           Pine uses the default domain for a  few  different
  2121.           tasks.   First,  it is tacked onto the user-id for
  2122.           outgoing email.  Second, it  is  tacked  onto  all
  2123.           "local"  addresses in the "To:" or "Cc:" fields of
  2124.           messages being composed.  The domain name is  also
  2125.           used  to generate message-id lines for each outgo-
  2126.           ing message and to  allow  Pine  to  check  if  an
  2127.           address is that of the current Pine user.
  2128.  
  2129.           Pine  determines  the  domain  name  according  to
  2130.           whichever  of  these it finds. The list here is in
  2131.           decreasing order of precedence.
  2132.  
  2133.                (1) Value of the variable  _u_s_e_r-_d_o_m_a_i_n  in  a
  2134.                personal configuration file
  2135.  
  2136.                (2) Value of the variable  _u_s_e_r-_d_o_m_a_i_n  is  a
  2137.                system-wide configuration file
  2138.  
  2139.                            - 33 -
  2140.  
  2141.  
  2142.  
  2143.  
  2144.  
  2145.  
  2146.  
  2147.                   - Pine Technical Notes -
  2148.  
  2149.  
  2150.                (3) Value from a local configuration database
  2151.                (/_e_t_c/_h_o_s_t_s,  DNS, NIS) as modified by a per-
  2152.                sonal configuration file if  _u_s_e-_d_o_m_a_i_n-_n_a_m_e-
  2153.                _o_n_l_y set to "yes"
  2154.  
  2155.                (4) Value from a local configuration database
  2156.                (/_e_t_c/_h_o_s_t_s,  DNS, NIS) as modified by a sys-
  2157.                tem configuration  file  if  _u_s_e-_d_o_m_a_i_n-_n_a_m_e-
  2158.                _o_n_l_y set to "yes"
  2159.  
  2160.                (5) Unmodified value from a local  configura-
  2161.                tion database
  2162.  
  2163.  
  2164.           The easiest way for this system  to  work  is  for
  2165.           PC-Pine  users and UNIX Pine system administrators
  2166.           to set the  _u_s_e_r-_d_o_m_a_i_n  variable.   The  variable
  2167.           _u_s_e-_d_o_m_a_i_n-_n_a_m_e-_o_n_l_y   is  helpful  if  your  site
  2168.           supports/requires hostless addressing but for some
  2169.           reason you don't want to use the _u_s_e_r-_d_o_m_a_i_n vari-
  2170.           able.
  2171.  
  2172.  
  2173.  
  2174.           _S_y_n_t_a_x _f_o_r _C_o_l_l_e_c_t_i_o_n_s
  2175.  
  2176.           In many environments, it is quite common  to  have
  2177.           collections  of  archived  mail  on  various hosts
  2178.           around the network.   Using  the  new  collections
  2179.           facility  within Pine, access to these archives is
  2180.           just as simple as  access  to  folders  on  Pine's
  2181.           local disk.
  2182.  
  2183.           "Collection"  is  the  word  we  use  in  Pine  to
  2184.           describe  a  set  of  folders.  Folders  within  a
  2185.           defined collection  can  be  manipulated  (opened,
  2186.           saved-to,  etc) using just their simple name.  Any
  2187.           number of folder collections can be  defined,  and
  2188.           pine  will  adjust  its  menus and prompts to help
  2189.           navigate them.
  2190.  
  2191.           The way collections are defined in  Pine  is  with
  2192.           the _f_o_l_d_e_r-_c_o_l_l_e_c_t_i_o_n_s variable in the Pine confi-
  2193.           guration file.  _F_o_l_d_e_r-_c_o_l_l_e_c_t_i_o_n_s takes a list of
  2194.           one  or  more  collections, each (optionally) pre-
  2195.           ceded by a user-defined logical name.   Once  col-
  2196.           lections  are  defined, Pine adjusts its menus and
  2197.           behavior to allow choosing files by  their  simple
  2198.           name   within  the  collection.   Collections  are
  2199.           always defined in the configuration file; there is
  2200.           no  time  that Pine will ever ask a question which
  2201.           requires a user to input a collection specifier.
  2202.  
  2203.                            - 34 -
  2204.  
  2205.  
  2206.  
  2207.  
  2208.  
  2209.  
  2210.  
  2211.                   - Pine Technical Notes -
  2212.  
  2213.  
  2214.           Consider the following:
  2215.  
  2216.                  folder-collections=  Local-Mail      C:MAIL[],
  2217.                                       Remote-Mail     {imap.u.example.edu}mail/[]
  2218.  
  2219.  
  2220.           The example shows two collections defined (a comma
  2221.           separated  list;  newlines  in  the list are OK if
  2222.           there's one or more spaces before the next entry),
  2223.           one  local  and  one remote.  Each collection is a
  2224.           space-delimited pair of elements-first an optional
  2225.           logical-name  and second the collection specifier.
  2226.           The logical-name can have spaces if it has  quotes
  2227.           around  it (but keeping the logical name short and
  2228.           descriptive  works  best).  Pine  will   use   the
  2229.           logical-name  (if provided) to reference all fold-
  2230.           ers in the collection, so the user  never  has  to
  2231.           see the ugliness of the collection specifier.
  2232.  
  2233.           The collection specifier can be thought of  as  an
  2234.           extended  IMAP  format  (see  the "Remote Folders"
  2235.           section for a description of IMAP  format  names).
  2236.           Basically, a pair of square-brackets are placed in
  2237.           the fully qualified IMAP  path  where  the  simple
  2238.           folder  name  (the  part  without the hostname and
  2239.           path) would appear.  Like IMAP, the  path  can  be
  2240.           either  fully qualified (i.e., with a leading '/')
  2241.           or relative to your home directory.
  2242.  
  2243.           An advanced feature of this  notation  is  that  a
  2244.           pattern within the square brackets allows the user
  2245.           to define a collection to be a subset of a  direc-
  2246.           tory.   For example, a collection defined with the
  2247.           specifier:
  2248.  
  2249.                                       M-Mail          C:MAIL[m*]
  2250.  
  2251.           will provide a view in the folder  lister  of  all
  2252.           folders  in the PC's "C:MAIL" directory that start
  2253.           with the letter 'm' (case insensitive  under  DOS,
  2254.           of  course).   Further, the wildcard matching will
  2255.           honor characters trailing the '*' in the pattern.
  2256.  
  2257.           From within Pine, the FOLDER LIST display will  be
  2258.           adjusted  to  allow browsing of the folders in any
  2259.           defined collection.  Even more, you'll  notice  in
  2260.           the  Goto  and  Save  commands  a pair of new sub-
  2261.           commands to toggle through  the  list  of  logical
  2262.           collection  names,  so  only a simple name need be
  2263.           used to operate on a folder in any collection.
  2264.  
  2265.           The first  collection  specified  in  the  _f_o_l_d_e_r-
  2266.           _c_o_l_l_e_c_t_i_o_n_s has special signifigance.  That folder
  2267.  
  2268.  
  2269.                            - 35 -
  2270.  
  2271.  
  2272.  
  2273.  
  2274.  
  2275.  
  2276.  
  2277.                   - Pine Technical Notes -
  2278.  
  2279.  
  2280.           is the "default collection for saves".   In  cases
  2281.           where  the  user does not specify which collection
  2282.           should be used to save a message, the default col-
  2283.           lection  for  saves  will  be  used.  Also, if the
  2284.           _d_e_f_a_u_l_t-_f_c_c is a relative file name,  then  it  is
  2285.           relative to the default collection for saves.
  2286.  
  2287.           The notion of collections encompasses  both  email
  2288.           folders  and news reading.  The current version of
  2289.           Pine supports very basic news reading.  The  vari-
  2290.           able  _n_e_w_s-_c_o_l_l_e_c_t_i_o_n_s uses nearly the same format
  2291.           as _f_o_l_d_e_r-_c_o_l_l_e_c_t_i_o_n_s.  Newsgroups can be  defined
  2292.           for  convenient  access  via  either IMAP or NNTP.
  2293.           There are advantages  and  disadvantages  to  both
  2294.           access  methods.   In  the  IMAP  case,  your news
  2295.           environment state is maintained on the server and,
  2296.           thus, will be seen by any client.  The downside is
  2297.           that, at the moment, you must have an  account  on
  2298.           the  server.   In  the NNTP case, server access is
  2299.           mostly anonymous and no state/accounting  need  be
  2300.           maintained  on  it.   The  downside  is  that each
  2301.           client, for now, must individually  maintain  news
  2302.           environment state.
  2303.  
  2304.           An example pinerc entry might be:
  2305.  
  2306.                    news-collections=  Remote-State    *{news.u.example.edu}[],
  2307.                                       Local-State     *{news.u.example.edu/nntp}[]
  2308.  
  2309.           Note that each news collection must be preceded by
  2310.           a  '*'  to  indicate  non-mail access.  Only news-
  2311.           groups to which you are subscribed are included in
  2312.           the collection.
  2313.  
  2314.           The pattern matching facility can be applied so as
  2315.           to  define  a news collection which is a subset of
  2316.           all the newsgroups you subscribe to.  For example,
  2317.           this could be a valid collection:
  2318.  
  2319.                                       Newsfeed-News   *{news.u.example.edu/nntp}[clari.*]
  2320.  
  2321.  
  2322.           We are in the process of fleshing out news reading
  2323.           (subscription  management,  quasi-threading,  etc)
  2324.           and hope to make it available as  early  as  Fall,
  2325.           1993.
  2326.  
  2327.           Collection handling is a tough problem to solve in
  2328.           a  general  way, and the explanation of the syntax
  2329.           is a bit ugly.  The upside is, hopefully, that for
  2330.           a little complexity in the Pine configuration file
  2331.           you get simple management of multiple  folders  in
  2332.           diverse locations.
  2333.  
  2334.  
  2335.                            - 36 -
  2336.  
  2337.  
  2338.  
  2339.  
  2340.  
  2341.  
  2342.  
  2343.                   - Pine Technical Notes -
  2344.  
  2345.  
  2346.           _S_y_n_t_a_x _f_o_r _R_e_m_o_t_e _F_o_l_d_e_r_s
  2347.  
  2348.           Remote folders are distinguished from local  fold-
  2349.           ers  by  a  leading  hostname bracketed by '{' and
  2350.           '}'.  The path and folder name immediately follow-
  2351.           ing  the  closing  bracket, '}', is interpreted by
  2352.           the IMAP server and is in a form  compatible  with
  2353.           that server (i.e., path delimiters and naming syn-
  2354.           tax relative to that server).
  2355.  
  2356.           Typically, a folder name without any path descrip-
  2357.           tion  is  understood to reside in the user's "home
  2358.           directory" (i.e., in some way the user's personal,
  2359.           writable file area), as are incomplete path desig-
  2360.           nations.  An example of a remote folder specifica-
  2361.           tion would be,
  2362.  
  2363.                       {mailhost.cac.washington.edu}mail/saved-messages
  2364.  
  2365.           This  example  simply  specifies  a  folder  named
  2366.           "saved-messages"     on     the     imap    server
  2367.           "mailhost.cac.washington.edu", in the "mail"  sub-
  2368.           directory  of  the  user's  home  directory.  Easy
  2369.           isn't it?
  2370.  
  2371.           To confuse things a bit, qualifiers  are  permited
  2372.           within  the  brackets  following  the  host  name.
  2373.           These qualifiers consist of a slash, '/' character
  2374.           followed  by a keyword or keyword and value equal-
  2375.           ity, and have the effect of modifying how the con-
  2376.           nection is made to the host specified.  An example
  2377.           of such a specification might be,
  2378.  
  2379.                   *{pine.cac.washington.edu/anonymous}updates
  2380.  
  2381.               Another example might be,
  2382.  
  2383.                   *{news.u.washington.edu/nntp}comp.mail.mime
  2384.  
  2385.  
  2386.           Both  of these examples illustrate a different
  2387.           qualifier.  The first, specifying  "anonymous"
  2388.           access     to     the     IMAP    server    on
  2389.           "pine.cac.washington.edu".  The second is  in-
  2390.           teresting  in  that it specifies an altogether
  2391.           different access method: access via  the  Net-
  2392.           work News Transport Protocol (NNTP).  Both ex-
  2393.           amples bring to light one remaining  subtlety.
  2394.           The leading "*" tells pine to treat the remote
  2395.           folder as a Bulletin-Board (i.e., typically  a
  2396.           shared, read-only resource) and to adjusts its
  2397.           behavior accordingly.
  2398.  
  2399.                            - 37 -
  2400.  
  2401.  
  2402.  
  2403.  
  2404.  
  2405.  
  2406.  
  2407.                   - Pine Technical Notes -
  2408.  
  2409.  
  2410.           _S_o_r_t_i_n_g _a _F_o_l_d_e_r
  2411.  
  2412.           The mail index may be sorted by subject, size,
  2413.           sender,  date,  or  arrival  order.  Each sort
  2414.           order can also be  reversed.   The  $  command
  2415.           will  prompt the user for the sort order.  The
  2416.           sort order can also be specified on  the  com-
  2417.           mand  line with the -_s_o_r_t flag or (equivalent-
  2418.           ly) with the _s_o_r_t-_k_e_y variable in the  ._p_i_n_e_r_c
  2419.           file.   When  a user changes folders, the sort
  2420.           order will go back to the original sort order.
  2421.           The command line (-_s_o_r_t) or configuration file
  2422.           sort specification (_s_o_r_t-_k_e_y) changes the ori-
  2423.           ginal sort order.
  2424.  
  2425.           When a folder is sorted and new  mail  arrives
  2426.           in the folder it will be inserted in its prop-
  2427.           erly sorted place.  This can be a  little  odd
  2428.           when  the  folder  is sorted by something like
  2429.           the subject.  It can also be a little slow  if
  2430.           you  are  viewing a large, sorted INBOX, since
  2431.           the INBOX will have to be  re-sorted  whenever
  2432.           new mail arrives.
  2433.  
  2434.           The sorts are all independent of case and  ig-
  2435.           nore  leading  or  trailing  white space.  The
  2436.           subject sort ignores "Re:"  at  the  beginning
  2437.           and  "(fwd)"  at  the end.  The sort by sender
  2438.           sorts by the userid, not the full  name.   The
  2439.           arrival  sort  is basically no sort at all and
  2440.           the date sort depends on  the  format  of  the
  2441.           date.   Some  dates are in strange formats and
  2442.           are unparsable.  The time zone is  also  taken
  2443.           into account.
  2444.  
  2445.           Sorting large mail folders can  be  very  slow
  2446.           since  it requires fetching all the headers of
  2447.           the mail messages.  With UNIX Pine,  only  the
  2448.           first  sort is slow since Pine keeps a copy of
  2449.           all the headers.  One exception is sorting  in
  2450.           reverse  arrival  order.  This is fast because
  2451.           no headers have to  be  examined.   Pine  will
  2452.           show progress as it is sorting.
  2453.  
  2454.  
  2455.           _A_l_t_e_r_n_a_t_e _E_d_i_t_o_r
  2456.  
  2457.           In the Pine composer you can use any text edi-
  2458.           tor,  such  as  _v_i or _e_m_a_c_s, for composing the
  2459.           message text.  The addresses and subject still
  2460.           must  be  edited  using the standard Pine com-
  2461.           poser.  It operates in one of  two  ways.   If
  2462.           you   include  the  feature  _e_n_a_b_l_e-_a_l_t_e_r_n_a_t_e-
  2463.  
  2464.  
  2465.                            - 38 -
  2466.  
  2467.  
  2468.  
  2469.  
  2470.  
  2471.  
  2472.  
  2473.                   - Pine Technical Notes -
  2474.  
  2475.  
  2476.           _e_d_i_t_o_r-_c_m_d in your ._p_i_n_e_r_c  you  can  type  ^_
  2477.           while  in the composer and be prompted for the
  2478.           editor.  If you also set the  _e_d_i_t_o_r  variable
  2479.           in  your  ._p_i_n_e_r_c then ^_ will invoke the con-
  2480.           figured editor when you type it.
  2481.  
  2482.           We know that many people would like to use the
  2483.           custom editor to edit the mail header as well.
  2484.           We considered several  designs  for  this  and
  2485.           didn't come up with one that we liked and that
  2486.           was easy to implement.  One of the main  prob-
  2487.           lems  is  that  you lose access to the address
  2488.           book.  We also  understand  that  many  people
  2489.           would  like an option for the alternate editor
  2490.           to be invoked automatically.  There will prob-
  2491.           ably be further discussion on this!
  2492.  
  2493.  
  2494.           _S_i_g_n_a_t_u_r_e_s _a_n_d _S_i_g_n_a_t_u_r_e _P_l_a_c_e_m_e_n_t
  2495.  
  2496.           If   the   file   ~/._s_i_g_n_a_t_u_r_e    (UNIX)    or
  2497.           $_H_O_M_E\_P_I_N_E\_P_I_N_E._S_I_G  (DOS)  exists, it will be
  2498.           included in all outgoing messages.  It is  in-
  2499.           cluded  before  composition starts so that the
  2500.           user has a chance to edit it out if he or  she
  2501.           likes.  The file name for the signature can be
  2502.           changed by setting the _s_i_g_n_a_t_u_r_e-_f_i_l_e variable
  2503.           in  the ._p_i_n_e_r_c.  There is no way to have Pine
  2504.           include different signatures in different out-
  2505.           going messages automatically.  You can do this
  2506.           by hand, however, by having multiple signature
  2507.           files  (.sig1, .sig2, .sig3, etc) and choosing
  2508.           to include (^R in the  composer)  the  correct
  2509.           one for the message being sent.
  2510.  
  2511.           Pine encourages the user to  put  his  or  her
  2512.           contribution  before the inclusion of the ori-
  2513.           ginal text of the message being  forwarded  or
  2514.           replied  to,  This is contrary to some conven-
  2515.           tions, but makes the conversation  more  read-
  2516.           able  when a long original message is included
  2517.           in a reply for context.   The  reader  doesn't
  2518.           have  to scroll through the original text that
  2519.           he or she has probably already  seen  to  find
  2520.           the new text.  If the reader wishes to see the
  2521.           old message(s), the reader can scroll  further
  2522.           into  the  message.   Users  who perfer to add
  2523.           their input at the end of  a  messaage  should
  2524.           set  the  _s_i_g_n_a_t_u_r_e-_a_t-_b_o_t_t_o_m  feature  in the
  2525.           _f_e_a_t_u_r_e-_l_i_s_t.  The signature will then be  ap-
  2526.           pended to the end of the message after any in-
  2527.           cluded text.
  2528.  
  2529.                            - 39 -
  2530.  
  2531.  
  2532.  
  2533.  
  2534.  
  2535.  
  2536.  
  2537.                   - Pine Technical Notes -
  2538.  
  2539.  
  2540.           _F_e_a_t_u_r_e _L_i_s_t _V_a_r_i_a_b_l_e
  2541.  
  2542.           Pine used to have  _f_e_a_t_u_r_e  _l_e_v_e_l_s  for  users
  2543.           with  different  amounts  of  experience.   We
  2544.           found that this was too restrictive.  Pine now
  2545.           has  a  _f_e_a_t_u_r_e-_l_i_s_t instead.  The old feature
  2546.           _f_e_a_t_u_r_e-_l_e_v_e_l=_o_l_d-_g_r_o_w_t_h is still supported as
  2547.           a  macro  by  translating it into a particular
  2548.           set of features, but it is now  also  possible
  2549.           for   each  user  to  pick  and  choose  which
  2550.           features  they  would  like   enabled.    More
  2551.           features  (options)  will no doubt continue to
  2552.           be added.
  2553.  
  2554.  
  2555.  
  2556.           _A_d_d_i_t_i_o_n_a_l _N_o_t_e_s _o_n _P_C-_P_i_n_e
  2557.  
  2558.           Below are a few odds and ends worth mentioning
  2559.           about  PC-Pine.   They  have  to  do with DOS-
  2560.           specific behavior that is either necessary  or
  2561.           useful (and sometimes both!).
  2562.  
  2563.           As PC-Pine runs in an environment with limited
  2564.           access control, accounting or auditing, either
  2565.           of two additional lines are automatically  in-
  2566.           serted  into  the header of mail messages gen-
  2567.           erated by PC-Pine.  These lines are
  2568.  
  2569.                       X-Warning: UNAuthenticated Sender
  2570.  
  2571.               and
  2572.  
  2573.                           X-Sender: <userid>@<imap.host>
  2574.  
  2575.  
  2576.           Which of the two headers is  inserted  depends
  2577.           on  whether  a successful imapd login has been
  2578.           established at the time the message  is  sent.
  2579.           This feature can only be disabled by recompil-
  2580.           ing PC-Pine.  Also, this should  not  be  con-
  2581.           sidered a rigorous form of authentication.  It
  2582.           is extremely lightweight, and  is  not  a  re-
  2583.           placement for true authentication.
  2584.  
  2585.           Hand in hand with authentication and  account-
  2586.           ing  is user information. Since PC-Pine has no
  2587.           user  database   to   consult   for   user-id,
  2588.           personal-name,   etc.,  necessary  information
  2589.           must be provided by the user/installer  before
  2590.           PC-Pine  can properly construct the "From" ad-
  2591.           dress required for outbound messages.  As  re-
  2592.           quired editing of the _P_I_N_E_R_C is somewhat clum-
  2593.  
  2594.  
  2595.                            - 40 -
  2596.  
  2597.  
  2598.  
  2599.  
  2600.  
  2601.  
  2602.  
  2603.                   - Pine Technical Notes -
  2604.  
  2605.  
  2606.           sy, PC-Pine will, by default, prompt  for  the
  2607.           requisite pieces as they are needed.  This in-
  2608.           formation corresponds to the _P_I_N_E_R_C  variables
  2609.           user-id,   personal-name,   user-domain,   and
  2610.           smtp-server.
  2611.  
  2612.           The user is then asked whether or not this in-
  2613.           formation should automatically be saved to the
  2614.           _P_I_N_E_R_C.  This is useful behavior  in  general,
  2615.           but  can  lead  to  problems in a lab or other
  2616.           shared environment.  Hence, these prompts  and
  2617.           automatic   saving  of  configuration  can  be
  2618.           turned off on an entry by entry basis by  set-
  2619.           ting  any of the above values in the _P_I_N_E_R_C to
  2620.           the  null  string  (i.e.,  a  pair  of  double
  2621.           quotes).   This  means  that  the user will be
  2622.           prompted for the information once during  each
  2623.           pine  session, and no opportunity to save them
  2624.           in the _P_I_N_E_R_C will be offered.
  2625.  
  2626.  
  2627.           Along similar lines, a  feature  allowing  au-
  2628.           tomatic  login  to  the imap-server containing
  2629.           the user's  _I_N_B_O_X  has  also  been  requested.
  2630.           This  feature  is  not enabled by default, but
  2631.           requires  the  existance  of  the  file  named
  2632.           _P_I_N_E._P_W_D  in the same directory as the _P_I_N_E_R_C.
  2633.           Even with the existance of this file, the user
  2634.           must  still  acknowledge  a  prompt before the
  2635.           password is saved to the file.
  2636.  
  2637.           _W_A_R_N_I_N_G!  Use this feature  with  caution!  It
  2638.           effectively  makes  the  user's  mail  no more
  2639.           secure  than  the  physical  security  of  the
  2640.           machine  running  PC-Pine.  What's more, while
  2641.           the password is cloaked by a mild (some  might
  2642.           say, feeble) encryption scheme, it is nonethe-
  2643.           less sitting in a file on the  PC's  disk  and
  2644.           subject  to  cracking by anyone with access to
  2645.           it.  _B_E_W_A_R_E!
  2646.  
  2647.  
  2648.           Another feature of DOS is the lack of standard
  2649.           scratch  area for temporary files.  During the
  2650.           course  of  a  session,  PC-Pine  may  require
  2651.           numerous temporary files (large message texts,
  2652.           various caches, etc.).  Where to  create  them
  2653.           can  be  a  problem, particularly when running
  2654.           under certain network operating systems.   PC-
  2655.           Pine  observes  the  _T_M_P  and _T_E_M_P environment
  2656.           variables, and creates temporary files in  the
  2657.           directory  specified  by either.  In their ab-
  2658.           sense, PC-Pine creates these files in the root
  2659.  
  2660.  
  2661.                            - 41 -
  2662.  
  2663.  
  2664.  
  2665.  
  2666.  
  2667.  
  2668.  
  2669.                   - Pine Technical Notes -
  2670.  
  2671.  
  2672.           of the current working drive.
  2673.  
  2674.  
  2675.  
  2676.  
  2677.  
  2678.  
  2679.  
  2680.  
  2681.  
  2682.  
  2683.  
  2684.  
  2685.  
  2686.  
  2687.  
  2688.  
  2689.  
  2690.  
  2691.  
  2692.  
  2693.  
  2694.  
  2695.  
  2696.  
  2697.  
  2698.  
  2699.  
  2700.  
  2701.  
  2702.  
  2703.  
  2704.  
  2705.  
  2706.  
  2707.  
  2708.  
  2709.  
  2710.  
  2711.  
  2712.  
  2713.  
  2714.  
  2715.  
  2716.  
  2717.  
  2718.  
  2719.  
  2720.  
  2721.  
  2722.  
  2723.  
  2724.  
  2725.                            - 42 -
  2726.  
  2727.  
  2728.  
  2729.  
  2730.  
  2731.  
  2732.  
  2733.                   - Pine Technical Notes -
  2734.  
  2735.  
  2736.                    _S_e_c_t_i_o_n _6-_B_e_h_i_n_d _t_h_e _S_c_e_n_e_s
  2737.  
  2738.  
  2739.  
  2740.           Many people ask how certain Pine features  are
  2741.           implemented.   This  section  outlines some of
  2742.           the more interesting details.  For more infor-
  2743.           mation,  you  would have to ask the developers
  2744.           or take a look at the source code.
  2745.  
  2746.  
  2747.  
  2748.           _A_d_d_r_e_s_s _B_o_o_k_s
  2749.  
  2750.           The address book is stored in the user's  home
  2751.           directory  in  the file ._a_d_d_r_e_s_s_b_o_o_k (UNIX) or
  2752.           in the \_P_I_N_E directory as  the  file  _A_D_D_R_B_O_O_K
  2753.           (DOS).   In either case, the address book is a
  2754.           simple text file.  The lines are of  the  for-
  2755.           mat:
  2756.  
  2757.                         <nickname>TAB<fullname>TAB<address>
  2758.  
  2759.               If the entry is an address list then <address> is of the format:
  2760.  
  2761.                             (<address>,<address>,<address>,......)
  2762.  
  2763.                   Normally entries are one per line unless it is a list and then the
  2764.                   entry extends until the closing parenthesis.
  2765.                   If lines are encountered
  2766.                   in the address book that don't fit the format (they don't have
  2767.                   two tabs) they are ignored.
  2768.                   An older format is also supported where
  2769.                   the address lists don't have parentheses.
  2770.                   Spaces are not allowed in nick names.
  2771.  
  2772.           Entries in the address book may refer to other
  2773.           entries  in  the  address  book.  Lists may be
  2774.           nested.  If addresses refer to each other in a
  2775.           loop  this  is  detected and flagged.  The ad-
  2776.           dress will be changed to  "****  address  loop
  2777.           ****".
  2778.  
  2779.           The address book file  is  rewritten  by  Pine
  2780.           frequently  in  the format it thinks proper so
  2781.           comments or other formatting introduced with a
  2782.           text editor will not be maintained.
  2783.  
  2784.           The address book format is simple, so  writing
  2785.           script  and  programs to modify and/or convert
  2786.           address books should  be  simple.   Some  such
  2787.           conversion  programs  are included in the Pine
  2788.           distribution in the _c_o_n_t_r_i_b directory.
  2789.  
  2790.  
  2791.                            - 43 -
  2792.  
  2793.  
  2794.  
  2795.  
  2796.  
  2797.  
  2798.  
  2799.                   - Pine Technical Notes -
  2800.  
  2801.  
  2802.           The address book is kept sorted  in  order  by
  2803.           the  full name field.  In order for this to be
  2804.           sensible the full names should be  last  name,
  2805.           then  comma,  then  first name.  Pine makes an
  2806.           attempt to encourage use of this  format.   It
  2807.           will  reverse the order of any names that have
  2808.           a single comma in them when they  are  in  ad-
  2809.           dresses  on  outgoing  mail so that it will be
  2810.           formatted first name followed  by  last  name.
  2811.           The  _T_a_k_e_A_d_d_r  command that captures addresses
  2812.           off incoming messages also attempts to reverse
  2813.           the  name as it is inserted, though it doesn't
  2814.           always succeed.  The way it works can probably
  2815.           be improved.
  2816.  
  2817.           When the address book is written  out,  it  is
  2818.           first  written to a temporary file and if that
  2819.           write is successful it is  renamed  correctly.
  2820.           This  guards  against  errors writing the file
  2821.           that might destroy  the  whole  address  book.
  2822.           The address book is written after each change.
  2823.  
  2824.           There are two "known weaknesses" in  the  Pine
  2825.           address  book  scheme-both  of which are being
  2826.           worked on. First, a user can only have  1  ad-
  2827.           dress  book.  There is no way to have a global
  2828.           (system-wide) address book and a personal one.
  2829.           Secondly, the address book must be on the same
  2830.           machine as Pine.  You cannot, at  the  moment,
  2831.           share  an  address  book  between Pine and PC-
  2832.           Pine.
  2833.  
  2834.  
  2835.           _C_h_e_c_k_p_o_i_n_t_i_n_g
  2836.  
  2837.           Periodically Pine will  save  the  whole  mail
  2838.           folder  to disk to prevent loss of any mail or
  2839.           mail status in the case that Pine gets  inter-
  2840.           rupted,  disconnected, or crashes.  The period
  2841.           of time Pine waits to  do  the  checkpoint  is
  2842.           calculated  to  be  minimally  intrusive.  The
  2843.           timing can be changed (but usually  isn't)  at
  2844.           compile  time.   Folder  checkpointing happens
  2845.           for both local folders  and  those  being  ac-
  2846.           cessed with IMAP.  The delays are divided into
  2847.           three categories:
  2848.  
  2849.  
  2850.           Good Time:     This occurs when Pine has  been
  2851.                          idle  for more than 30 seconds.
  2852.                          In this case Pine  will  check-
  2853.                          point if 12 changes to the file
  2854.                          have been made or at least  one
  2855.  
  2856.  
  2857.                            - 44 -
  2858.  
  2859.  
  2860.  
  2861.  
  2862.  
  2863.  
  2864.  
  2865.                   - Pine Technical Notes -
  2866.  
  2867.  
  2868.                          change  has  been  made  and  a
  2869.                          checkpoint hasn't been done for
  2870.                          five minutes.
  2871.  
  2872.  
  2873.           Bad Time:      This occurs just after Pine has
  2874.                          executed  some  command.   Pine
  2875.                          will checkpoint if there are 36
  2876.                          outstanding changes to the mail
  2877.                          file or at least one change and
  2878.                          no checkpoint for ten minutes.
  2879.  
  2880.  
  2881.           Very Bad Time: Done when composing a  message.
  2882.                          In  this  case,  Pine will only
  2883.                          checkpoint  if  at   least   48
  2884.                          changes  have  been made or one
  2885.                          change has  been  made  in  the
  2886.                          last  twenty  minutes  with  no
  2887.                          checkpoint.
  2888.  
  2889.  
  2890.  
  2891.           _D_e_b_u_g _F_i_l_e_s
  2892.  
  2893.           If UNIX Pine is compiled with the compiler _D_E_-
  2894.           _B_U_G option on (the current default), then Pine
  2895.           will produce debugging output to a  file.  The
  2896.           file  is  normally  ._p_i_n_e-_d_e_b_u_g_X in the user's
  2897.           home directory where  _X  goes  from  1  to  4.
  2898.           Number 1 is always the most recent session and
  2899.           4 the oldest.  Four are  saved  because  often
  2900.           the  user  has  gone  in and out of Pine a few
  2901.           times after a problem has occurred before  the
  2902.           expert  actually  gets  to  look  at  it.  The
  2903.           amount of output in  the  debug  files  varies
  2904.           with the debug level set when Pine is compiled
  2905.           and/or as a command line flag.  The default is
  2906.           level  2.   This shows very general things and
  2907.           records  errors.   Level  9  produces  copious
  2908.           amounts of output for each keystroke.
  2909.  
  2910.           PC-Pine does not produce debug files.
  2911.  
  2912.  
  2913.           _F_i_l_t_e_r_s
  2914.  
  2915.           Pine is not designed to process email messages
  2916.           as  they are delivered; rather Pine depends on
  2917.           the fact that some  other  program  (sendmail,
  2918.           etc)  will  deliver  messages  and Pine simply
  2919.           reads the email  folders  which  that  "other"
  2920.           program creates.  For this reason, Pine cannot
  2921.  
  2922.  
  2923.                            - 45 -
  2924.  
  2925.  
  2926.  
  2927.  
  2928.  
  2929.  
  2930.  
  2931.                   - Pine Technical Notes -
  2932.  
  2933.  
  2934.           filter incoming email into different  folders.
  2935.           It  can,  however,  work alongside most of the
  2936.           programs available  over  the  Internet  which
  2937.           perform  this  task.  Pine is known to operate
  2938.           successfully with the Elm filter  program  and
  2939.           with Procmail.
  2940.  
  2941.           Design changes in Pine  3.8x  facilitate  Pine
  2942.           users  filtering email.  You still have to get
  2943.           a filtering program and configure it  correct-
  2944.           ly, but Pine now allows users to specify a set
  2945.           of _i_n_c_o_m_i_n_g-_f_o_l_d_e_r_s.  Pine will  separate  out
  2946.           all the folders listed as _i_n_c_o_m_i_n_g-_f_o_l_d_e_r_s and
  2947.           offer convenient access  to  these.   We  hope
  2948.           that  in the future Pine will be able to offer
  2949.           new message counts for  all  of  the  incoming
  2950.           folders.
  2951.  
  2952.  
  2953.  
  2954.           _F_o_l_d_e_r _F_o_r_m_a_t_s
  2955.  
  2956.           A folder is a group of messages.  The  default
  2957.           format  used by Pine is the Berkeley mail for-
  2958.           mat.  It is also used  by  the  standard  _m_a_i_l
  2959.           command  and  by  _e_l_m.   Pine also understands
  2960.           folders in other formats.   UNIX  Pine  under-
  2961.           stands  Tenex  and  netnews  as well.  PC-Pine
  2962.           reads and writes folders on the PC itself in a
  2963.           special  format  called  MTX.   Near as we can
  2964.           tell, PC-Pine is the only program to  use  the
  2965.           MTX  format. Pine has also been used with Car-
  2966.           mel, mh, MMDF and mbox format mailboxes.   For
  2967.           more  information about the carmel format, see
  2968.           the directory  ./_c_o_n_t_r_i_b/_c_a_r_m_e_l  in  the  Pine
  2969.           distribution.
  2970.  
  2971.  
  2972.           Berkeley
  2973.                This format comes to us from the  ancient
  2974.                UNIX mail program, /_b_i_n/_m_a_i_l.  (Note that
  2975.                this doesn't have  anything  to  do  with
  2976.                Berkeley,  but  we  call  it the Berkeley
  2977.                mail file format  anyway.)  This  program
  2978.                was  actually  used to interactively read
  2979.                mail at one time, and is  still  used  on
  2980.                many systems as the local delivery agent.
  2981.                In the Berkely mail format, a folder is a
  2982.                simple  text file.  Each message (includ-
  2983.                ing the first) must start with a  separa-
  2984.                tor  line  which  takes approximately the
  2985.                form:
  2986.  
  2987.                            - 46 -
  2988.  
  2989.  
  2990.  
  2991.  
  2992.  
  2993.  
  2994.  
  2995.                   - Pine Technical Notes -
  2996.  
  2997.  
  2998.                            From juser@u.example.edu  Wed Aug 11 14:32:33 1993
  2999.  
  3000.  
  3001.                Each message ends with two  blank  lines.
  3002.                There   are  actually  several  different
  3003.                variations  in  the  date  part  of   the
  3004.                string, twenty at last count.  Because of
  3005.                the format of the separators, no lines in
  3006.                the  mail message can begin with "From ",
  3007.                space included, so they are  modified  to
  3008.                be ">From ".  You'll see this occasional-
  3009.                ly  in  mail   messages.    The   message
  3010.                delivery program (not Pine) enforces this
  3011.                restriction.   You  can  fool  Pine  into
  3012.                thinking  a  file is a mail folder by ad-
  3013.                ding a message separator at the beginning
  3014.                of the file and wherever you want message
  3015.                boundaries.  The vast majority of INBOXes
  3016.                Pine  reads  and folders it writes are of
  3017.                this format.
  3018.  
  3019.  
  3020.           Tenex and MTX Formats
  3021.                The Tenex format of file  uses  a  single
  3022.                file per folder.  Normally, the file name
  3023.                ends with ._t_x_t.  The file format consists
  3024.                of  a header line followed by the message
  3025.                text for each message.  The header is  in
  3026.                one of two forms:
  3027.  
  3028.                            dd-mmm-yy hh:mm:ss-zzz,n;ffffffffffff
  3029.                            dd-mmm-yyyy hh:mm:ss sssss,n;ffffffffffff
  3030.  
  3031.  
  3032.                and is immediately followed by a  newline
  3033.                (and the message text).
  3034.  
  3035.  
  3036.                        The fields in the formats are:
  3037.                            dd      two-digit day of month (leading space if a single-digit day)
  3038.                            mmm     three-letter English month name (Jan, Feb, etc.)
  3039.                            yy      two-digit year in 20th century (obsolete)
  3040.                            yyyy    four-digit year
  3041.                            hh      two-digit hour in 24-hour clock (leading zero if single-digit)
  3042.                            mm      two-digit minute (leading zero)
  3043.                            ss      two-digit second (leading zero)
  3044.                            zzz     three-letter North American timezone (obsolete)
  3045.                            sssss   signed four-digit international timezone as in RFC 822
  3046.                            n       one or more digits of the size of the following message in
  3047.                                    bytes
  3048.                            ffffffffffff
  3049.                                    twelve-digit octal flags value
  3050.  
  3051.                            - 47 -
  3052.  
  3053.  
  3054.  
  3055.  
  3056.  
  3057.  
  3058.  
  3059.                   - Pine Technical Notes -
  3060.  
  3061.  
  3062.                    Punctuation is as given above.
  3063.  
  3064.  
  3065.                The time in the header is the  time  that
  3066.                message  was  written to the folder.  The
  3067.                flags are  interpreted  as  follows:  the
  3068.                high  order  30 bits are used to indicate
  3069.                user  flags,  the  next  two   bits   are
  3070.                reserved  for  future usage, the low four
  3071.                bits are used for  system  flags  (010  =
  3072.                answered,  04  =  flagged  urgent,  02  =
  3073.                deleted, 01 = seen).  Mail  is  automati-
  3074.                cally  moved  from  /_u_s_r/_s_p_o_o_l/_m_a_i_l  into
  3075.                _m_a_i_l._t_x_t in the user's home directory  if
  3076.                the _m_a_i_l._t_x_t file exists.
  3077.  
  3078.  
  3079.                The MTX format is identical to the  tenex
  3080.                format,  with  two exceptions: the folder
  3081.                name ends with ._M_T_X instead of ._t_x_t (this
  3082.                is  a requirement in the MTX format), and
  3083.                DOS-style CR/LF newlines are used instead
  3084.                of UNIX-style LF newlines.
  3085.  
  3086.  
  3087.  
  3088.           Netnews Format
  3089.                The netnews format is a read-only  format
  3090.                which      uses     directories     under
  3091.                /usr/spool/news    as    folders.     The
  3092.                /_u_s_r/_s_p_o_o_l/_n_e_w_s/  prefix  is  removed and
  3093.                all subsequent "/" (slash) characters are
  3094.                changed to "." (period). For example, the
  3095.                netnews folder name _c_o_m_p._m_a_i_l._m_i_s_c refers
  3096.                to        the        directory       name
  3097.                /_u_s_r/_s_p_o_o_l/_n_e_w_s/_c_o_m_p/_m_a_i_l/_m_i_s_c.  In addi-
  3098.                tion, the news folder name must appear in
  3099.                the file /usr/lib/news/active for  it  to
  3100.                be  recognized.   Individual messages are
  3101.                stored as files in that  directory,  with
  3102.                filenames  being  the  ASCII  form  of  a
  3103.                number assigned to that message.
  3104.  
  3105.  
  3106.  
  3107.  
  3108.           _F_o_l_d_e_r _L_o_c_k_i_n_g
  3109.  
  3110.           There are two kinds of locking which Pine  has
  3111.           to  worry  about.   The  first might be called
  3112.           program-contention locking.  This affects  the
  3113.           times  when a program is performing actual up-
  3114.           dates on a folder.  An update might be a  mes-
  3115.  
  3116.  
  3117.                            - 48 -
  3118.  
  3119.  
  3120.  
  3121.  
  3122.  
  3123.  
  3124.  
  3125.                   - Pine Technical Notes -
  3126.  
  3127.  
  3128.           sage  delivery  program  appending  a  message
  3129.           (_s_e_n_d_m_a_i_l delivering a message to  an  INBOX),
  3130.           status  changes (checkpoints by Pine every few
  3131.           minutes) or deletion of messages  (an  expunge
  3132.           in  Pine).   For moderate sized mail messages,
  3133.           these operations should not last for more than
  3134.           a few seconds.  The second kind of locking has
  3135.           to do with  user-contention  situations.  This
  3136.           would be the case when one folder is shared by
  3137.           a group of people  or  even  when  one  person
  3138.           starts  multiple  email  sessions all of which
  3139.           access the same folders and INBOX.
  3140.  
  3141.           There  are  two  standard  locking  mechanisms
  3142.           which  handle  program-contention locking.  To
  3143.           be on the safe side, Pine implements  both  of
  3144.           them.   The  older  mechanism  places  a  file
  3145.           _x_x_x_x._l_o_c_k (where _x_x_x_x is the name of the  file
  3146.           being  locked)  in  the  same directory as the
  3147.           file being locked. This makes use of the  fact
  3148.           that  directory  operations are atomic in UNIX
  3149.           and mostly works across NFS.   There  are  in-
  3150.           volved  algorithms used to determine if a lock
  3151.           has been held for an excessive amount of  time
  3152.           and  should  be  broken.   The second program-
  3153.           contention locking mechanism uses the  _f_l_o_c_k()
  3154.           system call on the mailbox.  This is much more
  3155.           efficient and the locks can't  get  stuck  be-
  3156.           cause  they  go  away  when  the  process that
  3157.           created them dies.  This is usually  found  on
  3158.           4BSD and related machines.
  3159.  
  3160.           In addition to  these,  Pine--through  the  c-
  3161.           client  library--provides robust locking which
  3162.           prevents several users (or  several  instances
  3163.           of the same user) having a mail file open (for
  3164.           update) at once.  This user-contention lock is
  3165.           held  the  entire  time  that the folder is in
  3166.           use.
  3167.  
  3168.           With IMAPd 7.3(63) and Pine 3.84  and  higher,
  3169.           the second Pine session which attempts to open
  3170.           a folder with Pine will "win." That is to say,
  3171.           the second session will have read/write access
  3172.           to the folder.  The first user's  folder  will
  3173.           become  read-only.  (Note that this is exactly
  3174.           the opposite of the  behavior  prior  to  Pine
  3175.           3.84  where  the  second  open  was read-only.
  3176.           Having the second open be read-write seems  to
  3177.           match  more closely with what users would like
  3178.           to have happen in this situation.) Pine's  ad-
  3179.           ditional  locking  is  only  effective against
  3180.           multiple uses of Pine or other programs  using
  3181.  
  3182.  
  3183.                            - 49 -
  3184.  
  3185.  
  3186.  
  3187.  
  3188.  
  3189.  
  3190.  
  3191.                   - Pine Technical Notes -
  3192.  
  3193.  
  3194.           the c-client library, such as _M_a_i_l_M_a_n_a_g_e_r, _m_s,
  3195.           _I_M_A_P_d and a few others.  Beginning  with  Pine
  3196.           3.85,  there is an -_o command line flag to in-
  3197.           tentionally open a mailbox read-only.
  3198.  
  3199.           Pine locking on UNIX systems works by creating
  3200.           lock    files    in    /_t_m_p    of   the   form
  3201.           \_u_s_r\_s_p_o_o_l\_m_a_i_l\_j_o_e.  The system call  _f_l_o_c_k()
  3202.           is  then used on these files; the existence of
  3203.           the file alone does  not  constitute  a  lock.
  3204.           This lock is created when the folder is opened
  3205.           and destroyed when it  is  closed.   When  the
  3206.           folder is actually being written, the standard
  3207.           UNIX locks are also created.
  3208.  
  3209.           If a folder is modified by some other  program
  3210.           while  Pine  has it open, Pine will give up on
  3211.           that mail file, concluding it's best not to do
  3212.           any  further  reads or writes. This can happen
  3213.           if another mailer that doesn't observe  Pine's
  3214.           user-contention  locks  (e.g.  _e_l_m or _m_a_i_l) is
  3215.           run while Pine has the mail folder open.  Pine
  3216.           checkpoints files every few minutes, so little
  3217.           data can be lost in these situations.
  3218.  
  3219.           PC-Pine does not do any  folder  locking.   It
  3220.           depends  on  IMAP servers to handle locking of
  3221.           remote folders.  It is assumed that  only  one
  3222.           Pine  session  can  be  running on the PC at a
  3223.           time, so there is no contention  issue  around
  3224.           folders on the PC itself.
  3225.  
  3226.  
  3227.  
  3228.           _I_N_B_O_X _a_n_d _S_p_e_c_i_a_l _F_o_l_d_e_r_s
  3229.  
  3230.           The _I_N_B_O_X folder is treated specially.  It  is
  3231.           normally  kept open constantly so that the ar-
  3232.           rival of new mail can be detected.   The  name
  3233.           _I_N_B_O_X refers to wherever new mail is retrieved
  3234.           on the system.  If the _i_n_b_o_x-_p_a_t_h variable  is
  3235.           set,  then _I_N_B_O_X refers to that.  IMAP servers
  3236.           understand the concept of _I_N_B_O_X, so specifying
  3237.           the  folder {_i_m_a_p._u._e_x_a_m_p_l_e._e_d_u}_I_N_B_O_X is mean-
  3238.           ingful. The case of the word INBOX is not  im-
  3239.           portant,  but  Pine tends to display it in all
  3240.           capital letters.
  3241.  
  3242.           The folders for sent mail and  saved  messages
  3243.           folders  are  also somewhat special.  They are
  3244.           automatically created if they are  absent  and
  3245.           recreated if they are deleted.
  3246.  
  3247.                            - 50 -
  3248.  
  3249.  
  3250.  
  3251.  
  3252.  
  3253.  
  3254.  
  3255.                   - Pine Technical Notes -
  3256.  
  3257.  
  3258.           _I_n_t_e_r_n_a_l _H_e_l_p _F_i_l_e_s
  3259.  
  3260.           The file _p_i_n_e._h_l_p  in  the  _p_i_n_e  subdirectory
  3261.           contains all the help text for Pine.  On UNIX,
  3262.           it is compiled right into the Pine  binary  as
  3263.           strings.   This  is done to simplify installa-
  3264.           tion and configuration.  The _p_i_n_e._h_l_p file  is
  3265.           in  a special format that is documented at the
  3266.           beginning of the file.   It  is  divided  into
  3267.           sections, each with a name that winds up being
  3268.           referenced as a global variable.  Some special
  3269.           formatting rules are used to keep things lined
  3270.           up and to allow for substitutions in the  help
  3271.           text  depending  on  whether  the Pine session
  3272.           uses   function   keys   or    the    standard
  3273.           alphabetic/mnemonic  keys.   This file is pro-
  3274.           cessed by two awk scripts and  turned  into  C
  3275.           files that are compiled into Pine.
  3276.  
  3277.           This scheme can  increase  efficiency  because
  3278.           Pine  can  be  compiled to have the strings as
  3279.           part of shared, read-only text.   Rather  than
  3280.           each  process  having to read in the help text
  3281.           from a file, the strings are shared by all ex-
  3282.           ecuting  processes  on  the machine and demand
  3283.           paged.   This  works  on  machines  that  have
  3284.           separate  instruction  and  data space, but is
  3285.           only fully implemented in  the  NeXT  (tested)
  3286.           and Dynix (not tested) ports.
  3287.  
  3288.           PC-Pine, which tries to run on  machines  with
  3289.           as  little  as 640k of memory, leaves the Pine
  3290.           help text out of  the  executable.   _P_I_N_E._E_X_E,
  3291.           _P_I_N_E._H_L_P,  and _P_I_N_E._N_D_X are all needed for PC-
  3292.           Pine's help system.
  3293.  
  3294.  
  3295.  
  3296.           _I_n_t_e_r_n_a_t_i_o_n_a_l _C_h_a_r_a_c_t_e_r _S_e_t_s
  3297.  
  3298.           While Pine was designed in the U.S.  and  used
  3299.           mostly for English-language correspondence, it
  3300.           is a goal for Pine to handle email  in  almost
  3301.           any  language.  Many sites outside of the U.S.
  3302.           run Pine in their native  language.   The  de-
  3303.           fault  character  set  for  Pine  is US-ASCII.
  3304.           That  can  be  changed  in  the  personal   or
  3305.           system-wide  configuration file with the vari-
  3306.           able _c_h_a_r_a_c_t_e_r-_s_e_t.
  3307.  
  3308.  
  3309.           When reading incoming email, Pine  allows  all
  3310.           character  sets to pass through.  Pine doesn't
  3311.  
  3312.  
  3313.                            - 51 -
  3314.  
  3315.  
  3316.  
  3317.  
  3318.  
  3319.  
  3320.  
  3321.                   - Pine Technical Notes -
  3322.  
  3323.  
  3324.           actually display  the  characters  but  simply
  3325.           passes  them  through;  it is up to the actual
  3326.           display device to show the characters correct-
  3327.           ly.   When  composing  email, Pine will accept
  3328.           input in any language and tag the message  ac-
  3329.           cording to the _c_h_a_r_a_c_t_e_r-_s_e_t variable.  Again,
  3330.           it is up to the input device to  generate  the
  3331.           correct  sequences for the character set being
  3332.           used.  The outgoing message is checked to  see
  3333.           if  it  is  all US-ASCII text (and contains no
  3334.           escape characters).  In that  case,  the  text
  3335.           will  be  labeled  as  US-ASCII  even  if  the
  3336.           _c_h_a_r_a_c_t_e_r-_s_e_t variable  is  set  to  something
  3337.           else.   The  theory  is  that every reasonable
  3338.           character set will have US-ASCII as a  subset,
  3339.           and that it makes sense to label the text with
  3340.           the lowest-common-denominator  label  so  that
  3341.           more mailers will be able to display it.
  3342.  
  3343.           The character sets are:
  3344.  
  3345.               US-ASCII        Standard 7 bit English characters
  3346.               ISO-8859-1      8 bit European "latin 1" character set
  3347.               ISO-8859-2      8 bit European "latin 2" character set
  3348.               ISO-8859-3      8 bit European "latin 3" character set
  3349.               ISO-8859-4      8 bit European "latin 4" character set
  3350.               ISO-8859-5      8 bit Cyrillic
  3351.               ISO-8859-6      8 bit Arabic
  3352.               ISO-8859-7      8 bit Greek
  3353.               ISO-8859-8      8 bit European "latin 5"" character set
  3354.               ISO-8859-9      8 bit Hebrew
  3355.               ISO-2022-JP     Japanese
  3356.  
  3357.  
  3358.               In all of these except Japanese, the lower 7 bits are the same as US-ASCII.
  3359.               Even in Japanese, the character set is the same as US-ASCII unless it has been
  3360.               shifted to an alternate interpretation.
  3361.  
  3362.           Earlier versions of Pine made use of the char-
  3363.           acter set tags associated with text in MIME to
  3364.           decide if the text should be displayed or not.
  3365.           Depending  on  the  character  set tag and the
  3366.           _c_h_a_r_a_c_t_e_r-_s_e_t variable in Pine, the  text  was
  3367.           either  displayed  as  is, displayed with some
  3368.           characters filtered out, or not  displayed  at
  3369.           all.   The current version uses a much simpler
  3370.           algorithm in order to maximize the chance that
  3371.           useful  contents are readable by the user.  It
  3372.           simply displays all messages of type text  and
  3373.           makes no attempt to filter out characters that
  3374.           may be in the wrong  character  set.   If  the
  3375.           text  is  tagged  as  something other than US-
  3376.           ASCII and the tag does not match the character
  3377.  
  3378.  
  3379.                            - 52 -
  3380.  
  3381.  
  3382.  
  3383.  
  3384.  
  3385.  
  3386.  
  3387.                   - Pine Technical Notes -
  3388.  
  3389.  
  3390.           set that the _c_h_a_r_a_c_t_e_r-_s_e_t variable is set to,
  3391.           then a warning is printed at the start of  the
  3392.           message.   In  that  case, it is possible that
  3393.           the text will be displayed  incorrectly.   For
  3394.           example,  if  the  text is one variant of ISO-
  3395.           8859 and the display device is  another  vari-
  3396.           ant, some of the characters may show up on the
  3397.           screen as the wrong character.  Or if the text
  3398.           is  Japanese  and  the  display device is not,
  3399.           some parts of the message may be total gibber-
  3400.           ish  (which  will  look like ASCII gibberish).
  3401.           On the other hand, the parts of  the  Japanese
  3402.           message that really are US-ASCII will be read-
  3403.           able in the midst of the gibberish.
  3404.  
  3405.           In the case of PC-Pine, the  character  values
  3406.           cannot  be  passed  thru to the display device
  3407.           unaltered  since  MS-DOS  uses  various   non-
  3408.           standard character sets called "Code Pages".
  3409.  
  3410.           The mapping between DOS Code Page and standard
  3411.           character    set    is   controlled   by   the
  3412.           "character-set" variable in  the  PINERC  file
  3413.           and  the  PC's  installed  Code Page.  PC-Pine
  3414.           will automatically map  common  characters  in
  3415.           IBM  Code Pages 437, 850, 860, 863, and 865 to
  3416.           ISO-8859-1  and  back  when  the  PINERC   has
  3417.           "character-set=ISO-8859-1".   Pine  will  also
  3418.           map common characters for IBM Code Page 866 to
  3419.           ISO-8859-5  and  back when "character-set=ISO-
  3420.           8859-5".  The mappings are bi-directional, and
  3421.           applied  to  all saved text attachments in the
  3422.           defined character set, messages exported, etc.
  3423.  
  3424.           Alternatively, the translation tables  can  be
  3425.           configured  externally and applied at run time
  3426.           whenever the "character-set=" variable is  set
  3427.           to  something  other  then "US-ASCII" (the de-
  3428.           fault).  PC-Pine looks in the text file point-
  3429.           ed  to by the environment variable "ISO_TO_CP"
  3430.           for the table to use for mapping text matching
  3431.           the type defined by the "character-set=" vari-
  3432.           able into the local Code Page value.   PC-Pine
  3433.           looks  in  the text file pointed to by the en-
  3434.           vironment variable "CP_TO_ISO" for  the  table
  3435.           to use for mapping text in the local Code Page
  3436.           into   outbound   text   tagged    with    the
  3437.           "character-set=" variable's value.
  3438.  
  3439.           A text file containing a character set mapping
  3440.           table  is  expected  to  contain  256 elements
  3441.           where  each  element  is  a   decimal   number
  3442.           separated from the next element by white-space
  3443.  
  3444.  
  3445.                            - 53 -
  3446.  
  3447.  
  3448.  
  3449.  
  3450.  
  3451.  
  3452.  
  3453.                   - Pine Technical Notes -
  3454.  
  3455.  
  3456.           (space, tab or newline, but no commas!).   The
  3457.           index  of the element is the character's value
  3458.           in the source character set, and the element's
  3459.           value  is  the corresponding character's value
  3460.           in the destination character set.
  3461.  
  3462.  
  3463.  
  3464.           _I_n_t_e_r_r_r_u_p_t_e_d _a_n_d _P_o_s_t_p_o_n_e_d _M_e_s_s_a_g_e_s
  3465.  
  3466.           If the user is composing mail  and  is  inter-
  3467.           rupted  by being disconnected (SIGHUP, SIGTERM
  3468.           or end of file on the  standard  input),  Pine
  3469.           will  save the interrupted composition and al-
  3470.           low the user to continue it  when  he  or  she
  3471.           resumes   Pine.   As  the  next  Pine  session
  3472.           starts, a message will be given that an inter-
  3473.           rupted  message  can  be continued To continue
  3474.           the interrupted message, simply  go  into  the
  3475.           composer.   To get rid of the interrupted mes-
  3476.           sage, go into the composer and then cancel the
  3477.           message with ^_C.
  3478.  
  3479.           Composition of  a  half-done  message  may  be
  3480.           postponed  to  a  later  time by giving the ^_O
  3481.           command.  Other messages can be composed while
  3482.           a postponded message waits, but there can only
  3483.           be one message may be postponed at a time.  We
  3484.           would  like  Pine to be able to have more than
  3485.           one postponed message, but haven't got  around
  3486.           to  it  mostly because some work would have to
  3487.           be done to make the user interface nice. Post-
  3488.           poning is a good way to quickly reference oth-
  3489.           er messages while composing.
  3490.  
  3491.           There are some  problems  postponing  messages
  3492.           that  have MIME attachments or characters from
  3493.           non-US-ASCII  character  sets.   With  attach-
  3494.           ments, the postponed message will only store a
  3495.           reference to the file and not the actual file,
  3496.           so  the  file should not be deleted or renamed
  3497.           until the message is sent.   Non-file  attach-
  3498.           ments,  the  results of forwarding or replying
  3499.           to a MIME message, will be dropped. Postponded
  3500.           messages with non-US-ASCII characters will not
  3501.           be decoded upon resumption, so some odd things
  3502.           like "=D6" may appear where special characters
  3503.           were.
  3504.  
  3505.           The interrupted  and  postponed  messages  are
  3506.           saved  in  a  special  directory  on the local
  3507.           machine.  You can specify which  directory  by
  3508.           setting  the  _m_a_i_l-_d_i_r_e_c_t_o_r_y  variable  in the
  3509.  
  3510.  
  3511.                            - 54 -
  3512.  
  3513.  
  3514.  
  3515.  
  3516.  
  3517.  
  3518.  
  3519.                   - Pine Technical Notes -
  3520.  
  3521.  
  3522.           Pine configuration file.  Postponed and inter-
  3523.           rupted  messages  cannot  be  kept  on an IMAP
  3524.           server.
  3525.  
  3526.  
  3527.           _M_e_s_s_a_g_e _S_t_a_t_u_s
  3528.  
  3529.           The c-client library allows for several  flags
  3530.           or  status  marks  to be set for each message.
  3531.           Pine uses three of these flags: UNSEEN, DELET-
  3532.           ED, and ANSWERED. The "N" in Pine's FOLDER IN-
  3533.           DEX means that a message is unseen-it has  not
  3534.           been read from this folder yet.  The "D" means
  3535.           that a message is marked for  deletion.   Mes-
  3536.           sages  marked  with  "D"  are removed when the
  3537.           user _e_x_p_u_n_g_e_s the folder (which  usually  hap-
  3538.           pens  when  the  folder  is closed or the user
  3539.           quits Pine).  The "A" in Pine's  FOLDER  INDEX
  3540.           means  that  the  message  has bee replied-to.
  3541.           For  Berkeley  format  folders,  the   message
  3542.           status is written into the email folder itself
  3543.           on the header  lines  marked  _S_t_a_t_u_s:  and  _X-
  3544.           _S_t_a_t_u_s.   In Tenex and MTX folders, the status
  3545.           goes into the 36-bit octal flags.
  3546.  
  3547.  
  3548.  
  3549.           _M_I_M_E-_R_e_a_d_i_n_g _a _M_e_s_s_a_g_e
  3550.  
  3551.           Pine should be able to handle just  about  any
  3552.           MIME  message.   When  a  MIME  message is re-
  3553.           ceived, Pine will display a list  of  all  the
  3554.           parts, their types and sizes.  It will display
  3555.           the attachments when possible and  appropriate
  3556.           and allow users to save all other attachments.
  3557.  
  3558.           Messages which include rich text in  the  main
  3559.           body  will  be displayed in a very limited way
  3560.           (it will show bold and underlining).
  3561.  
  3562.           If Pine sees a message tagged  as  "image/gif"
  3563.           or  "image/jpeg", it will attempt to send that
  3564.           attachment to  an  appropriate  image  viewing
  3565.           program.  UNIX Pine will check the environment
  3566.           setting DISPLAY to see if Pine  is  on  an  X-
  3567.           terminal  (which  can  handle the images).  If
  3568.           so, Pine passes the image to a program such as
  3569.           _x_l_o_a_d_i_m_a_g_e  to  be  viewed.   You  can specify
  3570.           which program should be used  by  setting  the
  3571.           Pine configuration variable _i_m_a_g_e-_v_i_e_w_e_r.
  3572.  
  3573.           If an attachment is  just  text  (tagged  with
  3574.           "text/plain"  in  the  MIME header), then Pine
  3575.  
  3576.  
  3577.                            - 55 -
  3578.  
  3579.  
  3580.  
  3581.  
  3582.  
  3583.  
  3584.  
  3585.                   - Pine Technical Notes -
  3586.  
  3587.  
  3588.           will use an internal viewer module to  display
  3589.           the  attachment.  International character sets
  3590.           in attachments are handled in the same way  as
  3591.           they are in regular email messages.  Some text
  3592.           attachments, specifically those which are just
  3593.           other  email  messages  forwarded as MIME mes-
  3594.           sages, are displayed as part of the main  body
  3595.           of  the message.  This distinction allows easy
  3596.           display when possible  (the  forward  as  MIME
  3597.           case)  and  use  of  an attachment viewer when
  3598.           that is desirable (the plain text file attach-
  3599.           ment case).
  3600.  
  3601.           If the parts of a multipart message are alter-
  3602.           nate  versions  of  the  same  thing Pine will
  3603.           select and display the one best  suited.   For
  3604.           parts  of  type  "message/external-body",  the
  3605.           parameters showing the retrieval  method  will
  3606.           be displayed, but the retrieval process is not
  3607.           yet    automated.     Messages     of     type
  3608.           "message/partial" cannot currently be automat-
  3609.           ically reassembled or sent.  Lastly, Pine can-
  3610.           not  display  any attachments which are of the
  3611.           "application" type; these  must  be  saved  to
  3612.           files and then processed outside of Pine. In a
  3613.           future release, we intend to support the _m_a_i_l_-
  3614.           _c_a_p  facility to allow automatic processing of
  3615.           display of additional MIME types.
  3616.  
  3617.  
  3618.  
  3619.  
  3620.           _M_I_M_E-_S_e_n_d_i_n_g _a _M_e_s_s_a_g_e
  3621.  
  3622.           There are two important factors when trying to
  3623.           include  an  attachment in a message: encoding
  3624.           and labeling.  Pine  has  rules  for  both  of
  3625.           these  which  try  to  assure that the message
  3626.           goes out in a form that is robust and  can  be
  3627.           handled by other MIME mail readers.
  3628.  
  3629.           MIME has two  ways  of  encoding  data-Quoted-
  3630.           Printable and Base64.  Quoted-Printable leaves
  3631.           the ASCII text alone and  only  changes  8-bit
  3632.           characters  to "=" followed by the hex digits.
  3633.           For example, "=09" is a tab.  It has  the  ad-
  3634.           vantage that it is mostly readable and that it
  3635.           allows for end of line conversions between un-
  3636.           like  systems.   Base64 encoding is similar to
  3637.           _u_u_e_n_c_o_d_e or _b_t_o_a and just encodes  a  raw  bit
  3638.           stream.  This encoding is designed to get text
  3639.           and binary files through even the most improp-
  3640.           erly  implemented  and configured gateways in-
  3641.  
  3642.  
  3643.                            - 56 -
  3644.  
  3645.  
  3646.  
  3647.  
  3648.  
  3649.  
  3650.  
  3651.                   - Pine Technical Notes -
  3652.  
  3653.  
  3654.           tact, even those that distort uuencoded data.
  3655.  
  3656.           Starting with this (3.84) version of  Pine  we
  3657.           have  decided  to encode all attachments using
  3658.           Base64 encoding.  This is so that the  attach-
  3659.           ment  will arrive at the other end looking ex-
  3660.           actly like it did when  it  was  sent.   Since
  3661.           Base64  is  completely  unreadable  except  by
  3662.           MIME-capable mailers or programs, there is  an
  3663.           obvious tradeoff being made here.  We chose to
  3664.           ensure absolutely reliable  transport  of  at-
  3665.           tachments  at  the  cost  of requiring a MIME-
  3666.           capable mailer to  read  them.   If  the  user
  3667.           doesn't  want absolute integrity he or she may
  3668.           always _i_n_c_l_u_d_e text (with the ^_R  command)  in
  3669.           the body of a message instead of attaching it.
  3670.           With this new policy, the  only  time  quoted-
  3671.           printable  encoding  is  used is when the main
  3672.           body of a  message  includes  special  foreign
  3673.           language characters.
  3674.  
  3675.           When an attachment is to be sent, Pine  sniffs
  3676.           through  it  to  try  to  set  the right label
  3677.           (content-type  and  subtype).   An  attachment
  3678.           with  any  lines longer than 500 characters in
  3679.           it or more than 10% of the characters  are  8-
  3680.           bit  it  will be considered binary data.  Pine
  3681.           will recognize (and  correctly  label)  a  few
  3682.           special  types including GIF, JPEG, Postscript
  3683.           and some audio formats.
  3684.  
  3685.           If is not binary data (has only a  small  pro-
  3686.           portion  of  8-bit  characters in it,) the at-
  3687.           tachment is considered 8-bit text.  8-bit text
  3688.           attachments  are  labelled  "text/plain"  with
  3689.           charset  set  to  the  value  of  the   user's
  3690.           _c_h_a_r_a_c_t_e_r-_s_e_t  variable.   If an attachment is
  3691.           ASCII (no 8-bit characters)  and  contains  no
  3692.           _E_S_C_A_P_E,  ^_N,  or ^_O characters (the characters
  3693.           used by some  international  character  sets),
  3694.           then  it  is considered plain ASCII text. Such
  3695.           attachments   are   given   the   MIME   label
  3696.           "text/plain;  charset=US-ASCII", regardless of
  3697.           the setting of the user's _c_h_a_r_a_c_t_e_r-_s_e_t  vari-
  3698.           able.
  3699.  
  3700.           All other  attachments  are  unrecognized  and
  3701.           therefore   given   the   generic  MIME  label
  3702.           "application/octet-stream".
  3703.  
  3704.  
  3705.  
  3706.  
  3707.                            - 57 -
  3708.  
  3709.  
  3710.  
  3711.  
  3712.  
  3713.  
  3714.  
  3715.                   - Pine Technical Notes -
  3716.  
  3717.  
  3718.           _N_e_w _M_a_i_l _N_o_t_i_f_i_c_a_t_i_o_n
  3719.  
  3720.           Pine checks for new mail in the _I_N_B_O_X  and  in
  3721.           the  currently  open  folder every 30 seconds.
  3722.           It only has to check the  time  stamp  on  the
  3723.           mail  file, so doing this doesn't place a load
  3724.           on the system.  If you really  don't  want  to
  3725.           wait  you  can  force  a new mail check by at-
  3726.           tempting to move the cursor off the end of the
  3727.           message index three times. It'll beep and com-
  3728.           plain as you do this, but it  will  check  for
  3729.           new mail on the third try.
  3730.  
  3731.           When there is new mail,  the  message(s)  will
  3732.           appear in the index, the screen will beep, and
  3733.           a notice showing the sender and  subject  will
  3734.           be  displayed. If there has been more than one
  3735.           new message since you last issued a command to
  3736.           Pine,  the  notice  will show the count of new
  3737.           messages and the sender  of  the  most  recent
  3738.           one.
  3739.  
  3740.           Questions have arisen  about  the  interaction
  3741.           between  Pine  and  external mail notification
  3742.           routines (biff, csh, login).  Firstly and  un-
  3743.           fortunately, we have found no PC based program
  3744.           that will check for email on  an  IMAP  server
  3745.           when PC-Pine is not running.  If you find one,
  3746.           please tell us.
  3747.  
  3748.           The UNIX case if more complicated.  Pine  sets
  3749.           the  modification  and  access  time on a file
  3750.           every  time  it  performs  a  write  operation
  3751.           (status  change  or expunge).  You need to see
  3752.           which of these your email notification program
  3753.           is  looking at to know how it will behave with
  3754.           Pine.
  3755.  
  3756.  
  3757.           _N_F_S
  3758.  
  3759.           It is possible  to  access  _N_F_S  mounted  mail
  3760.           folders  with  Pine,  but there are some draw-
  3761.           backs to doing this.  One is that  the  Pine's
  3762.           user-contention  locks don't work because /_t_m_p
  3763.           is usually not shared, and  even  if  it  was,
  3764.           _f_l_o_c_k() doesn't work across _N_F_S.
  3765.  
  3766.           The  implementation  of  the   standard   UNIX
  3767.           ".lock" file locking has been modified to work
  3768.           with _N_F_S as follows.  Standard  hitching  post
  3769.           locking is used so first a uniquely named file
  3770.           is    created,    usually    something    like
  3771.  
  3772.  
  3773.                            - 58 -
  3774.  
  3775.  
  3776.  
  3777.  
  3778.  
  3779.  
  3780.  
  3781.                   - Pine Technical Notes -
  3782.  
  3783.  
  3784.           _x_x_x_x._h_o_s_t._t_i_m_e._p_i_d.   Then  a  link  to  it is
  3785.           created named _x_x_x_x._l_o_c_k where the folder being
  3786.           locked  is  _x_x_x_x.   This  file constitutes the
  3787.           lock.  This is a standard UNIX locking scheme.
  3788.           After  the  link returns, a _s_t_a_t(_2) is done on
  3789.           the file.  If the file has two  links,  it  is
  3790.           concluded  that  the  lock succeeded and it is
  3791.           safe to proceed.
  3792.  
  3793.           It is mostly safe  to  access  mail  via  _N_F_S.
  3794.           Some problems may occur when two Pine sessions
  3795.           try to access the same mail folder  from  dif-
  3796.           ferent  hosts without using IMAP.  Imagine the
  3797.           scenario: Pine-A performs a write that changes
  3798.           the folder.  Pine-B then attempts to perform a
  3799.           write on the same  folder.   Pine-B  will  get
  3800.           upset  that the file has been changed from un-
  3801.           derneath it and abort operations on the  fold-
  3802.           er.  Pine-B will continue to display mail from
  3803.           the folder that it has in its internal  cache,
  3804.           but  it  will  not  read  or write any further
  3805.           data.  The only thing that will be lost out of
  3806.           the  Pine-B  session  when this happens is the
  3807.           last few status changes.
  3808.  
  3809.           If other mail readers  besides  Pine  are  in-
  3810.           volved,  all bets are off.  Typically, mailers
  3811.           don't take  any  precautions  against  a  user
  3812.           opening  a  mailbox more than once and no spe-
  3813.           cial precautions  are  taken  to  prevent  _N_F_S
  3814.           problems.
  3815.  
  3816.  
  3817.  
  3818.           _P_r_i_n_t_e_r_s _a_n_d _P_r_i_n_t_i_n_g
  3819.  
  3820.           UNIX Pine can print to the standard UNIX  line
  3821.           printers  or  to  generic printers attached to
  3822.           ANSI terminals using the escape  sequences  to
  3823.           turn  the  printer on and off.  The user has a
  3824.           choice of three printers in the configuration.
  3825.  
  3826.           The first setting, _a_t_t_a_c_h_e_d-_t_o-_a_n_s_i, makes use
  3827.           of  escape  sequences on ANSI/VT100 terminals.
  3828.           It uses "<ESC>[5i" to begin directing all out-
  3829.           put  sent  to  the terminal to the printer and
  3830.           then "<ESC>[6i" to  return  to  normal.   Pine
  3831.           will   send  these  escape  sequences  if  the
  3832.           printer  is  set  to  _a_t_t_a_c_h_e_d-_t_o-_a_n_s_i.   This
  3833.           works  with  most ANSI/VT100 emulators on Macs
  3834.           and PCs such as kermit, NCSA telnet, VersaTerm
  3835.           Pro,  and  WinQVT.  Various terminal emulators
  3836.           implement the print feature differently.   For
  3837.  
  3838.  
  3839.                            - 59 -
  3840.  
  3841.  
  3842.  
  3843.  
  3844.  
  3845.  
  3846.  
  3847.                   - Pine Technical Notes -
  3848.  
  3849.  
  3850.           example,  NCSA telnet requires "capfile = PRN"
  3851.           in  the  _c_o_n_f_i_g._t_e_l  file.    Attached-to-ansi
  3852.           printing  doesn't  work at all with the telnet
  3853.           provided with PC-NFS.
  3854.  
  3855.           The second  selection  is  the  standard  UNIX
  3856.           print command.  The default is _l_p_r, but it can
  3857.           be changed on a system basis  to  anything  so
  3858.           desired in /_u_s_r/_l_o_c_a_l/_l_i_b/_p_i_n_e._c_o_n_f.
  3859.  
  3860.           The third selection  is  the  user's  personal
  3861.           choice  for a UNIX print command.  The text to
  3862.           be printed is piped  into  the  command.   _E_n_-
  3863.           _s_c_r_i_p_t   or   _l_p_r  with  options  are  popular
  3864.           choices.  The actual command is retained  even
  3865.           if  one  of the other print selections is used
  3866.           for a while.
  3867.  
  3868.           If you have a Postscript attached to a  PC  or
  3869.           Macintosh, then you will need to use a utility
  3870.           called  _a_n_s_i_p_r_t  to  get  printouts  on   your
  3871.           printer.  _A_n_s_i_p_r_t  source code and details can
  3872.           be found in the  ./_c_o_n_t_r_i_b  directory  of  the
  3873.           Pine distribution.
  3874.  
  3875.           The three printer choices are  for  UNIX  Pine
  3876.           only.   PC-Pine  can only print to the locally
  3877.           attached printer.  All printing on PC-Pine  is
  3878.           done  via  ROM  BIOS Print Pervices (Int 17h).
  3879.           After  verifying  the  existance  of  a  local
  3880.           printer  via  the  BIOS Equipment-List Service
  3881.           (Int 11h), it simply sends the  message  text,
  3882.           character  by  character, to the first printer
  3883.           found using ASCII CR and  LF  at  the  end  of
  3884.           lines and followed by an ASCII FF.  Note, some
  3885.           system adjustments using the PC's "MODE"  com-
  3886.           mand  may be required if the printer is not on
  3887.           the first parallel port.  PC-Pine cannot  gen-
  3888.           erate  Postscript,  so printing to exclusively
  3889.           Postscript printers does not work.
  3890.  
  3891.  
  3892.  
  3893.           _S_a_v_e _a_n_d _E_x_p_o_r_t
  3894.  
  3895.           Pine users get two options for moving messages
  3896.           in  Pine:  _s_a_v_e _a_n_d _e_x_p_o_r_t.  Save is used when
  3897.           the message should remain "in the Pine realm."
  3898.           Saved  messages  include  the  complete header
  3899.           (including header  lines  normally  hidden  by
  3900.           Pine),  are placed in a Pine folder collection
  3901.           and accumulate in  a  standard  folder  format
  3902.           which  Pine can read.  In contrast, the _e_x_p_o_r_t
  3903.  
  3904.  
  3905.                            - 60 -
  3906.  
  3907.  
  3908.  
  3909.  
  3910.  
  3911.  
  3912.  
  3913.                   - Pine Technical Notes -
  3914.  
  3915.  
  3916.           command is used to write  the  contents  of  a
  3917.           message  to  a  file  for use outside of Pine.
  3918.           Messages which have been exported  are  placed
  3919.           in  the  user's  home directory, not in a Pine
  3920.           folder  collection.    All   delivery-oriented
  3921.           headers  are  stripped from the message.  Even
  3922.           with _e_x_p_o_r_t, Pine retains a folder format-that
  3923.           is, multiple messages can accumulate in a sin-
  3924.           gle file.  On UNIX systems, the _e_x_p_o_r_t command
  3925.           pays  attention  to the standard _u_m_a_s_k for the
  3926.           setting of the file permissions.
  3927.  
  3928.  
  3929.  
  3930.           _S_e_n_t _M_a_i_l
  3931.  
  3932.           Pine's default behavior is to keep a copy each
  3933.           outgoing  message  in  a  special  "sent mail"
  3934.           folder.  This folder is also  called  the  fcc
  3935.           for  "file carbon copy".  The existance, loca-
  3936.           tion and name of the sent mail folder are  all
  3937.           configurable.   Sent  mail  archiving  can  be
  3938.           turned off by setting the configuration  vari-
  3939.           able  _d_e_f_a_u_l_t-_f_c_c="".  The sent mail folder is
  3940.           assumed to be in the  default  collection  for
  3941.           saves,  which is the first collection named in
  3942.           _f_o_l_d_e_r-_c_o_l_l_e_c_t_i_o_n_s.  The name  of  the  folder
  3943.           can  be  chosen by entering a name in _d_e_f_a_u_l_t-
  3944.           _f_c_c.  With PC-Pine, this can be a bit  compli-
  3945.           cated.  If the default collection for saves is
  3946.           local (DOS), then the _d_e_f_a_u_l_t-_f_c_c_R _n_e_e_d_s _t_o _b_e
  3947.           "_S_E_N_T_M_A_I_L",  _w_h_i_c_h  _i_s  _s_y_n_t_a_x _f_o_r _a _D_O_S _f_i_l_e.
  3948.           _H_o_w_e_v_e_r, _i_f _t_h_e _d_e_f_a_u_l_t _c_o_l_l_e_c_t_i_o_n  _f_o_r  _s_a_v_e_s
  3949.           _i_s  _r_e_m_o_t_e,  _t_h_e_n  _t_h_e _d_e_f_a_u_l_t-_f_c_c needs to be
  3950.           "sent-mail" to match the UNIX syntax.
  3951.  
  3952.           The danger here is that the  sent  mail  could
  3953.           grow  without  bound.   For  this  reason,  we
  3954.           thought it useful to encourage  the  users  to
  3955.           periodically  prune  their  sent  mail folder.
  3956.           The first time Pine is used each month it will
  3957.           offer  to  archive  all messages sent from the
  3958.           month before.  Pine also offers to delete  all
  3959.           the  sent  mail archive folders which are more
  3960.           than 1 month old.  If the user or  system  has
  3961.           disabled  sent  mail archiving (by setting the
  3962.           configuration variable _d_e_f_a_u_l_t-_f_c_c="")  or  if
  3963.           the  fcc  folder  is a remote/IMAP folder then
  3964.           there will be no pruning question.
  3965.  
  3966.           It is likely that Pine  will  be  improved  so
  3967.           that  users  can  set  the  time increment for
  3968.           pruning (weekly, monthly, yearly,  never)  but
  3969.  
  3970.  
  3971.                            - 61 -
  3972.  
  3973.  
  3974.  
  3975.  
  3976.  
  3977.  
  3978.  
  3979.                   - Pine Technical Notes -
  3980.  
  3981.  
  3982.           that has not been implemented yet.
  3983.  
  3984.  
  3985.  
  3986.  
  3987.           _S_p_e_l_l _C_h_e_c_k_e_r
  3988.  
  3989.           Spell checking  is  available  for  UNIX  Pine
  3990.           only.   We  could  not  find an appropriate PC
  3991.           based spell  checker  to  hook  into  PC-Pine.
  3992.           Even  UNIX  Pine depends on the system for its
  3993.           spell checking and dictionary.  Pico, the text
  3994.           editor, uses the same spell checking scheme as
  3995.           Pine.
  3996.  
  3997.           Lines beginning with ">" (usually messages in-
  3998.           cluded  in replies) are not checked.  The mes-
  3999.           sage text to be checked is on the standard in-
  4000.           put  and  the  incorrect words are expected on
  4001.           the standard output.
  4002.  
  4003.           The default spell checker is UNIX _s_p_e_l_l.   You
  4004.           can replace this at compile time for the whole
  4005.           system.  Pine also  respects  the  environment
  4006.           variable  _S_P_E_L_L.   If it is set, Pine will use
  4007.           that as the spelling  checker.   The  spelling
  4008.           checker  reads  its words from a standard dic-
  4009.           tionary on the system.  Below  is  a  descrip-
  4010.           tion,  contributed by Bob Hurt, of how you can
  4011.           create your own personal dictionary with addi-
  4012.           tional "correct" words.
  4013.  
  4014.  
  4015.           Step 1:
  4016.                Make a file with all the words  you  want
  4017.                to include in your new dictionary.  I did
  4018.                mine with one word per line in alphabeti-
  4019.                cal  order.  Caps don't matter at all, as
  4020.                far as I know.
  4021.  
  4022.           Step 2:
  4023.                At the UNIX prompt, type "cat [word file]
  4024.                |  spellin  /usr/dict/hlista  > [new dict
  4025.                name]" where [word file] is the file  you
  4026.                just  created  and [new dict name] is the
  4027.                name of the new dictionary that Pine will
  4028.                look   at   instead   of   the   standard
  4029.                /_u_s_r/_d_i_c_t/_h_l_i_s_t_a.  I named my  word  file
  4030.                ._b_o_b_w_o_r_d_s  and my dictionary ._b_o_b_s_p_e_l_l so
  4031.                I don't have to see them when I do  a  _l_s
  4032.                command (_l_s doesn't list "dot" files).  I
  4033.                also put the above command into my ._a_l_i_a_s
  4034.                file as the command _m_a_k_e_d_i_c_t so I can add
  4035.  
  4036.  
  4037.                            - 62 -
  4038.  
  4039.  
  4040.  
  4041.  
  4042.  
  4043.  
  4044.  
  4045.                   - Pine Technical Notes -
  4046.  
  4047.  
  4048.                a word to my word  file  and  easily  re-
  4049.                create  my  dictionary.   NOTE:   the new
  4050.                dictionary  is  in  something  called   a
  4051.                "hashed"  format,  and can't be read nor-
  4052.                mally.
  4053.  
  4054.           Step 3:
  4055.                Check your new dictionary.  At  the  UNIX
  4056.                prompt,  type "cat [word file] | spellout
  4057.                [new dict name]" If  you  did  everything
  4058.                correctly, it should just give you anoth-
  4059.                er prompt.  If it lists any of the  words
  4060.                in  your file, something is wrong.  I can
  4061.                try to help if all else fails.
  4062.  
  4063.           Step 4:
  4064.                Now you have to tell  UNIX  to  use  your
  4065.                dictionary instead of the standard one by
  4066.                setting the environment variable _S_P_E_L_L to
  4067.                access  your  dictionary.   Go  into your
  4068.                ._l_o_g_i_n or ._c_s_h_r_c file in your home direc-
  4069.                tory  (it  doesn't seem to make a differ-
  4070.                ence which one you use) and add the line
  4071.  
  4072.                                    setenv SPELL "spell -d [new dict name]"
  4073.  
  4074.  
  4075.  
  4076.                I also created an alias for _S_P_E_L_L  in  my
  4077.                ._a_l_i_a_s  file  so I can use the UNIX _s_p_e_l_l
  4078.                command to spell-check a file outside  of
  4079.                Pine.   (The  ._a_l_i_a_s line is: alias spell
  4080.                'spell -d [new dict name]')
  4081.  
  4082.           Step 5:
  4083.                Now you need to logoff and log back on to
  4084.                let  UNIX look at your ._l_o_g_i_n (or ._c_s_h_r_c)
  4085.                file.
  4086.  
  4087.  
  4088.  
  4089.  
  4090.  
  4091.           _T_e_r_m_i_n_a_l _E_m_u_l_a_t_i_o_n _a_n_d _K_e_y _M_a_p_p_i_n_g
  4092.  
  4093.           Pine has been designed to require as little as
  4094.           possible  from  the terminal.  At the minimum,
  4095.           Pine requires cursor positioning, clear to end
  4096.           of  line,  and  inverse video.  Unfortunately,
  4097.           there are terminals that are missing  some  of
  4098.           these  such  as a vt52.  Pine makes no assump-
  4099.           tions as to  whether  the  terminal  wraps  or
  4100.           doesn't wrap.  If the terminal has other capa-
  4101.  
  4102.  
  4103.                            - 63 -
  4104.  
  4105.  
  4106.  
  4107.  
  4108.  
  4109.  
  4110.  
  4111.                   - Pine Technical Notes -
  4112.  
  4113.  
  4114.           bilities it will use  them.   Pine  won't  run
  4115.           well  on  older terminals that require a space
  4116.           on the screen to change video attributes, such
  4117.           as the Televideo 925.  One can get around this
  4118.           on some terminals by using  "protected  field"
  4119.           mode.   The  terminal  can  be made to go into
  4120.           protected mode for reverse video, and then re-
  4121.           verse video is assigned to protected mode.
  4122.  
  4123.           Pine handles screens  of  most  any  size  and
  4124.           resizing  on the fly.  It catches SIGWINCH and
  4125.           does the appropriate thing.  A screen one line
  4126.           high  will display only the new mail notifica-
  4127.           tion.  Screens that are less than ten  columns
  4128.           wide  don't  format  very nicely or work well,
  4129.           but will function fine again once  resized  to
  4130.           something  large.   Pine sets an internal max-
  4131.           imum screen size (currently 170x200)  and  de-
  4132.           cides  to  use either _t_e_r_m_c_a_p or _t_e_r_m_i_n_f_o when
  4133.           it is compiled.
  4134.  
  4135.           On the input side of things, Pine uses all the
  4136.           standard  keys,  most  of the control keys and
  4137.           (in  function-key  mode)  the  function  keys.
  4138.           Pine avoids certain control keys, specifically
  4139.           ^S, ^Q, ^H, and ^\  because  they  have  other
  4140.           meanings  outside  of  Pine (they control data
  4141.           flow, etc.) ^_H is  treated  the  same  as  the
  4142.           _d_e_l_e_t_e  key,  so  the _b_a_c_k_s_p_a_c_e or _d_e_l_e_t_e keys
  4143.           always works regardless of any  configuration.
  4144.           In  an  upcoming version, there will be an op-
  4145.           tion to have the _d_e_l_e_t_e  key  behave  like  ^D
  4146.           rather than ^H.
  4147.  
  4148.           When a function key is pressed and Pine is  in
  4149.           regular  (non-function  key)  mode, Pine traps
  4150.           escape sequences for a number of common  func-
  4151.           tion  keys so users don't get an error message
  4152.           or have an  unexpected  command  executed  for
  4153.           each  character  in  the function key's escape
  4154.           sequence.  Pine expects the  following  escape
  4155.           sequences from terminals defined as VT100:
  4156.  
  4157.  
  4158.                       ANSI/VT100
  4159.               F1:     <ESC>OP
  4160.               F2:     <ESC>OQ
  4161.               F3:     <ESC>OR
  4162.               F4:     <ESC>OS
  4163.               F5:     <ESC>Op
  4164.               F6:     <ESC>Oq
  4165.               F7:     <ESC>Or
  4166.               F8:     <ESC>Os
  4167.  
  4168.  
  4169.                            - 64 -
  4170.  
  4171.  
  4172.  
  4173.  
  4174.  
  4175.  
  4176.  
  4177.                   - Pine Technical Notes -
  4178.  
  4179.  
  4180.               F9:     <ESC>Ot
  4181.               F10:    <ESC>Ou
  4182.               F11:    <ESC>Ov
  4183.  
  4184.  
  4185.  
  4186.           Arrow keys are a special case.  Pine  has  the
  4187.           escape  sequences  for a number of conventions
  4188.           for arrow keys hard coded  and  does  not  use
  4189.           _t_e_r_m_c_a_p  to  discover  them.   This is because
  4190.           _t_e_r_m_c_a_p is sometimes  incorrect,  and  because
  4191.           many  users  have PC's running terminal emula-
  4192.           tors that don't conform exactly to  what  they
  4193.           claim  to emulate. Some arrow keys on old ter-
  4194.           minals send single control characters like  ^_K
  4195.           (one  even  sends  ^\).  These arrow keys will
  4196.           not work with Pine.  The most  popular  escape
  4197.           sequences for arrow keys are:
  4198.  
  4199.  
  4200.               Up:     <ESC>[A <ESC>?x <ESC>A  <ESC>OA
  4201.               Down:   <ESC>[B <ESC>?r <ESC>B  <ESC>OB
  4202.               Right:  <ESC>[C <ESC>?v <ESC>C  <ESC>OC
  4203.               Left:   <ESC>[D <ESC>?t <ESC>D  <ESC>OD
  4204.  
  4205.  
  4206.  
  4207.           It is possible to configure an NCD  X-terminal
  4208.           so  that  some  of  the  special keys operate.
  4209.           Brad Greer contributes these instructions:
  4210.  
  4211.  
  4212.           1.   In your ._X_d_e_f_a_u_l_t_s file, include the fol-
  4213.                lowing  "translations",  using  lower hex
  4214.                values:
  4215.  
  4216.  
  4217.                    Pine*VT100.Translations: #override \n\
  4218.                    <Key>Delete:    string(0x04)    \n\
  4219.                    <Key>End:       string(0x05)    \n\
  4220.                    <Key>Escape:    string(0x03)    \n\
  4221.                    <Key>Home:      string(0x01)    \n\
  4222.                    <Key>Next:      string(0x16)    \n\
  4223.                    <Key>Prior:     string(0x19)    \n\
  4224.                    <Key>KP_Enter:  string(0x18)    \n\
  4225.  
  4226.  
  4227.  
  4228.  
  4229.           2.   Start up Pine from an _x_t_e_r_m, and  specify
  4230.                a  "resource  name".   This resource name
  4231.                will allow the user to specify  resources
  4232.                for  Pine  (that  deviate  from  the  de-
  4233.  
  4234.  
  4235.                            - 65 -
  4236.  
  4237.  
  4238.  
  4239.  
  4240.  
  4241.  
  4242.  
  4243.                   - Pine Technical Notes -
  4244.  
  4245.  
  4246.                faults).  For example, _x_t_e_r_m  -_n_a_m_e  _P_i_n_e
  4247.                -_e   _p_i_n_e   &  (the  resource  name  _P_i_n_e
  4248.                corresponds to the translations just  ad-
  4249.                ded in the ._X_d_e_f_a_u_l_t_s file).
  4250.  
  4251.  
  4252.  
  4253.  
  4254.  
  4255.  
  4256.  
  4257.  
  4258.  
  4259.  
  4260.  
  4261.  
  4262.  
  4263.  
  4264.  
  4265.  
  4266.  
  4267.  
  4268.  
  4269.  
  4270.  
  4271.  
  4272.  
  4273.  
  4274.  
  4275.  
  4276.  
  4277.  
  4278.  
  4279.  
  4280.  
  4281.  
  4282.  
  4283.  
  4284.  
  4285.  
  4286.  
  4287.  
  4288.  
  4289.  
  4290.  
  4291.  
  4292.  
  4293.  
  4294.  
  4295.  
  4296.  
  4297.  
  4298.  
  4299.                            - 66 -
  4300.  
  4301.  
  4302.  
  4303.  
  4304.  
  4305.  
  4306.  
  4307.                   - Pine Technical Notes -
  4308.  
  4309.  
  4310.                _S_e_c_t_i_o_n _7-_N_o_t_e_s _f_o_r _P_o_r_t_i_n_g _a_n_d _M_o_d_i_f_i_c_a_t_i_o_n
  4311.  
  4312.  
  4313.  
  4314.           _P_o_r_t_i_n_g _P_i_n_e _t_o _O_t_h_e_r _P_l_a_t_f_o_r_m_s
  4315.  
  4316.           Substantial  effort  has  gone   into   making
  4317.           Pine/Pico   portable.   There  are  still,  of
  4318.           course,  a  number  of  machine  dependencies.
  4319.           Some of the ports are well-tested and some are
  4320.           untested.  In  particular,  the  most  heavily
  4321.           used  ports are the Ultrix, NeXT, DOS, and PTX
  4322.           ports.
  4323.  
  4324.           Each platform is given  a  three  letter  name
  4325.           (see  the file _d_o_c/_p_i_n_e-_p_o_r_t_s).  Make up a new
  4326.           one for your new  port.   We've  attempted  to
  4327.           bring all potential platform dependencies into
  4328.           three   files:   _o_s-_x_x_x._h,    _o_s-_x_x_x._c,    and
  4329.           _m_a_k_e_f_i_l_e._x_x_x  where  _x_x_x  is  the three letter
  4330.           name of the port.   Thus  any  new  port  will
  4331.           hopefully just result in new versions of these
  4332.           files and some notes for the _p_i_n_e-_p_o_r_t_s  file.
  4333.           This  is actually nine new files because there
  4334.           is a set of these files in the c-client, Pico,
  4335.           and Pine source directories.  (As you can tell
  4336.           by reading this technical note, Pine originat-
  4337.           ed  on  Unix systems. There are still probably
  4338.           many Unix dependencies built in.  There is now
  4339.           a  _D_O_S  port, which is the only non-Unix port.
  4340.           The source code is full of instances of "ifdef
  4341.           DOS".   Most  of these are due to memory limit
  4342.           problems on _D_O_S as opposed  to  actual  system
  4343.           dependencies.)  A _V_M_S (or other) port would no
  4344.           doubt reveal  many  remaining  Unix  dependen-
  4345.           cies.)
  4346.  
  4347.           The  makefiles  are   kept   as   simple   and
  4348.           straight-forward  as  possible,  because  many
  4349.           previous attempts  at  automatically  figuring
  4350.           out what to do seem to have become complex and
  4351.           ineffective in what they set out to do:  which
  4352.           is  to  make compiling and installing the pro-
  4353.           gram  easy.   Each  port  is  for  a  specific
  4354.           hardware/software  platform, also because past
  4355.           attempts to generalize on versions of Unix  or
  4356.           some  CPU  architecture  don't  seem  to  have
  4357.           gained  much.   Thus,  there  is  a   separate
  4358.           makefile  for each platform that calls the ap-
  4359.           propriate compiler and  linker  with  the  ap-
  4360.           propriate  flags.  Most of these makefiles are
  4361.           pretty similar.  The makefile  also  specifies
  4362.           which  of  the  _o_s-_x_x_x._c and _o_s-_x_x_x._h files to
  4363.  
  4364.  
  4365.                            - 67 -
  4366.  
  4367.  
  4368.  
  4369.  
  4370.  
  4371.  
  4372.  
  4373.                   - Pine Technical Notes -
  4374.  
  4375.  
  4376.           use.  It is the root from which  all  platform
  4377.           dependencies  are selected.  In most cases the
  4378.           makefile also defines a symbol named after the
  4379.           platform on which there can be dependencies in
  4380.           the source code, though we've tried to  minim-
  4381.           ize  relying  on this where reasonable.  Pine,
  4382.           Pico, and the C-client don't quite  do  every-
  4383.           thing  the  same  (there  are  at  least three
  4384.           separate  authors  involved).   Basically,  to
  4385.           build  the  source  in one of the directories,
  4386.           run _m_a_k_e -_f  _m_a_k_e_f_i_l_e._x_x_x  where  _x_x_x  is  the
  4387.           three-letter name of the platform.  That's all
  4388.           the _b_u_i_l_d script does.  When  starting  a  new
  4389.           port in the _p_i_n_e directory, there is a generic
  4390.           makefile called _m_a_k_e_f_i_l_e._g_e_n which is  a  good
  4391.           starting point.
  4392.  
  4393.           The file _o_s-_x_x_x._h is used for general platform
  4394.           dependent  #_i_n_c_l_u_d_e's  and  #_d_e_f_i_n_e_s.   In the
  4395.           _p_i_n_e directory these ._h files are  located  in
  4396.           the _o_s_d_e_p subdirectory.  All the include files
  4397.           that have been found to vary from one platform
  4398.           to  another  are  also  included here.  In the
  4399.           case of Pico, there is only one _o_s-_x_x_x._h  file
  4400.           called _o_s-_u_n_x._h for most of the supported Unix
  4401.           ports and inside it are #_i_f_d_e_f_s based  on  the
  4402.           platform   specific   symbol  defined  in  the
  4403.           makefile.  On the other hand, Pine now  has  a
  4404.           separate  _o_s-_x_x_x._h  file  for  each  platform.
  4405.           There are a number of Pine configuration  set-
  4406.           tings  that are defined here, as well, such as
  4407.           the place it looks for certain files, defaults
  4408.           for  the printer and folder names, the maximum
  4409.           screen size, and so on.  For the Pine  portion
  4410.           of  the  port, start by looking at the generic
  4411.           _o_s-_g_e_n._h file and comparing it to some of  the
  4412.           specific _o_s-_x_x_x._h files in _o_s_d_e_p.
  4413.  
  4414.           The _o_s-_x_x_x._c file contains functions that  are
  4415.           potentially  platform  dependent.   Again, the
  4416.           idea is to gather all the dependencies in  one
  4417.           place.  Pico uses the same strategy here as it
  4418.           uses with _o_s-_u_n_x._h.  That is, there is a  sin-
  4419.           gle  _o_s-_u_n_x._c file for most of the Unix ports.
  4420.           Pine uses a complicated looking method to pro-
  4421.           duce  the _o_s-_x_x_x._c file from a set of included
  4422.           files.  Each included file usually contains  a
  4423.           single function and we've found that there are
  4424.           usually only a  couple  different  implementa-
  4425.           tions of each function in the ports we've done
  4426.           so far.  Hopefully, coming up with an _o_s-_x_x_x._c
  4427.           for a new port will usually be a matter of in-
  4428.           cluding the right set of these already written
  4429.  
  4430.  
  4431.                            - 68 -
  4432.  
  4433.  
  4434.  
  4435.  
  4436.  
  4437.  
  4438.  
  4439.                   - Pine Technical Notes -
  4440.  
  4441.  
  4442.           functions.   This is done by writing a new _o_s-
  4443.           _x_x_x._i_c file in the _o_s_d_e_p subdirectory.   Start
  4444.           with  the  generic  _o_s-_g_e_n._i_c, as you did with
  4445.           the _o_s-_g_e_n._h file above.
  4446.  
  4447.           We strongly encourage that no changes be  made
  4448.           to  the  general  source when porting and that
  4449.           all changes be  contained  in  the  three/nine
  4450.           system  dependent  files if possible.  The ob-
  4451.           ject is to maintain source code integrity  and
  4452.           assimilate  ports  to  new  platforms rapidly.
  4453.           The more conventional way to do this is with a
  4454.           large collection of #_i_f_d_e_f_s.  The problem with
  4455.           this is that adding a port for a new  platform
  4456.           implies  changing  the source code for all the
  4457.           other platforms  and  thereby  risks  breaking
  4458.           them.   (We readily admit that there are still
  4459.           too many _i_f_d_e_f_s in the code,  but  we  haven't
  4460.           had time to devote to fully cleaning that up.)
  4461.  
  4462.           If you do port Pine to a new platform we  hope
  4463.           that  you will send us the changes required so
  4464.           that we may attempt to include it in  a  later
  4465.           release.  Thanks!
  4466.  
  4467.  
  4468.  
  4469.           _T_e_s_t _C_h_e_c_k_l_i_s_t
  4470.  
  4471.           The following is a checklist of some things to
  4472.           check when testing a new port:
  4473.  
  4474.  
  4475.           ___  Sending mail, check  that  full  name  is
  4476.                correct
  4477.           ___  Sending mail with SMTP server
  4478.           ___  Replying to and forwarding a message
  4479.           ___  Postponing message under composition
  4480.           ___  Make sure local user names are expanded
  4481.           ___  Test spelling checker
  4482.           ___  Catching of SIGHUP while message is being
  4483.                composed
  4484.           ___  Setting of variables in ._p_i_n_e_r_c
  4485.           ___  New  mail  notification.   Should  happen
  4486.                with Pine idle to check timeouts
  4487.           ___  Reading mail
  4488.           ___  Deleting and undeleting
  4489.           ___  Expunge to empty folder
  4490.           ___  Make sure that ~ expansion works
  4491.           ___  Save message to folder, check error  con-
  4492.                ditions such as permission denied
  4493.           ___  Export message
  4494.  
  4495.                            - 69 -
  4496.  
  4497.  
  4498.  
  4499.  
  4500.  
  4501.  
  4502.  
  4503.                   - Pine Technical Notes -
  4504.  
  4505.  
  4506.           ___  Checkpointing (make 20 status changes, or
  4507.                19 and wait 30 sec)
  4508.           ___  Open IMAP and RIMAP folders
  4509.           ___  Default-fcc on remote IMAP server
  4510.           ___  Test opening bogus folders: invalid  for-
  4511.                mat, no permission
  4512.           ___  Open  a  USENET  news  group,   list   in
  4513.                folder-lister, read news
  4514.           ___  Command line arguments
  4515.           ___  Change password
  4516.           ___  Lock keyboard
  4517.           ___  Address book operations
  4518.           ___  Take command
  4519.           ___  Send mail with empty address book
  4520.           ___  Make sure  that  SIGQUIT,  ^ confirmation
  4521.                works (check core dump too)
  4522.           ___  Test panic (Give '#' command on main menu
  4523.                with debug level > 8)
  4524.           ___  Make sure SIGSTP, ^Z works
  4525.           ___  Pinef
  4526.           ___  Sent-mail pruning
  4527.           ___  Printing using all three  printer  confi-
  4528.                gurations
  4529.           ___  View help text & news
  4530.           ___  Folder list operations  (rename,  create,
  4531.                delete...)
  4532.           ___  Screen redrawing (^L)
  4533.           ___  Window resizing
  4534.           ___  Error  messages  for  incorrect  terminal
  4535.                types (try "foo" and "vt52")
  4536.           ___  Reading of /_u_s_r/_l_o_c_a_l/_l_i_b/_p_i_n_e._c_o_n_f
  4537.  
  4538.  
  4539.  
  4540.  
  4541.  
  4542.  
  4543.  
  4544.  
  4545.  
  4546.  
  4547.  
  4548.  
  4549.  
  4550.  
  4551.  
  4552.  
  4553.  
  4554.  
  4555.  
  4556.  
  4557.  
  4558.  
  4559.                            - 70 -
  4560.  
  4561.  
  4562.  
  4563.  
  4564.  
  4565.  
  4566.  
  4567.                   - Pine Technical Notes -
  4568.  
  4569.  
  4570.                       - Pine Technical Notes -
  4571.  
  4572.                      Version 3.85, September 1993
  4573.  
  4574.                _S_e_c_t_i_o_n _1 - _I_n_t_r_o_d_u_c_t_i_o_n ...........    3
  4575.                Design Goals .......................    3
  4576.                Pine Components ....................    5
  4577.                _S_e_c_t_i_o_n _2 - _B_a_c_k_g_r_o_u_n_d _D_e_t_a_i_l_s .....    6
  4578.                Domain Names .......................    6
  4579.                RFC-822 Compliance .................    7
  4580.                SMTP and Sendmail ..................    8
  4581.                Interactive  Mail   Access   Protocol
  4582.                     (IMAP) ........................    9
  4583.                Multipurpose Internet Mail Extensions
  4584.                     (MIME) ........................   10
  4585.                Folder Collections .................   12
  4586.                _S_e_c_t_i_o_n _3 - _B_u_i_l_d_i_n_g _a_n_d _I_n_s_t_a_l_l_a_t_i_o_n
  4587.                     ...............................   13
  4588.                UNIX Pine Compile-time Options .....   13
  4589.                Pico Compile-time Options ..........   14
  4590.                IMAPd Compile-time Options .........   14
  4591.                Buiding the Pine Programs ..........   15
  4592.                Installing  Pine  and  Pico  on  UNIX
  4593.                     Platforms .....................   16
  4594.                Installing PC-Pine .................   16
  4595.                Installing IMAPd ...................   18
  4596.                Support Files: UNIX Pine ...........   19
  4597.                Support Files: PC-Pine .............   20
  4598.                _S_e_c_t_i_o_n _4 - _C_o_m_m_a_n_d _L_i_n_e _A_r_g_u_m_e_n_t_s .   22
  4599.                _S_e_c_t_i_o_n _5 - _C_o_n_f_i_g_u_r_a_t_i_o_n _a_n_d _P_r_e_f_e_r-
  4600.                     _e_n_c_e_s .........................   25
  4601.                Pine Configuration .................   25
  4602.                General Configuration Variables ....   26
  4603.                Special Configuration Variables ....   30
  4604.                Retired Variables ..................   32
  4605.                Pine in Function Key Mode ..........   32
  4606.                Domain Settings ....................   33
  4607.                Syntax for Collections .............   34
  4608.                Syntax for Remote Folders ..........   37
  4609.                Sorting a Folder ...................   38
  4610.                Alternate Editor ...................   38
  4611.                Signatures and Signature Placement .   39
  4612.                Feature List Variable ..............   40
  4613.                Additional Notes on PC-Pine ........   40
  4614.                _S_e_c_t_i_o_n _6-_B_e_h_i_n_d _t_h_e _S_c_e_n_e_s ........   43
  4615.                Address Books ......................   43
  4616.                Checkpointing ......................   44
  4617.                Debug Files ........................   45
  4618.                Filters ............................   45
  4619.                Folder Formats .....................   46
  4620.                Folder Locking .....................   48
  4621.                INBOX and Special Folders ..........   50
  4622.                Internal Help Files ................   51
  4623.  
  4624.  
  4625.                            - 71 -
  4626.  
  4627.  
  4628.  
  4629.  
  4630.  
  4631.  
  4632.  
  4633.                   - Pine Technical Notes -
  4634.  
  4635.  
  4636.                International Character Sets .......   51
  4637.                Interrupted and Postponed Messages .   54
  4638.                Message Status .....................   55
  4639.                MIME-Reading a Message .............   55
  4640.                MIME-Sending a Message .............   56
  4641.                New Mail Notification ..............   58
  4642.                NFS ................................   58
  4643.                Printers and Printing ..............   59
  4644.                Save and Export ....................   60
  4645.                Sent Mail ..........................   61
  4646.                Spell Checker ......................   62
  4647.                Terminal Emulation and Key Mapping .   63
  4648.                _S_e_c_t_i_o_n  _7-_N_o_t_e_s  _f_o_r   _P_o_r_t_i_n_g   _a_n_d
  4649.                     _M_o_d_i_f_i_c_a_t_i_o_n ..................   67
  4650.                Porting Pine to Other Platforms ....   67
  4651.                Test Checklist .....................   69
  4652.  
  4653.  
  4654.  
  4655.  
  4656.  
  4657.  
  4658.  
  4659.  
  4660.  
  4661.  
  4662.  
  4663.  
  4664.  
  4665.  
  4666.  
  4667.  
  4668.  
  4669.  
  4670.  
  4671.  
  4672.  
  4673.  
  4674.  
  4675.  
  4676.  
  4677.  
  4678.  
  4679.  
  4680.  
  4681.  
  4682.  
  4683.  
  4684.  
  4685.  
  4686.  
  4687.  
  4688.  
  4689.                            - 72 -
  4690.  
  4691.  
  4692.