ELM ME+ 2.5 PLalpha53 announcement

Elm ME+ 2.5 PLalpha53

- Is available with
	<URL: http://www.elmme-mailer.org/elm-ME+2.5.PLalpha53.patch.gz >
  and	<URL: http://www.elmme-mailer.org/elm-ME+2.5.alpha53.6dd727263e86c29505c192e95239377c.tar.gz >
  via http.

- Is available with
	<URL: https://hurtta.kapsi.fi/elm-ME+2.5/elm-ME+2.5.PLalpha53.patch.gz >
  and	<URL: https://hurtta.kapsi.fi/elm-ME+2.5/elm-ME+2.5.alpha53.6dd727263e86c29505c192e95239377c.tar.gz >
  via https.

- Is available on ftp.funet.fi
  via anonymous ftp
    directory pub/mirrors/elmme-mailer.org/src/elm-ME+2.5/

    files	elm-ME+2.5.PLalpha53.patch.gz
    and		elm-ME+2.5.alpha53.6dd727263e86c29505c192e95239377c.tar.gz

  or is available with
	<URL: ftp://ftp.funet.fi/pub/mirrors/elmme-mailer.org/src/elm-ME+2.5/elm-ME+2.5.PLalpha53.patch.gz >
  and	<URL: ftp://ftp.funet.fi/pub/mirrors/elmme-mailer.org/src/elm-ME+2.5/elm-ME+2.5.alpha53.6dd727263e86c29505c192e95239377c.tar.gz >
  with browser

  or is available with
	<URL: https://nic.funet.fi/pub/mirrors/elmme-mailer.org/src/elm-ME+2.5/elm-ME+2.5.PLalpha53.patch.gz >
  and	<URL: https://nic.funet.fi/pub/mirrors/elmme-mailer.org/src/elm-ME+2.5/elm-ME+2.5.alpha53.6dd727263e86c29505c192e95239377c.tar.gz >
  via https.

- Is available with
	message-id <elmME+2.5/PLalpha53/1-0@kasvihuone.keh.iki.fi>
  on newsgroups alt.sources and comp.mail.elm

SUMMARY: This release fixes some parsing on address
         prompts and other bugs. This release changes
         multipart/related handling and mailcap
         programs prompt. This release adds X-Mailer:
         to  ~/.elm/elmheaders file and header editing
         screen. Also elmconfwriter command includes
         -b<backup-suffix> option. New elmrc
         options are "program-identification" and
         "pagerelated". Also some other changes
         are included.

Changes on Elm ME+ 2.5 PLalpha53 compared with Elm ME+ 2.5 PLalpha52

        SUMMARY: This release fixes some parsing on address
                 prompts and other bugs. This release changes
                 multipart/related handling and mailcap
                 programs prompt. This release adds X-Mailer:
                 to  ~/.elm/elmheaders file and header editing
                 screen. Also elmconfwriter command includes
                 -b<backup-suffix> option. New elmrc
                 options are "program-identification" and
                 "pagerelated". Also some other changes
                 are included.

        - Added Configure test for __int128 type.

        - If __int128 is available, use that on generation of
          left side (local part) of message id. That is used
          when {localspec} on "generate-message-id" option
          is either "md5" or "/dev/urandom". When __int128
          used these options produce left part without
          dot ('.'). That means there is 1 dot ('.') separated
          "word" on local part ( left side ) of message id.
          Otherwise when unsigned long is 64 bits, there
          is 2  dot ('.') separated "word" on local part
          ( left side ) of message id. And if unsigned long
          is 32 bits, there is 4 dot ('.') separated "word"
          on local part ( left side ) of message id. 

        - Address prompts accepts space as address separation
          but also accepts form
               phrase <address>
          Fixed bug where extra space after <address> caused
          that to be interpreted as two addresses 'phrase'
          and '<address>'. That is on

        - Prompt mailcap programs when metamail is required, but
          not available. Causes that  for unsupported
          multipart/related have mailcap used on text/html part. Note
          that this does not work correctly, because related parts are
          not available.

        - Report unsupported multipart and other types on mailcap
          programs prompt if it caused that metamail was required. 
        * Note that setting elmrc option "pagemultipart" causes these
          unknown multipart types are not considered unsupported.
          Handling of "multipart/related" is controlled by
          elmrc option "pagerelated".

        - Moved NOTPLAIN_* macros from hdrs/elm_defs.h
          to hdrs/addrlib.h

        - Added -b<backup-suffix> option to elmconfwriter. Elmconfwriter
          checks first that there is no files in form
          <config file><backup-suffix> exists when -b<backup-suffix> option
          is used.
        - Command elmconfwriter -lb<backup-suffix>
          can be used to make backup of config files.
        - Option -b<backup-suffix> without -l option (list
          config files) causes that config
          file <config file> is preserved as
          <config file><backup-suffix> when file <config file> rewritten.

        - Added change_file_utime() to lib/mbox/utime_util.c
        - Changed newmail to use change_file_utime()
        - Changed  fbrowser_selection_is_mbox(),  mbx_move_temp_file()
          to use change_file_utime()

        - Changed prototype of elm_chown
        - Added variable CHOWN_neg1 (constant)

        - Tried fix usr1_signal() and usr2_signal() so that they
          do not hang (looping).

        - Allowed
          header field on ~/.elm/elmheaders file and on
          'invoke e(d)itor' buffer on  header editing screen.
          Note however that ~/.elm/elmheaders file is used both on
          elm and fastmail -commands.
          This overrides default value of X-Mailer: header field.
          If empty field is given, X-Mailer: header field is not
          added when mail is sent.
        - Added struct string *xmailer to struct mailing_headers
        - Added
          header field to edit buffer used by 'invoke e(d)itor' on 
          header editing screen. This is added to screen
          only if there is value on X-Mailer:  header field.
          This is supported on static struct header_info
          header_types[] on lib/addr/headers.c.

        - Added elmrc option "program-identification".
          Option includes list of keywords:
               none            None of values are selected
               X-Mailer        Add X-Mailer: header field
               version         Add version information to header
               User-Agent      Add User-Agent header field
         The "program-identification" elm.rc option
         accepts two forms:                    
             - Absolute form where used options are listed
             - Additive form where changes from compile
               time default are listed:
               +X-Mailer        -X-Mailer
               +version         -version
               +User-Agent      -User-Agent
         These two forms can not be mixed.  
       - Note that also message-id domain, when
         it is msg-id.elmme-mailer.org, identifies program.
         Also X-ELM-OSV: header field, if generated,
         identifies program.
       - Added generation of
            User-Agent: elmme/{libversion} ({X-Mailer})
         header field. This requires that on
         "program-identification" mentions this header field.
         This header fields can not given
         on ~/.elm/elmheaders file or on 'invoke e(d)itor'
         buffer on  header editing screen. 
       - Added char * encoded_user_agent to struct mailing_headers
       - Added sndhelper_update_user_agent() to lib/mailer/senderhelper.c
         and hdrs/mailerlib.h
       - Added "User-Agent" to static struct header_info header_types[]
         on lib/addr/headers.c

       - Fixed getsockname() test on Configure

       - Added elmrc option "pagerelated". This control handling
         of multipart/related messages. Option have values
                no              May use metamail, if available.
                yes             Try page first (or start) part,
                single-part     Try page single part
         Default value is "single-part".
        NOTE: multipart/related is not supported, and related parts are not
              "passed" to first (or start) part.
        - Note that multipart/related is used normally with text/html as
          first part. That is not supported, and also not work when mailcap
          is used for text/html.
        > This is also known as MHTML.
        - When multipart/related have only single part (that is start part),
          using multipart/related is superfluous. In that case multipart/related
          is not required, and can be replaced with that single part.

        RFC 2387: The MIME Multipart/Related Content-type

         Also boolean ON, OFF, TRUE, FALSE, YES and NO values are allowed
         on elmrc option  "pagerelated".

       - Added struct message_id *     content_id
         to struct mimeinfo

       - Changed prototype of parse_mime_headers1(), mime_parser_parse(),
         mpar_parse(), mime_read_header()
       - Changed prototype of mpar_parse()

       - Fixed set_out_state_line_mode() so that NULL range parameter
         does not reset current range.

       - Added "DKIM-Signature:" to default weedlist. 

       - Fixed incorrect calls of change_helper_3()
         on terminal_switch_to() which caused memory corruption.

       - Added 
            unsigned                busy:1;
         to struct domain_info on lib/mailer/message-id.c

       - Fixed case where check_msg_domain0() was called with domain
         name (pointer), which was same than dompart field
         on struct domain_info;
        New elmrc options:
        New file:


        - Not compiled with MMDF support defined, so probably it doesn't 
          work (or even compile).

        - This has not been tested much so there can be bad bugs. 

          Bug reports to: Kari E. Hurtta <elm@elmme-mailer.org>
                                     (was hurtta+elm@posti.FMI.FI)

        - Internationalized (ie. non-ASCII) domain names are not supported.

        - Support for multipart/signed and multipart/encrypted (specially: 
          support for PGP/MIME) only in reading side. There is no support 
          for attachments with multipart/encrypted.

        - HP's shoftkeys are no longer supported

        - DECNET addresses like host::user may be interpreted as phrase
          of group syntax or as route of source routed address.

        - Header editing screen now uses addresses in form phrase <address>, 
          but because it does not require using of comma (,), multiword 
          phrases must be entered in quotes. 

          For example:  "Kari Hurtta" <hurtta>

        - If address includes <> or comments (), they are not aliased 
          expanded. So aliases must be entered as bare words.

        - Addresses given as arguments to elm command should be given
          as one address per argument. Giving of sevaral addresses per 
          one argument causes that address is misparsed if header is 
          edited on header editing screen.

          That is:

                Use:    elm  '"Kari Hurtta" <hurtta>' 'Admin <root>'

          Don't use:    elm  'Kari Hurtta <hurtta>, Admin <root>'

        - p)rint command acts as P)rint text -command. So it
          is currently quite useless.
          p)rint command does that via readmsg -command. However
          P)rint text does actually same (without readmsg).

        - Some Linux libraries does not follow $LC_CTYPE when program is 
          setgid. Net result is that your locale is always C. That is 
          visible that $LC_CTYPE does not effect to locale printed by 
          'elm -vvvvv':

                Locale (LC_CTYPE):         C
                Display character-set:     US-ASCII
                Sending character-set:     US-ASCII

        - All refrences iso2022 maps are parsed and read to memory. 
          This may cause quite big memory consumption specially because 
          eastern (multibyte) sets tend to be lot of characters. That 
          mapping information should be shared between processes to 
          reduce memory consuption.

        - If display charset is produced by using mapping from locale 
          to charset where charset definition is later invalidated 
          ("removed") by setting explicit compatcharsets on user's 
          .elm/elmrc, that may  cause PANIC on elm's internal pager 
          or other problems. Invalidation happens if display charset 
          is on implicit compatcharsets list (because of charset 
          definition), but does not have explicit compatcharsets list 
          given by user. 

        - Neither Unicode didirectional algorithm nor Right-Left scripts 
          are supported.

        - In some situations two Status headers may be generated two 
          Status headers -- one by IMAP deamon and one from APPENDed 
        - When APPENDing message to IMAP folder (which is normal UNIX 
          mailbox format) original "From " separator line can not be 
          preserved -- specially it is not possible to pass envelope 
          sender address.
        - For UTF-8 charset Elm only knows printable characters from 
          Latin/1 range, if unicode database (see elmrc option "unidata")
          is not loaded.

        - For using of ISO2022 character sets it is required that mapping 
          them to unicode is know -- otherwise Elm ME+ does not know which 
          characters are printable.

        - UTF-16 surrogate pairs (D800-DFFF) are not supported on UTF-7 

        - Mixing of names using IMAP naming convention 
          (imap-naming-convention = yes)
          and names using imap-charset does not work very well...

        - "  Regarding my message (8 Aug 2000) regarding 'newmail' on 
           AIX 4.3.3 in an 'aixterm' window and the 'aixterm' did not 
          close, indeed the problem was NOT related to 'newmail' but an 
          AIX bug.

          IBM has release a patch, and the 'aixterm' in AIX 4.3.3 must
          be update with fileset X11.apps.aixterm. (PTF
          U473920) is solved to problem."
         From: Noam G. Nudelman  <noam@mail.biu.ac.il>

        - File /usr/share/locale/fi/charset gives charset name utf-8 on 
          Linux Mandrake 7.2. This causes that Configure generates 
                fi      utf-8
          to elm.mimecharsets. However that seems to have
          incorrect mapping. You may want change this to
                fi      ISO-8859-1

          ( however nl_langinfo(CODESET) gives charset ISO-8859-15
            but look following entry. )

        - Locale 'fi' seems to have charset ISO-8859-15 according
          of nl_langinfo(CODESET)  on Mandrake Linux 7.2 (and probaly 
          others with same glibc version). However for example gnome 
          terminal uses font 
          and not

          Also KDE's konsole program seems use iso8859-1 character set
          although locale is 'fi' which should have ISO-8859-15 according
          of nl_langinfo (selecting "unicode" from menu seems fix that.)
          Because of mismatch more correct locale is fi_FI.88591, which gives
          ISO-8859-1 character set according of nl_langinfo(CODESET).

          ( Locale seems come from /etc/sysconfig/i18n or $HOME/.i18n )

        > To enable handling of ISO-8859-1 and ISO-8859-15 character sets
          on linux console, read comments from doc/terminal.info file.

        - Mandrake Linux 7.2 seems set LD_PRELOAD to load 
          /usr/lib/libxalflaunch.so.0. That (xalf-0.4-2mdk) causes that 
          elm to crash on startup (actually before main() is reached.)

        - kterm on Mandrake Linux 7.2 seems have (at least on my test
          environment) seems get bad fontlist (*VT100*fontList) which 
          gives bad font for iso8859-1 -- therefore ISO-8859-1 characters 
          do not work.
          ("xrdb -query" seems report resource with name "*fontList"
           -- that probably overrides "*VT100*fontList" which comes
           from /usr/lib/X11/app-defaults/KTerm )

        - Also note that initially kterm does NOT default to
          ISO-8859-1 -- therefore ISO-8859-1 works only when
          elm explicity switch to ISO-8859-1 (for example
          with 'elm -D ISO-8859-1')

        - When assembling message/partial MIME (RFC 2046) 
          requires that all headers except Content-*, Subject, 
          MIME-Version, Message-ID and Encrypted are copied from
          initial enclosing message to assembled message. It also 
          requires that headers except Content-*, Subject,
          MIME-Version,  Message-ID and Encrypted  are ignored and
          dropped from enclosed  message.

          For now we copy only Received: -headers. Dropping extra
          headers from enclosed message makes assembly more 
          complicated  (and dropping of Received: -headers
          from enclosed message do not make sense.)

        - mailer=sendmail; verify=yes works only when sendmail 
          is installed as setuid root. Use mailer=submission instead.
        * Starting from sendmail 8.12 sendmail is normally
          installed as setgid smmsp and not as setuid root.
        - However error message is printed only if 
          verify-local-address=yes is also set

        - IMAP connection is stalled some times. Reason is unknown.

        - From name option (-f) on fastmail is currently broken.

Collector of these patches

        Kari Hurtta <elm@elmme-mailer.org>
        Kari Hurtta <hurtta+elm@siilo.FMI.FI>


 Configure                   |   96 +++!!
 MANIFEST                    |    1 
 README.ME+                  |  187 ++++++++++!
 config.h.SH                 |    8 
 doc/elmconfwriter.1         |   16 
 doc/elmrc-info              |  241 +++++---!!!!!!
 doc/elmrc.samp              |  376 +++++++!!!!!!!!!!!!!!!
 hdrs/addrlib.h              |   47 +!
 hdrs/elm_defs.h             |   12 
 hdrs/elmlib.h               |   33 +!
 hdrs/hdr_imp.h              |   10 
 hdrs/mailerlib.h            |   11 
 hdrs/mboxlib.h              |   13 
 hdrs/me.h                   |    8 
 hdrs/melib.h                |   20 !
 hdrs/mpar_imp.h             |    7 
 hdrs/patchlevel.h           |   10 
 hdrs/s_elm.h                |    7 
 hdrs/s_me.h                 |   10 
 hdrs/save_opts.h            |    6 
 hdrs/sysdefs.SH             |    5 
 lib/addr/headers.c          |    9 
 lib/addr/outheaders.c       |   25 +
 lib/debug.c                 |    6 
 lib/file_util.c             |  130 !!!!!!!
 lib/mailer/feed_common.c    |   17 !
 lib/mailer/message-id.c     |  145 ++!!!!!!
 lib/mailer/outheaders.c     |   13 
 lib/mailer/senderhelper.c   |   70 ++++
 lib/mailer/write_common.c   |   17 !
 lib/mbox/Makefile.SH        |    7 
 lib/mbox/imap.c             |    7 
 lib/mbox/localmbx.c         |   82 !!!!
 lib/mbox/pop.c              |    7 
 lib/mbox/utime_util.c       |   96 +++++
 lib/misc/terminal.c         |    8 
 lib/read_rc.c               |   45 ++
 lib/remote_mbx.c            |    6 
 lib/state_out.c             |   26 -
 melib/def_melib.h           |   23 !
 melib/mailcap.c             |   46 --
 melib/mime_decode.c         |  599 ++++++++++++++++++++++++---!!!!!!!
 melib/mime_parse.c          |   74 ++!!
 melib/mime_selector.c       |  180 +++++++++!
 melib/mpar_leaf.c           |   15 
 melib/mpar_multipart.c      |   21 !
 melib/mpar_rfc822.c         |   20 !
 melib/mparser.c             |   27 !
 melib/parse_helper.c        |   13 
 melib/pgp_decode.c          |   29 !
 nls/C/C/C/s_elm.m           |   17 !
 nls/C/C/C/s_me.m            |   20 +
 shared_libs/tls/tls.c       |    6 
 src/addr_util.c             |   18 
 src/attach_menu.c           |   24 !
 src/edithdr.c               |   24 !
 src/editmsg.c               |    6 
 src/mailmsg2.c              |   39 +
 src/messages/header_alloc.c |    6 
 src/messages/messages.c     |   13 
 src/messages/partial.c      |    7 
 src/out_utils.c             |    6 
 src/save_opts.c             |    6 
 src/showmsg.c               |  365 ++++++++++!!!!!!!!!!!
 src/signals.c               |   57 !!!
 src/utils.c                 |   11 
 utils/Makefile.SH           |    6 
 utils/elmconfwriter.c       |  726 +++++++++++++++++++++++++---!!!!!!!!!!!!!!!
 utils/fastmail.c            |   37 +
 utils/newmail.c             |   51 !!
 70 files changed, 2178 insertions(+), 261 deletions(-), 1893 modifications(!)