To kick off the run up to the next Exim release -
the ftp site:
ftp://ftp.exim.org/pub/exim/exim4/test/
now has the initial release candidate build, RC1 of Exim 4.90
available. Built and signed by myself.
Sha265 sums:
8f4cd256b389c3574c08ecd77e50d6a6d075424644214bcbdb3d95b53e4296c3 exim-4.90_RC1.tar.bz2
a9e7802dd27603b3c5e004ebc97e5eacaca2f453bd60fba66807e226dec06286 exim-4.90_RC1.tar.gz
af1ee4f1a145a0e6d921a56f11ba3d2928e49a19002f8a6505efb5e9538cefaf exim-4.90_RC1.tar.xz
9fdb9fb01581a298bbb92c0c90a5ef8cd4556a127b9e82e0bf372132f4214854 exim-html-4.90_RC1.tar.bz2
a8fb545b855d5a9637a5c9ab7e153e52dc5aed0889a8afad43327c6b00043b94 exim-html-4.90_RC1.tar.gz
b0b57d86cf1ff7010a4251d00f8cc9f4a9fcaeee3a295c145241b11342a5e2c4 exim-html-4.90_RC1.tar.xz
1980ec5f4c85473cf9b52f2e5121867b01530a49cfd6c92b4a33c167e11882b8 exim-pdf-4.90_RC1.tar.bz2
a3873c2a0df0d8ea9eae903d63399ea1fc960a916ebb1228dbf426b5e7cce637 exim-pdf-4.90_RC1.tar.gz
9174cb82ab1b26e3925fa97389ae5f6dc4c594d5f21dd41f255a66cab659059a exim-pdf-4.90_RC1.tar.xz
c10172731ede3572092e71d7bad5d3dbe7fccac29e81106fc33095db34ce6839 exim-postscript-4.90_RC1.tar.bz2
620bc13e9cb8c6da97c2b945d953b2c20ce17c895aea78e1251afd8cbaadc041 exim-postscript-4.90_RC1.tar.gz
ea24c5b5e27e3022c980328a4317dad7b8e49d4e2c71a76019225db39d4ebb47 exim-postscript-4.90_RC1.tar.xz
New features since 4.89:
1. PKG_CONFIG_PATH can now be set in Local/Makefile;
wildcards will be expanded, values are collapsed.
2. The ${readsocket } expansion now takes an option to not shutdown the
connection after sending the query string. The default remains to do so.
3. An smtp transport option "hosts_noproxy_tls" to control whether multiple
deliveries on a single TCP connection can maintain a TLS connection
open. By default disabled for all hosts, doing so saves the cost of
making new TLS sessions, at the cost of having to proxy the data via
another process. Logging is also affected.
4. A malware connection type for the FPSCAND protocol.
5. An option for recipient verify callouts to hold the connection open for
further recipients and for delivery.
6. The reproducible build $SOURCE_DATE_EPOCH environment variable is now
supported.
7. Optionally, an alternate format for spool data-files which matches the
wire format - meaning more efficient reception and transmission (at the
cost of difficulty with standard Unix tools). Only used for messages
received using the ESMTP CHUNKING option, and when a new main-section
option "spool_wireformat" (false by default) is set.
8. New main configuration option "commandline_checks_require_admin" to
restrict who can use various introspection options.
9. New option modifier "no_check" for quota and quota_filecount
appendfile transport.
10. Variable $smtp_command_history returning a comma-sep list of recent
SMTP commands.
11. Millisecond timetamps in logs, on log_selector "millisec". Also affects
log elements QT, DT and D, and timstamps in debug output.
12. TCP Fast Open logging. As a server, logs when the SMTP banner was sent
while still in SYN_RECV state; as a client logs when the connection
is opened with a TFO cookie.
13. DKIM support for multiple signing, by domain and/or key-selector.
DKIM support for multiple hashes, and for alternate-identity tags.
Builtin macro with default list of signed headers.
14. Exipick understands -C|--config for an alternative Exim
configuration file.
15. TCP Fast Open used, with data-on-SYN, for client SMTP via SOCKS5 proxy,
for ${readsocket } expansions, and for ClamAV.
Other changes of interest since 4.89:
01 Rework error string handling in TLS interface so that the caller in
more cases is responsible for logging. This permits library-sourced
string to be attached to addresses during delivery, and collapses
pairs of long lines into single ones.
02 Allow PKG_CONFIG_PATH to be set in Local/Makefile and use it correctly
during configuration. Wildcards are allowed and expanded.
03 Rework error string handling in DKIM to pass more info back to callers.
This permits better logging.
04 Rework the transport continued-connection mechanism: when TLS is active,
do not close it down and have the child transport start it up again on
the passed-on TCP connection. Instead, proxy the child (and any
subsequent ones) for TLS via a unix-domain socket channel. Logging is
affected: the continued delivery log lines do not have any DNSSEC, TLS
Certificate or OCSP information. TLS cipher information is still logged.
05 Shorten the log line for daemon startup by collapsing adjacent sets of
identical IP addresses on different listening ports. Will also affect
"exiwhat" output.
06 Bug 2070: uClibc defines __GLIBC__ without providing glibc headers;
add noisy ifdef guards to special-case this sillyness.
Patch from Bernd Kuhls.
07 Tighten up the checking in isip4 (et al): dotted-quad components larger
than 255 are no longer allowed.
08 Default openssl_options to include +no_ticket, to reduce load on peers.
Disable the session-cache too, which might reduce our load. Since we
currrectly use a new context for every connection, both as server and
client, there is no benefit for these.
GnuTLS appears to not support tickets server-side by default (we don't
call gnutls_session_ticket_enable_server()) but client side is enabled
by default on recent versions (3.1.3 +) unless the PFS priority string
is used (3.2.4 +).
09 Add $SOURCE_DATE_EPOCH support for reproducible builds, per spec at
<https://reproducible-builds.org/specs/source-date-epoch/>.
10 Fix smtp transport use of limited max_rcpt under mua_wrapper. Previously
the check for any unsuccessful recipients did not notice the limit, and
erroneously found still-pending ones.
11 Pipeline CHUNKING command and data together, on kernels that support
MSG_MORE. Only in-clear (not on TLS connections).
12 Avoid using a temporary file during transport using dkim. Unless a
transport-filter is involved we can buffer the headers in memory for
creating the signature, and read the spool data file once for the
signature and again for transmission.
13 Enable use of sendfile in Linux builds as default. It was disabled in
4.77 as the kernel support then wasn't solid, having issues in 64bit
mode. Now, it's been long enough. Add support for FreeBSD also.
14 Bug 2104: Fix continued use of a transport connection with TLS. In the
case where the routing stage had gathered several addresses to send to
a host before calling the transport for the first, we previously failed
to close down TLS in the old transport process before passing the TCP
connection to the new process. The new one sent a STARTTLS command
which naturally failed, giving a failed delivery and bloating the retry
database. Investigation and fix prototype from Wolfgang Breyha.
15 Fix check on SMTP command input synchronisation. Previously there were
false-negatives in the check that the sender had not preempted a response
or prompt from Exim (running as a server), due to that code's lack of
awareness of the SMTP input buffering.
16 Add commandline_checks_require_admin option.
Exim drops privileges sanely, various checks such as -be aren't a
security problem, as long as you trust local users with access to their
own account. When invoked by services which pass untrusted data to
Exim, this might be an issue. Set this option in main configuration
AND make fixes to the calling application, such as using `--` to stop
processing options.
17 Do pipelining under TLS. Previously, although safe, no advantage was
taken. Now take care to pack both (client) MAIL,RCPT,DATA, and (server)
responses to those, into a single TLS record each way (this usually means
a single packet). As a side issue, smtp_enforce_sync now works on TLS
connections.
08 OpenSSL/1.1: use DH_bits() for more accurate DH param sizes. This
affects you only if you're dancing at the edge of the param size limits.
If you are, and this message makes sense to you, then: raise the
configured limit or use OpenSSL 1.1. Nothing we can do for older
versions.
19 For the "sock" variant of the malware scanner interface, accept an empty
cmdline element to get the documented default one. Previously it was
inaccessible.
20 Fix a crash in the smtp transport caused when two hosts in succession
are unsuable for non-message-specific reasons - eg. connection timeout,
banner-time rejection.
21 Fix logging of delivery remote port, when specified by router, under
callout/hold.
22 Repair manualroute's ability to take options in any order, even if one
is the name of a transport.
Fixes bug 2140.
23 Cleanup, prevent repeated use of -p/-oMr (CVE-2017-1000369)
24 Change the list-building routines interface to use the expanding-string
triplet model, for better allocation and copying behaviour.
25 Prebuild the data-structure for "builtin" macros, for faster startup.
Previously it was constructed the first time a possibly-matching string
was met in the configuration file input during startup; now it is done
during compilation.
26 Bug 2141: Use the full-complex API for Berkeley DB rather than the legacy-
compatible one, to avoid the (poorly documented) possibility of a config
file in the working directory redirecting the DB files, possibly correpting
some existing file. CVE-2017-10140 assigned for BDB.
27 Bug 2147: Do not defer for a verify-with-callout-and-random which is not
cache-hot. Previously, although the result was properly cached, the
initial verify call returned a defer.
28 Bug 2151: Avoid using SIZE on the MAIL for a callout verify, on any but
the main verify for receipient in uncached-mode.
29 Retire historical build files to an "unsupported" subdir. These are
defined as "ones for which we have no current evidence of testing".
30 DKIM: enforce the DNS pubkey record "h" permitted-hashes optional field,
if present. Previously it was ignored.
31 Start using specified-initialisers in C structure init coding. This is
a C99 feature (it's 2017, so now considered safe).
32 Use one-bit bitfields for flags in the "addr" data structure. Previously
if was a fixed-sized field and bitmask ops via macros; it is now more
extensible.
33 GitHub PR 56: Apply MariaDB build fix.
Patch provided by Jaroslav Škarvada.
34 Bug 2161: Fix regression in sieve quoted-printable handling introduced
during Coverity cleanups [4.87 JH/47]
Diagnosis and fix provided by Michael Fischer v. Mollard.
35 Fix DKIM bug: when the pseudoheader generated for signing was exactly
the right size to place the terminating semicolon on its own folded
line, the header hash was calculated to an incorrect value thanks to
the (relaxed) space the fold became.
36 Fix Bug 2130: large writes from the transport subprocess where chunked
and confused the parent.
37 Fix SOCKS bug: an unitialized pointer was deref'd by the transport process
which could crash as a result. This could lead to undeliverable messages.
38 Logging: "next input sent too soon" now shows where input was truncated
for log purposes.
39 Fix queue_run_in_order to ignore the PID portion of the message ID. This
matters on fast-turnover and PID-randomising systems, which were getting
out-of-order delivery.
40 Fix a logging bug on aarch64: an unsafe routine was previously used for
a possibly-overlapping copy. The symptom was that "Remote host closed
connection in response to HELO" was logged instead of the actual 4xx
error for the HELO.
41 Fix CHUNKING code to properly flush the unwanted chunk after an error.
Previously only that bufferd was discarded, resulting in SYMTP command
desynchronisation.
There will be further RC builds before 4.90 is released.
Both feature-additions and bug-fixes are acceptable for
the forthcoming RC2.
Please report issues here in the exim-dev or
exim-users mailinglist, or by raising bugs
on
http://bugs.exim/org
- --
Cheers,
Jeremy