spurious compiler warning of unused var fix
[users/jgh/exim.git] / src / README.UPDATING
index 40210a80011a27222325e24e71dfe920a8e4d374..5b6bea869ae5ab3a26b634ef742d6d2144873451 100644 (file)
@@ -1,5 +1,3 @@
-$Cambridge: exim/src/README.UPDATING,v 1.17 2009/10/16 07:35:42 tom Exp $
-
 This document contains detailed information about incompatibilities that might
 be encountered when upgrading from one release of Exim to another. The
 information is in reverse order of release numbers. Mostly these are relatively
 This document contains detailed information about incompatibilities that might
 be encountered when upgrading from one release of Exim to another. The
 information is in reverse order of release numbers. Mostly these are relatively
@@ -28,13 +26,94 @@ The rest of this document contains information about changes in 4.xx releases
 that might affect a running system.
 
 
 that might affect a running system.
 
 
+Exim version 4.78
+-----------------
+
+ * The value of $tls_peerdn is now print-escaped when written to the spool file
+   in a -tls_peerdn line, and unescaped when read back in.  We received reports
+   of values with embedded newlines, which caused spool file corruption.
+
+   If you have a corrupt spool file and you wish to recover the contents after
+   upgrading, then lock the message, replace the new-lines that should be part
+   of the -tls_peerdn line with the two-character sequence \n and then unlock
+   the message.  No tool has been provided as we believe this is a rare
+   occurence.
+
+ * With OpenSSL 1.0.1+, Exim now supports TLS 1.1 and TLS 1.2.  If built
+   against 1.0.1a then you will get a warning message and the
+   "openssl_options" value will not parse "no_tlsv1_1": the value changes
+   incompatibly between 1.0.1a and 1.0.1b, because the value chosen for 1.0.1a
+   is infelicitous.  We advise avoiding 1.0.1a.
+
+   "openssl_options" gains "no_tlsv1_1", "no_tlsv1_2" and "no_compression".
+
+   COMPATIBILITY WARNING: The default value of "openssl_options" is no longer
+   "+dont_insert_empty_fragments".  We default to unset.  That old default was
+   grandfathered in from before openssl_options became a configuration option.
+   Empty fragments are inserted by default through TLS1.0, to partially defend
+   against certain attacks; TLS1.1+ change the protocol so that this is not
+   needed.  The DIEF SSL option was required for some old releases of mail
+   clients which did not gracefully handle the empty fragments, and was
+   initially set in Exim release 4.31 (see ChangeLog, item 37).
+
+   If you still have affected mail-clients, and you see SSL protocol failures
+   with this release of Exim, set:
+     openssl_options = +dont_insert_empty_fragments
+   in the main section of your Exim configuration file.  You're trading off
+   security for compatibility.  Exim is now defaulting to higher security and
+   rewarding more modern clients.
+
+ * Ldap lookups returning multi-valued attributes now separate the attributes
+   with only a comma, not a comma-space sequence.  Also, an actual comma within
+   a returned attribute is doubled.  This makes it possible to parse the
+   attribute as a comma-separated list.  Note the distinction from multiple
+   attributes being returned, where each one is a name=value pair.
+
+
+Exim version 4.77
+-----------------
+
+ * GnuTLS will now attempt to use TLS 1.2 and TLS 1.1 before TLS 1.0 and SSL3,
+   if supported by your GnuTLS library.  Use the existing
+   "gnutls_require_protocols" option to downgrade this if that will be a
+   problem.  Prior to this release, supported values were "TLS1" and "SSL3",
+   so you should be able to update configuration prior to update.
+
+ * The match_<type>{string1}{string2} expansion conditions no longer subject
+   string2 to string expansion, unless Exim was built with the new
+   "EXPAND_LISTMATCH_RHS" option.  Too many people have inadvertently created
+   insecure configurations that way.  If you need the functionality and turn on
+   that build option, please let the developers know, and know why, so we can
+   try to provide a safer mechanism for you.
+
+   The match{}{} expansion condition (for regular expressions) is NOT affected.
+   For match_<type>{s1}{s2}, all list functionality is unchanged.  The only
+   change is that a '$' appearing in s2 will not trigger expansion, but instead
+   will be treated as a literal $ sign; the effect is very similar to having
+   wrapped s2 with \N...\N.  If s2 contains a named list and the list definition
+   uses $expansions then those _will_ be processed as normal.  It is only the
+   point at which s2 is read where expansion is inhibited.
+
+   If you are trying to test if two email addresses are equal, use eqi{s1}{s2}.
+   If you are testing if the address in s1 occurs in the list of items given
+   in s2, either use the new inlisti{s1}{s2} condition (added in 4.77) or use
+   the pre-existing forany{s2}{eqi{$item}{s1}} condition.
+
+
 Exim version 4.74
 -----------------
 
 Exim version 4.74
 -----------------
 
- * No incompatible changes within Exim itself, but the integrated support for
-   dynamically loadable lookup modules has an ABI change from the modules
-   supported by some OS vendors through an unofficial patch. Don't try to
-   mix & match.
+ * The integrated support for dynamically loadable lookup modules has an ABI
+   change from the modules supported by some OS vendors through an unofficial
+   patch. Don't try to mix & match.
+
+ * Some parts of the build system are now beginning to assume that the host
+   environment is POSIX. If you're building on a system where POSIX tools are
+   not the default, you might have an easier time if you switch to the POSIX
+   tools.  Feel free to report non-POSIX issues as a request for a feature
+   enhancement, but if the POSIX variants are available then the fix will
+   probably just involve some coercion.  See the README instructions for
+   building on such hosts.
 
 
 Exim version 4.73
 
 
 Exim version 4.73
@@ -48,7 +127,7 @@ Exim version 4.73
  * Exim will no longer accept a configuration file owned by the Exim
    run-time user, unless that account is explicitly the value in
    CONFIGURE_OWNER, which we discourage.  Exim now checks to ensure that
  * Exim will no longer accept a configuration file owned by the Exim
    run-time user, unless that account is explicitly the value in
    CONFIGURE_OWNER, which we discourage.  Exim now checks to ensure that
-   files are not writable by other accounts.
+   files are not writeable by other accounts.
 
  * The ALT_CONFIG_ROOT_ONLY build option is no longer optional and is forced
    on; the Exim user can, by default, no longer use -C/-D and retain privilege.
 
  * The ALT_CONFIG_ROOT_ONLY build option is no longer optional and is forced
    on; the Exim user can, by default, no longer use -C/-D and retain privilege.
@@ -62,7 +141,7 @@ Exim version 4.73
       the Exim run-time user may safely pass without dropping privileges.
       Because changes to this involve a recompile, this is not the recommended
       approach but may ease transition.  The values of the macros, when
       the Exim run-time user may safely pass without dropping privileges.
       Because changes to this involve a recompile, this is not the recommended
       approach but may ease transition.  The values of the macros, when
-      overriden, are constrained to match this regex: ^[A-Za-z0-9_/.-]*$
+      overridden, are constrained to match this regex: ^[A-Za-z0-9_/.-]*$
 
  * The system_filter_user option now defaults to the Exim run-time user,
    rather than root.  You can still set it explicitly to root and this
 
  * The system_filter_user option now defaults to the Exim run-time user,
    rather than root.  You can still set it explicitly to root and this
@@ -81,7 +160,7 @@ It has been superceded by a native implementation of its successor DKIM.
 
 2. Up to version 4.69, Exim came with an embedded version of the PCRE library.
 As of 4.70, this is no longer the case. To compile Exim, you will need PCRE
 
 2. Up to version 4.69, Exim came with an embedded version of the PCRE library.
 As of 4.70, this is no longer the case. To compile Exim, you will need PCRE
-installed. Most OS distributions have ready-made library and develoment
+installed. Most OS distributions have ready-made library and development
 packages.
 
 
 packages.