Exim version 4.90.1
JH/03 Fix pgsql lookup for multiple result-tuples with a single column.
Previously only the last row was returned.
JH/04 Bug 2217: Tighten up the parsing of DKIM signature headers. Previously
we assumed that tags in the header were well-formed, and parsed the
element content after inspecting only the first char of the tag.
Assumptions at that stage could crash the receive process on malformed
input.
JH/05 Bug 2215: Fix crash associated with dnsdb lookup done from DKIM ACL.
While running the DKIM ACL we operate on the Permanent memory pool so that
variables created with "set" persist to the DATA ACL. Also (at any time)
DNS lookups that fail create cache records using the Permanent pool. But
expansions release any allocations made on the current pool - so a dnsdb
lookup expansion done in the DKIM ACL releases the memory used for the
DNS negative-cache, and bad things result. Solution is to switch to the
Main pool for expansions.
While we're in that code, add checks on the DNS cache during store_reset,
active in the testsuite.
Problem spotted, and debugging aided, by Wolfgang Breyha.
JH/06 Fix issue with continued-connections when the DNS shifts unreliably.
When none of the hosts presented to a transport match an already-open
connection, close it and proceed with the list. Previously we would
queue the message. Spotted by Lena with Yahoo, probably involving
round-robin DNS.
JH/07 Bug 2214: Fix SMTP responses resulting from non-accept result of MIME ACL.
Previously a spurious "250 OK id=" response was appended to the proper
failure response.
JH/10 Bug 2223: Fix mysql lookup returns for the no-data case (when the number of
rows affected is given instead).
JH/12 Bug 2230: Fix cutthrough routing for nonfirst messages in an initiating
SMTP connection. Previously, when one had more receipients than the
first, an abortive onward connection was made. Move to full support for
multiple onward connections in sequence, handling cutthrough connection
for all multi-message initiating connections.
JH/13 Bug 2229: Fix cutthrough routing for nonstandard port numbers defined by
routers. Previously, a multi-recipient message would fail to match the
onward-connection opened for the first recipient, and cause its closure.
JH/14 Bug 2174: A timeout on connect for a callout was also erroneously seen as
a timeout on read on a GnuTLS initiating connection, resulting in the
initiating connection being dropped. This mattered most when the callout
was marked defer_ok. Fix to keep the two timeout-detection methods
separate.
HS/01 Fix Buffer overflow in base64d() (CVE-2018-6789)
JH/16 Fix bug in DKIM verify: a buffer overflow could corrupt the malloc
metadata, resulting in a crash in free().
PP/01 Fix broken Heimdal GSSAPI authenticator integration.
Broken in f2ed27cf5, missing an equals sign for specified-initialisers.
Broken also in d185889f4, with init system revamp.
- Add rmail, rsmtp, & runq as exim mailer.conf aliases (from Sergey Svishchev)
- Add lookup options for openldap, mysql, eximon and dnsdb (from Sven Hartge
in PR pkg/27242)
- Change 'exim' specific options to be prefixed with exim- (suggsted by
Dieter Baron)
I only tested a little (installed and ran daemon and manually
sent one email via SMTP).
I emailed exim developer list to submit support also.
(PKGREVISION was bumped a couple minutes ago, so use it.)
- Introduce EXIM_GROUP and EXIM_USER to tune the details of the group and
user used by the daemon.
- Honour PKG_SYSCONFDIR.
- Install sample files under the examples directory.
- Automatically install example files under sysconfdir using CONF_FILES.
This simplifies exim's set up from admin's point of view.
- Use RCD_SCRIPTS to handle the startup script.
As a result, bump PKGREVISION of exim and exim-user.
with some additions by me. Those running exim are advised to update.
Highlights from ChangeLog
1. Added HAVE_SA_LEN=YES to the OS/Makefile-Darwin file.
3. The code for computing load averages was broken in 64-bit Solaris.
10. Tidies to code for calls to fork(); some failures not logged.
26. Fixed some problems with retrying address errors in remote deliveries.
Local changes (will make next release):
Undo the OS/Makefile-NetBSD split that made it into the main tree. This
causes all manner of breakage.
New Features in Exim 3.13
-------------------------
1. There is a new option called auth_always_advertise, available when Exim is
compiled with AUTH support, which defaults TRUE. If it is set FALSE, then Exim
advertises the AUTH command in response to EHLO only if the calling host is in
auth_hosts or host_auth_accept_relay (assuming Exim is configured with some
authenticators). Otherwise it does not advertise AUTH, though it is prepared to
accept it. Certain mail clients (e.g. Netscape) require to the user to provide
a name and password for authentication if AUTH is advertised, even though it
may not be needed (the host may be in host_accept_relay, for example).
Unsetting auth_always_advertise makes these clients more friendly in these
circumstances.
2. The appendfile transport has a new option called allow_fifo. When set, it
permits delivery to named pipes (FIFOs) as well as to regular files. If no
process is reading the named pipe at delivery time, the delivery is deferred.
3. The smartuser now has qualify_preserve_domain, which works the same as it
does for aliasfile and forwardfile.
4. The exim_dbmbuild utility now has a -noduperr option. If set, duplicates in
the input do not cause the return code to be non-zero.
Changes in Exim 3.13
--------------------
1. Incoming SMTP timeouts were getting disabled after certain kinds of
verification.
2. The "senders" setting on directors and routers was getting string expanded
twice, by mistake. This mattered if after the first expansion there was a \ or
a $ in the string (e.g. in a regex).
3. Exim could crash if any rewriting rules that applied to envelope recipients
referred to the contents of any header lines.
4. If an attempt to authenticate using PAM failed because of some error
condition, Exim was accepting rather than rejecting the authentication.
5. Exim crashed if a test for first_delivery or queue_running in an expansion
string was part of an "or" group of which an earlier condition succeeded.
6. LDAP fallover to multiple servers in ldap_default_servers was not working
if an LDAP lookup included initial parameter settings for user, password,
time, etc.
7. A ${hash_n:xxx} expansion did the wrong thing if n was less than the length
of xxx, screwing up later text in the expansion string.
8. The second argument of the pam_converse() function is defined without a
leading "const" in Solaris, unlike Linux. This is now parameterized so that
different OS can use different values, and thereby avoid compile-time warnings.
9. A missing data string for PAM could cause a crash instead of passing back an
empty string.
10. A lookup defer while processing sender_reject was giving a 550 error code
to MAIL instead of 451. For sender_reject_recipients, a lookup defer was
rejecting recipients (with 550); now it gives a 451 to the MAIL command. If
there is a lookup defer while processing host_reject_recipients, it now rejects
the call instead of rejecting the recipients (so there will be a retry later).
If there is a lookup defer while checking host_accept_relay, the rejection now
uses 451 instead of 550.
11. A couple of 450 codes have been changed to 451.
12. Add "(another process is handling this message)" to "Spool file is locked"
to try to forestall the FAQ.
13. When looking up an IP address for a host obtained from MX records in an
IPv6-aware version of Exim, it deferred if the AAAA lookup deferred; now it
goes on to try for the A record in that circumstance. If either record is
found, it is happy (both are used if present); deferral happens only if one of
them deferred and the other did not succeed. Both must fail outright for it to
conclude that there is no available IP address.
14. The sed commands in the Makefile were not quoting their arguments, so if,
for example, something like MV_COMMAND was set to a string containing white
space, the command fell over. This change means that the quotes set up for
EXIWHAT_EGREP_ARG get passed through into the munged script, so remove the ones
in the script. (We can't remove those in Makefile-Default because we can't then
have leading white space in the value.)
15. Some monitor parameters had been overlooked in the default settings in the
eximon script, and not set up so that they could be overridden by environment
variables with names EXIMON_xxxx.
16. Made exiwhat sort process ids numerically. On some systems duplicate
information gets output, so remove duplicate lines in the output.
17. For filter testing (-bf and -bF) output the sender and recipient address at
the start, to avoid confusion.
18. Implemented auth_always_advertise (default TRUE).
19. If an address became local through routing (e.g. via self=local) and it
then passed through a filter which did no significant deliveries, it got passed
back to the routers instead of on to the next director.
20. Add the sender address to the log message for log_refused_recipients,
because recipients_reject_except_senders means that it might matter.
21. Add allow_fifo to appendfile to allow delivery to named pipes.
22. Reword "unavailable filtering command X" as "filtering command X is
available only in system filters".
23. Added qualify_preserve_domain to smartuser, to make it the same as
aliasfile and forwardfile.
24. Added -noduperr to exim_dbmbuild, to prevent an error return just for
duplicate keys.
1. After a successful delivery, the message log file was being fclosed twice;
some operating systems' C libraries just ignore the second fclose, but others
crashed; this caused -J files to be left lying about.
2. The "contains" operation in filter files was failing to find matches when
the initial character of the searched-for string was duplicated in the subject
string, e.g. searching for "[Boston]" in "[[Boston] ..." failed. The bug was in
the "strstric()" function, which would also have affected -R and -S operations.