Elm ME+ 2.5 PLalpha40 RPM announcement

Experimental RPM spec file for Elm ME+ 2.5 PLalpha40
exists on <URL: http://www.elmme-mailer.org/rpm/elm-ME+2.5.html >
directory.

I do not know rpm, so please do not blame me, if
I wipe your hardisk...

Files are following

  - http://www.elmme-mailer.org/rpm/elm-ME+2.5.alpha40-1.spec
    RPM spec file                                        [Note 1]
  - http://www.elmme-mailer.org/rpm/elm-ME+2.5.alpha40-1.spec.elm-key-2013.sig
  - http://www.elmme-mailer.org/rpm/elm-ME+2.5.alpha40-1.spec.elm-key-2013old.sig
  - http://www.elmme-mailer.org/rpm/elm-ME+2.5.alpha40-1.spec.sig
  - http://www.elmme-mailer.org/rpm/elm-ME+2.5.alpha40-1.fdr19.src.rpm
    Source rpm                                           [Note 2] 
  - http://www.elmme-mailer.org/rpm/elm-ME+2.5.alpha40-1.fdr19.src.rpm.sig
  - http://www.elmme-mailer.org/rpm/elm-ME+2.5.alpha40-1.fdr19.src.rpm.elm-key-2013old.sig

* Compiled on Linux Mandrake release 7.2
  (Linux 2.2, glibc 2.1)

  - http://www.elmme-mailer.org/rpm/elm-ME+2.5.alpha40-1.mdk7.2.i686.rpm
    Package elm binary RPM build on Linux Mandrake release 7.2      [Note 3, Note 4]
  - http://www.elmme-mailer.org/rpm/elm-ME+2.5.alpha40-1.mdk7.2.i686.rpm.sig
  - http://www.elmme-mailer.org/rpm/elm-tls-ME+2.5.alpha40-1.mdk7.2.i686.rpm
    Package elm-tls binary RPM build on Linux Mandrake release 7.2  [Note 3, Note 5]
  - http://www.elmme-mailer.org/rpm/elm-tls-ME+2.5.alpha40-1.mdk7.2.i686.rpm.sig
  - http://www.elmme-mailer.org/rpm/elm-mod-ME+2.5.alpha40-1.mdk7.2.i686.rpm
    Package elm-mod binary RPM build on Linux Mandrake release 7.2  [Note 3]
  - http://www.elmme-mailer.org/rpm/elm-mod-ME+2.5.alpha40-1.mdk7.2.i686.rpm.sig

* Compiled on Fedora release 19
  (Linux 3.14, glibc 2.17, Sendmail 8.14)

  - http://www.elmme-mailer.org/rpm/elm-ME+2.5.alpha40-1.fdr19.i686.rpm
    Package elm binary RPM build on Fedora release 19               [Note 6]
  - http://www.elmme-mailer.org/rpm/elm-ME+2.5.alpha40-1.fdr19.i686.rpm.sig
  - http://www.elmme-mailer.org/rpm/elm-debuginfo-ME+2.5.alpha40-1.fdr19.i686.rpm
    Package elm-debuginfo binary RPM build on Fedora release 19     [Note 6, Note 7]
  - http://www.elmme-mailer.org/rpm/elm-debuginfo-ME+2.5.alpha40-1.fdr19.i686.rpm.sig
  - http://www.elmme-mailer.org/rpm/elm-mod-ME+2.5.alpha40-1.fdr19.i686.rpm
    Package elm-mod binary RPM build on Fedora release 19           [Note 6]
  - http://www.elmme-mailer.org/rpm/elm-tls-ME+2.5.alpha40-1.fdr19.i686.rpm
    Package elm-tls binary RPM build on Fedora release 19           [Note 6]
  - http://www.elmme-mailer.org/rpm/elm-tls-ME+2.5.alpha40-1.fdr19.i686.rpm.sig

* Notes

Note 1:
  - rpmbuild elm-ME+2.5.alpha40-1.spec warns that "prereq is
    deprecated", but that is required on Linux Mandrake release 7.2
    where older rpm -package is build.
Note 2:
  - elm-ME+2.5.alpha40-1.fdr19.src.rpm is signed internally with GPG key
    elm.key.2013.asc (A54BE3BC 2013-10-20).
Note 3:
  - elm-ME+2.5.alpha40-1.mdk7.2.i686.rpm and
    elm-*-ME+2.5.alpha40-1.mdk7.2.i686.rpm are signed internally with
    GPG key elm.key.2013old.asc (825FDF78 2013-10-26).
Note 4:
  - elm-ME+2.5.alpha40-1.mdk7.2.i686.rpm is compiled agaist Sendmail
    8.13 (not from Mandrake distribution).
Note 5:
  - elm-tls-ME+2.5.alpha40-1.mdk7.2.i686.rpm do not load/work on
    Mandrake 7.2, because openssl library misses RAND_egd_bytes
    function. 
Note 6:
  - elm-ME+2.5.alpha40-1.fdr19.i686.rpm and
    elm-*-ME+2.5.alpha60-1.fdr19.i686.rpm are signed internally with GPG
    key elm.key.2013.asc (A54BE3BC 2013-10-20). 
Note 7:
  - elm-ME+2.5.alpha40-1.spec do not have %package debuginfo, but
    rpmbuild -ba elm-ME+2.5.alpha40-1.spec build
    elm-debuginfo-ME+2.5.alpha40-1.fdr19.i686.rpm anyway. 

* Installation

Package elm-mod includes libelmme-iconv.so and libelmme-smtp.so. And
package elm-tls includes libelmme-tls.so.

Package elm-mod compiled on Fedora release 19 includes
libelmme-resolv.so.

Installation loses mailer = submission setting from global
/usr/local/lib/elm.rc, because when elm package rewrites elm.rc,
submission mailer is not available. It becomes from elm-mod package.

However failed values of /usr/local/lib/elm.rc are saved to
/usr/local/lib/elm.rc.old-values file during installation.

Global setting mailer = submission is restored from
/usr/local/lib/elm.rc.old-values file, when package elm-mod is
installed. 

* Configuration

Following files (if exists) are rewritten by elmconfwriter on
installation:


  - /usr/local/lib/elm.rc
  - /usr/local/lib/elm.mimecharsets
  - /usr/local/lib/elm.mimetypes
  - /usr/local/lib/elm.terminalinfo
  - /usr/local/lib/elm.iso2022sets
  - /usr/local/lib/elm.mailservices
  - /usr/local/lib/elm.aliases
  - /usr/local/lib/elm.mailinglists 

Spec file compiles elm for binary distribution, so you must edit
/usr/local/lib/elm.rc before using Elm ME+ 2.5. Following variables may
need to be modified on elm.rc:

  - mailer
  - hostdomain (this is usually needed)
  - hostfullname
  - hostname (usually this is not needed)
  - mailname (default values is generated from other values)
  - name-resolution (controls default values of hostdomain,
    hostfullname, hostname, mailname) 

Check after installation that libraries are enabled. 
Global elm.rc values are:

use-library =
use-base-library = iconv
use-config-library = resolv
use-connect-library = tls resolv
use-mailer-library = smtp resolv

Note that libelmme-resolv.so does not compile on all distributions. 
In that case omit resolv from elm.rc.

After editing global elm.rc run 
      /usr/local/lib/elmrc-write -GI 
for fixing possible errors.

For re-generation of following file, old information (if exists) is
used:

  - /usr/local/lib/elm.rc 

On installation following existing files are merged with new values:

  - /usr/local/lib/elm.terminalinfo
  - /usr/local/lib/elm.mimetypes
  - /usr/local/lib/elm.mimecharsets
  - /usr/local/lib/elm.mailservices
  - /usr/local/lib/elm.mailinglists
  - /usr/local/lib/elm.aliases
  - /usr/local/lib/elm.iso2022sets 

Old values from /usr/local/lib/aliases.text are converted to
/usr/local/lib/elm.aliases and /usr/local/lib/aliases.text is renamed to
/usr/local/lib/aliases.text.OLD. 

On installation new values without merging are written to following
files:

  - /usr/local/lib/elm.aliases.NEW
  - /usr/local/lib/elm.mailinglists.NEW
  - /usr/local/lib/elm.mailservices.NEW
  - /usr/local/lib/elm.mimecharsets.NEW
  - /usr/local/lib/elm.mimetypes.NEW
  - /usr/local/lib/elm.terminalinfo.NEW
  - /usr/local/lib/elm.iso2022sets.NEW 

SUMMARY: This release adds libelmme-resolv.so module
         which makes possible to check the existence of
         mail domains (with changes on "verify-domain"
         elmrc option). Also "use-config-library",
         "mail-services-lookup", "valid-domains" and
         "mailhome-dir" elmrc options are added (and 
         "query-address-type", "query-domain-blacklist", 
         "search-mail-domain" and "search-mail-service" 
         to "resolv:" section of elmrc for 
         libelmme-resolv.so module). Added support of 
         IPv6 literals on user's mail.services and global 
         elm.mailservices file (IPv6 hostnames work only 
         with resolv -module.) Then also some other changes 
         and bug fixes are included.

Elm ME+ 2.5 PLalpha40 changelog

Changes on Elm ME+ 2.5 PLalpha40 compared with Elm ME+ 2.5 PLalpha39
--------------------------------------------------------------------

        SUMMARY: This release adds libelmme-resolv.so module
                 which makes possible to check the existence of
                 mail domains (with changes on "verify-domain"
                 elmrc option). Also "use-config-library",
                 "mail-services-lookup", "valid-domains" and
                 "mailhome-dir" elmrc options are added (and 
                 "query-address-type", "query-domain-blacklist", 
                 "search-mail-domain" and "search-mail-service" 
                 to "resolv:" section of elmrc for 
                 libelmme-resolv.so module). Added support of 
                 IPv6 literals on user's mail.services and global 
                 elm.mailservices file (IPv6 hostnames work only 
                 with resolv -module.) Then also some other changes 
                 and bug fixes are included.

        - Replace NO_ADDRESS with NO_DATA
        - Moved strings.h / string.h test to earlier
          and include correct header on tests (not <stdio.h>)
          when using strcmp()
        - Added Confifure test for inet_pton() and inet_ntop() 

        - Used inet_pton() to parse IPv4-address on lib/service_list.c
        - Added give_addr_as_string() to lib/service_list.c
        - Used inet_ntop() / give_addr_as_string() 
          to print IPv4-address on lib/remote_mbx.c lib/service_list.c
        - Used inet_ntop() to print IPv4-address on lib/read_rc.c

        - Test also I_ARPA_INET -macro and not just I_NETINET_IN -macro
        - Changed  PF_INET to AF_INET on lib/remote_mbx.c

        - Changed Configure to compile test that socket() work. 
          Also test that on Linux even when 
          /usr/include/sys/socket.h does not found.
          Replaced  I_SYS_SOCKET with  HAVE_SOCKET macro.
          This fixes include for Ubuntu 12.04
        - Changed hdrs/elm_defs.h so that REMOTE_MBX is 
          only defined when HAVE_SOCKET is defined
        - Changed PF_UNIX to AF_UNIX  on shared_libs/smtp/smtp.c

        - Added Configure to test that struct sockaddr_in6 
          is defined on <netinet/in.h>. Added
          struct sockaddr_in6 to  union socket_addr on
          hdrs/connection_imp.h

        - Added IPv6 support to give_addr_as_string() on 
          lib/service_list.c if struct sockaddr_in6  
          is available and inet_ntop() is supported. 
          Non-zero scope ids are added on numeric 
          form to address.
        - Added uint32 macro to hdrs/elm_defs.h
        - Added Configure to test that struct sockaddr_in6 
          includes sin6_scope_id
        - Added IPv6 parsing (to get_ip()) on lib/service_list.c
          if  struct sockaddr_in6  is available and 
          inet_pton() is supported. Only numeric scope ids 
          (%n on end of address) are supported.
        - Added inet_ntop() to print IPv6-address on lib/read_rc.c
          (but that is not actually used).

        - Added give_addr_port() and set_addr_port()
          lib/service_list.c. These handled both IPv4
          (struct sockaddr_in) and IPv6 (struct sockaddr_in6)
          ports.

        - Changed connect_remote_account_1() 
          on lib/remote_mbx.c to support IPv6
          if struct sockaddr_in6 is available.
        - Changed connect_remote_account() 
          on lib/remote_mbx.c to support IPv6
          if  struct sockaddr_in6 is available.

        - Added fill_address() on lib/service_list.c
          to handle IPv6 addresses (but that is not 
          actually used). 

        NOTE: lookup_name() / gethostbyname() seems not 
          return IPv6 addresses, so IPv6 addresses
          may work only when literal addresses are given 
          on .elm/mail.services or global elm.mailservices
          file. 

          Reading mail from IPv6 hostname with IMAP is tested
          when
                mail-services-lookup = resolv:addresses
          on user's .elm/elmrc -file was on used. This requires
                   use-connect-library = resolv
           (or     use-connect-library = tls resolv )
          on global elm.rc -file.

        - Compilation fixes when REMOTE_MBX is not defined.

        - Changed ConfTool/Substitute that it uses cp 
          and not ln on hdrs/Makefile which it generates
        - Changed some Configure tests

        - Moved is_it_on() from lib/read_rc to
          lib/rc_handle.c
        - Added is_it_off() to lib/rc_handle.c
        - Added warning if boolean value is not either ON
          or OFF (also TRUE, FALSE, YES and NO are valid values).
        - Added support of boolean values to 
          struct dt_enumerate_info
        - Allowed boolean ON, OFF, TRUE, FALSE, YES and NO
          values on elmrc option "browser-wildcard-matching".
        - Allowed boolean ON, OFF, TRUE, FALSE, YES and NO
          values on elmrc option "local-lockfile-pidcheck".
        - Allowed boolean ON, OFF, TRUE, FALSE, YES and NO
          values on elmrc option "show-header-errors".

        - Fixed error message on dt_SORT_parse_line() file
          lib/rc_handle.c

        - Added elmrc option "use-config-library". This
          includes shared libraries which are assumed
          to change default elmrc values.   
        - Content of option "use-library" is automatically
          moved to variable "use-config-library". 
        - Changed calling convention of post_init_shared_options(),
          RC_post_init_f()
        - Added post_init_change_config()

        - Added support for tag:value values to 
          struct dt_enumerate_info. Tag refer to
          shared library.  
        - Added give_dt_shared_value() to lib/rc_handle.c

        - Add exception for address literals on build_address_l()
        - Add exception for address literals on fastmail
        
        - Added locate_and_load_library1() to lib/shared.c

        - Changed elmrc option "verify-domain" to type
          struct dt_enumerate_info. Value "hostname" specifies 
          that normal hostname -lookup API (that is 
          gethostbyname()) is done. Error HOST_NOT_FOUND is 
          treated as non-existing domain and error NO_DATA 
          is treated as valid mail domain.
          Value "shared" specifies that mail domain is
          verified by shared library if available.
          In that case shared library must be given on 
          elmrc option "use-mailer-library".

        - Added "valid-domains" elmrc option. This gives list
          of mail domains which are considered valid without
          verifying. This also overrides 
          "special-use-domains-blacklist" elmrc option
          for mail addresses.

        - Small fix for print_history_changed()

        - Do not create change record when change
          of use-library or use-*-library
          was not result of error condition.

        - Changed unload_code()
        - Added free_shared_caches()

        - Added libelmme-resolv.so module.  

        - Added "use-config-library"  elmrc option. This 
          includes shared libraries which are assumed
          to change default elmrc values. 
 
        - Added elmrc options "query-address-type",
          "query-domain-blacklist", "search-mail-domain" 
          and "search-mail-service" to "resolv:" section. 

        - Undefined symbols involving the $non_lazy_ptr 
          linker error were generated on  Mac OS X.
         Patch from: dansdragon@gmail.com

        - "The source of the error is the alpha38 version of 
           Configure is line 1874:

                     elif test "$uname_os"="Linux"; then

          Are you aware that this test is always true in bash?  
          If you are currious, I have written a test script that 
          test that section of code by setting $uname_os to "nonsense" 
          and it still exits the conditional at that point. I just 
          learned that spaces are very important in bash. The correct 
          way to write this lins is as follows (like the OSF1 line in 
          line 1868):

               elif test "$uname_os" = "Linux"; then"
         Reported by: dansdragon@gmail.com
        > Fixed test on Configure.
          This bug is introduced on Elm2.4ME+ PL32 (25)

        - Do not fail if canceled mail do not have charset -parameter.

        - Fix case where PressAnyKeyToContinue() is
          called on raw mode
        - Allow content_length == -1 on copy_pgp(), copy_mime(),
          copy_encrypted(), copy_plain(), copy_binary(),
          copy_cooked()
          
        - Replaced #include <values.h> with #include <limits.h>
          and MAXINT with INT_MAX
         Problem noted by: dansdragon@gmail.com

        - Do not call initial_TLS_ra() if USE_DLOPEN is not defined
         Problem noted by: dansdragon@gmail.com

        - "Attached is the patch file for the alpha38 version of 
           Configure that includes all of the bits, some of which was 
           previously discussed that would allow the program to be 
           compiled on newer versions of Mac OS that has the clang 
           compiler from LLVM installed."
         From: dansdragon@gmail.com
         > Added setting of nm_opts for Darwin and  
           /usr/lib/system/libsystem_c.dylib as libc for Darwin.

        - Changed struct remote_account
        - Changed struct service_entry

        - If addr= -parameter gives port on global
          elm.mailservices or user's .elm/mail.services
          that address is uses only for that port.
          If URL gives different explicit port,
          this address is not used. However explicit port
          on URL overrides port= -parameter on
          global elm.mailservices or user's 
          .elm/mail.services.

        - Added "mail-services-lookup" elmrc option. This
          option specifies how names (normally hostnames, that 
          is part after '@' on folder name (before ':' or '/' 
          characters). And also that includes names given on 
          ~/.elm/mail.services or on global elm.mailservices file.
          Default value "hostname" specifies that normal  
          hostname -lookup API (that is gethostbyname()) is done.
          Value "shared" specifies that lookup is done by shared 
          library if available. In that case shared library must 
          be given on elmrc option "use-connect-library". 

        - c)ancel -command on "Mail Sending Screen" was not
          saving message content to  ~/Canceled.mail.dir/.
          Added rewind() to have_cancel_FILE() on 
          lib/mailer/mailer.c

        - Handle situation where mails on ~/Canceled.mail.dir/
          does not include Content-Length: -header. 
          c)ancel -command on "Mail Sending Screen" does
          not add  Content-Length: -header. 

        - Added lines counting for c)ancel -command on
          "Mail Sending Screen" to 
          cancel_ticket_to_canceled_mail() on src/mailmsg2.c.

        - Added following RFC 6857 headers to known headers
          (to array on lib/addr/headers.c):
          Downgraded-Message-Id, Downgraded-Resent-Message-Id, 
          Downgraded-In-Reply-To, Downgraded-References, 
          Downgraded-Original-Recipient, Downgraded-Final-Recipient 
        - Added following RFC 3282 headers to known headers
          (to array on lib/addr/headers.c):
          Accept-Language, Content-Language
        - Added following RFC 5064 header to known headers
          (to array on lib/addr/headers.c):
          Archived-At
        - Added following RFC 7601 header to known headers
          (to array on lib/addr/headers.c):
          Authentication-Results
        - Added following RFC 6376 header to known headers
          (to array on lib/addr/headers.c):
          DKIM-Signature
        - Added following RFC 3798 headers to known headers
          (to array on lib/addr/headers.c):
          Disposition-Notification-To, 
          Disposition-Notification-Options,
          Original-Recipient
        - Added following RFC 5703 headers to known headers
          (to array on lib/addr/headers.c):
          Original-Subject, Original-From
        - Added following RFC 2156 headers to known headers
          (to array on lib/addr/headers.c):
          Supersedes, Autoforwarded, Message-Type, 
          Autosubmitted, Delivery-Date
        - Added following RFC 5064 header to known headers
          (to array on lib/addr/headers.c):
          MT-Priority
        - Added following RFC 7681 header to known headers
          (to array on lib/addr/headers.c):
          Organization
        - Added following RFC 3865 header to known headers
          (to array on lib/addr/headers.c):
          Solicitation
        - Added following RFC 3297 headers to known headers
          (to array on lib/addr/headers.c):
          Content-alternative, Original-Message-ID
        - Added "Apparently-To" to known headers
          (to array on lib/addr/headers.c).

        - Added some checks to add_canceled_mail()
        - Do not write number of lines to Canceled.mail.dir/.index
          if it is zero.
        - If number of lines is zero on  Canceled.mail.dir/.index
          count lines on file.

        - Added shared_libs/resolv/elmrc-resolv-info 
          for documenting of user settable library options.
        - Unified writing main options and shared library
          specific options to write_rc_part().
        - Trim trailing space when reading options
          from comment file. 
        - Added shared_libs/iconv/elmrc-iconv-info
          for documenting of user settable library options.
        - Added shared_libs/tls/elmrc-tls-info
          for documenting of user settable library options.

        - Added global elm.rc option "mailhome-dir" which 
          tells location of local mail spool directory. 
          Special value "none" indicates that empty mailbox 
          (with type "No folder") should be opened (if 
          "incoming-mailbox" elmrc option  is not set).
        - Allow NULL initial value on set_dt_estr()
        - Allow NULL folder name on  enter_new_folder()
        - Let  mbx_sessionlock_no_name(),
          mbx_unlock_no_name(), mbx_prepare_read_no_name()
          and mbx_ferror_no_name() succeed.
        - Give "No folder" as type on mbx_no_name_type()
        - Added mbx_give_normal_server to struct folder_type no_name
        - Set *bytes = 0 on mbx_new_mail_on_no_name()

        NOTE: This change produced side effect however.

          Empty mailbox (with type "No folder") is 
          opened when connection to IMAP or POP servers
          fails. However empty mailbox is not opened when
          IMAP or POP server's name not found.
        
        - Changed value "none" on elmrc option 
          "incoming-mailbox" mean that empty mailbox 
          (with type "No folder") should be opened 
          (and not use literal file "none" as mailbox).

        - Changed *bytes from int to long 
          on  new_mail_on_folder() and  
          mbx_new_mail_on_folder()
        - Some changes on newmail. 

        - Changed dlopen test on Configure
        - Changed Configure test for tls -module

        WARNING: Check after installation that
                 libraries are enabled. Global
                 elm.rc values are:

                 use-library =
                 use-base-library = iconv
                 use-config-library = resolv
                 use-connect-library = tls resolv
                 use-mailer-library = smtp resolv

        After editing global elm.rc run
              .../lib/elmrc-write -GI
        for fixing possible errors.

        See also: shared_libs/resolv/README.ME+

        New files:
            shared_libs/resolv/config
            shared_libs/resolv/resolvertest.c
            shared_libs/resolv/Makefile.SH
            shared_libs/resolv/elmresolv.h
            shared_libs/resolv/resolv.c
            lib/shared_config.c
            nls/C/C/C/s_resolv.m
            hdrs/s_resolv.h
            shared_libs/resolv/README.ME+
            shared_libs/resolv/elmrc-resolv-info
            shared_libs/iconv/elmrc-iconv-info
            shared_libs/tls/elmrc-tls-info

        New elmrc options:
            mail-services-lookup
            use-config-library
            valid-domains
            mailhome-dir

/ Kari Hurtta
Advertisements