diff -Nru exim4-4.91/ACKNOWLEDGMENTS exim4-4.92~RC4/ACKNOWLEDGMENTS --- exim4-4.91/ACKNOWLEDGMENTS 2018-04-14 23:18:10.000000000 +0000 +++ exim4-4.92~RC4/ACKNOWLEDGMENTS 2018-12-27 13:36:19.000000000 +0000 @@ -67,8 +67,8 @@ Ian Kirk Radius support Stuart Levy Replacement for broken inet_ntoa() on IRIX Stuart Lynne First code for LDAP -Nigel Metheringham Setting up the web site and mailing list - Managing the web site and mailing list +Nigel Metheringham Setting up the website and mailing list + Managing the website and mailing list Interface to Berkeley DB Support for cdb Support for maildir diff -Nru exim4-4.91/debian/changelog exim4-4.92~RC4/debian/changelog --- exim4-4.91/debian/changelog 2018-11-03 00:08:13.000000000 +0000 +++ exim4-4.92~RC4/debian/changelog 2019-01-10 15:41:45.000000000 +0000 @@ -1,3 +1,105 @@ +exim4 (4.92~RC4-2ubuntu1) disco; urgency=medium + + * Merge with Debian unstable (LP: #1811095). Remaining changes: + - Show Ubuntu distribution in SMTP banner + + Build-Depends on lsb-release to detect Distribution. + + d/p/fix_smtp_banner.patch: Show Ubuntu distribution in SMTP banner. + + -- Karl Stenerud Thu, 10 Jan 2019 16:41:45 +0100 + +exim4 (4.92~RC4-2) unstable; urgency=medium + + * Upload to unstable. + + -- Andreas Metzler Sat, 05 Jan 2019 15:35:38 +0100 + +exim4 (4.92~RC4-1) experimental; urgency=low + + * New upstream version. + + Drop 75_GnuTLS-repeat-lowlevel-read-and-write-operations-whi.patch. + + Unfuzz patches. + + -- Andreas Metzler Mon, 31 Dec 2018 13:13:45 +0100 + +exim4 (4.92~RC3-1) unstable; urgency=low + + * Add 75_GnuTLS-repeat-lowlevel-read-and-write-operations-whi.patch from + upstream GIT master, fixing outgoing TLS 1.3. + https://bugs.exim.org/show_bug.cgi?id=2359 + * New upstream version. + * Upload to unstable. + + -- Andreas Metzler Wed, 26 Dec 2018 16:07:52 +0100 + +exim4 (4.92~RC2-1) experimental; urgency=low + + * New upstream version. + + Drop 75_01-Fix-parsing-of-option-type-Kint-integer-stored-in-K-.patch + + -- Andreas Metzler Tue, 18 Dec 2018 19:20:24 +0100 + +exim4 (4.92~RC1-1) experimental; urgency=low + + * Update upstream/signing-key.asc from + https://ftp.exim.org/pub/exim/Exim-Maintainers-Keyring.asc, adding + 96E4754B8F93C1B239F1A95785BCF7AC6735A680 while removing + 1F9C181B1E83D2099F02C95AC4F4F94804D29EBA and + FAA1C7F9CD077DC4304BC0C885AB833FDDC03262. + * New upstream release candidate: + + Point watchfile to test subdir. + + Update watchfile to handle -RC1 in addition to _RC1. + + Drop 75_fixes*.patch. + + Unfuzz 32_exim4.dpatch and 90_localscan_dlopen.dpatch + + Update configuration from upstream example, except for + tls_sni/tls_require_ciphers settings on remote_smtp_smarthost transport: + * Enable dns_dnssec_ok. + * Set dnssec_request_domains = * on dnslookup and + dnslookup_relay_to_domains routers. + * Set hosts_try_dane = */dnssec_request_domains = * on remote_smtp + transport unless REMOTE_SMTP_DISABLE_DANE is set. + * Set multi_domain on remote_smtp_smarthost transport. + * Post release updates: + + 75_01-Fix-parsing-of-option-type-Kint-integer-stored-in-K-.patch + + -- Andreas Metzler Sat, 15 Dec 2018 16:24:54 +0100 + +exim4 (4.91-9) unstable; urgency=low + + * Run "wrap-and-sort --max-line-length=72 --short-indent" and add back + autodeleted comments. + * Update from exim-4_91+fixes branch: + + 75_fixes_26-Fix-bad-use-of-library-copying-string-over-itself.patch + + 75_fixes_27-Fix-cyrus-sasl-authenticator-for-authenticated_fail_.patch + + 75_fixes_28-Avoid-leaving-domain-live-with-bogus-info-during-ser.patch + + 75_fixes_29-Fix-AUTH_GSASL-build.patch + + 75_fixes_30-Harden-string-list-handling.patch + + -- Andreas Metzler Thu, 06 Dec 2018 19:19:38 +0100 + +exim4 (4.91-8) unstable; urgency=low + + [ Andreas Metzler ] + * Update from exim-4_91+fixes branch: + + 75_fixes_18-Restore-Darwin-OS-configuration.patch + + 75_fixes_20-Fix-filter-noerror-command.-Bug-2318.patch + + 75_fixes_21-DANE-fix-TA-mode-verify-under-GnuTLS.-Bug-2311.patch + + 75_fixes_22-Testsuite-track-newer-GnuTLS-behaviour.patch + + 75_fixes_24-DANE-ignore-undersized-TLSA-records.patch + + 75_fixes_25-Logging-do-not-log-a-missing-proxy-address-on-delive.patch + + [ Marc Haber ] + * Move definition of CHECK_RCPT_*_LOCALPARTS macro to acl file proper. + + -- Andreas Metzler Sat, 29 Sep 2018 19:08:52 +0200 + +exim4 (4.91-7) unstable; urgency=low + + * Update from exim-4_91+fixes branch: + + 75_fixes_16-Fix-non-EVENTS-build.patch + + 75_fixes_17-Fix-cutthrough-delivery-for-more-than-one-iteration-.patch + + -- Andreas Metzler Sun, 26 Aug 2018 11:33:15 +0200 + exim4 (4.91-6ubuntu2) disco; urgency=medium * No-change rebuild for the perl 5.28 transition. diff -Nru exim4-4.91/debian/control exim4-4.92~RC4/debian/control --- exim4-4.91/debian/control 2018-07-30 18:35:06.000000000 +0000 +++ exim4-4.92~RC4/debian/control 2019-01-10 15:41:45.000000000 +0000 @@ -3,33 +3,70 @@ Priority: standard Maintainer: Ubuntu Developers XSBC-Original-Maintainer: Exim4 Maintainers -Uploaders: Andreas Metzler ,Marc Haber +Uploaders: + Andreas Metzler , + Marc Haber Homepage: https://www.exim.org/ -Standards-Version: 4.1.5 +Standards-Version: 4.3.0 Vcs-Git: https://salsa.debian.org/exim-team/exim4.git Vcs-Browser: https://salsa.debian.org/exim-team/exim4 -Build-Depends: debhelper (>= 10), po-debconf, docbook-xsl, xsltproc, - lynx, docbook-xml, libpcre3-dev, libldap2-dev, libpam0g-dev, - libident-dev, libdb5.3-dev, libxmu-dev, libxt-dev, libxext-dev, libx11-dev, - libxaw7-dev, libpq-dev, default-libmysqlclient-dev, - libsqlite3-dev, libperl-dev, libgnutls28-dev (>= 3.5.7), libsasl2-dev, - lsb-release +Build-Depends: + debhelper (>= 10), + default-libmysqlclient-dev, + docbook-xml, + docbook-xsl, + libdb5.3-dev, + libgnutls28-dev (>= 3.5.7), + libident-dev, + libldap2-dev, + libpam0g-dev, + libpcre3-dev, + libperl-dev, + libpq-dev, + libsasl2-dev, + libsqlite3-dev, + libx11-dev, + libxaw7-dev, + libxext-dev, + libxmu-dev, + libxt-dev, + lynx, + po-debconf, + xsltproc, + lsb-release Package: exim4-base Architecture: any Priority: optional -Breaks: exim4-daemon-light (<<${Upstream-Version}), +Breaks: + exim4-daemon-custom (<<${Upstream-Version}), exim4-daemon-heavy (<<${Upstream-Version}), - exim4-daemon-custom (<<${Upstream-Version}) + exim4-daemon-light (<<${Upstream-Version}) Conflicts: exim, exim-tls -Replaces: exim, exim-tls, exim4-daemon-light, exim4-daemon-heavy, exim4-daemon-custom -Depends: ${shlibs:Depends}, ${misc:Depends}, +Replaces: + exim, + exim-tls, + exim4-daemon-custom, + exim4-daemon-heavy, + exim4-daemon-light +Depends: + adduser, cron | cron-daemon | anacron, - exim4-config (>=4.82) | exim4-config-2, adduser, netbase, lsb-base (>= 3.0-6) + exim4-config (>=4.82) | exim4-config-2, + lsb-base (>= 3.0-6), + netbase, + ${misc:Depends}, + ${shlibs:Depends} # psmisc just for exiwhat. -Recommends: psmisc, mailx -Suggests: mail-reader, eximon4, exim4-doc-html|exim4-doc-info, - gnutls-bin | openssl, file, spf-tools-perl, swaks +Recommends: mailx, psmisc +Suggests: + exim4-doc-html | exim4-doc-info, + eximon4, + file, + gnutls-bin | openssl, + mail-reader, + spf-tools-perl, + swaks Description: support files for all Exim MTA (v4) packages Exim (v4) is a mail transport agent. exim4-base provides the support files needed by all exim4 daemon packages. You need an additional package @@ -60,10 +97,17 @@ Package: exim4-config Architecture: all Priority: optional -Breaks: exim4-daemon-light (<< 4.87~RC5), exim4-daemon-heavy (<< 4.87~RC5) +Breaks: + exim4-daemon-heavy (<< 4.87~RC5), + exim4-daemon-light (<< 4.87~RC5) Provides: exim4-config-2 -Conflicts: exim, exim-tls, exim4-config, exim4-config-2, ${MTA-Conflicts} -Depends: ${shlibs:Depends}, ${misc:Depends}, adduser +Conflicts: + exim, + exim-tls, + exim4-config, + exim4-config-2, + ${MTA-Conflicts} +Depends: adduser, ${misc:Depends}, ${shlibs:Depends} Description: configuration for the Exim MTA (v4) Exim (v4) is a mail transport agent. exim4-config provides the configuration for the exim4 daemon packages. The configuration framework has been split @@ -95,11 +139,16 @@ Package: exim4-daemon-light Architecture: any Priority: optional -Provides: mail-transport-agent, exim4-localscanapi-2.0, +Provides: + exim4-localscanapi-2.0, + mail-transport-agent, ${dist:Provides:exim4-daemon-light} Conflicts: mail-transport-agent -Replaces: mail-transport-agent, exim4-base (<= 4.61-1) -Depends: exim4-base (>= ${Upstream-Version}), ${shlibs:Depends}, ${misc:Depends} +Replaces: exim4-base (<= 4.61-1), mail-transport-agent +Depends: + exim4-base (>= ${Upstream-Version}), + ${misc:Depends}, + ${shlibs:Depends} Description: lightweight Exim MTA (v4) daemon Exim (v4) is a mail transport agent. This package contains the exim4 daemon with only basic features enabled. It works well with the @@ -126,10 +175,12 @@ Package: exim4 Architecture: all Priority: optional -Depends: ${misc:Depends}, debconf (>= 1.4.69) | cdebconf (>= 0.39), - exim4-base (>= ${source:Version}), +Depends: + debconf (>= 1.4.69) | cdebconf (>= 0.39), exim4-base (<< ${source:Version}.1), - exim4-daemon-light | exim4-daemon-heavy | exim4-daemon-custom + exim4-base (>= ${source:Version}), + exim4-daemon-light | exim4-daemon-heavy | exim4-daemon-custom, + ${misc:Depends} Description: metapackage to ease Exim MTA (v4) installation Exim (v4) is a mail transport agent. exim4 is the metapackage depending on the essential components for a basic exim4 installation. @@ -153,11 +204,13 @@ Package: exim4-daemon-heavy Architecture: any Priority: optional -Provides: mail-transport-agent, exim4-localscanapi-2.0 +Provides: exim4-localscanapi-2.0, mail-transport-agent Conflicts: mail-transport-agent -Replaces: mail-transport-agent, exim4-base (<= 4.61-1) -Depends: exim4-base (>= ${Upstream-Version}), ${shlibs:Depends}, - ${misc:Depends} +Replaces: exim4-base (<= 4.61-1), mail-transport-agent +Depends: + exim4-base (>= ${Upstream-Version}), + ${misc:Depends}, + ${shlibs:Depends} Breaks: clamav-daemon (<< 0.95) Description: Exim MTA (v4) daemon with extended features, including exiscan-acl Exim (v4) is a mail transport agent. This package contains the exim4 @@ -187,10 +240,13 @@ #Package: exim4-daemon-custom #Architecture: any #Priority: optional -#Provides: mail-transport-agent, exim4-localscanapi-2.0 +#Provides: exim4-localscanapi-2.0, mail-transport-agent #Conflicts: mail-transport-agent -#Replaces: mail-transport-agent, exim4-base (<= 4.61-1) -#Depends: exim4-base (>= ${Upstream-Version}), ${shlibs:Depends}, ${misc:Depends} +#Replaces: exim4-base (<= 4.61-1), mail-transport-agent +#Depends: +# exim4-base (>= ${Upstream-Version}), +# ${misc:Depends}, +# ${shlibs:Depends} #Description: custom Exim MTA (v4) daemon with locally set features # Exim (v4) is a mail transport agent. This package contains a # custom-configured exim4 daemon compiled to local needs. This package @@ -219,7 +275,7 @@ Priority: optional Conflicts: eximon Replaces: eximon -Depends: ${shlibs:Depends}, ${misc:Depends}, exim4-base (>= 4.10) +Depends: exim4-base (>= 4.10), ${misc:Depends}, ${shlibs:Depends} Description: monitor application for the Exim MTA (v4) (X11 interface) Eximon is a helper program for the Exim MTA (v4). It allows administrators to view the mail queue and logs, and perform a variety diff -Nru exim4-4.91/debian/copyright exim4-4.92~RC4/debian/copyright --- exim4-4.91/debian/copyright 2018-07-30 18:35:06.000000000 +0000 +++ exim4-4.92~RC4/debian/copyright 2019-01-10 15:41:45.000000000 +0000 @@ -58,7 +58,7 @@ exim is copyright (c) 1995 - 2018 University of Cambridge. The original licence is as follows (from the file NOTICE in the upstream -distribution); a copy of the GNU GPL version 2 is available in +distribution); a copy of the GNU GPL version 2 is available in /usr/share/common-licenses/GPL-2 on Debian systems. _________________________________________________________________________ diff -Nru exim4-4.91/debian/debconf/conf.d/acl/30_exim4-config_check_rcpt exim4-4.92~RC4/debian/debconf/conf.d/acl/30_exim4-config_check_rcpt --- exim4-4.91/debian/debconf/conf.d/acl/30_exim4-config_check_rcpt 2018-07-30 18:35:06.000000000 +0000 +++ exim4-4.92~RC4/debian/debconf/conf.d/acl/30_exim4-config_check_rcpt 2019-01-10 15:41:45.000000000 +0000 @@ -2,6 +2,19 @@ ### acl/30_exim4-config_check_rcpt ################################# +# define macros to be used below in this file to check recipient +# local parts for strange characters. Documentation below. +# This blocks local parts that begin with a dot or contain a quite +# broad range of non-alphanumeric characters. + +.ifndef CHECK_RCPT_LOCAL_LOCALPARTS +CHECK_RCPT_LOCAL_LOCALPARTS = ^[.] : ^.*[@%!/|`#&?] +.endif + +.ifndef CHECK_RCPT_REMOTE_LOCALPARTS +CHECK_RCPT_REMOTE_LOCALPARTS = ^[./|] : ^.*[@%!`#&?] : ^.*/\\.\\./ +.endif + # This access control list is used for every RCPT command in an incoming # SMTP message. The tests are run in order until the address is either # accepted or denied. @@ -46,7 +59,7 @@ # incorporated unthinkingly into a shell command line. # # These ACL components will block recipient addresses that are valid - # from an RFC2822 point of view. We chose to have them blocked by + # from an RFC5322 point of view. We chose to have them blocked by # default for security reasons. # # If you feel that your site should have less strict recipient @@ -58,11 +71,8 @@ # default, and is applied to messages that are addressed to one of the # local domains handled by this host. - # The default value of CHECK_RCPT_LOCAL_LOCALPARTS is defined in - # main/01_exim4-config_listmacrosdefs: - # CHECK_RCPT_LOCAL_LOCALPARTS = ^[.] : ^.*[@%!/|`#&?] - # This blocks local parts that begin with a dot or contain a quite - # broad range of non-alphanumeric characters. + # The default value of CHECK_RCPT_LOCAL_LOCALPARTS is defined + # at the top of this file. .ifdef CHECK_RCPT_LOCAL_LOCALPARTS deny domains = +local_domains diff -Nru exim4-4.91/debian/debconf/conf.d/main/01_exim4-config_listmacrosdefs exim4-4.92~RC4/debian/debconf/conf.d/main/01_exim4-config_listmacrosdefs --- exim4-4.91/debian/debconf/conf.d/main/01_exim4-config_listmacrosdefs 2018-07-30 18:35:06.000000000 +0000 +++ exim4-4.92~RC4/debian/debconf/conf.d/main/01_exim4-config_listmacrosdefs 2019-01-10 15:41:45.000000000 +0000 @@ -75,26 +75,6 @@ gecos_pattern = ^([^,:]*) gecos_name = $1 -# define macros to be used in acl/30_exim4-config_check_rcpt to check -# recipient local parts for strange characters. - -# This macro definition really should be in -# acl/30_exim4-config_check_rcpt but cannot be there due to -# http://www.exim.org/bugzilla/show_bug.cgi?id=101 as of exim 4.62. - -# These macros are documented in acl/30_exim4-config_check_rcpt, -# can be changed here or overridden by a locally added configuration -# file as described in README.Debian section "Using Exim Macros to control -# the configuration". - -.ifndef CHECK_RCPT_LOCAL_LOCALPARTS -CHECK_RCPT_LOCAL_LOCALPARTS = ^[.] : ^.*[@%!/|`#&?] -.endif - -.ifndef CHECK_RCPT_REMOTE_LOCALPARTS -CHECK_RCPT_REMOTE_LOCALPARTS = ^[./|] : ^.*[@%!`#&?] : ^.*/\\.\\./ -.endif - # always log tls_peerdn as we use TLS for outgoing connects by default .ifndef MAIN_LOG_SELECTOR MAIN_LOG_SELECTOR = +smtp_protocol_error +smtp_syntax_error +tls_certificate_verified +tls_peerdn diff -Nru exim4-4.91/debian/debconf/conf.d/main/02_exim4-config_options exim4-4.92~RC4/debian/debconf/conf.d/main/02_exim4-config_options --- exim4-4.91/debian/debconf/conf.d/main/02_exim4-config_options 2018-07-30 18:35:06.000000000 +0000 +++ exim4-4.92~RC4/debian/debconf/conf.d/main/02_exim4-config_options 2019-01-10 15:41:45.000000000 +0000 @@ -84,6 +84,10 @@ host_lookup = MAIN_HOST_LOOKUP .endif +# The setting below causes Exim to try to initialize the system resolver +# library with DNSSEC support. It has no effect if your library lacks +# DNSSEC support. +dns_dnssec_ok = 1 # In a minimaldns setup, update-exim4.conf guesses the hostname and # dumps it here to avoid DNS lookups being done at Exim run time. diff -Nru exim4-4.91/debian/debconf/conf.d/router/200_exim4-config_primary exim4-4.92~RC4/debian/debconf/conf.d/router/200_exim4-config_primary --- exim4-4.91/debian/debconf/conf.d/router/200_exim4-config_primary 2018-07-30 18:35:06.000000000 +0000 +++ exim4-4.92~RC4/debian/debconf/conf.d/router/200_exim4-config_primary 2019-01-10 15:41:45.000000000 +0000 @@ -19,6 +19,7 @@ domains = ! +local_domains : +relay_to_domains transport = remote_smtp same_domain_copy_routing = yes + dnssec_request_domains = * no_more # deliver mail directly to the recipient. This router is only reached @@ -36,6 +37,7 @@ ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8 : 192.168.0.0/16 :\ 172.16.0.0/12 : 10.0.0.0/8 : 169.254.0.0/16 :\ 255.255.255.255 + dnssec_request_domains = * no_more .endif diff -Nru exim4-4.91/debian/debconf/conf.d/transport/30_exim4-config_remote_smtp exim4-4.92~RC4/debian/debconf/conf.d/transport/30_exim4-config_remote_smtp --- exim4-4.91/debian/debconf/conf.d/transport/30_exim4-config_remote_smtp 2018-07-30 18:35:06.000000000 +0000 +++ exim4-4.92~RC4/debian/debconf/conf.d/transport/30_exim4-config_remote_smtp 2019-01-10 15:41:45.000000000 +0000 @@ -51,3 +51,7 @@ .ifdef REMOTE_SMTP_PRIVATEKEY tls_privatekey = REMOTE_SMTP_PRIVATEKEY .endif +.ifndef REMOTE_SMTP_DISABLE_DANE +dnssec_request_domains = * +hosts_try_dane = * +.endif diff -Nru exim4-4.91/debian/debconf/conf.d/transport/30_exim4-config_remote_smtp_smarthost exim4-4.92~RC4/debian/debconf/conf.d/transport/30_exim4-config_remote_smtp_smarthost --- exim4-4.91/debian/debconf/conf.d/transport/30_exim4-config_remote_smtp_smarthost 2018-07-30 18:35:06.000000000 +0000 +++ exim4-4.92~RC4/debian/debconf/conf.d/transport/30_exim4-config_remote_smtp_smarthost 2019-01-10 15:41:45.000000000 +0000 @@ -12,6 +12,7 @@ remote_smtp_smarthost: debug_print = "T: remote_smtp_smarthost for $local_part@$domain" driver = smtp + multi_domain .ifndef IGNORE_SMTP_LINE_LENGTH_LIMIT message_size_limit = ${if > {$max_received_linelength}{998} {1}{0}} .endif diff -Nru exim4-4.91/debian/example.conf.md5 exim4-4.92~RC4/debian/example.conf.md5 --- exim4-4.91/debian/example.conf.md5 2018-07-30 18:35:06.000000000 +0000 +++ exim4-4.92~RC4/debian/example.conf.md5 2019-01-10 15:41:45.000000000 +0000 @@ -1 +1 @@ -cee7f82425cc6c414c96eb65f659c4e2 - +c63273e99348ba157c3c000a67c48299 - diff -Nru exim4-4.91/debian/exim4-base.dirs exim4-4.92~RC4/debian/exim4-base.dirs --- exim4-4.91/debian/exim4-base.dirs 2018-07-30 18:35:06.000000000 +0000 +++ exim4-4.92~RC4/debian/exim4-base.dirs 2019-01-10 15:41:45.000000000 +0000 @@ -1,5 +1,5 @@ -/usr/sbin -/usr/share/man/man8 /etc/cron.daily /etc/logrotate.d +/usr/sbin /usr/share/doc/exim4-base/examples +/usr/share/man/man8 diff -Nru exim4-4.91/debian/exim4-base.docs exim4-4.92~RC4/debian/exim4-base.docs --- exim4-4.91/debian/exim4-base.docs 2018-07-30 18:35:06.000000000 +0000 +++ exim4-4.92~RC4/debian/exim4-base.docs 2019-01-10 15:41:45.000000000 +0000 @@ -1,15 +1,15 @@ -b-exim4-daemon-light/NOTICE b-exim4-daemon-light/ACKNOWLEDGMENTS -b-exim4-daemon-light/doc/README -b-exim4-daemon-light/doc/README.SIEVE +b-exim4-daemon-light/NOTICE b-exim4-daemon-light/README.UPDATING -b-exim4-daemon-light/doc/dbm.discuss.txt b-exim4-daemon-light/doc/Exim3.upgrade b-exim4-daemon-light/doc/Exim4.upgrade -b-exim4-daemon-light/doc/filter.txt +b-exim4-daemon-light/doc/GnuTLS-FAQ.txt b-exim4-daemon-light/doc/NewStuff b-exim4-daemon-light/doc/OptionLists.txt +b-exim4-daemon-light/doc/README +b-exim4-daemon-light/doc/README.SIEVE +b-exim4-daemon-light/doc/dbm.discuss.txt +b-exim4-daemon-light/doc/filter.txt b-exim4-daemon-light/doc/spec.txt -b-exim4-daemon-light/doc/GnuTLS-FAQ.txt -debian/changelog.Debian.old debian/README.Debian.html +debian/changelog.Debian.old diff -Nru exim4-4.91/debian/exim4-base.examples exim4-4.92~RC4/debian/exim4-base.examples --- exim4-4.91/debian/exim4-base.examples 2018-07-30 18:35:06.000000000 +0000 +++ exim4-4.92~RC4/debian/exim4-base.examples 2019-01-10 15:41:45.000000000 +0000 @@ -1,5 +1,5 @@ b-exim4-daemon-light/util/cramtest.pl b-exim4-daemon-light/util/logargs.sh b-exim4-daemon-light/util/unknownuser.sh -debian/exim-gencert debian/exim-adduser +debian/exim-gencert diff -Nru exim4-4.91/debian/exim4-base.install exim4-4.92~RC4/debian/exim4-base.install --- exim4-4.91/debian/exim4-base.install 2018-07-30 18:35:06.000000000 +0000 +++ exim4-4.92~RC4/debian/exim4-base.install 2019-01-10 15:41:45.000000000 +0000 @@ -1,3 +1,3 @@ -debian/script usr/share/bug/exim4-base -debian/gnutls-params-2048 usr/share/exim4 debian/exim4_refresh_gnutls-params usr/share/exim4 +debian/gnutls-params-2048 usr/share/exim4 +debian/script usr/share/bug/exim4-base diff -Nru exim4-4.91/debian/exim4-base.manpages exim4-4.92~RC4/debian/exim4-base.manpages --- exim4-4.91/debian/exim4-base.manpages 2018-07-30 18:35:06.000000000 +0000 +++ exim4-4.92~RC4/debian/exim4-base.manpages 2019-01-10 15:41:45.000000000 +0000 @@ -2,6 +2,7 @@ debian/manpages/exicyclog.8 debian/manpages/exigrep.8 debian/manpages/exim_checkaccess.8 +debian/manpages/exim_convert4r4.8 debian/manpages/exim_db.8 debian/manpages/exim_dbmbuild.8 debian/manpages/exim_lock.8 @@ -9,4 +10,3 @@ debian/manpages/exiqgrep.8 debian/manpages/exiqsumm.8 debian/manpages/exiwhat.8 -debian/manpages/exim_convert4r4.8 diff -Nru exim4-4.91/debian/exim4-config.dirs exim4-4.92~RC4/debian/exim4-config.dirs --- exim4-4.91/debian/exim4-config.dirs 2018-07-30 18:35:06.000000000 +0000 +++ exim4-4.92~RC4/debian/exim4-config.dirs 2019-01-10 15:41:45.000000000 +0000 @@ -1,6 +1,6 @@ -/usr/sbin /etc/exim4/conf.d /etc/ppp/ip-up.d +/usr/sbin /usr/share/doc/exim4-config /usr/share/man/man8 /var/lib/exim4 diff -Nru exim4-4.91/debian/exim4-config.install exim4-4.92~RC4/debian/exim4-config.install --- exim4-4.91/debian/exim4-config.install 2018-07-30 18:35:06.000000000 +0000 +++ exim4-4.92~RC4/debian/exim4-config.install 2019-01-10 15:41:45.000000000 +0000 @@ -1,3 +1,3 @@ -debian/debconf/update-exim4.conf.template usr/sbin debian/debconf/exim4.conf.template etc/exim4 +debian/debconf/update-exim4.conf.template usr/sbin debian/script usr/share/bug/exim4-config diff -Nru exim4-4.91/debian/exim4-config.links exim4-4.92~RC4/debian/exim4-config.links --- exim4-4.91/debian/exim4-config.links 2018-07-30 18:35:06.000000000 +0000 +++ exim4-4.92~RC4/debian/exim4-config.links 2019-01-10 15:41:45.000000000 +0000 @@ -1,15 +1,15 @@ usr/share/man/man5/exim4-config_files.5.gz usr/share/man/man5/etc-aliases.5.gz usr/share/man/man5/exim4-config_files.5.gz usr/share/man/man5/etc-email-addresses.5.gz +usr/share/man/man5/exim4-config_files.5.gz usr/share/man/man5/exim4_exim_crt.5.gz +usr/share/man/man5/exim4-config_files.5.gz usr/share/man/man5/exim4_exim_key.5.gz +usr/share/man/man5/exim4-config_files.5.gz usr/share/man/man5/exim4_host_local_deny_exceptions.5.gz +usr/share/man/man5/exim4-config_files.5.gz usr/share/man/man5/exim4_hubbed_hosts.5.gz +usr/share/man/man5/exim4-config_files.5.gz usr/share/man/man5/exim4_local_domain_dnsbl_whitelist.5.gz usr/share/man/man5/exim4-config_files.5.gz usr/share/man/man5/exim4_local_host_blacklist.5.gz +usr/share/man/man5/exim4-config_files.5.gz usr/share/man/man5/exim4_local_rcpt_callout.5.gz usr/share/man/man5/exim4-config_files.5.gz usr/share/man/man5/exim4_local_sender_blacklist.5.gz -usr/share/man/man5/exim4-config_files.5.gz usr/share/man/man5/exim4_host_local_deny_exceptions.5.gz -usr/share/man/man5/exim4-config_files.5.gz usr/share/man/man5/exim4_sender_local_deny_exceptions.5.gz usr/share/man/man5/exim4-config_files.5.gz usr/share/man/man5/exim4_local_sender_callout.5.gz -usr/share/man/man5/exim4-config_files.5.gz usr/share/man/man5/exim4_local_rcpt_callout.5.gz -usr/share/man/man5/exim4-config_files.5.gz usr/share/man/man5/exim4_local_domain_dnsbl_whitelist.5.gz -usr/share/man/man5/exim4-config_files.5.gz usr/share/man/man5/exim4_hubbed_hosts.5.gz usr/share/man/man5/exim4-config_files.5.gz usr/share/man/man5/exim4_passwd.5.gz usr/share/man/man5/exim4-config_files.5.gz usr/share/man/man5/exim4_passwd_client.5.gz -usr/share/man/man5/exim4-config_files.5.gz usr/share/man/man5/exim4_exim_crt.5.gz -usr/share/man/man5/exim4-config_files.5.gz usr/share/man/man5/exim4_exim_key.5.gz +usr/share/man/man5/exim4-config_files.5.gz usr/share/man/man5/exim4_sender_local_deny_exceptions.5.gz usr/share/man/man8/update-exim4.conf.8.gz usr/share/man/man5/update-exim4.conf.conf.5.gz diff -Nru exim4-4.91/debian/exim4-config.manpages exim4-4.92~RC4/debian/exim4-config.manpages --- exim4-4.91/debian/exim4-config.manpages 2018-07-30 18:35:06.000000000 +0000 +++ exim4-4.92~RC4/debian/exim4-config.manpages 2019-01-10 15:41:45.000000000 +0000 @@ -1,4 +1,4 @@ +debian/manpages/exim4-config_files.5 debian/manpages/update-exim4.conf.8 debian/manpages/update-exim4.conf.template.8 debian/manpages/update-exim4defaults.8 -debian/manpages/exim4-config_files.5 diff -Nru exim4-4.91/debian/exim4-daemon-custom.links exim4-4.92~RC4/debian/exim4-daemon-custom.links --- exim4-4.91/debian/exim4-daemon-custom.links 2018-07-30 18:35:06.000000000 +0000 +++ exim4-4.92~RC4/debian/exim4-daemon-custom.links 2019-01-10 15:41:45.000000000 +0000 @@ -1,18 +1,18 @@ -usr/share/man/man8/exim.8.gz usr/share/man/man8/exim4.8.gz +usr/sbin/exim4 usr/bin/mailq +usr/sbin/exim4 usr/bin/newaliases usr/sbin/exim4 usr/lib/exim4/exim4 usr/sbin/exim4 usr/lib/sendmail usr/sbin/exim4 usr/sbin/exim -usr/sbin/exim4 usr/sbin/sendmail -usr/sbin/exim4 usr/sbin/runq usr/sbin/exim4 usr/sbin/rmail usr/sbin/exim4 usr/sbin/rsmtp -usr/sbin/exim4 usr/bin/mailq -usr/sbin/exim4 usr/bin/newaliases -usr/share/doc/exim4-base/changelog.gz usr/share/doc/exim4-daemon-custom/changelog.gz +usr/sbin/exim4 usr/sbin/runq +usr/sbin/exim4 usr/sbin/sendmail usr/share/doc/exim4-base/README.Debian.gz usr/share/doc/exim4-daemon-custom/README.Debian.gz -usr/share/man/man8/exim.8.gz usr/share/man/man8/sendmail.8.gz -usr/share/man/man8/exim.8.gz usr/share/man/man8/runq.8.gz -usr/share/man/man8/exim.8.gz usr/share/man/man8/rmail.8.gz -usr/share/man/man8/exim.8.gz usr/share/man/man8/rsmtp.8.gz +usr/share/doc/exim4-base/changelog.gz usr/share/doc/exim4-daemon-custom/changelog.gz +usr/share/man/man8/exim.8.gz usr/share/man/man8/exim4.8.gz usr/share/man/man8/exim.8.gz usr/share/man/man8/mailq.8.gz usr/share/man/man8/exim.8.gz usr/share/man/man8/newaliases.8.gz +usr/share/man/man8/exim.8.gz usr/share/man/man8/rmail.8.gz +usr/share/man/man8/exim.8.gz usr/share/man/man8/rsmtp.8.gz +usr/share/man/man8/exim.8.gz usr/share/man/man8/runq.8.gz +usr/share/man/man8/exim.8.gz usr/share/man/man8/sendmail.8.gz diff -Nru exim4-4.91/debian/exim4-daemon-heavy.dirs exim4-4.92~RC4/debian/exim4-daemon-heavy.dirs --- exim4-4.91/debian/exim4-daemon-heavy.dirs 2018-07-30 18:35:06.000000000 +0000 +++ exim4-4.92~RC4/debian/exim4-daemon-heavy.dirs 2019-01-10 15:41:45.000000000 +0000 @@ -1,4 +1,4 @@ /usr/lib/exim4 +/usr/lib/exim4/local_scan /usr/sbin /usr/share/man/man8 -/usr/lib/exim4/local_scan diff -Nru exim4-4.91/debian/exim4-daemon-heavy.links exim4-4.92~RC4/debian/exim4-daemon-heavy.links --- exim4-4.91/debian/exim4-daemon-heavy.links 2018-07-30 18:35:06.000000000 +0000 +++ exim4-4.92~RC4/debian/exim4-daemon-heavy.links 2019-01-10 15:41:45.000000000 +0000 @@ -1,18 +1,18 @@ -usr/share/man/man8/exim.8.gz usr/share/man/man8/exim4.8.gz +usr/sbin/exim4 usr/bin/mailq +usr/sbin/exim4 usr/bin/newaliases usr/sbin/exim4 usr/lib/exim4/exim4 usr/sbin/exim4 usr/lib/sendmail usr/sbin/exim4 usr/sbin/exim -usr/sbin/exim4 usr/sbin/sendmail -usr/sbin/exim4 usr/sbin/runq usr/sbin/exim4 usr/sbin/rmail usr/sbin/exim4 usr/sbin/rsmtp -usr/sbin/exim4 usr/bin/mailq -usr/sbin/exim4 usr/bin/newaliases -usr/share/doc/exim4-base/changelog.gz usr/share/doc/exim4-daemon-heavy/changelog.gz +usr/sbin/exim4 usr/sbin/runq +usr/sbin/exim4 usr/sbin/sendmail usr/share/doc/exim4-base/README.Debian.gz usr/share/doc/exim4-daemon-heavy/README.Debian.gz -usr/share/man/man8/exim.8.gz usr/share/man/man8/sendmail.8.gz -usr/share/man/man8/exim.8.gz usr/share/man/man8/runq.8.gz -usr/share/man/man8/exim.8.gz usr/share/man/man8/rmail.8.gz -usr/share/man/man8/exim.8.gz usr/share/man/man8/rsmtp.8.gz +usr/share/doc/exim4-base/changelog.gz usr/share/doc/exim4-daemon-heavy/changelog.gz +usr/share/man/man8/exim.8.gz usr/share/man/man8/exim4.8.gz usr/share/man/man8/exim.8.gz usr/share/man/man8/mailq.8.gz usr/share/man/man8/exim.8.gz usr/share/man/man8/newaliases.8.gz +usr/share/man/man8/exim.8.gz usr/share/man/man8/rmail.8.gz +usr/share/man/man8/exim.8.gz usr/share/man/man8/rsmtp.8.gz +usr/share/man/man8/exim.8.gz usr/share/man/man8/runq.8.gz +usr/share/man/man8/exim.8.gz usr/share/man/man8/sendmail.8.gz diff -Nru exim4-4.91/debian/exim4-daemon-light.links exim4-4.92~RC4/debian/exim4-daemon-light.links --- exim4-4.91/debian/exim4-daemon-light.links 2018-07-30 18:35:06.000000000 +0000 +++ exim4-4.92~RC4/debian/exim4-daemon-light.links 2019-01-10 15:41:45.000000000 +0000 @@ -1,18 +1,18 @@ -usr/share/man/man8/exim.8.gz usr/share/man/man8/exim4.8.gz +usr/sbin/exim4 usr/bin/mailq +usr/sbin/exim4 usr/bin/newaliases usr/sbin/exim4 usr/lib/exim4/exim4 usr/sbin/exim4 usr/lib/sendmail usr/sbin/exim4 usr/sbin/exim -usr/sbin/exim4 usr/sbin/sendmail -usr/sbin/exim4 usr/sbin/runq usr/sbin/exim4 usr/sbin/rmail usr/sbin/exim4 usr/sbin/rsmtp -usr/sbin/exim4 usr/bin/mailq -usr/sbin/exim4 usr/bin/newaliases -usr/share/doc/exim4-base/changelog.gz usr/share/doc/exim4-daemon-light/changelog.gz +usr/sbin/exim4 usr/sbin/runq +usr/sbin/exim4 usr/sbin/sendmail usr/share/doc/exim4-base/README.Debian.gz usr/share/doc/exim4-daemon-light/README.Debian.gz -usr/share/man/man8/exim.8.gz usr/share/man/man8/sendmail.8.gz -usr/share/man/man8/exim.8.gz usr/share/man/man8/runq.8.gz -usr/share/man/man8/exim.8.gz usr/share/man/man8/rmail.8.gz -usr/share/man/man8/exim.8.gz usr/share/man/man8/rsmtp.8.gz +usr/share/doc/exim4-base/changelog.gz usr/share/doc/exim4-daemon-light/changelog.gz +usr/share/man/man8/exim.8.gz usr/share/man/man8/exim4.8.gz usr/share/man/man8/exim.8.gz usr/share/man/man8/mailq.8.gz usr/share/man/man8/exim.8.gz usr/share/man/man8/newaliases.8.gz +usr/share/man/man8/exim.8.gz usr/share/man/man8/rmail.8.gz +usr/share/man/man8/exim.8.gz usr/share/man/man8/rsmtp.8.gz +usr/share/man/man8/exim.8.gz usr/share/man/man8/runq.8.gz +usr/share/man/man8/exim.8.gz usr/share/man/man8/sendmail.8.gz diff -Nru exim4-4.91/debian/exim4-dev.install exim4-4.92~RC4/debian/exim4-dev.install --- exim4-4.91/debian/exim4-dev.install 2018-07-30 18:35:06.000000000 +0000 +++ exim4-4.92~RC4/debian/exim4-dev.install 2019-01-10 15:41:45.000000000 +0000 @@ -1,4 +1,4 @@ b-exim4-daemon-light/src/local_scan.h usr/include/exim4 -b-exim4-daemon-light/src/store.h usr/include/exim4 b-exim4-daemon-light/src/mytypes.h usr/include/exim4 +b-exim4-daemon-light/src/store.h usr/include/exim4 debian/exim4-localscan-plugin-config usr/bin diff -Nru exim4-4.91/debian/exim4-dev.links exim4-4.92~RC4/debian/exim4-dev.links --- exim4-4.91/debian/exim4-dev.links 2018-07-30 18:35:06.000000000 +0000 +++ exim4-4.92~RC4/debian/exim4-dev.links 2019-01-10 15:41:45.000000000 +0000 @@ -1,2 +1,2 @@ -usr/share/doc/exim4-base/changelog.gz usr/share/doc/exim4-dev/changelog.gz usr/share/doc/exim4-base/README.Debian.gz usr/share/doc/exim4-dev/README.Debian.gz +usr/share/doc/exim4-base/changelog.gz usr/share/doc/exim4-dev/changelog.gz diff -Nru exim4-4.91/debian/eximon4.dirs exim4-4.92~RC4/debian/eximon4.dirs --- exim4-4.91/debian/eximon4.dirs 2018-07-30 18:35:06.000000000 +0000 +++ exim4-4.92~RC4/debian/eximon4.dirs 2019-01-10 15:41:45.000000000 +0000 @@ -1,2 +1,2 @@ -usr/sbin usr/lib/exim4 +usr/sbin diff -Nru exim4-4.91/debian/patches/31_eximmanpage.dpatch exim4-4.92~RC4/debian/patches/31_eximmanpage.dpatch --- exim4-4.91/debian/patches/31_eximmanpage.dpatch 2018-07-30 18:35:06.000000000 +0000 +++ exim4-4.92~RC4/debian/patches/31_eximmanpage.dpatch 2019-01-10 15:41:45.000000000 +0000 @@ -2,7 +2,7 @@ accordingly. Author: Marc Haber , Andreas Metzler -Last-Update: 2017-01-31 +Last-Update: 2018-12-31 Forwarded: not-needed (upstream uses the "exim" name) --- a/doc/exim.8 @@ -40,7 +40,7 @@ PID_FILE_PATH in Local/Makefile. The file is written while Exim is still running as root. .sp -@@ -179,7 +179,7 @@ available to admin users. +@@ -180,7 +180,7 @@ available to admin users. This option operates like \fB\-be\fP except that it must be followed by the name of a file. For example: .sp @@ -49,7 +49,7 @@ .sp The file is read as a message (as if receiving a locally\-submitted non\-SMTP message) before any of the test expansions are done. Thus, message\-specific -@@ -205,7 +205,7 @@ If you want to test a system filter file +@@ -206,7 +206,7 @@ If you want to test a system filter file can use both \fB\-bF\fP and \fB\-bf\fP on the same command, in order to test a system filter and a user filter in the same run. For example: .sp @@ -58,7 +58,7 @@ .sp This is helpful when the system filter adds header lines or sets filter variables that are used by the user filter. -@@ -257,8 +257,8 @@ This option runs a fake SMTP session as +@@ -258,8 +258,8 @@ This option runs a fake SMTP session as standard input and output. The IP address may include a port number at the end, after a full stop. For example: .sp @@ -69,7 +69,7 @@ .sp When an IPv6 address is given, it is converted into canonical form. In the case of the second example above, the value of \fI$sender_host_address\fP after -@@ -416,7 +416,7 @@ main configuration options to be written +@@ -417,7 +417,7 @@ main configuration options to be written of one or more specific options can be requested by giving their names as arguments, for example: .sp @@ -78,7 +78,7 @@ .sp However, any option setting that is preceded by the word "hide" in the configuration file is not shown in full, except to an admin user. For other -@@ -444,7 +444,7 @@ written directly into the spool director +@@ -445,7 +445,7 @@ written directly into the spool director .sp If \fB\-bP\fP is followed by a name preceded by +, for example, .sp @@ -87,7 +87,7 @@ .sp it searches for a matching named list of any type (domain, host, address, or local part) and outputs what it finds. -@@ -453,7 +453,7 @@ If one of the words \fBrouter\fP, \fBtra +@@ -454,7 +454,7 @@ If one of the words \fBrouter\fP, \fBtra followed by the name of an appropriate driver instance, the option settings for that driver are output. For example: .sp @@ -96,7 +96,7 @@ .sp The generic driver options are output first, followed by the driver's private options. A list of the names of drivers of a particular type can be obtained by -@@ -536,7 +536,7 @@ This option is for testing retry rules, +@@ -539,7 +539,7 @@ This option is for testing retry rules, arguments. It causes Exim to look for a retry rule that matches the values and to write it to the standard output. For example: .sp @@ -105,7 +105,7 @@ Retry rule: *.comp.mus.example F,2h,15m; F,4d,30m; .sp The first -@@ -549,7 +549,7 @@ rule is found that matches the host, one +@@ -552,7 +552,7 @@ rule is found that matches the host, one sought. Finally, an argument that is the name of a specific delivery error, as used in setting up retry rules, can be given. For example: .sp @@ -114,7 +114,7 @@ Retry rule: *@haydn.comp.mus.example quota_3d F,1h,15m .TP 10 \fB\-brw\fP -@@ -652,7 +652,7 @@ doing such tests. +@@ -655,7 +655,7 @@ doing such tests. .TP 10 \fB\-bV\fP This option causes Exim to write the current version number, compilation @@ -122,8 +122,8 @@ +number, and compilation date of the \fIexim4\fP binary to the standard output. It also lists the DBM library that is being used, the optional modules (such as specific lookup types), the drivers that are included in the binary, and the - name of the run time configuration file that is in use. -@@ -680,7 +680,7 @@ If no arguments are given, Exim runs in + name of the runtime configuration file that is in use. +@@ -683,7 +683,7 @@ If no arguments are given, Exim runs in right angle bracket for addresses to be verified. .sp Unlike the \fB\-be\fP test option, you cannot arrange for Exim to use the @@ -132,7 +132,7 @@ security issues. .sp Verification differs from address testing (the \fB\-bt\fP option) in that routers -@@ -793,14 +793,14 @@ command line item. \fB\-D\fP can be used +@@ -796,14 +796,14 @@ command line item. \fB\-D\fP can be used string, in which case the equals sign is optional. These two commands are synonymous: .sp @@ -150,7 +150,7 @@ .sp \fB\-D\fP may be repeated up to 10 times on a command line. Only macro names up to 22 letters long can be set. -@@ -930,8 +930,8 @@ never provoke a bounce. An empty sender +@@ -938,8 +938,8 @@ never provoke a bounce. An empty sender string, or as a pair of angle brackets with nothing between them, as in these examples of shell commands: .sp @@ -161,7 +161,7 @@ .sp In addition, the use of \fB\-f\fP is not restricted when testing a filter file with \fB\-bf\fP or when testing or verifying addresses using the \fB\-bt\fP or -@@ -1307,12 +1307,12 @@ other circumstances, they are ignored un +@@ -1315,12 +1315,12 @@ other circumstances, they are ignored un The \fB\-oMa\fP option sets the sender host address. This may include a port number at the end, after a full stop (period). For example: .sp @@ -176,7 +176,7 @@ .sp The IP address is placed in the \fI$sender_host_address\fP variable, and the port, if present, in \fI$sender_host_port\fP. If both \fB\-oMa\fP and \fB\-bh\fP -@@ -1518,22 +1518,22 @@ If other commandline options specify an +@@ -1526,22 +1526,22 @@ If other commandline options specify an will specify a queue to operate on. For example: .sp @@ -203,7 +203,7 @@ .sp just one delivery process is started, for that message. This differs from \fB\-M\fP in that retry data is respected, and it also differs from \fB\-Mc\fP in -@@ -1549,7 +1549,7 @@ starting a queue runner process at inter +@@ -1557,7 +1557,7 @@ starting a queue runner process at inter single daemon process handles both functions. A common way of starting up a combined daemon at system boot time is to use a command such as .sp @@ -212,7 +212,7 @@ .sp Such a daemon listens for incoming SMTP calls, and also starts a queue runner process every 30 minutes. -@@ -1580,7 +1580,7 @@ regular expression; otherwise it is a li +@@ -1588,7 +1588,7 @@ regular expression; otherwise it is a li If you want to do periodic queue runs for messages with specific recipients, you can combine \fB\-R\fP with \fB\-q\fP and a time value. For example: .sp @@ -221,7 +221,7 @@ .sp This example does a queue run for messages with recipients in the given domain every 25 minutes. Any additional flags that are specified with \fB\-q\fP are -@@ -1696,6 +1696,26 @@ under most shells. +@@ -1704,6 +1704,26 @@ under most shells. .sp . .SH "SEE ALSO" diff -Nru exim4-4.91/debian/patches/32_exim4.dpatch exim4-4.92~RC4/debian/patches/32_exim4.dpatch --- exim4-4.91/debian/patches/32_exim4.dpatch 2018-07-30 18:35:06.000000000 +0000 +++ exim4-4.92~RC4/debian/patches/32_exim4.dpatch 2019-01-10 15:41:45.000000000 +0000 @@ -2,7 +2,7 @@ Author: Andreas Metzler Origin: vendor Forwarded: not-needed -Last-Update: 2013-09-28 +Last-Update: 2018-12-12 --- a/OS/Makefile-Linux +++ b/OS/Makefile-Linux @@ -84,7 +84,7 @@ my %opt; --- a/src/exiwhat.src +++ b/src/exiwhat.src -@@ -95,7 +95,7 @@ fi +@@ -98,7 +98,7 @@ fi st=' ' exim_path=`grep "^[$st]*exim_path" $config | sed "s/.*=[$st]*//"` @@ -95,12 +95,12 @@ --- a/src/globals.c +++ b/src/globals.c -@@ -725,7 +725,7 @@ const uschar *event_name = NULL; +@@ -906,7 +906,7 @@ const uschar *event_name = NULL; + gid_t exim_gid = EXIM_GID; - BOOL exim_gid_set = TRUE; /* This gid is always set */ -uschar *exim_path = US BIN_DIRECTORY "/exim" +uschar *exim_path = US BIN_DIRECTORY "/exim4" "\0<---------------Space to patch exim_path->"; uid_t exim_uid = EXIM_UID; - BOOL exim_uid_set = TRUE; /* This uid is always set */ + int expand_level = 0; /* Nesting depth, indent for debug */ diff -Nru exim4-4.91/debian/patches/67_unnecessaryCopt.diff exim4-4.92~RC4/debian/patches/67_unnecessaryCopt.diff --- exim4-4.91/debian/patches/67_unnecessaryCopt.diff 2018-07-30 18:35:06.000000000 +0000 +++ exim4-4.92~RC4/debian/patches/67_unnecessaryCopt.diff 2019-01-10 15:41:45.000000000 +0000 @@ -1,8 +1,8 @@ Description: Stop using exim's -C option in utility scripts (exiwhat et al.) since this breaks with ALT_CONFIG_PREFIX. -Author: Andreas Metzler +Author: Andreas Metzler Forwarded: http://bugs.exim.org/show_bug.cgi?id=1045 -Last-Update: 2014-12-01 +Last-Update: 2018-12-31 --- a/src/exicyclog.src +++ b/src/exicyclog.src @@ -56,7 +56,7 @@ while () --- a/src/exiwhat.src +++ b/src/exiwhat.src -@@ -96,8 +96,8 @@ fi +@@ -99,8 +99,8 @@ fi st=' ' exim_path=`grep "^[$st]*exim_path" $config | sed "s/.*=[$st]*//"` if test "$exim_path" = ""; then exim_path=BIN_DIRECTORY/exim4; fi diff -Nru exim4-4.91/debian/patches/70_remove_exim-users_references.dpatch exim4-4.92~RC4/debian/patches/70_remove_exim-users_references.dpatch --- exim4-4.91/debian/patches/70_remove_exim-users_references.dpatch 2018-07-30 18:35:06.000000000 +0000 +++ exim4-4.92~RC4/debian/patches/70_remove_exim-users_references.dpatch 2019-01-10 15:41:45.000000000 +0000 @@ -1,9 +1,6 @@ -#! /bin/sh /usr/share/dpatch/dpatch-run -## 70_remove_exim-users_references.dpatch by Marc Haber -## -## All lines beginning with `## DP:' are a description of the patch. -## DP: No description. -Last-Update: 2014-12-01 +Description: Point Debian users to Debian specific ML. +Author: Marc Haber +Last-Update: 2018-12-31 --- a/README +++ b/README @@ -11,7 +8,7 @@ older book may be helpful for the background, but a lot of the detail has changed, so it is likely to be confusing to newcomers. --There is a web site at http://www.exim.org; this contains details of the +-There is a website at https://www.exim.org; this contains details of the -mailing list exim-users@exim.org. +Information about the way Debian has built the binary packages is +obtainable in /usr/share/doc/exim4-base/README.Debian.gz, and there @@ -22,7 +19,7 @@ +can find the subscription web page on +http://lists.alioth.debian.org/mailman/listinfo/pkg-exim4-users + -+There is a web site at http://www.exim.org. ++There is a website at https://www.exim.org/. A copy of the Exim FAQ should be available from the same source that you used to obtain the Exim distribution. Additional formats for the documentation @@ -32,9 +29,9 @@ =head1 AUTHOR --There is a web site at http://www.exim.org - this contains details of the +-There is a website at https://www.exim.org - this contains details of the -mailing list exim-users@exim.org. -+There is a web site at http://www.exim.org ++There is a website at https://www.exim.org/. =head1 TO DO diff -Nru exim4-4.91/debian/patches/75_fixes_01-Belated-README.UPDATING-notes-for-Exim-4.91.patch exim4-4.92~RC4/debian/patches/75_fixes_01-Belated-README.UPDATING-notes-for-Exim-4.91.patch --- exim4-4.91/debian/patches/75_fixes_01-Belated-README.UPDATING-notes-for-Exim-4.91.patch 2018-07-30 18:35:06.000000000 +0000 +++ exim4-4.92~RC4/debian/patches/75_fixes_01-Belated-README.UPDATING-notes-for-Exim-4.91.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,52 +0,0 @@ -From 0111e9faaba8126eac5f50992968cce768050399 Mon Sep 17 00:00:00 2001 -From: Phil Pennock -Date: Mon, 16 Apr 2018 15:24:34 -0400 -Subject: [PATCH 1/6] Belated README.UPDATING notes for Exim 4.91 - -People skip versions and move past them later, so while it's too late -for 4.91, this will still help people moving to 4.92 from pre-4.91 in -future. - -Note that none of these strictly needed to be documented here: -experimental features, features marked as deprecated for many many -years, etc. But let's err on the side of caution and include "things -which will break if you try to upgrade without changing Local/Makefile". ---- - src/README.UPDATING | 21 +++++++++++++++++++++ - 1 file changed, 21 insertions(+) - -diff --git a/README.UPDATING b/README.UPDATING -index 05b3d9d9..73b52e4a 100644 ---- a/README.UPDATING -+++ b/README.UPDATING -@@ -26,6 +26,27 @@ The rest of this document contains information about changes in 4.xx releases - that might affect a running system. - - -+Exim version 4.91 -+----------------- -+ -+ * DANE and SPF have been promoted from Experimental to Supported status, thus -+ the options to enable them in Local/Makefile have been renamed. -+ See current src/EDITME for full details, including changes in dependencies, -+ but loosely: replace EXPERIMENTAL_SPF with SUPPORT_SPF and replace -+ EXPERIMENTAL_DANE with SUPPORT_DANE. -+ -+ * Ancient ClamAV stream support, long deprecated by ClamAV, has been removed; -+ if you were building with WITH_OLD_CLAMAV_STREAM enabled then your problems -+ have marginally increased. -+ -+ * A number of logging changes; if relying upon the previous DKIM additional -+ log-line, explicit log_selector configuration is needed to keep it. -+ -+ * Other incompatible changes in EXPERIMENTAL_* features, read NewStuff and -+ ChangeLog carefully if relying upon an experimental feature such as DMARC. -+ Note that this includes changes to SPF as it was promoted into Supported. -+ -+ - Exim version 4.89 - ----------------- - --- -2.17.0 - diff -Nru exim4-4.91/debian/patches/75_fixes_02-Avoid-doing-logging-in-signal-handlers.-Bug-1007.patch exim4-4.92~RC4/debian/patches/75_fixes_02-Avoid-doing-logging-in-signal-handlers.-Bug-1007.patch --- exim4-4.91/debian/patches/75_fixes_02-Avoid-doing-logging-in-signal-handlers.-Bug-1007.patch 2018-07-30 18:35:06.000000000 +0000 +++ exim4-4.92~RC4/debian/patches/75_fixes_02-Avoid-doing-logging-in-signal-handlers.-Bug-1007.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,628 +0,0 @@ -From 101702337f7eb652fc99f440b64904b1e1629c2f Mon Sep 17 00:00:00 2001 -From: Jeremy Harris -Date: Mon, 23 Apr 2018 12:41:31 +0100 -Subject: [PATCH 2/6] Avoid doing logging in signal-handlers. Bug 1007 - - Cherry-picked from 9723f96673, with the LOCAL_SCAN changes removed ---- - doc/ChangeLog | 7 ++ - src/functions.h | 4 + - src/globals.c | 4 + - src/globals.h | 4 + - src/local_scan.c | 1 + - src/receive.c | 193 +++++++++++++++++++++++------------------- - src/smtp_in.c | 82 +++++++++++++----- - src/spool_out.c | 4 +- - src/tls-gnu.c | 20 +++-- - src/tls-openssl.c | 11 ++- - 10 files changed, 216 insertions(+), 114 deletions(-) - -diff --git a/doc/ChangeLog b/doc/ChangeLog -index b4c98572..58673c23 100644 ---- a/doc/ChangeLog -+++ b/doc/ChangeLog -@@ -5,6 +5,13 @@ affect Exim's operation, with an unchanged configuration file. For new - options, and new features, see the NewStuff file next to this ChangeLog. - - -+Since version 4.91 -+------------------ -+ -+JH/02 Bug 1007: Avoid doing logging from signal-handlers, as that can result in -+ non-signal-safe functions being used. -+ -+ - Exim version 4.91 - ----------------- - -diff --git a/src/functions.h b/src/functions.h -index 9be5c32a..5f9deab6 100644 ---- a/src/functions.h -+++ b/src/functions.h -@@ -427,6 +427,10 @@ extern int sieve_interpret(uschar *, int, uschar *, uschar *, uschar *, - extern void sigalrm_handler(int); - extern BOOL smtp_buffered(void); - extern void smtp_closedown(uschar *); -+extern void smtp_command_timeout_exit(void); -+extern void smtp_command_sigterm_exit(void); -+extern void smtp_data_timeout_exit(void); -+extern void smtp_data_sigint_exit(void); - extern uschar *smtp_cmd_hist(void); - extern int smtp_connect(host_item *, int, uschar *, int, - transport_instance *); -diff --git a/src/globals.c b/src/globals.c -index 7d18b38b..5b480572 100644 ---- a/src/globals.c -+++ b/src/globals.c -@@ -770,6 +770,10 @@ uschar *gecos_name = NULL; - uschar *gecos_pattern = NULL; - rewrite_rule *global_rewrite_rules = NULL; - -+volatile sig_atomic_t had_command_timeout = 0; -+volatile sig_atomic_t had_command_sigterm = 0; -+volatile sig_atomic_t had_data_timeout = 0; -+volatile sig_atomic_t had_data_sigint = 0; - uschar *headers_charset = US HEADERS_CHARSET; - int header_insert_maxlen = 64 * 1024; - header_line *header_last = NULL; -diff --git a/src/globals.h b/src/globals.h -index da1230b7..2915513f 100644 ---- a/src/globals.h -+++ b/src/globals.h -@@ -492,6 +492,10 @@ extern uschar *gecos_name; /* To be expanded when pattern matches */ - extern uschar *gecos_pattern; /* Pattern to match */ - extern rewrite_rule *global_rewrite_rules; /* Chain of rewriting rules */ - -+extern volatile sig_atomic_t had_command_timeout; /* Alarm sighandler called */ -+extern volatile sig_atomic_t had_command_sigterm; /* TERM sighandler called */ -+extern volatile sig_atomic_t had_data_timeout; /* Alarm sighandler called */ -+extern volatile sig_atomic_t had_data_sigint; /* TERM/INT sighandler called */ - extern int header_insert_maxlen; /* Max for inserting headers */ - extern int header_maxsize; /* Max total length for header */ - extern int header_line_maxsize; /* Max for an individual line */ -diff --git a/src/local_scan.c b/src/local_scan.c -index 3500047c..4dd0b2ba 100644 ---- a/src/local_scan.c -+++ b/src/local_scan.c -@@ -12,6 +12,7 @@ If you want to implement your own version, you should copy this file to, say - Local/local_scan.c, and edit the copy. To use your version instead of the - default, you must set - -+HAVE_LOCAL_SCAN=yes - LOCAL_SCAN_SOURCE=Local/local_scan.c - - in your Local/Makefile. This makes it easy to copy your version for use with -diff --git a/src/receive.c b/src/receive.c -index cba53c20..3b215f23 100644 ---- a/src/receive.c -+++ b/src/receive.c -@@ -8,6 +8,7 @@ - /* Code for receiving a message and setting up spool files. */ - - #include "exim.h" -+#include - - #ifdef EXPERIMENTAL_DCC - extern int dcc_ok; -@@ -27,6 +28,10 @@ static uschar *spool_name = US""; - - enum CH_STATE {LF_SEEN, MID_LINE, CR_SEEN}; - -+jmp_buf local_scan_env; /* error-handling context for local_scan */ -+unsigned had_local_scan_crash; -+unsigned had_local_scan_timeout; -+ - - /************************************************* - * Non-SMTP character reading functions * -@@ -40,7 +45,27 @@ changing the pointer variables.) */ - int - stdin_getc(unsigned lim) - { --return getc(stdin); -+int c = getc(stdin); -+ -+if (had_data_timeout) -+ { -+ fprintf(stderr, "exim: timed out while reading - message abandoned\n"); -+ log_write(L_lost_incoming_connection, -+ LOG_MAIN, "timed out while reading local message"); -+ receive_bomb_out(US"data-timeout", NULL); /* Does not return */ -+ } -+if (had_data_sigint) -+ { -+ if (filter_test == FTEST_NONE) -+ { -+ fprintf(stderr, "\nexim: %s received - message abandoned\n", -+ had_data_sigint == SIGTERM ? "SIGTERM" : "SIGINT"); -+ log_write(0, LOG_MAIN, "%s received while reading local message", -+ had_data_sigint == SIGTERM ? "SIGTERM" : "SIGINT"); -+ } -+ receive_bomb_out(US"signal-exit", NULL); /* Does not return */ -+ } -+return c; - } - - int -@@ -316,11 +341,13 @@ if (spool_name[0] != '\0') - - /* Now close the file if it is open, either as a fd or a stream. */ - --if (data_file != NULL) -+if (data_file) - { - (void)fclose(data_file); - data_file = NULL; --} else if (data_fd >= 0) { -+ } -+else if (data_fd >= 0) -+ { - (void)close(data_fd); - data_fd = -1; - } -@@ -361,27 +388,7 @@ Returns: nothing - static void - data_timeout_handler(int sig) - { --uschar *msg = NULL; -- --sig = sig; /* Keep picky compilers happy */ -- --if (smtp_input) -- { -- msg = US"SMTP incoming data timeout"; -- log_write(L_lost_incoming_connection, -- LOG_MAIN, "SMTP data timeout (message abandoned) on connection " -- "from %s F=<%s>", -- (sender_fullhost != NULL)? sender_fullhost : US"local process", -- sender_address); -- } --else -- { -- fprintf(stderr, "exim: timed out while reading - message abandoned\n"); -- log_write(L_lost_incoming_connection, -- LOG_MAIN, "timed out while reading local message"); -- } -- --receive_bomb_out(US"data-timeout", msg); /* Does not return */ -+had_data_timeout = sig; - } - - -@@ -391,7 +398,18 @@ receive_bomb_out(US"data-timeout", msg); /* Does not return */ - *************************************************/ - - /* Handler function for timeouts that occur while running a local_scan() --function. -+function. Posix recommends against calling longjmp() from a signal-handler, -+but the GCC manual says you can so we will, and trust that it's better than -+calling probably non-signal-safe functions during logging from within the -+handler, even with other compilers. -+ -+See also https://cwe.mitre.org/data/definitions/745.html which also lists -+it as unsafe. -+ -+This is all because we have no control over what might be written for a -+local-scan function, so cannot sprinkle had-signal checks after each -+call-site. At least with the default "do-nothing" function we won't -+ever get here. - - Argument: the signal number - Returns: nothing -@@ -400,11 +418,8 @@ Returns: nothing - static void - local_scan_timeout_handler(int sig) - { --sig = sig; /* Keep picky compilers happy */ --log_write(0, LOG_MAIN|LOG_REJECT, "local_scan() function timed out - " -- "message temporarily rejected (size %d)", message_size); --/* Does not return */ --receive_bomb_out(US"local-scan-timeout", US"local verification problem"); -+had_local_scan_timeout = sig; -+siglongjmp(local_scan_env, 1); - } - - -@@ -423,13 +438,12 @@ Returns: nothing - static void - local_scan_crash_handler(int sig) - { --log_write(0, LOG_MAIN|LOG_REJECT, "local_scan() function crashed with " -- "signal %d - message temporarily rejected (size %d)", sig, message_size); --/* Does not return */ --receive_bomb_out(US"local-scan-error", US"local verification problem"); -+had_local_scan_crash = sig; -+siglongjmp(local_scan_env, 1); - } - - -+ - /************************************************* - * SIGTERM or SIGINT received * - *************************************************/ -@@ -444,26 +458,7 @@ Returns: nothing - static void - data_sigterm_sigint_handler(int sig) - { --uschar *msg = NULL; -- --if (smtp_input) -- { -- msg = US"Service not available - SIGTERM or SIGINT received"; -- log_write(0, LOG_MAIN, "%s closed after %s", smtp_get_connection_info(), -- (sig == SIGTERM)? "SIGTERM" : "SIGINT"); -- } --else -- { -- if (filter_test == FTEST_NONE) -- { -- fprintf(stderr, "\nexim: %s received - message abandoned\n", -- (sig == SIGTERM)? "SIGTERM" : "SIGINT"); -- log_write(0, LOG_MAIN, "%s received while reading local message", -- (sig == SIGTERM)? "SIGTERM" : "SIGINT"); -- } -- } -- --receive_bomb_out(US"signal-exit", msg); /* Does not return */ -+had_data_sigint = sig; - } - - -@@ -1678,6 +1673,7 @@ int dmarc_up = 0; - uschar *timestamp; - int tslen; - -+ - /* Release any open files that might have been cached while preparing to - accept the message - e.g. by verifying addresses - because reading a message - might take a fair bit of real time. */ -@@ -1751,7 +1747,9 @@ received_time = message_id_tv; - /* If SMTP input, set the special handler for timeouts. The alarm() calls - happen in the smtp_getc() function when it refills its buffer. */ - --if (smtp_input) os_non_restarting_signal(SIGALRM, data_timeout_handler); -+had_data_timeout = 0; -+if (smtp_input) -+ os_non_restarting_signal(SIGALRM, data_timeout_handler); - - /* If not SMTP input, timeout happens only if configured, and we just set a - single timeout for the whole message. */ -@@ -1764,6 +1762,7 @@ else if (receive_timeout > 0) - - /* SIGTERM and SIGINT are caught always. */ - -+had_data_sigint = 0; - signal(SIGTERM, data_sigterm_sigint_handler); - signal(SIGINT, data_sigterm_sigint_handler); - -@@ -3638,43 +3637,65 @@ dcc_ok = 0; - version supplied with Exim always accepts, but this is a hook for sysadmins to - supply their own checking code. The local_scan() function is run even when all - the recipients have been discarded. */ --/*XXS could we avoid this for the standard case, given that few people will use it? */ - - lseek(data_fd, (long int)SPOOL_DATA_START_OFFSET, SEEK_SET); - - /* Arrange to catch crashes in local_scan(), so that the -D file gets - deleted, and the incident gets logged. */ - --os_non_restarting_signal(SIGSEGV, local_scan_crash_handler); --os_non_restarting_signal(SIGFPE, local_scan_crash_handler); --os_non_restarting_signal(SIGILL, local_scan_crash_handler); --os_non_restarting_signal(SIGBUS, local_scan_crash_handler); -- --DEBUG(D_receive) debug_printf("calling local_scan(); timeout=%d\n", -- local_scan_timeout); --local_scan_data = NULL; -- --os_non_restarting_signal(SIGALRM, local_scan_timeout_handler); --if (local_scan_timeout > 0) alarm(local_scan_timeout); --rc = local_scan(data_fd, &local_scan_data); --alarm(0); --os_non_restarting_signal(SIGALRM, sigalrm_handler); -- --enable_dollar_recipients = FALSE; -- --store_pool = POOL_MAIN; /* In case changed */ --DEBUG(D_receive) debug_printf("local_scan() returned %d %s\n", rc, -- local_scan_data); -- --os_non_restarting_signal(SIGSEGV, SIG_DFL); --os_non_restarting_signal(SIGFPE, SIG_DFL); --os_non_restarting_signal(SIGILL, SIG_DFL); --os_non_restarting_signal(SIGBUS, SIG_DFL); -+if (sigsetjmp(local_scan_env, 1) == 0) -+ { -+ had_local_scan_crash = 0; -+ os_non_restarting_signal(SIGSEGV, local_scan_crash_handler); -+ os_non_restarting_signal(SIGFPE, local_scan_crash_handler); -+ os_non_restarting_signal(SIGILL, local_scan_crash_handler); -+ os_non_restarting_signal(SIGBUS, local_scan_crash_handler); -+ -+ DEBUG(D_receive) debug_printf("calling local_scan(); timeout=%d\n", -+ local_scan_timeout); -+ local_scan_data = NULL; -+ -+ had_local_scan_timeout = 0; -+ os_non_restarting_signal(SIGALRM, local_scan_timeout_handler); -+ if (local_scan_timeout > 0) alarm(local_scan_timeout); -+ rc = local_scan(data_fd, &local_scan_data); -+ alarm(0); -+ os_non_restarting_signal(SIGALRM, sigalrm_handler); -+ -+ enable_dollar_recipients = FALSE; -+ -+ store_pool = POOL_MAIN; /* In case changed */ -+ DEBUG(D_receive) debug_printf("local_scan() returned %d %s\n", rc, -+ local_scan_data); -+ -+ os_non_restarting_signal(SIGSEGV, SIG_DFL); -+ os_non_restarting_signal(SIGFPE, SIG_DFL); -+ os_non_restarting_signal(SIGILL, SIG_DFL); -+ os_non_restarting_signal(SIGBUS, SIG_DFL); -+ } -+else -+ { -+ if (had_local_scan_crash) -+ { -+ log_write(0, LOG_MAIN|LOG_REJECT, "local_scan() function crashed with " -+ "signal %d - message temporarily rejected (size %d)", -+ had_local_scan_crash, message_size); -+ /* Does not return */ -+ receive_bomb_out(US"local-scan-error", US"local verification problem"); -+ } -+ if (had_local_scan_timeout) -+ { -+ log_write(0, LOG_MAIN|LOG_REJECT, "local_scan() function timed out - " -+ "message temporarily rejected (size %d)", message_size); -+ /* Does not return */ -+ receive_bomb_out(US"local-scan-timeout", US"local verification problem"); -+ } -+ } - - /* The length check is paranoia against some runaway code, and also because - (for a success return) lines in the spool file are read into big_buffer. */ - --if (local_scan_data != NULL) -+if (local_scan_data) - { - int len = Ustrlen(local_scan_data); - if (len > LOCAL_SCAN_MAX_RETURN) len = LOCAL_SCAN_MAX_RETURN; -@@ -3706,7 +3727,7 @@ the spool file gets corrupted. Ensure that all recipients are qualified. */ - - if (rc == LOCAL_SCAN_ACCEPT) - { -- if (local_scan_data != NULL) -+ if (local_scan_data) - { - uschar *s; - for (s = local_scan_data; *s != 0; s++) if (*s == '\n') *s = ' '; -@@ -4331,9 +4352,9 @@ starting. */ - - if (blackholed_by) - { -- const uschar *detail = local_scan_data -- ? string_printing(local_scan_data) -- : string_sprintf("(%s discarded recipients)", blackholed_by); -+ const uschar *detail = -+ local_scan_data ? string_printing(local_scan_data) : -+ string_sprintf("(%s discarded recipients)", blackholed_by); - log_write(0, LOG_MAIN, "=> blackhole %s%s", detail, blackhole_log_msg); - log_write(0, LOG_MAIN, "Completed"); - message_id[0] = 0; -diff --git a/src/smtp_in.c b/src/smtp_in.c -index 33d6d3cc..433c677e 100644 ---- a/src/smtp_in.c -+++ b/src/smtp_in.c -@@ -424,6 +424,53 @@ log_write(L_smtp_incomplete_transaction, LOG_MAIN|LOG_SENDER|LOG_RECIPIENTS, - - - -+void -+smtp_command_timeout_exit(void) -+{ -+log_write(L_lost_incoming_connection, -+ LOG_MAIN, "SMTP command timeout on%s connection from %s", -+ tls_in.active >= 0 ? " TLS" : "", host_and_ident(FALSE)); -+if (smtp_batched_input) -+ moan_smtp_batch(NULL, "421 SMTP command timeout"); /* Does not return */ -+smtp_notquit_exit(US"command-timeout", US"421", -+ US"%s: SMTP command timeout - closing connection", -+ smtp_active_hostname); -+exim_exit(EXIT_FAILURE, US"receiving"); -+} -+ -+void -+smtp_command_sigterm_exit(void) -+{ -+log_write(0, LOG_MAIN, "%s closed after SIGTERM", smtp_get_connection_info()); -+if (smtp_batched_input) -+ moan_smtp_batch(NULL, "421 SIGTERM received"); /* Does not return */ -+smtp_notquit_exit(US"signal-exit", US"421", -+ US"%s: Service not available - closing connection", smtp_active_hostname); -+exim_exit(EXIT_FAILURE, US"receiving"); -+} -+ -+void -+smtp_data_timeout_exit(void) -+{ -+log_write(L_lost_incoming_connection, -+ LOG_MAIN, "SMTP data timeout (message abandoned) on connection from %s F=<%s>", -+ sender_fullhost ? sender_fullhost : US"local process", sender_address); -+receive_bomb_out(US"data-timeout", US"SMTP incoming data timeout"); -+/* Does not return */ -+} -+ -+void -+smtp_data_sigint_exit(void) -+{ -+log_write(0, LOG_MAIN, "%s closed after %s", -+ smtp_get_connection_info(), had_data_sigint == SIGTERM ? "SIGTERM":"SIGINT"); -+receive_bomb_out(US"signal-exit", -+ US"Service not available - SIGTERM or SIGINT received"); -+/* Does not return */ -+} -+ -+ -+ - /* Refill the buffer, and notify DKIM verification code. - Return false for error or EOF. - */ -@@ -441,18 +488,28 @@ Take care to not touch the safety NUL at the end of the buffer. */ - - rc = read(fileno(smtp_in), smtp_inbuffer, MIN(IN_BUFFER_SIZE-1, lim)); - save_errno = errno; --alarm(0); -+if (smtp_receive_timeout > 0) alarm(0); - if (rc <= 0) - { - /* Must put the error text in fixed store, because this might be during - header reading, where it releases unused store above the header. */ - if (rc < 0) - { -+ if (had_command_timeout) /* set by signal handler */ -+ smtp_command_timeout_exit(); /* does not return */ -+ if (had_command_sigterm) -+ smtp_command_sigterm_exit(); -+ if (had_data_timeout) -+ smtp_data_timeout_exit(); -+ if (had_data_sigint) -+ smtp_data_sigint_exit(); -+ - smtp_had_error = save_errno; - smtp_read_error = string_copy_malloc( - string_sprintf(" (error: %s)", strerror(save_errno))); - } -- else smtp_had_eof = 1; -+ else -+ smtp_had_eof = 1; - return FALSE; - } - #ifndef DISABLE_DKIM -@@ -914,16 +971,7 @@ Returns: nothing - static void - command_timeout_handler(int sig) - { --sig = sig; /* Keep picky compilers happy */ --log_write(L_lost_incoming_connection, -- LOG_MAIN, "SMTP command timeout on%s connection from %s", -- (tls_in.active >= 0)? " TLS" : "", -- host_and_ident(FALSE)); --if (smtp_batched_input) -- moan_smtp_batch(NULL, "421 SMTP command timeout"); /* Does not return */ --smtp_notquit_exit(US"command-timeout", US"421", -- US"%s: SMTP command timeout - closing connection", smtp_active_hostname); --exim_exit(EXIT_FAILURE, US"receiving"); -+had_command_timeout = sig; - } - - -@@ -941,13 +989,7 @@ Returns: nothing - static void - command_sigterm_handler(int sig) - { --sig = sig; /* Keep picky compilers happy */ --log_write(0, LOG_MAIN, "%s closed after SIGTERM", smtp_get_connection_info()); --if (smtp_batched_input) -- moan_smtp_batch(NULL, "421 SIGTERM received"); /* Does not return */ --smtp_notquit_exit(US"signal-exit", US"421", -- US"%s: Service not available - closing connection", smtp_active_hostname); --exim_exit(EXIT_FAILURE, US"receiving"); -+had_command_sigterm = sig; - } - - -@@ -1507,6 +1549,7 @@ int ptr = 0; - smtp_cmd_list *p; - BOOL hadnull = FALSE; - -+had_command_timeout = 0; - os_non_restarting_signal(SIGALRM, command_timeout_handler); - - while ((c = (receive_getc)(buffer_lim)) != '\n' && c != EOF) -@@ -3811,6 +3854,7 @@ cmd_list[CMD_LIST_STARTTLS].is_mail_cmd = TRUE; - - /* Set the local signal handler for SIGTERM - it tries to end off tidily */ - -+had_command_sigterm = 0; - os_non_restarting_signal(SIGTERM, command_sigterm_handler); - - /* Batched SMTP is handled in a different function. */ -diff --git a/src/spool_out.c b/src/spool_out.c -index 8bebf107..2aa60322 100644 ---- a/src/spool_out.c -+++ b/src/spool_out.c -@@ -221,7 +221,7 @@ if (host_lookup_deferred) fprintf(f, "-host_lookup_deferred\n"); - if (host_lookup_failed) fprintf(f, "-host_lookup_failed\n"); - if (sender_local) fprintf(f, "-local\n"); - if (local_error_message) fprintf(f, "-localerror\n"); --if (local_scan_data != NULL) fprintf(f, "-local_scan %s\n", local_scan_data); -+if (local_scan_data) fprintf(f, "-local_scan %s\n", local_scan_data); - #ifdef WITH_CONTENT_SCAN - if (spam_bar) fprintf(f,"-spam_bar %s\n", spam_bar); - if (spam_score) fprintf(f,"-spam_score %s\n", spam_score); -@@ -231,7 +231,7 @@ if (deliver_manual_thaw) fprintf(f, "-manual_thaw\n"); - if (sender_set_untrusted) fprintf(f, "-sender_set_untrusted\n"); - - #ifdef EXPERIMENTAL_BRIGHTMAIL --if (bmi_verdicts != NULL) fprintf(f, "-bmi_verdicts %s\n", bmi_verdicts); -+if (bmi_verdicts) fprintf(f, "-bmi_verdicts %s\n", bmi_verdicts); - #endif - - #ifdef SUPPORT_TLS -diff --git a/src/tls-gnu.c b/src/tls-gnu.c -index d7318827..35816cd6 100644 ---- a/src/tls-gnu.c -+++ b/src/tls-gnu.c -@@ -2511,12 +2511,20 @@ sigalrm_seen = FALSE; - if (smtp_receive_timeout > 0) alarm(smtp_receive_timeout); - inbytes = gnutls_record_recv(state->session, state->xfer_buffer, - MIN(ssl_xfer_buffer_size, lim)); --alarm(0); -- --/* Timeouts do not get this far; see command_timeout_handler(). -- A zero-byte return appears to mean that the TLS session has been -- closed down, not that the socket itself has been closed down. Revert to -- non-TLS handling. */ -+if (smtp_receive_timeout > 0) alarm(0); -+ -+if (had_command_timeout) /* set by signal handler */ -+ smtp_command_timeout_exit(); /* does not return */ -+if (had_command_sigterm) -+ smtp_command_sigterm_exit(); -+if (had_data_timeout) -+ smtp_data_timeout_exit(); -+if (had_data_sigint) -+ smtp_data_sigint_exit(); -+ -+/* Timeouts do not get this far. A zero-byte return appears to mean that the -+TLS session has been closed down, not that the socket itself has been closed -+down. Revert to non-TLS handling. */ - - if (sigalrm_seen) - { -diff --git a/src/tls-openssl.c b/src/tls-openssl.c -index bfdfe211..fb59217d 100644 ---- a/src/tls-openssl.c -+++ b/src/tls-openssl.c -@@ -2475,7 +2475,16 @@ if (smtp_receive_timeout > 0) alarm(smtp_receive_timeout); - inbytes = SSL_read(server_ssl, CS ssl_xfer_buffer, - MIN(ssl_xfer_buffer_size, lim)); - error = SSL_get_error(server_ssl, inbytes); --alarm(0); -+if (smtp_receive_timeout > 0) alarm(0); -+ -+if (had_command_timeout) /* set by signal handler */ -+ smtp_command_timeout_exit(); /* does not return */ -+if (had_command_sigterm) -+ smtp_command_sigterm_exit(); -+if (had_data_timeout) -+ smtp_data_timeout_exit(); -+if (had_data_sigint) -+ smtp_data_sigint_exit(); - - /* SSL_ERROR_ZERO_RETURN appears to mean that the SSL session has been - closed down, not that the socket itself has been closed down. Revert to --- -2.17.0 - diff -Nru exim4-4.91/debian/patches/75_fixes_03-Fix-typo-in-arc.-Bug-2262.patch exim4-4.92~RC4/debian/patches/75_fixes_03-Fix-typo-in-arc.-Bug-2262.patch --- exim4-4.91/debian/patches/75_fixes_03-Fix-typo-in-arc.-Bug-2262.patch 2018-07-30 18:35:06.000000000 +0000 +++ exim4-4.92~RC4/debian/patches/75_fixes_03-Fix-typo-in-arc.-Bug-2262.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -From d862036b77ae978f3d105adb7c11f0795bbb2732 Mon Sep 17 00:00:00 2001 -From: Jeremy Harris -Date: Mon, 16 Apr 2018 09:15:17 +0100 -Subject: [PATCH 3/6] Fix typo in arc. Bug 2262 - -(cherry picked from commit 69a82da3e9018b082cee870030ecc557497301df) ---- - src/arc.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/arc.c b/src/arc.c -index 6f567dc5..557ea851 100644 ---- a/src/arc.c -+++ b/src/arc.c -@@ -1546,7 +1546,7 @@ pdkim_bodyhash * b; - - identity = string_nextinlist(&signspec, &sep, NULL, 0); - selector = string_nextinlist(&signspec, &sep, NULL, 0); --if ( !*identity | !*selector -+if ( !*identity || !*selector - || !(privkey = string_nextinlist(&signspec, &sep, NULL, 0)) || !*privkey) - { - log_write(0, LOG_MAIN, "ARC: bad signing-specification (%s)", --- -2.17.0 - diff -Nru exim4-4.91/debian/patches/75_fixes_04-Fix-OpenSSL-non-OCSP-build.patch exim4-4.92~RC4/debian/patches/75_fixes_04-Fix-OpenSSL-non-OCSP-build.patch --- exim4-4.91/debian/patches/75_fixes_04-Fix-OpenSSL-non-OCSP-build.patch 2018-07-30 18:35:06.000000000 +0000 +++ exim4-4.92~RC4/debian/patches/75_fixes_04-Fix-OpenSSL-non-OCSP-build.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,45 +0,0 @@ -From 2349d6c47c1922b661dcd2e3ce57fc34ade42230 Mon Sep 17 00:00:00 2001 -From: Jeremy Harris -Date: Mon, 16 Apr 2018 18:45:04 +0100 -Subject: [PATCH 4/6] Fix OpenSSL non-OCSP build - -(cherry picked from commit 37f0ce65959019e417ff79b9d0959e13470c5290) ---- - src/tls-openssl.c | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - -diff --git a/src/tls-openssl.c b/src/tls-openssl.c -index fb59217d..cefa94fe 100644 ---- a/src/tls-openssl.c -+++ b/src/tls-openssl.c -@@ -2505,10 +2505,12 @@ if (error == SSL_ERROR_ZERO_RETURN) - if (SSL_get_shutdown(server_ssl) == SSL_RECEIVED_SHUTDOWN) - SSL_shutdown(server_ssl); - -+#ifndef DISABLE_OCSP - sk_X509_pop_free(server_static_cbinfo->verify_stack, X509_free); -+ server_static_cbinfo->verify_stack = NULL; -+#endif - SSL_free(server_ssl); - SSL_CTX_free(server_ctx); -- server_static_cbinfo->verify_stack = NULL; - server_ctx = NULL; - server_ssl = NULL; - tls_in.active = -1; -@@ -2782,11 +2784,13 @@ if (shutdown) - } - } - -+#ifndef DISABLE_OCSP - if (is_server) - { - sk_X509_pop_free(server_static_cbinfo->verify_stack, X509_free); - server_static_cbinfo->verify_stack = NULL; - } -+#endif - - SSL_CTX_free(*ctxp); - SSL_free(*sslp); --- -2.17.0 - diff -Nru exim4-4.91/debian/patches/75_fixes_05-DKIM-enforce-limit-of-20-on-received-DKIM-Signature-.patch exim4-4.92~RC4/debian/patches/75_fixes_05-DKIM-enforce-limit-of-20-on-received-DKIM-Signature-.patch --- exim4-4.91/debian/patches/75_fixes_05-DKIM-enforce-limit-of-20-on-received-DKIM-Signature-.patch 2018-07-30 18:35:06.000000000 +0000 +++ exim4-4.92~RC4/debian/patches/75_fixes_05-DKIM-enforce-limit-of-20-on-received-DKIM-Signature-.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,211 +0,0 @@ -From e20e2d6d5e2dd50b29b785b3831be655138d046e Mon Sep 17 00:00:00 2001 -From: Jeremy Harris -Date: Mon, 23 Apr 2018 11:26:52 +0100 -Subject: [PATCH 6/6] DKIM: enforce limit of 20 on received DKIM-Signature: - headers. Bug 2269 - -(cherry picked from commit 64b67b658a37dd780cc1b2fd0ef87febe461a0ba) ---- - doc/ChangeLog | 4 + - exim_monitor/em_globals.c | 2 +- - src/dkim.c | 8 +- - src/globals.c | 2 +- - src/globals.h | 2 +- - src/pdkim/pdkim.c | 10 +- - src/pdkim/pdkim.h | 5 +- - src/smtp_in.c | 7 +- - src/spool_in.c | 2 +- - test/log/4506 | 14 +- - test/scripts/4500-DKIM/4506 | 6068 +++++++++++++++++++++++++++++++++ - 11 files changed, 6106 insertions(+), 18 deletions(-) - -diff --git a/doc/ChangeLog b/doc/ChangeLog -index 58673c23..5e1ff056 100644 ---- a/doc/ChangeLog -+++ b/doc/ChangeLog -@@ -11,6 +11,10 @@ Since version 4.91 - JH/02 Bug 1007: Avoid doing logging from signal-handlers, as that can result in - non-signal-safe functions being used. - -+JH/03 Bug 2269: When presented with a received message having a stupidly large -+ number of DKIM-Signature headers, disable DKIM verification to avoid -+ a resource-consumption attack. The limit is set at twenty. -+ - - Exim version 4.91 - ----------------- -diff --git a/exim_monitor/em_globals.c b/exim_monitor/em_globals.c -index 50da58c8..e0ed0244 100644 ---- a/exim_monitor/em_globals.c -+++ b/exim_monitor/em_globals.c -@@ -139,7 +139,7 @@ uschar *dkim_signers = NULL; - uschar *dkim_signing_domain = NULL; - uschar *dkim_signing_selector = NULL; - uschar *dkim_verify_signers = US"$dkim_signers"; --BOOL dkim_collect_input = FALSE; -+unsigned dkim_collect_input = 0; - BOOL dkim_disable_verify = FALSE; - #endif - -diff --git a/src/dkim.c b/src/dkim.c -index 59445a85..c86dd5f0 100644 ---- a/src/dkim.c -+++ b/src/dkim.c -@@ -34,6 +34,8 @@ pdkim_signature *dkim_signatures = NULL; - pdkim_signature *dkim_cur_sig = NULL; - static const uschar * dkim_collect_error = NULL; - -+#define DKIM_MAX_SIGNATURES 20 -+ - - - /*XXX the caller only uses the first record if we return multiple. -@@ -115,7 +117,7 @@ if (dkim_verify_ctx) - /* Create new context */ - - dkim_verify_ctx = pdkim_init_verify(&dkim_exim_query_dns_txt, dot_stuffing); --dkim_collect_input = !!dkim_verify_ctx; -+dkim_collect_input = dkim_verify_ctx ? DKIM_MAX_SIGNATURES : 0; - dkim_collect_error = NULL; - - /* Start feed up with any cached data */ -@@ -137,7 +139,7 @@ if ( dkim_collect_input - dkim_collect_error = pdkim_errstr(rc); - log_write(0, LOG_MAIN, - "DKIM: validation error: %.100s", dkim_collect_error); -- dkim_collect_input = FALSE; -+ dkim_collect_input = 0; - } - store_pool = dkim_verify_oldpool; - } -@@ -309,7 +311,7 @@ if (dkim_collect_error) - goto out; - } - --dkim_collect_input = FALSE; -+dkim_collect_input = 0; - - /* Finish DKIM operation and fetch link to signatures chain */ - -diff --git a/src/globals.c b/src/globals.c -index 5b480572..9b34da87 100644 ---- a/src/globals.c -+++ b/src/globals.c -@@ -669,7 +669,7 @@ BOOL disable_ipv6 = FALSE; - BOOL disable_logging = FALSE; - - #ifndef DISABLE_DKIM --BOOL dkim_collect_input = FALSE; -+unsigned dkim_collect_input = 0; - uschar *dkim_cur_signer = NULL; - BOOL dkim_disable_verify = FALSE; - int dkim_key_length = 0; -diff --git a/src/globals.h b/src/globals.h -index 2915513f..a8835ed3 100644 ---- a/src/globals.h -+++ b/src/globals.h -@@ -392,7 +392,7 @@ extern BOOL disable_ipv6; /* Don't do any IPv6 things */ - extern BOOL disable_logging; /* Disables log writing when TRUE */ - - #ifndef DISABLE_DKIM --extern BOOL dkim_collect_input; /* Runtime flag that tracks wether SMTP input is fed to DKIM validation */ -+extern unsigned dkim_collect_input; /* Runtime count of dkim signtures; tracks wether SMTP input is fed to DKIM validation */ - extern uschar *dkim_cur_signer; /* Expansion variable, holds the current "signer" domain or identity during a acl_smtp_dkim run */ - extern BOOL dkim_disable_verify; /* Set via ACL control statement. When set, DKIM verification is disabled for the current message */ - extern int dkim_key_length; /* Expansion variable, length of signing key in bits */ -diff --git a/src/pdkim/pdkim.c b/src/pdkim/pdkim.c -index 5688c78a..594af03c 100644 ---- a/src/pdkim/pdkim.c -+++ b/src/pdkim/pdkim.c -@@ -192,6 +192,7 @@ switch(status) - case PDKIM_ERR_RSA_SIGNING: return US"SIGNING"; - case PDKIM_ERR_LONG_LINE: return US"LONG_LINE"; - case PDKIM_ERR_BUFFER_TOO_SMALL: return US"BUFFER_TOO_SMALL"; -+ case PDKIM_ERR_EXCESS_SIGS: return US"EXCESS_SIGS"; - case PDKIM_SIGN_PRIVKEY_WRAP: return US"PRIVKEY_WRAP"; - case PDKIM_SIGN_PRIVKEY_B64D: return US"PRIVKEY_B64D"; - default: return US"(unknown)"; -@@ -1008,6 +1009,13 @@ else - while (last_sig->next) last_sig = last_sig->next; - last_sig->next = sig; - } -+ -+ if (--dkim_collect_input == 0) -+ { -+ ctx->headers = pdkim_prepend_stringlist(ctx->headers, ctx->cur_header->s); -+ ctx->cur_header->s[ctx->cur_header->ptr = 0] = '\0'; -+ return PDKIM_ERR_EXCESS_SIGS; -+ } - } - - /* all headers are stored for signature verification */ -@@ -1033,7 +1041,7 @@ int p, rc; - if (!data) - pdkim_body_complete(ctx); - --else for (p = 0; p 0) -@@ -606,7 +606,7 @@ for(;;) - receive_ungetc = lwr_receive_ungetc; - #ifndef DISABLE_DKIM - dkim_save = dkim_collect_input; -- dkim_collect_input = FALSE; -+ dkim_collect_input = 0; - #endif - - /* Unless PIPELINING was offered, there should be no next command -@@ -2041,7 +2041,8 @@ dnslist_domain = dnslist_matched = NULL; - dkim_cur_signer = dkim_signers = - dkim_signing_domain = dkim_signing_selector = NULL; - dkim_cur_signer = dkim_signers = dkim_signing_domain = dkim_signing_selector = NULL; --dkim_disable_verify = dkim_collect_input = FALSE; -+dkim_disable_verify = FALSE; -+dkim_collect_input = 0; - dkim_verify_overall = dkim_verify_status = dkim_verify_reason = NULL; - dkim_key_length = 0; - dkim_verify_signers = US"$dkim_signers"; -diff --git a/src/spool_in.c b/src/spool_in.c -index e34b5417..f0275bb7 100644 ---- a/src/spool_in.c -+++ b/src/spool_in.c -@@ -261,7 +261,7 @@ bmi_verdicts = NULL; - #ifndef DISABLE_DKIM - dkim_signers = NULL; - dkim_disable_verify = FALSE; --dkim_collect_input = FALSE; -+dkim_collect_input = 0; - #endif - - #ifdef SUPPORT_TLS diff -Nru exim4-4.91/debian/patches/75_fixes_06-Cutthrough-fix-race-resulting-in-duplicate-delivery..patch exim4-4.92~RC4/debian/patches/75_fixes_06-Cutthrough-fix-race-resulting-in-duplicate-delivery..patch --- exim4-4.91/debian/patches/75_fixes_06-Cutthrough-fix-race-resulting-in-duplicate-delivery..patch 2018-07-30 18:35:06.000000000 +0000 +++ exim4-4.92~RC4/debian/patches/75_fixes_06-Cutthrough-fix-race-resulting-in-duplicate-delivery..patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,84 +0,0 @@ -From 56b566daa255a8c3ebf59e6b71ba9576f21a9b2c Mon Sep 17 00:00:00 2001 -From: Jeremy Harris -Date: Sat, 5 May 2018 22:47:58 +0100 -Subject: [PATCH 1/4] Cutthrough: fix race resulting in duplicate-delivery. - Bug 2273 - -Cherry-picked from: cfbb0d24e8 ---- - doc/ChangeLog | 5 +++++ - src/receive.c | 28 +++++++++++++++++++--------- - 2 files changed, 24 insertions(+), 9 deletions(-) - -diff --git a/doc/ChangeLog b/doc/ChangeLog -index 5e1ff056..d48ea832 100644 ---- a/doc/ChangeLog -+++ b/doc/ChangeLog -@@ -15,6 +15,11 @@ JH/03 Bug 2269: When presented with a received message having a stupidly large - number of DKIM-Signature headers, disable DKIM verification to avoid - a resource-consumption attack. The limit is set at twenty. - -+JH/05 Bug 2273: Cutthrough delivery left a window where the received messsage -+ files in the spool were present and unlocked. A queue-runner could spot -+ them, resulting in a duplicate delivery. Fix that by doing the unlock -+ after the unlink. Investigation by Time Stewart. -+ - - Exim version 4.91 - ----------------- -diff --git a/src/receive.c b/src/receive.c -index 3b215f23..e7dc910b 100644 ---- a/src/receive.c -+++ b/src/receive.c -@@ -4228,22 +4228,30 @@ if (deliver_freeze && freeze_tell != NULL && freeze_tell[0] != 0) - - /* Either a message has been successfully received and written to the two spool - files, or an error in writing the spool has occurred for an SMTP message, or --an SMTP message has been rejected for policy reasons. (For a non-SMTP message --we will have already given up because there's no point in carrying on!) In --either event, we must now close (and thereby unlock) the data file. In the --successful case, this leaves the message on the spool, ready for delivery. In --the error case, the spool file will be deleted. Then tidy up store, interact --with an SMTP call if necessary, and return. -+an SMTP message has been rejected for policy reasons, or a message was passed on -+by cutthrough delivery. (For a non-SMTP message we will have already given up -+because there's no point in carrying on!) For non-cutthrough we must now close -+(and thereby unlock) the data file. In the successful case, this leaves the -+message on the spool, ready for delivery. In the error case, the spool file will -+be deleted. Then tidy up store, interact with an SMTP call if necessary, and -+return. -+ -+For cutthrough we hold the data file locked until we have deleted it, otherwise -+a queue-runner could grab it in the window. - - A fflush() was done earlier in the expectation that any write errors on the - data file will be flushed(!) out thereby. Nevertheless, it is theoretically - possible for fclose() to fail - but what to do? What has happened to the lock --if this happens? */ -+if this happens? We can at least log it; if it is observed on some platform -+then we can think about properly declaring the message not-received. */ - - - TIDYUP: --process_info[process_info_len] = 0; /* Remove message id */ --if (data_file != NULL) (void)fclose(data_file); /* Frees the lock */ -+process_info[process_info_len] = 0; /* Remove message id */ -+if (data_file && cutthrough_done == NOT_TRIED) -+ if (fclose(data_file)) /* Frees the lock */ -+ log_write(0, LOG_MAIN|LOG_PANIC, -+ "spoolfile error on close: %s", strerror(errno)); - - /* Now reset signal handlers to their defaults */ - -@@ -4330,6 +4338,8 @@ if (smtp_input) - } - if (cutthrough_done != NOT_TRIED) - { -+ if (data_file) -+ (void) fclose(data_file); /* Frees the lock; do not care if error */ - message_id[0] = 0; /* Prevent a delivery from starting */ - cutthrough.delivery = cutthrough.callout_hold_only = FALSE; - cutthrough.defer_pass = FALSE; --- -2.17.0 - diff -Nru exim4-4.91/debian/patches/75_fixes_07-tidying.patch exim4-4.92~RC4/debian/patches/75_fixes_07-tidying.patch --- exim4-4.91/debian/patches/75_fixes_07-tidying.patch 2018-07-30 18:35:06.000000000 +0000 +++ exim4-4.92~RC4/debian/patches/75_fixes_07-tidying.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,25 +0,0 @@ -From 8c28d16989c25923568f4e95cf526c8f3db38713 Mon Sep 17 00:00:00 2001 -From: Jeremy Harris -Date: Mon, 7 May 2018 14:44:31 +0100 -Subject: [PATCH 2/4] tidying - ---- - doc/ChangeLog | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/doc/ChangeLog b/doc/ChangeLog -index d48ea832..3ae2c4fd 100644 ---- a/doc/ChangeLog -+++ b/doc/ChangeLog -@@ -18,7 +18,7 @@ JH/03 Bug 2269: When presented with a received message having a stupidly large - JH/05 Bug 2273: Cutthrough delivery left a window where the received messsage - files in the spool were present and unlocked. A queue-runner could spot - them, resulting in a duplicate delivery. Fix that by doing the unlock -- after the unlink. Investigation by Time Stewart. -+ after the unlink. Investigation by Tim Stewart. - - - Exim version 4.91 --- -2.17.0 - diff -Nru exim4-4.91/debian/patches/75_fixes_08-ARC-fix-crash-on-signing-with-missing-key-file.patch exim4-4.92~RC4/debian/patches/75_fixes_08-ARC-fix-crash-on-signing-with-missing-key-file.patch --- exim4-4.91/debian/patches/75_fixes_08-ARC-fix-crash-on-signing-with-missing-key-file.patch 2018-07-30 18:35:06.000000000 +0000 +++ exim4-4.92~RC4/debian/patches/75_fixes_08-ARC-fix-crash-on-signing-with-missing-key-file.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,47 +0,0 @@ -From d4de30edf98c3ea326f6f949a9bf934d17d8412e Mon Sep 17 00:00:00 2001 -From: Jeremy Harris -Date: Fri, 11 May 2018 16:26:17 +0100 -Subject: [PATCH 3/4] ARC: fix crash on signing with missing key file - -Cherry-picked from: 97e939dfe2 ---- - src/arc.c | 4 ++- - test/confs/4560 | 4 +++ - test/log/4560 | 20 +++++++++++-- - test/log/4561 | 10 +++++++ - test/mail/4560.a | 20 +++++++++++++ - test/mail/4561.a | 35 ++++++++++++++++++++++ - test/mail/4562.a | 60 ++++++++++++++++++++++++++++++++++++++ - test/scripts/4560-ARC/4560 | 34 +++++++++++++++++++++ - 8 files changed, 183 insertions(+), 4 deletions(-) - create mode 100644 test/log/4561 - create mode 100644 test/mail/4561.a - create mode 100644 test/mail/4562.a - -diff --git a/src/arc.c b/src/arc.c -index 557ea851..a8562a72 100644 ---- a/src/arc.c -+++ b/src/arc.c -@@ -1632,7 +1632,9 @@ g = arc_sign_append_ams(g, &arc_sign_ctx, instance, identity, selector, - including self (but with an empty b= in self) - */ - --g = arc_sign_prepend_as(g, &arc_sign_ctx, instance, identity, selector, &ar, privkey); -+if (g) -+ g = arc_sign_prepend_as(g, &arc_sign_ctx, instance, identity, selector, &ar, -+ privkey); - - /* Finally, append the dkim headers and return the lot. */ - -diff --git a/test/log/4561 b/test/log/4561 -new file mode 100644 -index 00000000..d5e6af73 -diff --git a/test/mail/4561.a b/test/mail/4561.a -new file mode 100644 -index 00000000..55f56734 -diff --git a/test/mail/4562.a b/test/mail/4562.a -new file mode 100644 -index 00000000..df2a234c --- -2.17.0 - diff -Nru exim4-4.91/debian/patches/75_fixes_09-Content-scanning-Fix-locking-on-message-spool-files..patch exim4-4.92~RC4/debian/patches/75_fixes_09-Content-scanning-Fix-locking-on-message-spool-files..patch --- exim4-4.91/debian/patches/75_fixes_09-Content-scanning-Fix-locking-on-message-spool-files..patch 2018-07-30 18:35:06.000000000 +0000 +++ exim4-4.92~RC4/debian/patches/75_fixes_09-Content-scanning-Fix-locking-on-message-spool-files..patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,388 +0,0 @@ -From 9bd1e34631cc3d6f2b79b546a50c64ed6c5a48b6 Mon Sep 17 00:00:00 2001 -From: Jeremy Harris -Date: Fri, 11 May 2018 18:02:29 +0100 -Subject: [PATCH 4/4] Content scanning: Fix locking on message spool files. - Bug 2275 - -(cherry picked from commit 1bd642c265dae5643f16d023879043b7576f66a9) ---- - doc/ChangeLog | 8 +++++ - src/globals.c | 1 + - src/globals.h | 1 + - src/receive.c | 76 ++++++++++++++++++++++++------------------- - src/spool_mbox.c | 32 +++++++++--------- - 5 files changed, 69 insertions(+), 49 deletions(-) - -diff --git a/doc/ChangeLog b/doc/ChangeLog -index 3ae2c4fd..c6f34173 100644 ---- a/doc/ChangeLog -+++ b/doc/ChangeLog -@@ -20,6 +20,14 @@ JH/05 Bug 2273: Cutthrough delivery left a window where the received messsage - them, resulting in a duplicate delivery. Fix that by doing the unlock - after the unlink. Investigation by Tim Stewart. - -+JH/06 Bug 2275: The MIME ACL unlocked the received message files early, and -+ a queue-runner could start a delivery while other operations were ongoing. -+ Cutthrough delivery was a common victim, resulting in duplicate delivery. -+ Found and investigated by Tim Stewart. Fix by using the open message data -+ file handle rather than opening another, and not locally closing it (which -+ releases a lock) for that case, while creating the temporary .eml format -+ file for the MIME ACL. Also applies to "regex" and "spam" ACL conditions. -+ - - Exim version 4.91 - ----------------- -diff --git a/src/globals.c b/src/globals.c -index 9b34da87..45f49c85 100644 ---- a/src/globals.c -+++ b/src/globals.c -@@ -1392,6 +1392,7 @@ uschar *spf_smtp_comment = NULL; - #endif - - BOOL split_spool_directory = FALSE; -+FILE *spool_data_file = NULL; - uschar *spool_directory = US SPOOL_DIRECTORY - "\0<--------------Space to patch spool_directory->"; - BOOL spool_file_wireformat = FALSE; -diff --git a/src/globals.h b/src/globals.h -index a8835ed3..77b742d8 100644 ---- a/src/globals.h -+++ b/src/globals.h -@@ -890,6 +890,7 @@ extern BOOL spf_result_guessed; /* spf result is of best-guess operation - extern uschar *spf_smtp_comment; /* spf comment to include in SMTP reply */ - #endif - extern BOOL split_spool_directory; /* TRUE to use multiple subdirs */ -+extern FILE *spool_data_file; /* handle for -D file */ - extern uschar *spool_directory; /* Name of spool directory */ - extern BOOL spool_file_wireformat; /* current -D file has CRLF rather than NL */ - extern BOOL spool_wireformat; /* can write wireformat -D files */ -diff --git a/src/receive.c b/src/receive.c -index e7dc910b..f6db46c4 100644 ---- a/src/receive.c -+++ b/src/receive.c -@@ -22,7 +22,6 @@ extern int dcc_ok; - * Local static variables * - *************************************************/ - --static FILE *data_file = NULL; - static int data_fd = -1; - static uschar *spool_name = US""; - -@@ -341,10 +340,10 @@ if (spool_name[0] != '\0') - - /* Now close the file if it is open, either as a fd or a stream. */ - --if (data_file) -+if (spool_data_file) - { -- (void)fclose(data_file); -- data_file = NULL; -+ (void)fclose(spool_data_file); -+ spool_data_file = NULL; - } - else if (data_fd >= 0) - { -@@ -1445,10 +1444,12 @@ if (rc == DISCARD) - { - recipients_count = 0; - *blackholed_by_ptr = US"MIME ACL"; -+ cancel_cutthrough_connection(TRUE, US"mime acl discard"); - } - else if (rc != OK) - { - Uunlink(spool_name); -+ cancel_cutthrough_connection(TRUE, US"mime acl not ok"); - unspool_mbox(); - #ifdef EXPERIMENTAL_DCC - dcc_ok = 0; -@@ -1706,7 +1707,7 @@ header names list to be the normal list. Indicate there is no data file open - yet, initialize the size and warning count, and deal with no size limit. */ - - message_id[0] = 0; --data_file = NULL; -+spool_data_file = NULL; - data_fd = -1; - spool_name = US""; - message_size = 0; -@@ -3048,7 +3049,7 @@ the first line of the file (containing the message ID) because otherwise there - are problems when Exim is run under Cygwin (I'm told). See comments in - spool_in.c, where the same locking is done. */ - --data_file = fdopen(data_fd, "w+"); -+spool_data_file = fdopen(data_fd, "w+"); - lock_data.l_type = F_WRLCK; - lock_data.l_whence = SEEK_SET; - lock_data.l_start = 0; -@@ -3065,31 +3066,32 @@ data line (which was read as a header but then turned out not to have the right - format); write it (remembering that it might contain binary zeros). The result - of fwrite() isn't inspected; instead we call ferror() below. */ - --fprintf(data_file, "%s-D\n", message_id); -+fprintf(spool_data_file, "%s-D\n", message_id); - if (next) - { - uschar *s = next->text; - int len = next->slen; -- len = fwrite(s, 1, len, data_file); len = len; /* compiler quietening */ -- body_linecount++; /* Assumes only 1 line */ -+ if (fwrite(s, 1, len, spool_data_file) == len) /* "if" for compiler quietening */ -+ body_linecount++; /* Assumes only 1 line */ - } - - /* Note that we might already be at end of file, or the logical end of file - (indicated by '.'), or might have encountered an error while writing the - message id or "next" line. */ - --if (!ferror(data_file) && !(receive_feof)() && message_ended != END_DOT) -+if (!ferror(spool_data_file) && !(receive_feof)() && message_ended != END_DOT) - { - if (smtp_input) - { - message_ended = chunking_state <= CHUNKING_OFFERED -- ? read_message_data_smtp(data_file) -+ ? read_message_data_smtp(spool_data_file) - : spool_wireformat -- ? read_message_bdat_smtp_wire(data_file) -- : read_message_bdat_smtp(data_file); -+ ? read_message_bdat_smtp_wire(spool_data_file) -+ : read_message_bdat_smtp(spool_data_file); - receive_linecount++; /* The terminating "." line */ - } -- else message_ended = read_message_data(data_file); -+ else -+ message_ended = read_message_data(spool_data_file); - - receive_linecount += body_linecount; /* For BSMTP errors mainly */ - message_linecount += body_linecount; -@@ -3136,10 +3138,10 @@ if (!ferror(data_file) && !(receive_feof)() && message_ended != END_DOT) - } - else - { -- fseek(data_file, (long int)SPOOL_DATA_START_OFFSET, SEEK_SET); -+ fseek(spool_data_file, (long int)SPOOL_DATA_START_OFFSET, SEEK_SET); - give_local_error(ERRMESS_TOOBIG, - string_sprintf("message too big (max=%d)", thismessage_size_limit), -- US"message rejected: ", error_rc, data_file, header_list); -+ US"message rejected: ", error_rc, spool_data_file, header_list); - /* Does not return */ - } - break; -@@ -3169,8 +3171,8 @@ we can then give up. Note that for SMTP input we must swallow the remainder of - the input in cases of output errors, since the far end doesn't expect to see - anything until the terminating dot line is sent. */ - --if (fflush(data_file) == EOF || ferror(data_file) || -- EXIMfsync(fileno(data_file)) < 0 || (receive_ferror)()) -+if (fflush(spool_data_file) == EOF || ferror(spool_data_file) || -+ EXIMfsync(fileno(spool_data_file)) < 0 || (receive_ferror)()) - { - uschar *msg_errno = US strerror(errno); - BOOL input_error = (receive_ferror)() != 0; -@@ -3198,8 +3200,8 @@ if (fflush(data_file) == EOF || ferror(data_file) || - - else - { -- fseek(data_file, (long int)SPOOL_DATA_START_OFFSET, SEEK_SET); -- give_local_error(ERRMESS_IOERR, msg, US"", error_rc, data_file, -+ fseek(spool_data_file, (long int)SPOOL_DATA_START_OFFSET, SEEK_SET); -+ give_local_error(ERRMESS_IOERR, msg, US"", error_rc, spool_data_file, - header_list); - /* Does not return */ - } -@@ -3240,7 +3242,7 @@ if (extract_recip && (bad_addresses || recipients_count == 0)) - } - } - -- fseek(data_file, (long int)SPOOL_DATA_START_OFFSET, SEEK_SET); -+ fseek(spool_data_file, (long int)SPOOL_DATA_START_OFFSET, SEEK_SET); - - /* If configured to send errors to the sender, but this fails, force - a failure error code. We use a special one for no recipients so that it -@@ -3254,7 +3256,7 @@ if (extract_recip && (bad_addresses || recipients_count == 0)) - (bad_addresses == NULL)? - (extracted_ignored? ERRMESS_IGADDRESS : ERRMESS_NOADDRESS) : - (recipients_list == NULL)? ERRMESS_BADNOADDRESS : ERRMESS_BADADDRESS, -- bad_addresses, header_list, data_file, FALSE)) -+ bad_addresses, header_list, spool_data_file, FALSE)) - error_rc = (bad_addresses == NULL)? EXIT_NORECIPIENTS : EXIT_FAILURE; - } - else -@@ -3282,7 +3284,7 @@ if (extract_recip && (bad_addresses || recipients_count == 0)) - if (recipients_count == 0 || error_handling == ERRORS_STDERR) - { - Uunlink(spool_name); -- (void)fclose(data_file); -+ (void)fclose(spool_data_file); - exim_exit(error_rc, US"receiving"); - } - } -@@ -3607,9 +3609,9 @@ else - } - else - { -- fseek(data_file, (long int)SPOOL_DATA_START_OFFSET, SEEK_SET); -+ fseek(spool_data_file, (long int)SPOOL_DATA_START_OFFSET, SEEK_SET); - give_local_error(ERRMESS_LOCAL_ACL, user_msg, -- US"message rejected by non-SMTP ACL: ", error_rc, data_file, -+ US"message rejected by non-SMTP ACL: ", error_rc, spool_data_file, - header_list); - /* Does not return */ - } -@@ -3807,9 +3809,9 @@ else - } - else - { -- fseek(data_file, (long int)SPOOL_DATA_START_OFFSET, SEEK_SET); -+ fseek(spool_data_file, (long int)SPOOL_DATA_START_OFFSET, SEEK_SET); - give_local_error(ERRMESS_LOCAL_SCAN, errmsg, -- US"message rejected by local scan code: ", error_rc, data_file, -+ US"message rejected by local scan code: ", error_rc, spool_data_file, - header_list); - /* Does not return */ - } -@@ -3882,8 +3884,8 @@ else - } - else - { -- fseek(data_file, (long int)SPOOL_DATA_START_OFFSET, SEEK_SET); -- give_local_error(ERRMESS_IOERR, errmsg, US"", error_rc, data_file, -+ fseek(spool_data_file, (long int)SPOOL_DATA_START_OFFSET, SEEK_SET); -+ give_local_error(ERRMESS_IOERR, errmsg, US"", error_rc, spool_data_file, - header_list); - /* Does not return */ - } -@@ -3909,7 +3911,7 @@ that is in the file, but we do add one extra for the notional blank line that - precedes the data. This total differs from message_size in that it include the - added Received: header and any other headers that got created locally. */ - --fflush(data_file); -+fflush(spool_data_file); - fstat(data_fd, &statbuf); - - msg_size += statbuf.st_size - SPOOL_DATA_START_OFFSET + 1; -@@ -4248,10 +4250,13 @@ then we can think about properly declaring the message not-received. */ - - TIDYUP: - process_info[process_info_len] = 0; /* Remove message id */ --if (data_file && cutthrough_done == NOT_TRIED) -- if (fclose(data_file)) /* Frees the lock */ -+if (spool_data_file && cutthrough_done == NOT_TRIED) -+ { -+ if (fclose(spool_data_file)) /* Frees the lock */ - log_write(0, LOG_MAIN|LOG_PANIC, - "spoolfile error on close: %s", strerror(errno)); -+ spool_data_file = NULL; -+ } - - /* Now reset signal handlers to their defaults */ - -@@ -4338,8 +4343,11 @@ if (smtp_input) - } - if (cutthrough_done != NOT_TRIED) - { -- if (data_file) -- (void) fclose(data_file); /* Frees the lock; do not care if error */ -+ if (spool_data_file) -+ { -+ (void) fclose(spool_data_file); /* Frees the lock; do not care if error */ -+ spool_data_file = NULL; -+ } - message_id[0] = 0; /* Prevent a delivery from starting */ - cutthrough.delivery = cutthrough.callout_hold_only = FALSE; - cutthrough.defer_pass = FALSE; -diff --git a/src/spool_mbox.c b/src/spool_mbox.c -index 749484f2..05f90a81 100644 ---- a/src/spool_mbox.c -+++ b/src/spool_mbox.c -@@ -35,9 +35,7 @@ uschar message_subdir[2]; - uschar buffer[16384]; - uschar *temp_string; - uschar *mbox_path; --FILE *mbox_file = NULL; --FILE *data_file = NULL; --FILE *yield = NULL; -+FILE *mbox_file = NULL, *l_data_file = NULL, *yield = NULL; - header_line *my_headerlist; - struct stat statbuf; - int i, j; -@@ -108,21 +106,25 @@ if (!spool_mbox_ok) - goto OUT; - } - -- /* copy body file */ -- if (!source_file_override) -+ /* Copy body file. If the main receive still has it open then it is holding -+ a lock, and we must not close it (which releases the lock), so just use the -+ global file handle. */ -+ if (source_file_override) -+ l_data_file = Ufopen(source_file_override, "rb"); -+ else if (spool_data_file) -+ l_data_file = spool_data_file; -+ else - { - message_subdir[1] = '\0'; - for (i = 0; i < 2; i++) - { - message_subdir[0] = split_spool_directory == (i == 0) ? message_id[5] : 0; - temp_string = spool_fname(US"input", message_subdir, message_id, US"-D"); -- if ((data_file = Ufopen(temp_string, "rb"))) break; -+ if ((l_data_file = Ufopen(temp_string, "rb"))) break; - } - } -- else -- data_file = Ufopen(source_file_override, "rb"); - -- if (!data_file) -+ if (!l_data_file) - { - log_write(0, LOG_MAIN|LOG_PANIC, "Could not open datafile for message %s", - message_id); -@@ -131,7 +133,7 @@ if (!spool_mbox_ok) - - /* The code used to use this line, but it doesn't work in Cygwin. - -- (void)fread(data_buffer, 1, 18, data_file); -+ (void)fread(data_buffer, 1, 18, l_data_file); - - What's happening is that spool_mbox used to use an fread to jump over the - file header. That fails under Cygwin because the header is locked, but -@@ -139,23 +141,23 @@ if (!spool_mbox_ok) - explicitly, because the one in the file is parted of the locked area. */ - - if (!source_file_override) -- (void)fseek(data_file, SPOOL_DATA_START_OFFSET, SEEK_SET); -+ (void)fseek(l_data_file, SPOOL_DATA_START_OFFSET, SEEK_SET); - - do - { - uschar * s; - - if (!spool_file_wireformat || source_file_override) -- j = fread(buffer, 1, sizeof(buffer), data_file); -+ j = fread(buffer, 1, sizeof(buffer), l_data_file); - else /* needs CRLF -> NL */ -- if ((s = US fgets(CS buffer, sizeof(buffer), data_file))) -+ if ((s = US fgets(CS buffer, sizeof(buffer), l_data_file))) - { - uschar * p = s + Ustrlen(s) - 1; - - if (*p == '\n' && p[-1] == '\r') - *--p = '\n'; - else if (*p == '\r') -- ungetc(*p--, data_file); -+ ungetc(*p--, l_data_file); - - j = p - buffer; - } -@@ -190,7 +192,7 @@ else - *mbox_file_size = statbuf.st_size; - - OUT: --if (data_file) (void)fclose(data_file); -+if (l_data_file && !spool_data_file) (void)fclose(l_data_file); - if (mbox_file) (void)fclose(mbox_file); - store_reset(reset_point); - return yield; --- -2.17.0 - diff -Nru exim4-4.91/debian/patches/75_fixes_10-Use-serial-number-1-for-self-generated-selfsigned-ce.patch exim4-4.92~RC4/debian/patches/75_fixes_10-Use-serial-number-1-for-self-generated-selfsigned-ce.patch --- exim4-4.91/debian/patches/75_fixes_10-Use-serial-number-1-for-self-generated-selfsigned-ce.patch 2018-07-30 18:35:06.000000000 +0000 +++ exim4-4.92~RC4/debian/patches/75_fixes_10-Use-serial-number-1-for-self-generated-selfsigned-ce.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,57 +0,0 @@ -From 3b9730e3deaf4eb03a99977d830da446dcc85cfb Mon Sep 17 00:00:00 2001 -From: Jeremy Harris -Date: Thu, 24 May 2018 16:31:27 +0100 -Subject: [PATCH 1/3] Use serial number 1 for self-generated selfsigned - certificate - -Broken-by: 23bb69826c -(cherry picked from commit 1613fd68b5931757016c3c25fdc3b0f37827e7f1) ---- - doc/ChangeLog | 3 +++ - src/tls-gnu.c | 2 +- - src/tls-openssl.c | 2 +- - 3 files changed, 5 insertions(+), 2 deletions(-) - -diff --git a/doc/ChangeLog b/doc/ChangeLog -index c6f34173..3edcb12f 100644 ---- a/doc/ChangeLog -+++ b/doc/ChangeLog -@@ -28,6 +28,9 @@ JH/06 Bug 2275: The MIME ACL unlocked the received message files early, and - releases a lock) for that case, while creating the temporary .eml format - file for the MIME ACL. Also applies to "regex" and "spam" ACL conditions. - -+JH/08 When generating a selfsigned cert, use serial number 1 since zero is not -+ legitimate. -+ - - Exim version 4.91 - ----------------- -diff --git a/src/tls-gnu.c b/src/tls-gnu.c -index 35816cd6..08c1d939 100644 ---- a/src/tls-gnu.c -+++ b/src/tls-gnu.c -@@ -790,7 +790,7 @@ if ((rc = gnutls_x509_privkey_generate(pkey, GNUTLS_PK_RSA, - goto err; - - where = US"configuring cert"; --now = 0; -+now = 1; - if ( (rc = gnutls_x509_crt_set_version(cert, 3)) - || (rc = gnutls_x509_crt_set_serial(cert, &now, sizeof(now))) - || (rc = gnutls_x509_crt_set_activation_time(cert, now = time(NULL))) -diff --git a/src/tls-openssl.c b/src/tls-openssl.c -index cefa94fe..068a0d87 100644 ---- a/src/tls-openssl.c -+++ b/src/tls-openssl.c -@@ -1000,7 +1000,7 @@ if (!EVP_PKEY_assign_RSA(pkey, rsa)) - goto err; - - X509_set_version(x509, 2); /* N+1 - version 3 */ --ASN1_INTEGER_set(X509_get_serialNumber(x509), 0); -+ASN1_INTEGER_set(X509_get_serialNumber(x509), 1); - X509_gmtime_adj(X509_get_notBefore(x509), 0); - X509_gmtime_adj(X509_get_notAfter(x509), (long)60 * 60); /* 1 hour */ - X509_set_pubkey(x509, pkey); --- -2.17.1 - diff -Nru exim4-4.91/debian/patches/75_fixes_11-Fix-logging-of-cmdline-args-when-starting-in-an-unli.patch exim4-4.92~RC4/debian/patches/75_fixes_11-Fix-logging-of-cmdline-args-when-starting-in-an-unli.patch --- exim4-4.91/debian/patches/75_fixes_11-Fix-logging-of-cmdline-args-when-starting-in-an-unli.patch 2018-07-30 18:35:06.000000000 +0000 +++ exim4-4.92~RC4/debian/patches/75_fixes_11-Fix-logging-of-cmdline-args-when-starting-in-an-unli.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,59 +0,0 @@ -From d5bd2a53d8a226793321b0c3011092ab97e63902 Mon Sep 17 00:00:00 2001 -From: Jeremy Harris -Date: Wed, 6 Jun 2018 11:19:23 +0100 -Subject: [PATCH 2/3] Fix logging of cmdline args when starting in an unlinked - cwd. Bug 2274 - ---- - doc/ChangeLog | 3 +++ - src/exim.c | 15 ++++++++++++--- - 2 files changed, 15 insertions(+), 3 deletions(-) - -diff --git a/doc/ChangeLog b/doc/ChangeLog -index 3edcb12f..5fb0149d 100644 ---- a/doc/ChangeLog -+++ b/doc/ChangeLog -@@ -31,6 +31,9 @@ JH/06 Bug 2275: The MIME ACL unlocked the received message files early, and - JH/08 When generating a selfsigned cert, use serial number 1 since zero is not - legitimate. - -+JH/09 Bug 2274: Fix logging of cmdline args when starting in an unlinked cwd. -+ Previously this would segfault. -+ - - Exim version 4.91 - ----------------- -diff --git a/src/exim.c b/src/exim.c -index d740814f..93a65dbc 100644 ---- a/src/exim.c -+++ b/src/exim.c -@@ -4083,14 +4083,23 @@ a debugging feature for finding out what arguments certain MUAs actually use. - Don't attempt it if logging is disabled, or if listing variables or if - verifying/testing addresses or expansions. */ - --if (((debug_selector & D_any) != 0 || LOGGING(arguments)) -- && really_exim && !list_options && !checking) -+if ( (debug_selector & D_any || LOGGING(arguments)) -+ && really_exim && !list_options && !checking) - { - int i; - uschar *p = big_buffer; - Ustrcpy(p, "cwd= (failed)"); - -- Ustrncpy(p + 4, initial_cwd, big_buffer_size-5); -+ if (!initial_cwd) -+ p += 13; -+ else -+ { -+ Ustrncpy(p + 4, initial_cwd, big_buffer_size-5); -+ p += 4 + Ustrlen(initial_cwd); -+ /* in case p is near the end and we don't provide enough space for -+ * string_format to be willing to write. */ -+ *p = '\0'; -+ } - - while (*p) p++; - (void)string_format(p, big_buffer_size - (p - big_buffer), " %d args:", argc); --- -2.17.1 - diff -Nru exim4-4.91/debian/patches/75_fixes_12-ARC-Fix-signing-for-case-when-DKIM-signing-failed.patch exim4-4.92~RC4/debian/patches/75_fixes_12-ARC-Fix-signing-for-case-when-DKIM-signing-failed.patch --- exim4-4.91/debian/patches/75_fixes_12-ARC-Fix-signing-for-case-when-DKIM-signing-failed.patch 2018-07-30 18:35:06.000000000 +0000 +++ exim4-4.92~RC4/debian/patches/75_fixes_12-ARC-Fix-signing-for-case-when-DKIM-signing-failed.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,40 +0,0 @@ -From ebf2c3666fd2e9bbb208dbeb297a901ba287c72c Mon Sep 17 00:00:00 2001 -From: Jeremy Harris -Date: Thu, 7 Jun 2018 16:24:31 +0100 -Subject: [PATCH 3/3] ARC: Fix signing for case when DKIM signing failed - ---- - doc/ChangeLog | 3 +++ - src/arc.c | 2 +- - 2 files changed, 4 insertions(+), 1 deletion(-) - -diff --git a/doc/ChangeLog b/doc/ChangeLog -index 5fb0149d..63bcf0c2 100644 ---- a/doc/ChangeLog -+++ b/doc/ChangeLog -@@ -34,6 +34,9 @@ JH/08 When generating a selfsigned cert, use serial number 1 since zero is not - JH/09 Bug 2274: Fix logging of cmdline args when starting in an unlinked cwd. - Previously this would segfault. - -+JH/10 Fix ARC signing for case when DKIM signing failed. Previously this would -+ segfault. -+ - - Exim version 4.91 - ----------------- -diff --git a/src/arc.c b/src/arc.c -index a8562a72..c2e7e508 100644 ---- a/src/arc.c -+++ b/src/arc.c -@@ -1638,7 +1638,7 @@ if (g) - - /* Finally, append the dkim headers and return the lot. */ - --g = string_catn(g, sigheaders->s, sigheaders->ptr); -+if (sigheaders) g = string_catn(g, sigheaders->s, sigheaders->ptr); - (void) string_from_gstring(g); - gstring_reset_unused(g); - return g; --- -2.17.1 - diff -Nru exim4-4.91/debian/patches/75_fixes_13-DKIM-Fix-signing-for-body-lines-starting-with-a-pair.patch exim4-4.92~RC4/debian/patches/75_fixes_13-DKIM-Fix-signing-for-body-lines-starting-with-a-pair.patch --- exim4-4.91/debian/patches/75_fixes_13-DKIM-Fix-signing-for-body-lines-starting-with-a-pair.patch 2018-07-30 18:35:06.000000000 +0000 +++ exim4-4.92~RC4/debian/patches/75_fixes_13-DKIM-Fix-signing-for-body-lines-starting-with-a-pair.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,58 +0,0 @@ -From e9f733e658a1605edca1bd6b689232e18c8f53c6 Mon Sep 17 00:00:00 2001 -From: Jeremy Harris -Date: Thu, 21 Jun 2018 17:03:38 +0100 -Subject: [PATCH 1/4] DKIM: Fix signing for body lines starting with a pair of - dots. Bug 2284 - -Broken-by: 42055a3385 ---- - doc/ChangeLog | 2 ++ - src/dkim_transport.c | 9 +++++++-- - test/log/4520 | 14 ++++++++++++-- - test/mail/4520.a | 17 ----------------- - test/scripts/4500-DKIM/4520 | 9 ++++++++- - 5 files changed, 29 insertions(+), 22 deletions(-) - -diff --git a/doc/ChangeLog b/doc/ChangeLog -index 63bcf0c2..da162a04 100644 ---- a/doc/ChangeLog -+++ b/doc/ChangeLog -@@ -37,6 +37,8 @@ JH/09 Bug 2274: Fix logging of cmdline args when starting in an unlinked cwd. - JH/10 Fix ARC signing for case when DKIM signing failed. Previously this would - segfault. - -+JH/14 Bug 2284: Fix DKIM signing for body lines starting with a pair of dots. -+ - - Exim version 4.91 - ----------------- -diff --git a/src/dkim_transport.c b/src/dkim_transport.c -index 11458680..13db0f2f 100644 ---- a/src/dkim_transport.c -+++ b/src/dkim_transport.c -@@ -155,7 +155,10 @@ if (!rc) return FALSE; - arc_sign_init(); - #endif - --dkim->dot_stuffed = !!(save_options & topt_end_dot); -+/* The dotstuffed status of the datafile depends on whether it was stored -+in wireformat. */ -+ -+dkim->dot_stuffed = spool_file_wireformat; - if (!(dkim_signature = dkim_exim_sign(deliver_datafile, SPOOL_DATA_START_OFFSET, - hdrs, dkim, &errstr))) - if (!(rc = dkt_sign_fail(dkim, &errno))) -@@ -271,7 +274,9 @@ if (!rc) - arc_sign_init(); - #endif - --/* Feed the file to the goats^W DKIM lib */ -+/* Feed the file to the goats^W DKIM lib. At this point the dotstuffed -+status of the file depends on the output of transport_write_message() just -+above, which should be the result of the end_dot flag in tctx->options. */ - - dkim->dot_stuffed = !!(options & topt_end_dot); - if (!(dkim_signature = dkim_exim_sign(dkim_fd, 0, NULL, dkim, &errstr))) --- -2.18.0 - diff -Nru exim4-4.91/debian/patches/75_fixes_14-ARC-Fix-verification-to-do-AS-checks-in-reverse-orde.patch exim4-4.92~RC4/debian/patches/75_fixes_14-ARC-Fix-verification-to-do-AS-checks-in-reverse-orde.patch --- exim4-4.91/debian/patches/75_fixes_14-ARC-Fix-verification-to-do-AS-checks-in-reverse-orde.patch 2018-07-30 18:35:06.000000000 +0000 +++ exim4-4.92~RC4/debian/patches/75_fixes_14-ARC-Fix-verification-to-do-AS-checks-in-reverse-orde.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,82 +0,0 @@ -From 64469eb46f042bea1c12996d69c5fedd0bf44510 Mon Sep 17 00:00:00 2001 -From: Jeremy Harris -Date: Mon, 25 Jun 2018 12:08:37 +0100 -Subject: [PATCH 3/4] ARC: Fix verification to do AS checks in reverse order - -Broken from the original introduction (617d39327e) ---- - doc/ChangeLog | 2 ++ - doc/experimental-spec.txt | 8 +++++++- - src/arc.c | 9 +++------ - 3 files changed, 12 insertions(+), 7 deletions(-) - -diff --git a/doc/ChangeLog b/doc/ChangeLog -index da162a04..fff417f0 100644 ---- a/doc/ChangeLog -+++ b/doc/ChangeLog -@@ -39,6 +39,8 @@ JH/10 Fix ARC signing for case when DKIM signing failed. Previously this would - - JH/14 Bug 2284: Fix DKIM signing for body lines starting with a pair of dots. - -+JH/16 Fix ARC verification to do AS checks in reverse order. -+ - - Exim version 4.91 - ----------------- -diff --git a/doc/experimental-spec.txt b/doc/experimental-spec.txt -index 0eeb2275..95272f43 100644 ---- a/doc/experimental-spec.txt -+++ b/doc/experimental-spec.txt -@@ -805,18 +805,24 @@ An option on the smtp transport, which constructs and prepends to the message - an ARC set of headers. The textually-first Authentication-Results: header - is used as a basis (you must have added one on entry to the ADMD). - Expanded as a whole; if unset, empty or forced-failure then no signing is done. --If it is set, all three elements must be non-empty. -+If it is set, all of the first three elements must be non-empty. - - Caveats: - * There must be an Authentication-Results header, presumably added by an ACL - while receiving the message, for the same ADMD, for arc_sign to succeed. - This requires careful coordination between inbound and outbound logic. -+ -+ Only one A-R header is taken account of. This is a limitation versus -+ the ARC spec (which says that all A-R headers from within the ADMD must -+ be used). -+ - * If passing a message to another system, such as a mailing-list manager - (MLM), between receipt and sending, be wary of manipulations to headers made - by the MLM. - + For instance, Mailman with REMOVE_DKIM_HEADERS==3 might improve - deliverability in a pre-ARC world, but that option also renames the - Authentication-Results header, which breaks signing. -+ - * Even if you use multiple DKIM keys for different domains, the ARC concept - should try to stick to one ADMD, so pick a primary domain and use that for - AR headers and outbound signing. -diff --git a/src/arc.c b/src/arc.c -index c2e7e508..3bde81e2 100644 ---- a/src/arc.c -+++ b/src/arc.c -@@ -966,16 +966,13 @@ return NULL; - static const uschar * - arc_verify_seals(arc_ctx * ctx) - { --arc_set * as = ctx->arcset_chain; -+arc_set * as = ctx->arcset_chain_last; - - if (!as) - return US"none"; - --while (as) -- { -- if (arc_seal_verify(ctx, as)) return US"fail"; -- as = as->next; -- } -+for ( ; as; as = as->prev) if (arc_seal_verify(ctx, as)) return US"fail"; -+ - DEBUG(D_acl) debug_printf("ARC: AS vfy overall pass\n"); - return NULL; - } --- -2.18.0 - diff -Nru exim4-4.91/debian/patches/75_fixes_15-I18N-Fix-protocol-recorded-for-a-multi-SMTPUTF8-mess.patch exim4-4.92~RC4/debian/patches/75_fixes_15-I18N-Fix-protocol-recorded-for-a-multi-SMTPUTF8-mess.patch --- exim4-4.91/debian/patches/75_fixes_15-I18N-Fix-protocol-recorded-for-a-multi-SMTPUTF8-mess.patch 2018-07-30 18:35:06.000000000 +0000 +++ exim4-4.92~RC4/debian/patches/75_fixes_15-I18N-Fix-protocol-recorded-for-a-multi-SMTPUTF8-mess.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,58 +0,0 @@ -From 9dbbd9a5b838b85c2db09eaee9f26ef25b7c4ae4 Mon Sep 17 00:00:00 2001 -From: Jeremy Harris -Date: Wed, 18 Jul 2018 22:16:38 +0100 -Subject: [PATCH 4/4] I18N: Fix protocol recorded for a multi-SMTPUTF8-message - connection. Bug 2287 - -(cherry picked from commit 946515bfe62796f6c0d6554e9e1e227f33253e7c) ---- - doc/ChangeLog | 4 ++++ - src/smtp_in.c | 12 +++++++----- - test/log/4201 | 3 +++ - test/scripts/4200-International/4201 | 13 ++++++++++++- - test/stdout/4201 | 15 +++++++++++++++ - 5 files changed, 41 insertions(+), 6 deletions(-) - -diff --git a/doc/ChangeLog b/doc/ChangeLog -index fff417f0..018473e4 100644 ---- a/doc/ChangeLog -+++ b/doc/ChangeLog -@@ -41,6 +41,10 @@ JH/14 Bug 2284: Fix DKIM signing for body lines starting with a pair of dots. - - JH/16 Fix ARC verification to do AS checks in reverse order. - -+JH/18 Bug 2287: Fix the protocol name (eg utf8esmtp) for multiple messages -+ using the SMTPUTF8 option on their MAIL FROM commands, in one connection. -+ Previously the "utf8" would be re-prepended for every additional message. -+ - - Exim version 4.91 - ----------------- -diff --git a/src/smtp_in.c b/src/smtp_in.c -index e4d02cea..b1f442c8 100644 ---- a/src/smtp_in.c -+++ b/src/smtp_in.c -@@ -4670,13 +4670,15 @@ while (done <= 0) - case ENV_MAIL_OPT_UTF8: - if (smtputf8_advertised) - { -- int old_pool = store_pool; -- - DEBUG(D_receive) debug_printf("smtputf8 requested\n"); - message_smtputf8 = allow_utf8_domains = TRUE; -- store_pool = POOL_PERM; -- received_protocol = string_sprintf("utf8%s", received_protocol); -- store_pool = old_pool; -+ if (Ustrncmp(received_protocol, US"utf8", 4) != 0) -+ { -+ int old_pool = store_pool; -+ store_pool = POOL_PERM; -+ received_protocol = string_sprintf("utf8%s", received_protocol); -+ store_pool = old_pool; -+ } - } - break; - #endif --- -2.18.0 - diff -Nru exim4-4.91/debian/patches/90_localscan_dlopen.dpatch exim4-4.92~RC4/debian/patches/90_localscan_dlopen.dpatch --- exim4-4.91/debian/patches/90_localscan_dlopen.dpatch 2018-07-30 18:35:06.000000000 +0000 +++ exim4-4.92~RC4/debian/patches/90_localscan_dlopen.dpatch 2019-01-10 15:41:45.000000000 +0000 @@ -6,11 +6,11 @@ Author: David Woodhouse, Derrick 'dman' Hudson, Marc MERLIN Origin: other, http://marc.merlins.org/linux/exim/files/sa-exim-current/ Forwarded: no -Last-Update: 2014-12-01 +Last-Update: 2018-12-12 --- a/src/EDITME +++ b/src/EDITME -@@ -819,6 +819,21 @@ HEADERS_CHARSET="ISO-8859-1" +@@ -824,6 +824,21 @@ HEADERS_CHARSET="ISO-8859-1" #------------------------------------------------------------------------------ @@ -45,7 +45,7 @@ #define CONFIGURE_FILE --- a/src/globals.c +++ b/src/globals.c -@@ -140,6 +140,10 @@ int dsn_ret = 0; +@@ -141,6 +141,10 @@ int dsn_ret = 0; const pcre *regex_DSN = NULL; uschar *dsn_advertise_hosts = NULL; @@ -58,7 +58,7 @@ BOOL gnutls_allow_auto_pkcs11 = FALSE; --- a/src/globals.h +++ b/src/globals.h -@@ -133,6 +133,9 @@ extern int dsn_ret; / +@@ -138,6 +138,9 @@ extern int dsn_ret; / extern const pcre *regex_DSN; /* For recognizing DSN settings */ extern uschar *dsn_advertise_hosts; /* host for which TLS is advertised */ @@ -269,13 +269,13 @@ /* End of local_scan.h */ --- a/src/readconf.c +++ b/src/readconf.c -@@ -195,6 +195,9 @@ static optionlist optionlist_config[] = +@@ -199,6 +199,9 @@ static optionlist optionlist_config[] = { "local_from_prefix", opt_stringptr, &local_from_prefix }, { "local_from_suffix", opt_stringptr, &local_from_suffix }, { "local_interfaces", opt_stringptr, &local_interfaces }, +#ifdef DLOPEN_LOCAL_SCAN + { "local_scan_path", opt_stringptr, &local_scan_path }, +#endif + #ifdef HAVE_LOCAL_SCAN { "local_scan_timeout", opt_time, &local_scan_timeout }, - { "local_sender_retain", opt_bool, &local_sender_retain }, - { "localhost_number", opt_stringptr, &host_number_string }, + #endif diff -Nru exim4-4.91/debian/patches/fix_smtp_banner.patch exim4-4.92~RC4/debian/patches/fix_smtp_banner.patch --- exim4-4.91/debian/patches/fix_smtp_banner.patch 2018-07-30 18:35:06.000000000 +0000 +++ exim4-4.92~RC4/debian/patches/fix_smtp_banner.patch 2019-01-10 15:41:45.000000000 +0000 @@ -6,18 +6,18 @@ --- a/src/globals.c +++ b/src/globals.c -@@ -1311,7 +1311,7 @@ int smtp_accept_reserve = 0; +@@ -1443,7 +1443,7 @@ int smtp_accept_queue_per_connection = 10; + int smtp_accept_reserve = 0; uschar *smtp_active_hostname = NULL; - BOOL smtp_authenticated = FALSE; uschar *smtp_banner = US"$smtp_active_hostname ESMTP " - "Exim $version_number $tod_full" + "Exim $version_number " EXIM_DISTRIBUTION " $tod_full" "\0<---------------Space to patch smtp_banner->"; - BOOL smtp_batched_input = FALSE; - BOOL smtp_check_spool_space = TRUE; + int smtp_ch_index = 0; + uschar *smtp_cmd_argument = NULL; --- a/src/config.h.defaults +++ b/src/config.h.defaults -@@ -210,4 +210,6 @@ for EXIM_ARITH_MAX and _MIN in OS/oh.h-F +@@ -224,4 +224,6 @@ for EXIM_ARITH_MAX and _MIN in OS/oh.h-FOO */ #define SC_EXIM_ARITH "%" SCNi64 /* scanf incl. 0x prefix */ #define SC_EXIM_DEC "%" SCNd64 /* scanf decimal */ @@ -41,8 +41,8 @@ # BEWARE: tab characters needed in the following sed command. They have had --- a/src/exim.h +++ b/src/exim.h -@@ -603,5 +603,9 @@ default to EDQUOT if it exists, otherwis - # define POLLRDHUP (POLLIN | POLLHUP) +@@ -597,5 +597,9 @@ default to EDQUOT if it exists, otherwise ENOSPC. */ + # define EXIM_GROUPLIST_SIZE NGROUPS_MAX #endif +#ifndef EXIM_DISTRIBUTION diff -Nru exim4-4.91/debian/patches/series exim4-4.92~RC4/debian/patches/series --- exim4-4.91/debian/patches/series 2018-07-30 18:35:06.000000000 +0000 +++ exim4-4.92~RC4/debian/patches/series 2019-01-10 15:41:45.000000000 +0000 @@ -6,20 +6,5 @@ 60_convert4r4.dpatch 67_unnecessaryCopt.diff 70_remove_exim-users_references.dpatch -75_fixes_01-Belated-README.UPDATING-notes-for-Exim-4.91.patch -75_fixes_02-Avoid-doing-logging-in-signal-handlers.-Bug-1007.patch -75_fixes_03-Fix-typo-in-arc.-Bug-2262.patch -75_fixes_04-Fix-OpenSSL-non-OCSP-build.patch -75_fixes_05-DKIM-enforce-limit-of-20-on-received-DKIM-Signature-.patch -75_fixes_06-Cutthrough-fix-race-resulting-in-duplicate-delivery..patch -75_fixes_07-tidying.patch -75_fixes_08-ARC-fix-crash-on-signing-with-missing-key-file.patch -75_fixes_09-Content-scanning-Fix-locking-on-message-spool-files..patch -75_fixes_10-Use-serial-number-1-for-self-generated-selfsigned-ce.patch -75_fixes_11-Fix-logging-of-cmdline-args-when-starting-in-an-unli.patch -75_fixes_12-ARC-Fix-signing-for-case-when-DKIM-signing-failed.patch -75_fixes_13-DKIM-Fix-signing-for-body-lines-starting-with-a-pair.patch -75_fixes_14-ARC-Fix-verification-to-do-AS-checks-in-reverse-orde.patch -75_fixes_15-I18N-Fix-protocol-recorded-for-a-multi-SMTPUTF8-mess.patch 90_localscan_dlopen.dpatch fix_smtp_banner.patch diff -Nru exim4-4.91/debian/upstream/signing-key.asc exim4-4.92~RC4/debian/upstream/signing-key.asc --- exim4-4.91/debian/upstream/signing-key.asc 2018-07-30 18:35:06.000000000 +0000 +++ exim4-4.92~RC4/debian/upstream/signing-key.asc 2019-01-10 15:41:45.000000000 +0000 @@ -1,777 +1,802 @@ -----BEGIN PGP PUBLIC KEY BLOCK----- -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 -JB8UR6RHn4m0yCQZZgocXCGERgSRNmPMUOaIskMnBqoCfqEifGS1ATqZgYuEik9M -o8wfHCAeMOGsjr6ew1NGPfjvzUQGRUPRgvuE5c3m6WcsDJkgTH7YW9P8T4QeboeV -Y7xpwkAp9Sd/eoQvpXGXjEAkC5dJhaHXKbtxrxlLHaV7cTp17+Vajuf4s3zzXhjQ -rh9ojiNyEVBDetsowzN+UxgWybGeFtXeeqUmUgLpoV8iOjaqKI/n24+dl+JY51tH -8cR8DG93N9xYL/CDersmvxgIZEVDrpvc3/YMhCWVHDZ0ZqmnQrsAEQEAAbQzSGVp -a28gU2NobGl0dGVybWFubiAoRHJlc2RlbikgPGhzQHNjaGxpdHRlcm1hbm4uZGU+ -iQJABBMBCgAqAhsBAh4BAheAAhkBBQsJCAcDBRUKCQgLBRYCAwEABQJYVnXoBQkF -vsCnAAoJECYQG2L2k3bOhKkP/2zWhq0BlT7AAAuefaZPl9b52uT7PbY4owcMWXJz -i7FTLWFo6KJOCBH9UTX0TXmf9S3AMMfoewblU6zOy+H1Q/ZVdzth5iJaXSbTgLlZ -7yc7k3P+qUdBGdCHwpUJmBScdGaKCkbdcOPIxTi02sPFTBJx45ogr3/n0S8PFNOY -Vv0fl4Nnr2bOpoSKSka08lk4HJKsMMA/BRfaSffez1QYdRJKhKTkljlJjA682Fuf -NBaZIQ8GHUjyyOIUwQUit2yAGChbBCh9wq5Z//xzBwdqGx64QLHHF+wCg2r9Ba3D -QMNllPidfPBPUPQ+xGXmHz0R0FzlaTYnFYKqpJSX8j/5IhaijZRxvtJljXa0fOg3 -D1A7ZuagCpNcXWVM66FeOx2hYMlBNn/eLejBc244ydlI5lqyocGRL3qjHufp6JVi -uwJpNMnWyLvxqrwgC6mcCDx7jJL7eI7rdAFLwfoTYnBb0zNPStf9pWngLmxsD9G0 -U3nJnVzhsZfa9s7F13wxkfZYio/HkKW1IGZHTkJzWswXx0Ba2UK9oLDCy8dByesA -5KmtA09dk0M/GuMFcb+ZZ3x3USa36Cw7vbJYcmDw6O4XgNf1aja5cdltENLsVKIW -I1VguZGfIwkLC3iXN2PzO3yOW5GXQ1wPHTc/SPMuBeT6UAqPBjO6vRQRFf4ghslG -//T2tDVIZWlrbyBTY2hsaXR0ZXJtYW5uIChIUzEyLVJJUEUpIDxoc0BzY2hsaXR0 -ZXJtYW5uLmRlPokCPwQTAQoAKQIbAQcLCQgHAwIBBhUIAgkKCwQWAgMBAh4BAheA -BQJYVnXuBQkFvsCnAAoJECYQG2L2k3bO3YYP/0vbSNKAD68r2EN8//yRGgH1xyUe -uRARgxJnhw7tBsO3k1YIkIEG7vKzLcRhi3vcM12ttY9R425Kl1c5ug6f4jt22bnO -ONrJ++0Or6hRucJ3L5IHRK0b2niPqvXBbg9PMp/9p0jKCHqme7mdD6jBOHBAQIZe -MuGLyzNKx6Dk52DZeLYRznoloYtUEurckrysL1/C9Qsah3JKlURSihVFibnIF1Wa -GfphxKsgLDDi8FUyNWrt99MhxYwwlAbBNQ99ifX3ZLFR9Q2B2ntL4Vfvom9QBYWG -5e3rzlfQtw4pGWpFZFDSi0LdP8FfM9wKhtnbHVEav9Te7syYgMBDx5q6irqwTh58 -gKLicWkD22rtVGYPv+En54thAq6MXMQuzJ3s4MW/5GTZcbtsBBAj4OtHvtyKzI08 -/TlS09bk9mlaI8PYGUU8JKZj39alL7bI7hZVn5HkGMn1Z/lojdW8Is35uKmMZnF+ -im0vonw1n52OTv+4nOpBcidckeDr0PsiAScJBnaJNVF6v+jL5hrUxs4hD4UgTgSL -obUzHi1g4/UP/eC1cEZH7aC2FiG2jTUqo84qTZ9Cik07fmUf95jCfsWFvijzVCPB -oIg4W5SDfkccvoermqS2KE9b9DXdZDiaWTLO3U98nwkO6ps24lbX6mjJ+QjsSokA -msGdN5BhOaltRYBZ0dHq0egBEAABAQAAAAAAAAAAAAAAAP/Y/+AAEEpGSUYAAQEB -AEgASAAA/9sAQwADAgIDAgIDAwMDBAMDBAUIBQUEBAUKBwcGCAwKDAwLCgsLDQ4S -EA0OEQ4LCxAWEBETFBUVFQwPFxgWFBgSFBUU/9sAQwEDBAQFBAUJBQUJFA0LDRQU -FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU -/8IAEQgAYQBQAwERAAIRAQMRAf/EABwAAAIDAQEBAQAAAAAAAAAAAAQFAwYHCAIB -AP/EABsBAAIDAQEBAAAAAAAAAAAAAAIDAQQFAAYH/9oADAMBAAIQAxAAAAG9fPO/ -GubSEtBlGa96w7AivEFcmWBP87YnPpNAfdeJLIrVB5bw3TDYD3w4bu2LTZXYacWO -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 -Y2sgPHBoaWwucGVubm9ja0BzcG9kaHVpcy5vcmc+iQJbBBMBAgBFAhsDBAsJCAcF -FQoJCAsEFgMCAQIeAQIXgCIYaGtwOi8vaGEucG9vbC5za3Mta2V5c2VydmVycy5u -ZXQvBQJSZgrxAhkBAAoJEE0ekA4UwcwEWhgP/1JmfyfHoIsCJEBXhSKb2YxcEuzu -z6R/KhBvqyCFByjjmqh5P7SWsoTRUN1ntetQVRUGe8fK1vPcmnTjI5UVwYchNwVR -Pr7WS66zD0Vie2UQROQB+XE3V0jgewojoSkw+fEXkLJi3q1AbHnFg0AtlxhfMl8P -KXYzjgJJ/ZwHh+cAiRMNjy9MOK/bQlyDY6iTG9DUP0/Zny7FAq6+oyiuP1TT163L -knFbVaEH/UdhbewQLs5GXufJ0R8TGP3VaSCiSk33kqOe4qvwFxkDN+7ioXR2A60y -RAZNOsDd4KOxdwhUm8mNIWHne6WjFxGznrPv/VKRxUwwDV0clf7DZYvPJ0xCFLTx -xC/9x1oKwpDB6fmqkA7DJ1GHJuKXM4O7EjVQ3SJPacU01tr2qC2BodYJG6PvzE2+ -FzGndtwQfb+eBYrEQ12Apd6rADrFnbAyd+FH6uwRxWCPweMCyUZpCF9ZQhjd20O1 -fDOSUhaHQUDa7NLcZA3Pzka0S4Rjkj4NPJd7r3ckXIwSgp3vwPBe9yUt/PZ09WbI -YGYFy1z9kml2uycdsaY4WMQiA0unkpbkQN/WaraZltNTrfs5a47b/LWYeBe97n8P -dczXAC3jSrj/wOJNb4as+bUVJ8U34BeUlJo0UCJPBINdRcKSiakjfGa8WAYEgbZl -P9rRR5hZQvUaS4zytCxQaGlsIFBlbm5vY2sgPHBoaWwucGVubm9ja0BncnVtcHkt -dHJvbGwub3JnPokCWAQTAQIAQgUCUmYKUAIbAwQLCQgHBRUKCQgLBBYDAgECHgEC -F4AiGGhrcDovL2hhLnBvb2wuc2tzLWtleXNlcnZlcnMubmV0LwAKCRBNHpAOFMHM -BFksD/4k7P55N/ZHdHuMU59DfQSvk4r6DNrGzZNvjiwpDa9GUdvFw2vXhFsxASFI -A4i7fmkxVUzfy508+hkP3rZivqltnaie0HRSDhilruiJF8mwSWvJ1yGvmouJvT82 -lUyUqtw79lnEADw3NypRXIRP+oz3N3jZ0s3Wmil+Lj5A2tn7QLIqTcLLtX2YmmSt -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 -=XUWN +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 +FOJkJ0KaQyPMIaudP0PdsqULSoHXiBk3k+yj6tg9Ca84TrsSrLx1fvM4sAZpqo5p +LriDbl7ji6tUZovqW06MRT7rFCMjJW0Bk8jPp2r/5ASdjv33Ljxvr+9weYHJ5/rN +J9MUVw3rXmyDbUh7+uAm/2e24z26xE6LsxJB8JzdRqRSMqXdf8JsiuQLWpKZBwYo +hLD+EKK+bfpqvTAHH39XLPz+Hx1Pyg3+nkcQJIHsZOiH5uneQyf5oId0MQARAQAB +tCBEYXZpZCBXb29kaG91c2UgPGR3bXcyQGV4aW0ub3JnPokCOAQTAQIAIgIbAwIe +AQIXgAUCTs/EuAYLCQgHAwIGFQgCCQoLBBYCAwEACgkQY3Ys2mfi81mGbhAAsQFh +PtgUJ7LCzADc8fzyH3nW6JrcJzkafhcEptDFBDhBFYeStGGYg1GpztIwFR/FS1id +P5Pb8SLTs61HMpfUCMo3viYX6nuzyLskIza3spz7/FIhkiGnCBt/g46O1RDdEmhi +OUv6R7xiiZfqB4xlX8hc3aeqPhrwJiSbNcKLZ2Du5Z/y/+n+HKT8MtiUP4fDGlEb +oA1SRDrPFPGCfPCKGueFo2y7Y8CdYmj0b9N+Tyjkm5NEGfmoavtLJDQ9QbmzwPYg ++AxoAEeGmhP2Zi9U66d2ugLZHK6xL3HOtMkL4ES8tn4neJ0C9Pv9N+Mm46s+mSvY +FQhlivgwX5pwbRBBSy2wl2ntXbuIg003SOaXJtsKXtGIg7ycJJ9VGyyApt8kydOG +8waNhJIU9TPbmAiAf3m3xr/asZHmecElBht37VOiPS+pzg8i5IAuTxsX9+vSzUPA +pQkaBuJRgDiaghjXrmF7v9FUZXCbmozj1iBJolbCKe0MIajHuQMkwF87PWfQVWLk +ssYIeZaiwu38JGlv4X6vSLHaDh3mQhT8l51PWRTx066AtVvlsu6KwrbyHknTqTjx +V9OTORKM5vw2fjDurvxFRnbPHw3Lljn4EUQq2a7sGz0/Ozrr3wMdJp5nOoi5JOCf +x127yIGMdkX+zDvCtk7XPZwqPoVbpsx6f9tf4du0IkRhdmlkIFdvb2Rob3VzZSA8 +ZGF2aWRAd29vZGhvdS5zZT6JAjgEEwECACICGwMCHgECF4AFAk7PxLgGCwkIBwMC +BhUIAgkKCwQWAgMBAAoJEGN2LNpn4vNZtHsP/iEpR+HThMsPZkWwhbGuAQT/rrWU +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 +=dOmA -----END PGP PUBLIC KEY BLOCK----- diff -Nru exim4-4.91/debian/watch exim4-4.92~RC4/debian/watch --- exim4-4.91/debian/watch 2018-07-30 18:35:06.000000000 +0000 +++ exim4-4.92~RC4/debian/watch 2019-01-10 15:41:45.000000000 +0000 @@ -1,3 +1,3 @@ version=3 -opts=pgpsigurlmangle=s/$/.asc/,uversionmangle=s/_/~/ \ -https://downloads.exim.org/exim4/exim-(\d.*)\.(?:tgz|tar\.(?:gz|bz2|xz)) +opts=pgpsigurlmangle=s/$/.asc/,uversionmangle=s/[_-]/~/g \ +https://downloads.exim.org/exim4/test/exim-(\d.*)\.(?:tgz|tar\.(?:gz|bz2|xz)) diff -Nru exim4-4.91/doc/ChangeLog exim4-4.92~RC4/doc/ChangeLog --- exim4-4.91/doc/ChangeLog 2018-04-14 23:18:10.000000000 +0000 +++ exim4-4.92~RC4/doc/ChangeLog 2018-12-27 13:36:19.000000000 +0000 @@ -5,6 +5,185 @@ options, and new features, see the NewStuff file next to this ChangeLog. +Exim version 4.92 +----------------- + +JH/01 Remove code calling the customisable local_scan function, unless a new + definition "HAVE_LOCAL_SCAN=yes" is present in the Local/Makefile. + +JH/02 Bug 1007: Avoid doing logging from signal-handlers, as that can result in + non-signal-safe functions being used. + +JH/03 Bug 2269: When presented with a received message having a stupidly large + number of DKIM-Signature headers, disable DKIM verification to avoid + a resource-consumption attack. The limit is set at twenty. + +JH/04 Add variables $arc_domains, $arc_oldest_pass for ARC verify. Fix the + report of oldest_pass in ${authres } in consequence, and separate out + some descriptions of reasons for verification fail. + +JH/05 Bug 2273: Cutthrough delivery left a window where the received messsage + files in the spool were present and unlocked. A queue-runner could spot + them, resulting in a duplicate delivery. Fix that by doing the unlock + after the unlink. Investigation by Tim Stewart. Take the opportunity to + add more error-checking on spoolfile handling while that code is being + messed with. + +PP/01 Refuse to open a spool data file (*-D) if it's a symlink. + No known attacks, no CVE, this is defensive hardening. + +JH/06 Bug 2275: The MIME ACL unlocked the received message files early, and + a queue-runner could start a delivery while other operations were ongoing. + Cutthrough delivery was a common victim, resulting in duplicate delivery. + Found and investigated by Tim Stewart. Fix by using the open message data + file handle rather than opening another, and not locally closing it (which + releases a lock) for that case, while creating the temporary .eml format + file for the MIME ACL. Also applies to "regex" and "spam" ACL conditions. + +JH/07 Bug 177: Make a random-recipient callout success visible in ACL, by setting + $sender_verify_failure/$recipient_verify_failure to "random". + +JH/08 When generating a selfsigned cert, use serial number 1 since zero is not + legitimate. + +JH/09 Bug 2274: Fix logging of cmdline args when starting in an unlinked cwd. + Previously this would segfault. + +JH/10 Fix ARC signing for case when DKIM signing failed. Previously this would + segfault. + +JH/11 Bug 2264: Exim now only follows CNAME chains one step by default. We'd + like zero, since the resolver should be doing this for us, But we need one + as a CNAME but no MX presence gets the CNAME returned; we need to check + that doesn't point to an MX to declare it "no MX returned" rather than + "error, loop". A new main option is added so the older capability of + following some limited number of chain links is maintained. + +JH/12 Add client-ip info to non-pass iprev ${authres } lines. + +JH/13 For receent Openssl versions (1.1 onward) use modern generic protocol + methods. These should support TLS 1.3; they arrived with TLS 1.3 and the + now-deprecated earlier definitions used only specified the range up to TLS + 1.2 (in the older-version library docs). + +JH/14 Bug 2284: Fix DKIM signing for body lines starting with a pair of dots. + +JH/15 Rework TLS client-side context management. Stop using a global, and + explicitly pass a context around. This enables future use of TLS for + connections to service-daemons (eg. malware scanning) while a client smtp + connection is using TLS; with cutthrough connections this is quite likely. + +JH/16 Fix ARC verification to do AS checks in reverse order. + +JH/17 Support a "tls" option on the ${readsocket } expansion item. + +JH/18 Bug 2287: Fix the protocol name (eg utf8esmtp) for multiple messages + using the SMTPUTF8 option on their MAIL FROM commands, in one connection. + Previously the "utf8" would be re-prepended for every additional message. + +JH/19 Reject MAIL FROM commands with SMTPUTF8 when the facility was not advertised. + Previously thery were accepted, resulting in issues when attempting to + forward messages to a non-supporting MTA. + +PP/02 Let -n work with printing macros too, not just options. + +JH/20 Bug 2296: Fix cutthrough for >1 address redirection. Previously only + one parent address was copied, and bogus data was used at delivery-logging + time. Either a crash (after delivery) or bogus log data could result. + Discovery and analysis by Tim Stewart. + +PP/03 Make ${utf8clean:} expansion operator detect incomplete final character. + Previously if the string ended mid-character, we did not insert the + promised '?' replacement. + +PP/04 Documentation: current string operators work on bytes, not codepoints. + +JH/21 Change as many as possible of the global flags into one-bit bitfields; these + should pack well giving a smaller memory footprint so better caching and + therefore performance. Group the declarations where this can't be done so + that the byte-sized flag variables are not interspersed among pointer + variables, giving a better chance of good packing by the compiler. + +JH/22 Bug 1896: Fix the envelope from for DMARC forensic reports to be possibly + non-null, to avoid issues with sites running BATV. Previously reports were + sent with an empty envelope sender so looked like bounces. + +JH/23 Bug 2318: Fix the noerror command within filters. It wasn't working. + The ignore_error flag wasn't being returned from the filter subprocess so + was not set for later routers. Investigation and fix by Matthias Kurz. + +JH/24 Bug 2310: Raise a msg:fail:internal event for each undelivered recipient, + and a msg:complete for the whole, when a message is manually removed using + -Mrm. Developement by Matthias Kurz, hacked on by JH. + +JH/25 Avoid fixed-size buffers for pathnames in DB access. This required using + a "Gnu special" function, asprintf() in the DB utility binary builds; I + hope that is portable enough. + +JH/26 Bug 2311: Fix DANE-TA verification under GnuTLS. Previously it was also + requiring a known-CA anchor certificate; make it now rely entirely on the + TLSA as an anchor. Checking the name on the leaf cert against the name + on the A-record for the host is still done for TA (but not for EE mode). + +JH/27 Fix logging of proxy address. Previously, a pointless "PRX=[]:0" would be + included in delivery lines for non-proxied connections, when compiled with + SUPPORT_SOCKS and running with proxy logging enabled. + +JH/28 Bug 2314: Fire msg:fail:delivery event even when error is being ignored. + Developement by Matthias Kurz, tweaked by JH. While in that bit of code, + move the existing event to fire before the normal logging of message + failure so that custom logging is bracketed by normal logging. + +JH/29 Bug 2322: A "fail" command in a non-system filter (file) now fires the + msg:fail:internal event. Developement by Matthias Kurz. + +JH/30 Bug 2329: Increase buffer size used for dns lookup from 2k, which was + far too small for todays use of crypto signatures stored there. Go all + the way to the max DNS message size of 64kB, even though this might be + overmuch for IOT constrained device use. + +JH/31 Fix a bad use of a copy function, which could be used to pointlessly + copy a string over itself. The library routine is documented as not + supporting overlapping copies, and on MacOS it actually raised a SIGABRT. + +JH/32 For main options check_spool_space and check_inode_space, where the + platform supports 64b integers, support more than the previous 2^31 kB + (i.e. more than 2 TB). Accept E, P and T multipliers in addition to + the previous G, M, k. + +JH/33 Bug 2338: Fix the cyrus-sasl authenticator to fill in the + $authenticated_fail_id variable on authentication failure. Previously + it was unset. + +JH/34 Increase RSA keysize of autogen selfsign cert from 1024 to 2048. RHEL 8.0 + OpenSSL didn't want to use such a weak key. Do for GnuTLS also, and for + more-modern GnuTLS move from GNUTLS_SEC_PARAM_LOW to + GNUTLS_SEC_PARAM_MEDIUM. + +JH/35 OpenSSL: fail the handshake when SNI processing hits a problem, server + side. Previously we would continue as if no SNI had been received. + +JH/36 Harden the handling of string-lists. When a list consisted of a sole + "<" character, which should be a list-separator specification, we walked + off past the nul-terimation. + +JH/37 Bug 2341: Send "message delayed" warning MDNs (restricted to external + causes) even when the retry time is not yet met. Previously they were + not, meaning that when (say) an account was over-quota and temp-rejecting, + and multiple senders' messages were queued, only one sender would get + notified on each configured delay_warning cycle. + +JH/38 Bug 2351: Log failures to extract envelope addresses from message headers. + +JH/39 OpenSSL: clear the error stack after an SSL_accept(). With anon-auth + cipher-suites, an error can be left on the stack even for a succeeding + accept; this results in impossible error messages when a later operation + actually does fail. + +AM/01 Bug 2359: GnuTLS: repeat lowlevel read and write operations while they return error + codes indicating retry. Under TLS1.3 this becomes required. + + Exim version 4.91 ----------------- @@ -371,7 +550,7 @@ line, the header hash was calculated to an incorrect value thanks to the (relaxed) space the fold became. -HS/02 Fix Bug 2130: large writes from the transport subprocess where chunked +HS/02 Fix Bug 2130: large writes from the transport subprocess were chunked and confused the parent. JH/27 Fix SOCKS bug: an unitialized pointer was deref'd by the transport process diff -Nru exim4-4.91/doc/dbm.discuss.txt exim4-4.92~RC4/doc/dbm.discuss.txt --- exim4-4.91/doc/dbm.discuss.txt 2018-04-14 23:18:10.000000000 +0000 +++ exim4-4.92~RC4/doc/dbm.discuss.txt 2018-12-27 13:36:19.000000000 +0000 @@ -223,7 +223,7 @@ Berkeley DB 4.x --------------- -The 4.x series is a developement of the 2.x and 3.x series, and the above +The 4.x series is a development of the 2.x and 3.x series, and the above comments apply. diff -Nru exim4-4.91/doc/exim.8 exim4-4.92~RC4/doc/exim.8 --- exim4-4.91/doc/exim.8 2018-04-15 13:17:34.000000000 +0000 +++ exim4-4.92~RC4/doc/exim.8 2018-12-27 13:38:26.000000000 +0000 @@ -159,7 +159,7 @@ test data. A line history is supported. .sp Long expansion expressions can be split over several lines by using backslash -continuations. As in Exim's run time configuration, white space at the start of +continuations. As in Exim's runtime configuration, white space at the start of continuation lines is ignored. Each argument or data line is passed through the string expansion mechanism, and the result is output. Variable values from the configuration file (for example, \fI$qualify_domain\fP) are available, but no @@ -428,7 +428,7 @@ If \fBconfig\fP is given as an argument, the config is output, as it was parsed, any include file resolved, any comment removed. .sp -If \fBconfig_file\fP is given as an argument, the name of the run time +If \fBconfig_file\fP is given as an argument, the name of the runtime configuration file is output. (\fBconfigure_file\fP works too, for backward compatibility.) If a list of configuration files was supplied, the value that is output here @@ -481,13 +481,13 @@ admin user. However, the \fBqueue_list_requires_admin\fP option can be set false to allow any user to see the queue. .sp -Each message on the queue is displayed as in the following example: +Each message in the queue is displayed as in the following example: .sp 25m 2.9K 0t5C6f\-0000c8\-00 red.king@looking\-glass.fict.example .sp -The first line contains the length of time the message has been on the queue +The first line contains the length of time the message has been in the queue (in this case 25 minutes), the size of the message (2.9K), the unique local identifier for the message, and the message sender, as contained in the envelope. For bounce messages, the sender address is empty, and appears as @@ -512,14 +512,14 @@ of just "D". .TP 10 \fB\-bpc\fP -This option counts the number of messages on the queue, and writes the total +This option counts the number of messages in the queue, and writes the total to the standard output. It is restricted to admin users, unless \fBqueue_list_requires_admin\fP is set false. .TP 10 \fB\-bpr\fP This option operates like \fB\-bp\fP, but the output is not sorted into chronological order of message arrival. This can speed it up when there are -lots of messages on the queue, and is particularly useful if the output is +lots of messages in the queue, and is particularly useful if the output is going to be post\-processed in a way that doesn't need the sorting. .TP 10 \fB\-bpra\fP @@ -658,7 +658,7 @@ number, and compilation date of the \fIexim\fP binary to the standard output. It also lists the DBM library that is being used, the optional modules (such as specific lookup types), the drivers that are included in the binary, and the -name of the run time configuration file that is in use. +name of the runtime configuration file that is in use. .sp As part of its operation, \fB\-bV\fP causes Exim to read and syntax check its configuration file. However, this is a static check only. It cannot check @@ -733,10 +733,10 @@ which the daemon will exit, which should cause inetd to listen once more. .TP 10 \fB\-C\fP <\fIfilelist\fP> -This option causes Exim to find the run time configuration file from the given +This option causes Exim to find the runtime configuration file from the given list instead of from the list specified by the CONFIGURE_FILE -compile\-time setting. Usually, the list will consist of just a single file -name, but it can be a colon\-separated list of names. In this case, the first +compile\-time setting. Usually, the list will consist of just a single filename, +but it can be a colon\-separated list of names. In this case, the first file that exists is used. Failure to open an existing file stops Exim from proceeding any further along the list, and an error is generated. .sp @@ -756,15 +756,15 @@ running as the Exim user, so when it re\-executes to regain privilege for the delivery, the use of \fB\-C\fP causes privilege to be lost. However, root can test reception and delivery using two separate commands (one to put a message -on the queue, using \fB\-odq\fP, and another to do the delivery, using \fB\-M\fP). +in the queue, using \fB\-odq\fP, and another to do the delivery, using \fB\-M\fP). .sp If ALT_CONFIG_PREFIX is defined in Local/Makefile, it specifies a prefix string with which any file named in a \fB\-C\fP command line option -must start. In addition, the file name must not contain the sequence /../. +must start. In addition, the filename must not contain the sequence /../. However, if the value of the \fB\-C\fP option is identical to the value of CONFIGURE_FILE in Local/Makefile, Exim ignores \fB\-C\fP and proceeds as usual. There is no default setting for ALT_CONFIG_PREFIX; when it is -unset, any file name can be used with \fB\-C\fP. +unset, any filename can be used with \fB\-C\fP. .sp ALT_CONFIG_PREFIX can be used to confine alternative configuration files to a directory to which only root has access. This prevents someone who has @@ -842,7 +842,8 @@ local_scan can be used by local_scan() lookup general lookup code and all lookups memory memory handling - pid add pid to debug output lines + noutf8 modifier: avoid UTF\-8 line\-drawing + pid modifier: add pid to debug output lines process_info setting info for the process log queue_run queue runs receive general message reception logic @@ -850,7 +851,7 @@ retry retry handling rewrite address rewriting route address routing - timestamp add timestamp to debug output lines + timestamp modifier: add timestamp to debug output lines tls TLS logic transport transports uid changes of uid/gid and looking up uid/gid @@ -879,6 +880,10 @@ The timestamp selector causes the current time to be inserted at the start of all debug output lines. This can be useful when trying to track down delays in processing. +The noutf8 selector disables the use of +UTF\-8 line\-drawing characters to group related information. +When disabled. ascii\-art is used instead. +Using the +all option does not set this modifier, .sp If the \fBdebug_print\fP option is set in any driver, it produces output whenever any debugging is selected, or if \fB\-v\fP is used. @@ -1066,7 +1071,7 @@ The arguments give the local address and port being proxied, and the TLS cipher. .TP 10 \fB\-Mc\fP <\fImessage id\fP> <\fImessage id\fP> ... -This option requests Exim to run a delivery attempt on each message in turn, +This option requests Exim to run a delivery attempt on each message, in turn, but unlike the \fB\-M\fP option, it does check for retry hints, and respects any that are found. This option is not very useful to external callers. It is provided mainly for internal use by Exim when it needs to re\-invoke itself in @@ -1121,7 +1126,7 @@ bounce messages are sent; each message is simply forgotten. However, if any of the messages are active, their status is not altered. This option can be used only by an admin user or by the user who originally caused the message to be -placed on the queue. +placed in the queue. .TP 10 \fB\-Mset\fP <\fImessage id\fP> This option is useful only in conjunction with \fB\-be\fP (that is, when testing @@ -1188,7 +1193,7 @@ .TP 10 \fB\-oA\fP <\fIfile name\fP> This option is used by Sendmail in conjunction with \fB\-bi\fP to specify an -alternative alias file name. Exim handles \fB\-bi\fP differently; see the +alternative alias filename. Exim handles \fB\-bi\fP differently; see the description above. .TP 10 \fB\-oB\fP <\fIn\fP> @@ -1227,7 +1232,7 @@ false and one of the queueing options in the configuration file is in effect. .sp If there is a temporary delivery error during foreground delivery, the -message is left on the queue for later delivery, and the original reception +message is left in the queue for later delivery, and the original reception process exits. .TP 10 \fB\-odi\fP @@ -1238,7 +1243,7 @@ This option applies to all modes in which Exim accepts incoming messages, including the listening daemon. It specifies that the accepting process should not automatically start a delivery process for each message received. Messages -are placed on the queue, and remain there until a subsequent queue runner +are placed in the queue, and remain there until a subsequent queue runner process encounters them. There are several configuration options (such as \fBqueue_only\fP) that can be used to queue incoming messages under certain conditions. This option overrides all of them and also \fB\-odqs\fP. It always @@ -1254,7 +1259,7 @@ message, in the background by default, but in the foreground if \fB\-odi\fP is also present. The recipient addresses are routed, and local deliveries are done in the normal way. However, if any SMTP deliveries are required, they are not -done at this time, so the message remains on the queue until a subsequent queue +done at this time, so the message remains in the queue until a subsequent queue runner process encounters it. Because routing was done, Exim knows which messages are waiting for which hosts, and so a number of messages for the same host can be sent in a single SMTP connection. The \fBqueue_smtp_domains\fP @@ -1414,7 +1419,7 @@ \fB\-oX\fP <\fInumber or string\fP> This option is relevant only when the \fB\-bd\fP (start listening daemon) option is also given. It controls which ports and interfaces the daemon uses. When \fB\-oX\fP is used to start a daemon, no pid -file is written unless \fB\-oP\fP is also present to specify a pid file name. +file is written unless \fB\-oP\fP is also present to specify a pid filename. .TP 10 \fB\-pd\fP This option applies when an embedded Perl interpreter is linked with Exim. It overrides the setting of the \fBperl_at_start\fP @@ -1493,7 +1498,7 @@ \fB\-q[q]i...\fP If the \fIi\fP flag is present, the queue runner runs delivery processes only for those messages that haven't previously been tried. (\fIi\fP stands for "initial -delivery".) This can be helpful if you are putting messages on the queue using +delivery".) This can be helpful if you are putting messages in the queue using \fB\-odq\fP and want a queue runner just to process the new messages. .TP 10 \fB\-q[q][i]f...\fP @@ -1507,7 +1512,7 @@ .TP 10 \fB\-q[q][i][f[f]]l\fP The \fIl\fP (the letter "ell") flag specifies that only local deliveries are to -be done. If a message requires any remote deliveries, it remains on the queue +be done. If a message requires any remote deliveries, it remains in the queue for later delivery. .TP 10 \fB\-q[q][i][f[f]][l][G[/