Merge branch 'debian'
authorClinton Ebadi <clinton@unknownlamer.org>
Sun, 16 Feb 2020 04:17:42 +0000 (23:17 -0500)
committerClinton Ebadi <clinton@unknownlamer.org>
Sun, 16 Feb 2020 04:17:42 +0000 (23:17 -0500)
370 files changed:
ACKNOWLEDGMENTS
Makefile
OS/Makefile-Base
OS/Makefile-OpenBSD
OS/os.c-FreeBSD [new file with mode: 0644]
OS/os.c-Linux
OS/os.h-Darwin
OS/os.h-FreeBSD
OS/os.h-Linux
OS/os.h-OpenBSD
OS/unsupported/Makefile-AIX [moved from OS/Makefile-AIX with 100% similarity]
OS/unsupported/Makefile-BSDI [moved from OS/Makefile-BSDI with 100% similarity]
OS/unsupported/Makefile-CYGWIN [moved from OS/Makefile-CYGWIN with 100% similarity]
OS/unsupported/Makefile-DGUX [moved from OS/Makefile-DGUX with 100% similarity]
OS/unsupported/Makefile-DragonFly [moved from OS/Makefile-DragonFly with 100% similarity]
OS/unsupported/Makefile-GNU [moved from OS/Makefile-GNU with 100% similarity]
OS/unsupported/Makefile-GNUkFreeBSD [moved from OS/Makefile-GNUkFreeBSD with 100% similarity]
OS/unsupported/Makefile-GNUkNetBSD [moved from OS/Makefile-GNUkNetBSD with 100% similarity]
OS/unsupported/Makefile-HI-OSF [moved from OS/Makefile-HI-OSF with 100% similarity]
OS/unsupported/Makefile-HI-UX [moved from OS/Makefile-HI-UX with 100% similarity]
OS/unsupported/Makefile-HP-UX [moved from OS/Makefile-HP-UX with 100% similarity]
OS/unsupported/Makefile-HP-UX-9 [moved from OS/Makefile-HP-UX-9 with 100% similarity]
OS/unsupported/Makefile-IRIX [moved from OS/Makefile-IRIX with 100% similarity]
OS/unsupported/Makefile-IRIX6 [moved from OS/Makefile-IRIX6 with 100% similarity]
OS/unsupported/Makefile-IRIX632 [moved from OS/Makefile-IRIX632 with 100% similarity]
OS/unsupported/Makefile-IRIX65 [moved from OS/Makefile-IRIX65 with 100% similarity]
OS/unsupported/Makefile-NetBSD [moved from OS/Makefile-NetBSD with 100% similarity]
OS/unsupported/Makefile-NetBSD-a.out [moved from OS/Makefile-NetBSD-a.out with 100% similarity]
OS/unsupported/Makefile-OSF1 [moved from OS/Makefile-OSF1 with 100% similarity]
OS/unsupported/Makefile-OpenUNIX [moved from OS/Makefile-OpenUNIX with 100% similarity]
OS/unsupported/Makefile-QNX [moved from OS/Makefile-QNX with 100% similarity]
OS/unsupported/Makefile-SCO [moved from OS/Makefile-SCO with 100% similarity]
OS/unsupported/Makefile-SCO_SV [moved from OS/Makefile-SCO_SV with 100% similarity]
OS/unsupported/Makefile-SunOS4 [moved from OS/Makefile-SunOS4 with 100% similarity]
OS/unsupported/Makefile-SunOS5-hal [moved from OS/Makefile-SunOS5-hal with 100% similarity]
OS/unsupported/Makefile-ULTRIX [moved from OS/Makefile-ULTRIX with 100% similarity]
OS/unsupported/Makefile-UNIX_SV [moved from OS/Makefile-UNIX_SV with 100% similarity]
OS/unsupported/Makefile-USG [moved from OS/Makefile-USG with 100% similarity]
OS/unsupported/Makefile-Unixware7 [moved from OS/Makefile-Unixware7 with 100% similarity]
OS/unsupported/Makefile-mips [moved from OS/Makefile-mips with 100% similarity]
OS/unsupported/README [new file with mode: 0644]
OS/unsupported/os.c-BSDI [moved from OS/os.c-BSDI with 86% similarity]
OS/unsupported/os.c-GNU [moved from OS/os.c-GNU with 100% similarity]
OS/unsupported/os.c-HI-OSF [moved from OS/os.c-HI-OSF with 100% similarity]
OS/unsupported/os.c-HP-UX [moved from OS/os.c-HP-UX with 100% similarity]
OS/unsupported/os.c-IRIX [moved from OS/os.c-IRIX with 99% similarity]
OS/unsupported/os.c-IRIX6 [moved from OS/os.c-IRIX6 with 99% similarity]
OS/unsupported/os.c-IRIX632 [moved from OS/os.c-IRIX632 with 99% similarity]
OS/unsupported/os.c-IRIX65 [moved from OS/os.c-IRIX65 with 99% similarity]
OS/unsupported/os.c-OSF1 [moved from OS/os.c-OSF1 with 100% similarity]
OS/unsupported/os.c-cygwin [moved from OS/os.c-cygwin with 100% similarity]
OS/unsupported/os.h-AIX [moved from OS/os.h-AIX with 100% similarity]
OS/unsupported/os.h-BSDI [moved from OS/os.h-BSDI with 100% similarity]
OS/unsupported/os.h-DGUX [moved from OS/os.h-DGUX with 100% similarity]
OS/unsupported/os.h-DragonFly [moved from OS/os.h-DragonFly with 100% similarity]
OS/unsupported/os.h-GNU [moved from OS/os.h-GNU with 100% similarity]
OS/unsupported/os.h-GNUkFreeBSD [moved from OS/os.h-GNUkFreeBSD with 100% similarity]
OS/unsupported/os.h-GNUkNetBSD [moved from OS/os.h-GNUkNetBSD with 100% similarity]
OS/unsupported/os.h-HI-OSF [moved from OS/os.h-HI-OSF with 100% similarity]
OS/unsupported/os.h-HI-UX [moved from OS/os.h-HI-UX with 100% similarity]
OS/unsupported/os.h-HP-UX [moved from OS/os.h-HP-UX with 100% similarity]
OS/unsupported/os.h-HP-UX-9 [moved from OS/os.h-HP-UX-9 with 100% similarity]
OS/unsupported/os.h-IRIX [moved from OS/os.h-IRIX with 100% similarity]
OS/unsupported/os.h-IRIX6 [moved from OS/os.h-IRIX6 with 100% similarity]
OS/unsupported/os.h-IRIX632 [moved from OS/os.h-IRIX632 with 100% similarity]
OS/unsupported/os.h-IRIX65 [moved from OS/os.h-IRIX65 with 100% similarity]
OS/unsupported/os.h-NetBSD [moved from OS/os.h-NetBSD with 100% similarity]
OS/unsupported/os.h-NetBSD-a.out [moved from OS/os.h-NetBSD-a.out with 100% similarity]
OS/unsupported/os.h-OSF1 [moved from OS/os.h-OSF1 with 100% similarity]
OS/unsupported/os.h-OpenUNIX [moved from OS/os.h-OpenUNIX with 100% similarity]
OS/unsupported/os.h-QNX [moved from OS/os.h-QNX with 100% similarity]
OS/unsupported/os.h-SCO [moved from OS/os.h-SCO with 100% similarity]
OS/unsupported/os.h-SCO_SV [moved from OS/os.h-SCO_SV with 100% similarity]
OS/unsupported/os.h-SunOS4 [moved from OS/os.h-SunOS4 with 100% similarity]
OS/unsupported/os.h-SunOS5-hal [moved from OS/os.h-SunOS5-hal with 100% similarity]
OS/unsupported/os.h-ULTRIX [moved from OS/os.h-ULTRIX with 100% similarity]
OS/unsupported/os.h-UNIX_SV [moved from OS/os.h-UNIX_SV with 100% similarity]
OS/unsupported/os.h-USG [moved from OS/os.h-USG with 100% similarity]
OS/unsupported/os.h-Unixware7 [moved from OS/os.h-Unixware7 with 100% similarity]
OS/unsupported/os.h-cygwin [moved from OS/os.h-cygwin with 100% similarity]
OS/unsupported/os.h-mips [moved from OS/os.h-mips with 100% similarity]
README
README.UPDATING
debian/EDITME.exim4-heavy.diff
debian/EDITME.exim4-light.diff
debian/EDITME.eximon.diff
debian/EDITME.openssl.exim4-light.diff
debian/README.Debian.xml
debian/README.source [deleted file]
debian/changelog
debian/compat
debian/control
debian/copyright
debian/debconf/conf.d/acl/30_exim4-config_check_rcpt
debian/debconf/conf.d/acl/40_exim4-config_check_data
debian/debconf/conf.d/main/01_exim4-config_listmacrosdefs
debian/debconf/conf.d/main/02_exim4-config_options
debian/debconf/conf.d/router/200_exim4-config_primary
debian/debconf/conf.d/transport/30_exim4-config_remote_smtp
debian/debconf/conf.d/transport/30_exim4-config_remote_smtp_smarthost
debian/debconf/update-exim4.conf
debian/e-n-if-up
debian/example.conf.md5
debian/exim4-base.cron.daily
debian/exim4-base.dirs
debian/exim4-base.docs
debian/exim4-base.examples
debian/exim4-base.exim4.init
debian/exim4-base.install
debian/exim4-base.manpages
debian/exim4-base.postrm
debian/exim4-config.dirs
debian/exim4-config.install
debian/exim4-config.links
debian/exim4-config.manpages
debian/exim4-daemon-custom.links
debian/exim4-daemon-heavy-dbg.links [deleted file]
debian/exim4-daemon-heavy.dirs
debian/exim4-daemon-heavy.links
debian/exim4-daemon-light-dbg.links [deleted file]
debian/exim4-daemon-light.links
debian/exim4-daemon-light.postinst
debian/exim4-daemon-light.prerm
debian/exim4-dbg.links [deleted file]
debian/exim4-dev.install
debian/exim4-dev.links
debian/eximon4.dirs
debian/eximon4.menu [deleted file]
debian/mtalist
debian/patches/31_eximmanpage.dpatch
debian/patches/32_exim4.dpatch [changed mode: 0755->0644]
debian/patches/40_reproducible_build.diff [deleted file]
debian/patches/60_convert4r4.dpatch
debian/patches/67_unnecessaryCopt.diff
debian/patches/70_remove_exim-users_references.dpatch
debian/patches/75_01-Fix-json-extract-operator-for-unfound-case.patch [new file with mode: 0644]
debian/patches/75_02-Fix-transport-buffer-size-handling.patch [new file with mode: 0644]
debian/patches/75_03-Fix-info-on-using-local_scan-in-the-default-Makefile.patch [new file with mode: 0644]
debian/patches/75_04-GnuTLS-Fix-client-detection-of-server-reject-of-clie.patch [new file with mode: 0644]
debian/patches/75_05-Fix-expansions-for-RFC-822-addresses-having-comments.patch [new file with mode: 0644]
debian/patches/75_06-Docs-Add-note-on-lsearch-for-IPv4-mapped-IPv6-addres.patch [new file with mode: 0644]
debian/patches/75_07-Fix-crash-from-SRV-lookup-hitting-a-CNAME.patch [new file with mode: 0644]
debian/patches/75_08-Logging-fix-initial-listening-on-log-line.patch [new file with mode: 0644]
debian/patches/75_09-OpenSSL-Fix-aggregation-of-messages.patch [new file with mode: 0644]
debian/patches/75_10-Harden-plaintext-authenticator.patch [new file with mode: 0644]
debian/patches/75_11-GnuTLS-fix-tls_out_ocsp-under-hosts_request_ocsp.patch [new file with mode: 0644]
debian/patches/75_12-GnuTLS-fix-the-advertising-of-acceptable-certs-by-th.patch [new file with mode: 0644]
debian/patches/75_13-Use-dsn_from-for-success-DSN-messages.-Bug-2404.patch [new file with mode: 0644]
debian/patches/75_14-Fix-smtp-response-timeout.patch [new file with mode: 0644]
debian/patches/75_15-Fix-detection-of-32b-platform-at-build-time.-Bug-240.patch [new file with mode: 0644]
debian/patches/77_Avoid-re-expansion-in-sort-CVE-2019-13917-OVE-201907.patch [moved from debian/patches/84_Avoid-re-expansion-in-sort-CVE-2019-13917-OVE-201907.patch with 86% similarity]
debian/patches/78_01-string.c-do-not-interpret-before-0-CVE-2019-15846.patch [moved from debian/patches/85_01-string.c-do-not-interpret-before-0-CVE-2019-15846.patch with 78% similarity]
debian/patches/78_02-Fix-buffer-overflow-in-string_vformat.-Bug-2449.patch [new file with mode: 0644]
debian/patches/78_Disable-chunking-BDAT-by-default.patch [deleted file]
debian/patches/79_CVE-2017-1000369.patch [deleted file]
debian/patches/80_Avoid-release-of-store-if-there-have-been-later-allo.patch [deleted file]
debian/patches/81_Chunking-do-not-treat-the-first-lonely-dot-special.-.patch [deleted file]
debian/patches/82_Fix-base64d-buffer-size-CVE-2018-6789.patch [deleted file]
debian/patches/83_qsa-2019-exim4.patch [deleted file]
debian/patches/90_localscan_dlopen.dpatch [moved from debian/patches/50_localscan_dlopen.dpatch with 93% similarity]
debian/patches/series
debian/rules
debian/upstream/signing-key.asc
debian/watch
doc/ChangeLog
doc/GnuTLS-FAQ.txt
doc/NewStuff
doc/OptionLists.txt
doc/dbm.discuss.txt
doc/exim.8
doc/experimental-spec.txt
doc/filter.txt
doc/openssl.txt
doc/spec.txt
exim_monitor/em_globals.c
exim_monitor/em_hdr.h
exim_monitor/em_log.c
exim_monitor/em_main.c
exim_monitor/em_menu.c
exim_monitor/em_queue.c
exim_monitor/em_version.c
scripts/Configure-Makefile
scripts/Configure-os.h
scripts/MakeLinks
scripts/reversion
src/EDITME
src/acl.c
src/aliases.default
src/arc.c [new file with mode: 0644]
src/auths/README
src/auths/auth-spa.c
src/auths/call_pam.c
src/auths/check_serv_cond.c
src/auths/cram_md5.c
src/auths/cram_md5.h
src/auths/cyrus_sasl.c
src/auths/cyrus_sasl.h
src/auths/dovecot.c
src/auths/get_data.c
src/auths/get_no64_data.c
src/auths/gsasl_exim.c
src/auths/gsasl_exim.h
src/auths/heimdal_gssapi.c
src/auths/md5.c
src/auths/plaintext.c
src/auths/plaintext.h
src/auths/pwcheck.c
src/auths/spa.c
src/auths/spa.h
src/auths/tls.c
src/auths/xtextencode.c
src/base64.c
src/bmi_spam.c
src/buildconfig.c
src/child.c
src/cnumber.h [new file with mode: 0644]
src/config.h.defaults
src/configure.default
src/convert4r3.src
src/convert4r4.src
src/daemon.c
src/dane-gnu.c [deleted file]
src/dane-openssl.c
src/dane.c
src/dbfn.c
src/dbstuff.h
src/dcc.c
src/debug.c
src/deliver.c
src/directory.c
src/dkim.c
src/dkim.h
src/dkim_transport.c [new file with mode: 0644]
src/dmarc.c
src/dmarc.h
src/dns.c
src/drtables.c
src/dummies.c
src/exicyclog.src
src/exigrep.src
src/exim.c
src/exim.h
src/exim_checkaccess.src
src/exim_dbmbuild.c
src/exim_dbutil.c
src/eximon.src
src/eximstats.src
src/exinext.src
src/exipick.src
src/exiqgrep.src
src/exiqsumm.src
src/exiwhat.src
src/expand.c
src/filter.c
src/filtertest.c
src/functions.h
src/globals.c
src/globals.h
src/hash.c
src/hash.h
src/header.c
src/host.c
src/imap_utf7.c
src/ip.c
src/local_scan.c
src/local_scan.h
src/log.c
src/lookups/cdb.c
src/lookups/dbmdb.c
src/lookups/dnsdb.c
src/lookups/ibase.c
src/lookups/ldap.c
src/lookups/lf_functions.h
src/lookups/lf_quote.c
src/lookups/lf_sqlperform.c
src/lookups/lmdb.c
src/lookups/lsearch.c
src/lookups/mysql.c
src/lookups/nis.c
src/lookups/nisplus.c
src/lookups/oracle.c
src/lookups/pgsql.c
src/lookups/redis.c
src/lookups/spf.c
src/lookups/sqlite.c
src/macro_predef.c [new file with mode: 0644]
src/macro_predef.h [new file with mode: 0644]
src/macros.h
src/malware.c
src/match.c
src/mime.c
src/moan.c
src/mytypes.h
src/os.c
src/parse.c
src/pdkim/Makefile
src/pdkim/crypt_ver.h
src/pdkim/pdkim.c
src/pdkim/pdkim.h
src/pdkim/pdkim_hash.h
src/pdkim/rsa.c [deleted file]
src/pdkim/rsa.h [deleted file]
src/pdkim/signing.c [new file with mode: 0644]
src/pdkim/signing.h [new file with mode: 0644]
src/perl.c
src/queue.c
src/rda.c
src/readconf.c
src/receive.c
src/regex.c
src/retry.c
src/rewrite.c
src/rfc2047.c
src/route.c
src/routers/accept.c
src/routers/dnslookup.c
src/routers/dnslookup.h
src/routers/ipliteral.c
src/routers/iplookup.c
src/routers/manualroute.c
src/routers/queryprogram.c
src/routers/redirect.c
src/routers/rf_change_domain.c
src/routers/rf_expand_data.c
src/routers/rf_get_errors_address.c
src/routers/rf_get_munge_headers.c
src/routers/rf_lookup_hostlist.c
src/routers/rf_queue_add.c
src/routers/rf_self_action.c
src/search.c
src/sha_ver.h
src/sieve.c
src/smtp_in.c
src/smtp_out.c
src/spam.c
src/spf.c
src/spf.h
src/spool_in.c
src/spool_mbox.c
src/spool_out.c
src/std-crypto.c
src/store.c
src/store.h
src/string.c
src/structs.h
src/tls-gnu.c
src/tls-openssl.c
src/tls.c
src/tlscert-gnu.c
src/tlscert-openssl.c
src/tod.c
src/transport-filter.src
src/transport.c
src/transports/appendfile.c
src/transports/appendfile.h
src/transports/autoreply.c
src/transports/lmtp.c
src/transports/pipe.c
src/transports/queuefile.c
src/transports/smtp.c
src/transports/smtp.h
src/transports/smtp_socks.c
src/transports/tf_maildir.c
src/tree.c
src/utf8.c
src/verify.c
src/version.c
src/version.h [new file with mode: 0644]
src/version.sh
util/renew-opendmarc-tlds.sh [new file with mode: 0755]

index 2e1ede0..22e9909 100644 (file)
@@ -67,8 +67,8 @@ Paul Kelly                MySQL interface
 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
index 2a100bb..761b295 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -2,7 +2,7 @@
 # appropriate links, and then creating and running the main makefile in that
 # directory.
 
-# Copyright (c) University of Cambridge, 1995 - 2015
+# Copyright (c) University of Cambridge, 1995 - 2018
 # See the file NOTICE for conditions of use and distribution.
 
 # IRIX make uses the shell that is in the SHELL variable, which often defaults
@@ -105,11 +105,10 @@ cscope.files: FRC
        echo "-q" > $@
        echo "-p3" >> $@
        find src Local OS exim_monitor -name "*.[cshyl]" -print \
-                   -o -name "os.h*" -print \
+                   -o -name "os.[ch]*" -print \
                    -o -name "*akefile*" -print \
                    -o -name config.h.defaults -print \
                    -o -name EDITME -print >> $@
-       ls OS/* >> $@
 
 FRC:
 
index f6b42f3..fed3134 100644 (file)
@@ -5,7 +5,7 @@
 # optional, Local/* files at the front of this file, to create Makefile in the
 # build directory.
 #
-# Copyright (c) The Exim Maintainers 2016
+# Copyright (c) The Exim Maintainers 1995 - 2018
 
 SHELL      = $(MAKE_SHELL)
 SCRIPTS    = ../scripts
@@ -36,9 +36,9 @@ FE       = $(FULLECHO)
 # are set up, and finally it goes to the main Exim target.
 
 all:       utils exim
-config:    $(EDITME) checklocalmake Makefile os.c config.h version.h
+config:    $(EDITME) checklocalmake Makefile os.c config.h version.h version.sh macro.c
 
-checklocalmake: 
+checklocalmake:
        @if $(SHELL) $(SCRIPTS)/newer $(EDITME)-$(OSTYPE) $(EDITME) || \
          $(SHELL) $(SCRIPTS)/newer $(EDITME)-$(ARCHTYPE) $(EDITME) || \
          $(SHELL) $(SCRIPTS)/newer $(EDITME)-$(OSTYPE)-$(ARCHTYPE) $(EDITME); \
@@ -79,29 +79,41 @@ Makefile: ../OS/Makefile-Base ../OS/Makefile-Default \
 
 # Build (link) the os.h file
 
+#os.h: $(SCRIPTS)/Configure-os.h \
+#      $(O)/os.h-AIX           $(O)/os.h-BSDI  $(O)/os.h-cygwin \
+#      $(O)/os.h-Darwin        $(O)/os.h-DGUX  $(O)/os.h-DragonFly \
+#      $(O)/os.h-FreeBSD       $(O)/os.h-GNU   $(O)/os.h-GNUkFreeBSD \
+#      $(O)/os.h-GNUkNetBSD    $(O)/os.h-HI-OSF \
+#      $(O)/os.h-HI-UX         $(O)/os.h-HP-UX $(O)/os.h-HP-UX-9 \
+#      $(O)/os.h-IRIX          $(O)/os.h-IRIX6 $(O)/os.h-IRIX632 \
+#      $(O)/os.h-IRIX65        $(O)/os.h-Linux $(O)/os.h-mips \
+#      $(O)/os.h-NetBSD        $(O)/os.h-NetBSD-a.out \
+#      $(O)/os.h-OpenBSD       $(O)/os.h-OpenUNIX      $(O)/os.h-OSF1 \
+#      $(O)/os.h-QNX           $(O)/os.h-SCO           $(O)/os.h-SCO_SV \
+#      $(O)/os.h-SunOS4        $(O)/os.h-SunOS5        $(O)/os.h-SunOS5-hal \
+#      $(O)/os.h-ULTRIX        $(O)/os.h-UNIX_SV \
+#      $(O)/os.h-Unixware7     $(O)/os.h-USG
+#      $(SHELL) $(SCRIPTS)/Configure-os.h
+
 os.h:  $(SCRIPTS)/Configure-os.h \
-       $(O)/os.h-AIX           $(O)/os.h-BSDI  $(O)/os.h-cygwin \
-       $(O)/os.h-Darwin        $(O)/os.h-DGUX  $(O)/os.h-DragonFly \
-       $(O)/os.h-FreeBSD       $(O)/os.h-GNU   $(O)/os.h-GNUkFreeBSD \
-       $(O)/os.h-GNUkNetBSD    $(O)/os.h-HI-OSF \
-       $(O)/os.h-HI-UX         $(O)/os.h-HP-UX $(O)/os.h-HP-UX-9 \
-       $(O)/os.h-IRIX          $(O)/os.h-IRIX6 $(O)/os.h-IRIX632 \
-       $(O)/os.h-IRIX65        $(O)/os.h-Linux $(O)/os.h-mips \
-       $(O)/os.h-NetBSD        $(O)/os.h-NetBSD-a.out \
-       $(O)/os.h-OpenBSD       $(O)/os.h-OpenUNIX      $(O)/os.h-OSF1 \
-       $(O)/os.h-QNX           $(O)/os.h-SCO           $(O)/os.h-SCO_SV \
-       $(O)/os.h-SunOS4        $(O)/os.h-SunOS5        $(O)/os.h-SunOS5-hal \
-       $(O)/os.h-ULTRIX        $(O)/os.h-UNIX_SV \
-       $(O)/os.h-Unixware7     $(O)/os.h-USG
+       $(O)/os.h-FreeBSD       \
+       $(O)/os.h-Linux         \
+       $(O)/os.h-OpenBSD       \
+       $(O)/os.h-SunOS5
        $(SHELL) $(SCRIPTS)/Configure-os.h
 
 # Build the os.c file
 
+#os.c:   ../src/os.c \
+#      $(SCRIPTS)/Configure-os.c \
+#      $(O)/os.c-cygwin        $(O)/os.c-GNU   $(O)/os.c-HI-OSF \
+#      $(O)/os.c-IRIX          $(O)/os.c-IRIX6 $(O)/os.c-IRIX632 \
+#      $(O)/os.c-IRIX65        $(O)/os.c-Linux $(O)/os.c-OSF1
+#      $(SHELL) $(SCRIPTS)/Configure-os.c
+
 os.c:   ../src/os.c \
        $(SCRIPTS)/Configure-os.c \
-       $(O)/os.c-cygwin        $(O)/os.c-GNU   $(O)/os.c-HI-OSF \
-       $(O)/os.c-IRIX          $(O)/os.c-IRIX6 $(O)/os.c-IRIX632 \
-       $(O)/os.c-IRIX65        $(O)/os.c-Linux $(O)/os.c-OSF1
+       $(O)/os.c-Linux
        $(SHELL) $(SCRIPTS)/Configure-os.c
 
 # Build the config.h file.
@@ -109,6 +121,128 @@ os.c:   ../src/os.c \
 config.h: Makefile buildconfig ../src/config.h.defaults $(EDITME)
        $(SHELL) $(SCRIPTS)/Configure-config.h "$(MAKE)"
 
+# Build the builtin-macros data struct
+
+MACRO_HSRC = macro_predef.h os.h globals.h config.h \
+       routers/accept.h routers/dnslookup.h routers/ipliteral.h \
+       routers/iplookup.h routers/manualroute.h routers/queryprogram.h \
+       routers/redirect.h
+
+OBJ_MACRO = macro_predef.o \
+       macro-globals.o macro-readconf.o macro-route.o macro-transport.o macro-drtables.o \
+       macro-tls.o \
+       macro-appendfile.o macro-autoreply.o macro-lmtp.o macro-pipe.o macro-queuefile.o \
+       macro-smtp.o macro-accept.o macro-dnslookup.o macro-ipliteral.o macro-iplookup.o \
+       macro-manualroute.o macro-queryprogram.o macro-redirect.o \
+       macro-auth-spa.o macro-cram_md5.o macro-cyrus_sasl.o macro-dovecot.o macro-gsasl_exim.o \
+       macro-heimdal_gssapi.o macro-plaintext.o macro-spa.o macro-authtls.o \
+       macro-dkim.o macro-malware.o macro-signing.o
+
+$(OBJ_MACRO):  $(MACRO_HSRC)
+
+macro_predef.o :       macro_predef.c
+       @echo "$(CC) -DMACRO_PREDEF macro_predef.c"
+       $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ macro_predef.c
+macro-globals.o :      globals.c
+       @echo "$(CC) -DMACRO_PREDEF globals.c"
+       $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ globals.c
+macro-readconf.o :     readconf.c
+       @echo "$(CC) -DMACRO_PREDEF readconf.c"
+       $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ readconf.c
+macro-route.o :                route.c
+       @echo "$(CC) -DMACRO_PREDEF route.c"
+       $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ route.c
+macro-transport.o:     transport.c
+       @echo "$(CC) -DMACRO_PREDEF transport.c"
+       $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ transport.c
+macro-drtables.o :     drtables.c
+       @echo "$(CC) -DMACRO_PREDEF drtables.c"
+       $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ drtables.c
+macro-tls.o:   tls.c
+       @echo "$(CC) -DMACRO_PREDEF tls.c"
+       $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ tls.c
+macro-appendfile.o :   transports/appendfile.c
+       @echo "$(CC) -DMACRO_PREDEF transports/appendfile.c"
+       $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ transports/appendfile.c
+macro-autoreply.o :    transports/autoreply.c
+       @echo "$(CC) -DMACRO_PREDEF transports/autoreply.c"
+       $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ transports/autoreply.c
+macro-lmtp.o:          transports/lmtp.c
+       @echo "$(CC) -DMACRO_PREDEF transports/lmtp.c"
+       $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ transports/lmtp.c
+macro-pipe.o :         transports/pipe.c
+       @echo "$(CC) -DMACRO_PREDEF transports/pipe.c"
+       $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ transports/pipe.c
+macro-queuefile.o :    transports/queuefile.c
+       @echo "$(CC) -DMACRO_PREDEF transports/queuefile.c"
+       $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ transports/queuefile.c
+macro-smtp.o :         transports/smtp.c
+       @echo "$(CC) -DMACRO_PREDEF transports/smtp.c"
+       $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ transports/smtp.c
+macro-accept.o :       routers/accept.c
+       @echo "$(CC) -DMACRO_PREDEF routers/accept.c"
+       $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ routers/accept.c
+macro-dnslookup.o :    routers/dnslookup.c
+       @echo "$(CC) -DMACRO_PREDEF routers/dnslookup.c"
+       $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ routers/dnslookup.c
+macro-ipliteral.o :    routers/ipliteral.c
+       @echo "$(CC) -DMACRO_PREDEF routers/ipliteral.c"
+       $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ routers/ipliteral.c
+macro-iplookup.o :     routers/iplookup.c
+       @echo "$(CC) -DMACRO_PREDEF routers/iplookup.c"
+       $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ routers/iplookup.c
+macro-manualroute.o :  routers/manualroute.c
+       @echo "$(CC) -DMACRO_PREDEF routers/manualroute.c"
+       $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ routers/manualroute.c
+macro-queryprogram.o : routers/queryprogram.c
+       @echo "$(CC) -DMACRO_PREDEF routers/queryprogram.c"
+       $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ routers/queryprogram.c
+macro-redirect.o :     routers/redirect.c
+       @echo "$(CC) -DMACRO_PREDEF routers/redirect.c"
+       $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ routers/redirect.c
+macro-auth-spa.o :     auths/auth-spa.c
+       @echo "$(CC) -DMACRO_PREDEF auths/auth-spa.c"
+       $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ auths/auth-spa.c
+macro-cram_md5.o :     auths/cram_md5.c
+       @echo "$(CC) -DMACRO_PREDEF auths/cram_md5.c"
+       $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ auths/cram_md5.c
+macro-cyrus_sasl.o :   auths/cyrus_sasl.c
+       @echo "$(CC) -DMACRO_PREDEF auths/cyrus_sasl.c"
+       $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ auths/cyrus_sasl.c
+macro-dovecot.o:       auths/dovecot.c
+       @echo "$(CC) -DMACRO_PREDEF auths/dovecot.c"
+       $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ auths/dovecot.c
+macro-gsasl_exim.o :   auths/gsasl_exim.c
+       @echo "$(CC) -DMACRO_PREDEF auths/gsasl_exim.c"
+       $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ auths/gsasl_exim.c
+macro-heimdal_gssapi.o:        auths/heimdal_gssapi.c
+       @echo "$(CC) -DMACRO_PREDEF auths/heimdal_gssapi.c"
+       $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ auths/heimdal_gssapi.c
+macro-plaintext.o :    auths/plaintext.c
+       @echo "$(CC) -DMACRO_PREDEF auths/plaintext.c"
+       $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ auths/plaintext.c
+macro-spa.o :          auths/spa.c
+       @echo "$(CC) -DMACRO_PREDEF auths/spa.c"
+       $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ auths/spa.c
+macro-authtls.o:       auths/tls.c
+       @echo "$(CC) -DMACRO_PREDEF auths/tls.c"
+       $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ auths/tls.c
+macro-dkim.o:          dkim.c
+       @echo "$(CC) -DMACRO_PREDEF dkim.c"
+       $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ dkim.c
+macro-malware.o:       malware.c
+       @echo "$(CC) -DMACRO_PREDEF malware.c"
+       $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ malware.c
+macro-signing.o:       pdkim/signing.c
+       @echo "$(CC) -DMACRO_PREDEF pdkim/signing.c"
+       $(FE)$(CC) -c $(CFLAGS) -DMACRO_PREDEF $(INCLUDE) -o $@ pdkim/signing.c
+
+macro_predef: $(OBJ_MACRO)
+       @echo "$(LNCC) -o $@"
+       $(FE)$(LNCC) -o $@ $(LFLAGS) $(OBJ_MACRO)
+
+macro.c: macro_predef
+       ./macro_predef > macro.c
 
 # This target is recognized specially by GNU make. It records those targets
 # that do not correspond to files that are being built and which should
@@ -136,7 +270,7 @@ buildconfig: buildconfig.c
 # Target for the exicyclog utility script
 exicyclog: config ../src/exicyclog.src
        @rm -f exicyclog
-       @sed \
+       @. ./version.sh && sed \
          -e "s?PROCESSED_FLAG?This file has been so processed.?"\
          -e "/^# /p" \
          -e "/^# /d" \
@@ -153,6 +287,8 @@ exicyclog: config ../src/exicyclog.src
          -e "s?MV_COMMAND?$(MV_COMMAND)?" \
          -e "s?RM_COMMAND?$(RM_COMMAND)?" \
          -e "s?TOUCH_COMMAND?$(TOUCH_COMMAND)?" \
+         -e "s?EXIM_RELEASE_VERSION?$${EXIM_RELEASE_VERSION}?" \
+         -e "s?EXIM_VARIANT_VERSION?$${EXIM_VARIANT_VERSION}?" \
          ../src/exicyclog.src > exicyclog-t
        @mv exicyclog-t exicyclog
        @chmod a+x exicyclog
@@ -161,13 +297,15 @@ exicyclog: config ../src/exicyclog.src
 # Target for the exinext utility script
 exinext: config ../src/exinext.src
        @rm -f exinext
-       @sed \
+       @. ./version.sh && sed \
          -e "s?PROCESSED_FLAG?This file has been so processed.?"\
          -e "/^# /p" \
          -e "/^# /d" \
          -e "s?CONFIGURE_FILE_USE_NODE?$(CONFIGURE_FILE_USE_NODE)?" \
          -e "s?CONFIGURE_FILE?$(CONFIGURE_FILE)?" \
          -e "s?BIN_DIRECTORY?$(BIN_DIRECTORY)?" \
+         -e "s?EXIM_RELEASE_VERSION?$${EXIM_RELEASE_VERSION}?" \
+         -e "s?EXIM_VARIANT_VERSION?$${EXIM_VARIANT_VERSION}?" \
          ../src/exinext.src > exinext-t
        @mv exinext-t exinext
        @chmod a+x exinext
@@ -176,7 +314,7 @@ exinext: config ../src/exinext.src
 # Target for the exiwhat utility script
 exiwhat: config ../src/exiwhat.src
        @rm -f exiwhat
-       @sed \
+       @. ./version.sh && sed \
          -e "s?PROCESSED_FLAG?This file has been so processed.?"\
          -e "/^# /p" \
          -e "/^# /d" \
@@ -189,6 +327,9 @@ exiwhat: config ../src/exiwhat.src
          -e "s?EXIWHAT_EGREP_ARG?$(EXIWHAT_EGREP_ARG)?" \
          -e "s?EXIWHAT_MULTIKILL_CMD?$(EXIWHAT_MULTIKILL_CMD)?" \
          -e "s?EXIWHAT_MULTIKILL_ARG?$(EXIWHAT_MULTIKILL_ARG)?" \
+         -e "s?EXIM_RELEASE_VERSION?$${EXIM_RELEASE_VERSION}?" \
+         -e "s?EXIM_VARIANT_VERSION?$${EXIM_VARIANT_VERSION}?" \
+         -e "s?RM_COMMAND?$(RM_COMMAND)?" \
          ../src/exiwhat.src > exiwhat-t
        @mv exiwhat-t exiwhat
        @chmod a+x exiwhat
@@ -197,7 +338,7 @@ exiwhat: config ../src/exiwhat.src
 # Target for the exim_checkaccess utility script
 exim_checkaccess: config ../src/exim_checkaccess.src
        @rm -f exim_checkaccess
-       @sed \
+       @. ./version.sh && sed \
          -e "s?PROCESSED_FLAG?This file has been so processed.?"\
          -e "/^# /p" \
          -e "/^# /d" \
@@ -205,6 +346,8 @@ exim_checkaccess: config ../src/exim_checkaccess.src
          -e "s?CONFIGURE_FILE?$(CONFIGURE_FILE)?" \
          -e "s?BIN_DIRECTORY?$(BIN_DIRECTORY)?" \
          -e "s?PERL_COMMAND?$(PERL_COMMAND)?" \
+         -e "s?EXIM_RELEASE_VERSION?$${EXIM_RELEASE_VERSION}?" \
+         -e "s?EXIM_VARIANT_VERSION?$${EXIM_VARIANT_VERSION}?" \
          ../src/exim_checkaccess.src > exim_checkaccess-t
        @mv exim_checkaccess-t exim_checkaccess
        @chmod a+x exim_checkaccess
@@ -215,7 +358,7 @@ eximon: config ../src/eximon.src ../OS/eximon.conf-Default \
           ../Local/eximon.conf
        @rm -f eximon
        $(SHELL) $(SCRIPTS)/Configure-eximon
-       @sed \
+       @. ./version.sh && sed \
          -e "s?PROCESSED_FLAG?This file has been so processed.?"\
          -e "/^# /p" \
          -e "/^# /d" \
@@ -225,85 +368,108 @@ eximon: config ../src/eximon.src ../OS/eximon.conf-Default \
          -e "s?BASENAME_COMMAND?$(BASENAME_COMMAND)?" \
          -e "s?HOSTNAME_COMMAND?$(HOSTNAME_COMMAND)?" \
          -e "s?X11_LD_LIBRARY?$(X11_LD_LIB)?" \
+         -e "s?EXIM_RELEASE_VERSION?$${EXIM_RELEASE_VERSION}?" \
+         -e "s?EXIM_VARIANT_VERSION?$${EXIM_VARIANT_VERSION}?" \
          ../src/eximon.src >> eximon
        @echo ">>> eximon script built"; echo ""
 
 # Targets for utilities; these are all Perl scripts that have to get the
 # location of Perl put in them. A few need other things as well.
 
-exigrep: Makefile ../src/exigrep.src
+exigrep: config ../src/exigrep.src
        @rm -f exigrep
-       @sed \
+       @. ./version.sh && sed \
          -e "s?PROCESSED_FLAG?This file has been so processed.?"\
          -e "/^# /p" \
          -e "/^# /d" \
          -e "s?PERL_COMMAND?$(PERL_COMMAND)?" \
          -e "s?ZCAT_COMMAND?$(ZCAT_COMMAND)?" \
           -e "s?COMPRESS_SUFFIX?$(COMPRESS_SUFFIX)?" \
+         -e "s?EXIM_RELEASE_VERSION?$${EXIM_RELEASE_VERSION}?" \
+         -e "s?EXIM_VARIANT_VERSION?$${EXIM_VARIANT_VERSION}?" \
          ../src/exigrep.src > exigrep-t
        @mv exigrep-t exigrep
        @chmod a+x exigrep
        @echo ">>> exigrep script built"
 
-eximstats: Makefile ../src/eximstats.src
+eximstats: config ../src/eximstats.src
        @rm -f eximstats
-       @sed \
+       @. ./version.sh && sed \
          -e "s?PERL_COMMAND?$(PERL_COMMAND)?" \
+         -e "s?EXIM_RELEASE_VERSION?$${EXIM_RELEASE_VERSION}?" \
+         -e "s?EXIM_VARIANT_VERSION?$${EXIM_VARIANT_VERSION}?" \
          ../src/eximstats.src > eximstats-t
        @mv eximstats-t eximstats
        @chmod a+x eximstats
        @echo ">>> eximstats script built"
 
-exiqgrep: Makefile ../src/exiqgrep.src
+exiqgrep: config ../src/exiqgrep.src
        @rm -f exiqgrep
-       @sed \
+       @. ./version.sh && sed \
          -e "s?PROCESSED_FLAG?This file has been so processed.?"\
          -e "/^# /p" \
          -e "/^# /d" \
          -e "s?BIN_DIRECTORY?$(BIN_DIRECTORY)?" \
          -e "s?PERL_COMMAND?$(PERL_COMMAND)?" \
+         -e "s?EXIM_RELEASE_VERSION?$${EXIM_RELEASE_VERSION}?" \
+         -e "s?EXIM_VARIANT_VERSION?$${EXIM_VARIANT_VERSION}?" \
          ../src/exiqgrep.src > exiqgrep-t
        @mv exiqgrep-t exiqgrep
        @chmod a+x exiqgrep
        @echo ">>> exiqgrep script built"
 
-exiqsumm: Makefile ../src/exiqsumm.src
+exiqsumm: config ../src/exiqsumm.src
        @rm -f exiqsumm
-       @sed -e "s?PERL_COMMAND?$(PERL_COMMAND)?" \
+       @. ./version.sh && sed \
+         -e "s?PERL_COMMAND?$(PERL_COMMAND)?" \
+         -e "s?EXIM_RELEASE_VERSION?$${EXIM_RELEASE_VERSION}?" \
+         -e "s?EXIM_VARIANT_VERSION?$${EXIM_VARIANT_VERSION}?" \
          ../src/exiqsumm.src > exiqsumm-t
        @mv exiqsumm-t exiqsumm
        @chmod a+x exiqsumm
        @echo ">>> exiqsumm script built"
 
-exipick: Makefile ../src/exipick.src
+exipick: config ../src/exipick.src
        @rm -f exipick
-       @sed -e "s?PERL_COMMAND?$(PERL_COMMAND)?" \
+       @. ./version.sh && sed \
+         -e "s?PERL_COMMAND?$(PERL_COMMAND)?" \
          -e "s?SPOOL_DIRECTORY?$(SPOOL_DIRECTORY)?" \
          -e "s?BIN_DIRECTORY?$(BIN_DIRECTORY)?" \
+         -e "s?EXIM_RELEASE_VERSION?$${EXIM_RELEASE_VERSION}?" \
+         -e "s?EXIM_VARIANT_VERSION?$${EXIM_VARIANT_VERSION}?" \
          ../src/exipick.src > exipick-t
        @mv exipick-t exipick
        @chmod a+x exipick
        @echo ">>> exipick script built"
 
-transport-filter.pl: Makefile ../src/transport-filter.src
+transport-filter.pl: config ../src/transport-filter.src
        @rm -f transport-filter.pl
-       @sed -e "s?PERL_COMMAND?$(PERL_COMMAND)?" \
+       @. ./version.sh && sed \
+         -e "s?PERL_COMMAND?$(PERL_COMMAND)?" \
+         -e "s?EXIM_RELEASE_VERSION?$${EXIM_RELEASE_VERSION}?" \
+         -e "s?EXIM_VARIANT_VERSION?$${EXIM_VARIANT_VERSION}?" \
          ../src/transport-filter.src > transport-filter.pl-t
        @mv transport-filter.pl-t transport-filter.pl
        @chmod a+x transport-filter.pl
        @echo ">>> transport-filter.pl script built"
 
-convert4r3: Makefile ../src/convert4r3.src
+convert4r3: config ../src/convert4r3.src
        @rm -f convert4r3
-       @sed -e "s?PERL_COMMAND?$(PERL_COMMAND)?" \
+       @. ./version.sh && sed \
+         -e "s?PERL_COMMAND?$(PERL_COMMAND)?" \
+         -e "s?EXIM_RELEASE_VERSION?$${EXIM_RELEASE_VERSION}?" \
+         -e "s?EXIM_VARIANT_VERSION?$${EXIM_VARIANT_VERSION}?" \
          ../src/convert4r3.src > convert4r3-t
        @mv convert4r3-t convert4r3
        @chmod a+x convert4r3
        @echo ">>> convert4r3 script built"
 
-convert4r4: Makefile ../src/convert4r4.src
+convert4r4: config ../src/convert4r4.src
        @rm -f convert4r4
-       @sed -e "s?PERL_COMMAND?$(PERL_COMMAND)?" \
+       @. ./version.sh && sed \
+         -e "s?PERL_COMMAND?$(PERL_COMMAND)?" \
+         -e "s?EXIM_RELEASE_VERSION?$${EXIM_RELEASE_VERSION}?" \
+         -e "s?EXIM_VARIANT_VERSION?$${EXIM_VARIANT_VERSION}?" \
          ../src/convert4r4.src > convert4r4-t
        @mv convert4r4-t convert4r4
        @chmod a+x convert4r4
@@ -315,14 +481,15 @@ convert4r4: Makefile ../src/convert4r4.src
 # are thrown away by the linker.
 
 OBJ_WITH_CONTENT_SCAN = malware.o mime.o regex.o spam.o spool_mbox.o
-OBJ_EXPERIMENTAL = bmi_spam.o \
-                               dane.o \
-                               dcc.o \
-                               dmarc.o \
-                               imap_utf7.o \
-                               spf.o \
-                               srs.o \
-                               utf8.o
+OBJ_EXPERIMENTAL =     arc.o \
+                       bmi_spam.o \
+                       dane.o \
+                       dcc.o \
+                       dmarc.o \
+                       imap_utf7.o \
+                       spf.o \
+                       srs.o \
+                       utf8.o
 
 # Targets for final binaries; the main one has a build number which is
 # updated each time. We don't bother with that for the auxiliaries.
@@ -331,13 +498,13 @@ OBJ_LOOKUPS = lookups/lf_quote.o lookups/lf_check_file.o lookups/lf_sqlperform.o
 
 OBJ_EXIM = acl.o base64.o child.o crypt16.o daemon.o dbfn.o debug.o deliver.o \
         directory.o dns.o drtables.o enq.o exim.o expand.o filter.o \
-        filtertest.o globals.o dkim.o hash.o \
+        filtertest.o globals.o dkim.o dkim_transport.o hash.o \
         header.o host.o ip.o log.o lss.o match.o moan.o \
         os.o parse.o queue.o \
         rda.o readconf.o receive.o retry.o rewrite.o rfc2047.o \
         route.o search.o sieve.o smtp_in.o smtp_out.o spool_in.o spool_out.o \
         std-crypto.o store.o string.o tls.o tod.o transport.o tree.o verify.o \
-        environment.o \
+        environment.o macro.o \
         $(OBJ_LOOKUPS) \
         local_scan.o $(EXIM_PERL) $(OBJ_WITH_CONTENT_SCAN) \
         $(OBJ_EXPERIMENTAL)
@@ -452,7 +619,7 @@ OBJ_MONBIN = util-spool_in.o \
             util-store.o \
             util-string.o \
             util-queue.o \
-            tod.o \
+            util-tod.o \
             tree.o \
             $(MONBIN)
 
@@ -511,7 +678,7 @@ PHDRS = ../config.h \
 
 # Update Exim's version information and build the version object.
 
-version.h::
+version.h version.sh::
        @../scripts/reversion
 
 cnumber.h: version.h
@@ -557,7 +724,8 @@ exim_tidydb.o:   $(HDRS) exim_dbutil.c
 
 exim_dbmbuild.o: $(HDRS) exim_dbmbuild.c
        @echo "$(CC) exim_dbmbuild.c"
-       $(FE)$(CC) -c $(CFLAGS) $(INCLUDE) -o exim_dbmbuild.o exim_dbmbuild.c
+       $(FE)$(CC) -c $(CFLAGS) $(INCLUDE) -DCOMPILE_UTILITY \
+               -o exim_dbmbuild.o exim_dbmbuild.c
 
 # Utilities use special versions of some modules - typically with debugging
 # calls cut out.
@@ -578,6 +746,10 @@ util-queue.o:   $(HDRS) queue.c
        @echo "$(CC) -DCOMPILE_UTILITY queue.c"
        $(FE)$(CC) -c $(CFLAGS) $(INCLUDE) -DCOMPILE_UTILITY -o util-queue.o queue.c
 
+util-tod.o:   $(HDRS) tod.c
+       @echo "$(CC) -DCOMPILE_UTILITY tod.c"
+       $(FE)$(CC) -c $(CFLAGS) $(INCLUDE) -DCOMPILE_UTILITY -o util-tod.o tod.c
+
 util-os.o:       $(HDRS) os.c
        @echo "$(CC) -DCOMPILE_UTILITY os.c"
        $(FE)$(CC) -c $(CFLAGS) $(INCLUDE) \
@@ -602,7 +774,7 @@ crypt16.o:       $(HDRS) crypt16.c
 daemon.o:        $(HDRS) daemon.c
 dbfn.o:          $(HDRS) dbfn.c
 debug.o:         $(HDRS) debug.c
-deliver.o:       $(HDRS) deliver.c
+deliver.o:       $(HDRS) transports/smtp.h deliver.c
 directory.o:     $(HDRS) directory.c
 dns.o:           $(HDRS) dns.c
 enq.o:           $(HDRS) enq.c
@@ -647,6 +819,7 @@ transport.o:     $(HDRS) transport.c
 tree.o:          $(HDRS) tree.c
 verify.o:        $(HDRS) transports/smtp.h verify.c
 dkim.o:          $(HDRS) pdkim/pdkim.h dkim.c
+dkim_transport.o: $(HDRS) dkim_transport.c
 
 # Dependencies for WITH_CONTENT_SCAN modules
 
@@ -659,8 +832,9 @@ spool_mbox.o:    $(HDRS) spool_mbox.c
 
 # Dependencies for EXPERIMENTAL_* modules
 
+arc.o:         $(HDRS) pdkim/pdkim.h arc.c
 bmi_spam.o:    $(HDRS) bmi_spam.c
-dane.o:                $(HDRS) dane.c dane-gnu.c dane-openssl.c
+dane.o:                $(HDRS) dane.c dane-openssl.c
 dcc.o:         $(HDRS) dcc.h dcc.c
 dmarc.o:       $(HDRS) pdkim/pdkim.h dmarc.h dmarc.c
 imap_utf7.o:   $(HDRS) imap_utf7.c
index 1022abb..5a89478 100644 (file)
@@ -4,7 +4,7 @@ CHOWN_COMMAND=/usr/sbin/chown
 CHGRP_COMMAND=/usr/sbin/chgrp
 CHMOD_COMMAND=/bin/chmod
 
-CFLAGS=-O2 -Wall
+CFLAGS=-O2 -Wall -Wno-parentheses -Wno-self-assign -Wno-logical-op-parentheses
 
 LIBS=-lm
 
diff --git a/OS/os.c-FreeBSD b/OS/os.c-FreeBSD
new file mode 100644 (file)
index 0000000..1261b85
--- /dev/null
@@ -0,0 +1,24 @@
+/*************************************************
+*     Exim - an Internet mail transport agent    *
+*************************************************/
+
+/* Copyright (c) Jeremy Harris 1995 - 2018 */
+/* See the file NOTICE for conditions of use and distribution. */
+
+/* FreeBSD-specific code. This is concatenated onto the generic
+src/os.c file. */
+
+
+/*************
+* Sendfile   *
+*************/
+
+ssize_t
+os_sendfile(int out, int in, off_t * off, size_t cnt)
+{
+off_t written;
+return sendfile(in, out, *off, cnt, NULL, &written, 0) < 0
+  ? (ssize_t) -1 : (ssize_t) written;
+}
+
+/* End of os.c-Linux */
index 4bca776..59d81f8 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) University of Cambridge 1997 - 2016 */
+/* Copyright (c) University of Cambridge 1997 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 
 /* Linux-specific code. This is concatenated onto the generic
@@ -150,4 +150,16 @@ return yield;
 
 #endif  /* FIND_RUNNING_INTERFACES */
 
+
+/*************
+* Sendfile   *
+*************/
+#include <sys/sendfile.h>
+
+ssize_t
+os_sendfile(int out, int in, off_t * off, size_t cnt)
+{
+return sendfile(out, in, off, cnt);
+}
+
 /* End of os.c-Linux */
index f408740..7e3a67c 100644 (file)
@@ -7,8 +7,6 @@
 #define PAM_H_IN_PAM
 #define SIOCGIFCONF_GIVES_ADDR
 
-/* OSX 10.2 does not have poll.h, 10.3 does emulate it badly. */
-#define NO_POLL_H
 
 #define F_FREESP     O_TRUNC
 typedef struct flock flock_t;
@@ -17,7 +15,7 @@ typedef struct flock flock_t;
                                Consider reducing MAX_LOCALHOST_NUMBER */
 
 #ifndef        _BSD_SOCKLEN_T_
-#define _BSD_SOCKLEN_T_ int32_t                 /* socklen_t (duh) */
+# define _BSD_SOCKLEN_T_ int32_t                 /* socklen_t (duh) */
 #endif
 
 /* Settings for handling IP options. There's no netinet/ip_var.h. The IP
@@ -45,4 +43,16 @@ updating Exim to use the newer interface. */
 /* default is non-const */
 #define ICONV_ARG2_TYPE const char **
 
+/* seems arpa/nameser.h does not define this */
+#define NS_MAXMSG 65535
+
+/* There may be very many supplementary groups for the user. See notes
+in "man 2 getgroups". */
+#define _DARWIN_UNLIMITED_GETGROUPS
+#define EXIM_GROUPLIST_SIZE 64
+
+/* TCP Fast Open: Darwin uses a connectx() call
+rather than a modified sendto() */
+#define EXIM_TFO_CONNECTX
+
 /* End */
index bf43e0a..4f1c616 100644 (file)
@@ -1,4 +1,10 @@
 /* Exim: OS-specific C header file for FreeBSD */
+/* Copyright (c) University of Cambridge 1995 - 2018 */
+/* See the file NOTICE for conditions of use and distribution. */
+
+
+#include <sys/types.h>
+#include <sys/param.h>
 
 #define HAVE_BSD_GETLOADAVG
 #define HAVE_SETCLASSRESOURCES
@@ -8,6 +14,14 @@
 #define HAVE_SRANDOMDEV
 #define HAVE_ARC4RANDOM
 
+/* Applications should not call arc4random_stir() explicitly after
+ * FreeBSD r227520 (approximately 1000002).
+ * Set NOT_HAVE_ARC4RANDOM_STIR if the version released is past
+ * that point. */
+#if __FreeBSD_version >= 1000002
+# define NOT_HAVE_ARC4RANDOM_STIR
+#endif
+
 typedef struct flock flock_t;
 
 /* iconv arg2 type: libiconv in Ports uses "const char* * inbuf" and was
@@ -31,7 +45,32 @@ typedef struct flock flock_t;
 #if __FreeBSD__ >= 10
 # define LIBICONV_PLUG
 #endif
-/* for more specific version constraints, include <sys/param.h> and look at
- * __FreeBSD_version */
+/* for more specific version constraints, look at __FreeBSD_version
+ * from <sys/param.h> */
+
+/* When using DKIM, setting OS_SENDFILE can increase
+performance on outgoing mail a bit. */
+
+#define OS_SENDFILE
+extern ssize_t os_sendfile(int, int, off_t *, size_t);
+
+
+/*******************/
+
+/* TCP_FASTOPEN support.  There does not seems to be a
+MSG_FASTOPEN defined yet... */
+#define EXIM_TFO_PROBE
+
+#include <netinet/tcp.h>        /* for TCP_FASTOPEN */
+#include <sys/socket.h>         /* for MSG_FASTOPEN */
+#if defined(TCP_FASTOPEN) && !defined(MSG_FASTOPEN)
+# define MSG_FASTOPEN 0x20000000
+#endif
+
+/* for TCP state-variable values, for TFO logging */
+#include <netinet/tcp_fsm.h>
+#define TCP_SYN_RECV TCPS_SYN_RECEIVED
+
+/*******************/
 
 /* End */
index cc1cef9..63cf9ba 100644 (file)
@@ -1,10 +1,14 @@
 /* Exim: OS-specific C header file for Linux */
+/* Copyright (c) University of Cambridge 1995 - 2018 */
+/* See the file NOTICE for conditions of use and distribution. */
+
 
 /* Some old systems we've received bug-reports for have a <limits.h> which
 does not pull in <features.h>.  Best to just pull it in now and have done
 with the issue. */
 
 #include <features.h>
+#include <sys/types.h>
 
 
 #define CRYPT_H
@@ -15,12 +19,14 @@ with the issue. */
 #define NO_IP_VAR_H
 #define SIG_IGN_WORKS
 
-/* When using the DKIM, setting HAVE_LINUX_SENDFILE can increase
+/* When using DKIM, setting OS_SENDFILE can increase
 performance on outgoing mail a bit. Note: With older glibc versions
 this setting will conflict with the _FILE_OFFSET_BITS=64 setting
-defined as part of the Linux CFLAGS. */
+defined as part of the Linux CFLAGS.  As of 2017 those are declared
+to be too old to build by default. */
 
-/* #define HAVE_LINUX_SENDFILE */
+#define OS_SENDFILE
+extern ssize_t os_sendfile(int, int, off_t *, size_t);
 
 #define F_FREESP     O_TRUNC
 typedef struct flock flock_t;
@@ -29,8 +35,8 @@ typedef struct flock flock_t;
 #define OS_STRSIGNAL
 
 #if defined(__linux__) || defined(__FreeBSD_kernel__) || defined(__NetBSD_kernel__)
-#define SIOCGIFCONF_GIVES_ADDR
-#define HAVE_SYS_MOUNT_H
+# define SIOCGIFCONF_GIVES_ADDR
+# define HAVE_SYS_MOUNT_H
 #endif
 
 #if defined(__linux__)
@@ -69,11 +75,17 @@ then change the 0 to 1 in the next block. */
 # define EXIM_HAVE_OPENAT
 #endif
 
+/* TCP Fast Open support */
+
 #include <netinet/tcp.h>       /* for TCP_FASTOPEN */
 #include <sys/socket.h>                /* for MSG_FASTOPEN */
 #if defined(TCP_FASTOPEN) && !defined(MSG_FASTOPEN)
 # define MSG_FASTOPEN 0x20000000
 #endif
+#define EXIM_HAVE_TCPI_UNACKED
+#ifndef TCPI_OPT_SYN_DATA
+# define TCPI_OPT_SYN_DATA 32
+#endif
 
 
 /* End */
index 5d55a96..dde779f 100644 (file)
@@ -1,4 +1,7 @@
 /* Exim: OS-specific C header file for OpenBSD */
+/* Copyright (c) University of Cambridge 1995 - 2018 */
+/* See the file NOTICE for conditions of use and distribution. */
+
 
 #define HAVE_BSD_GETLOADAVG
 #define HAVE_MMAP
@@ -10,7 +13,7 @@
    if the version released is past that point. */
 #include <sys/param.h>
 #if OpenBSD >= 201405
-#define NOT_HAVE_ARC4RANDOM_STIR
+# define NOT_HAVE_ARC4RANDOM_STIR
 #endif
 
 typedef struct flock flock_t;
@@ -27,4 +30,31 @@ typedef struct __res_state *res_state;
 # define EPROTO 71
 #endif
 
+/* We need to force this; the automatic in buildconfig.c gets %ld */
+#ifdef OFF_T_FMT
+# undef OFF_T_FMT
+# undef LONGLONG_T
+#endif
+#define OFF_T_FMT "%lld"
+#define LONGLONG_T long long int
+
+#ifdef PID_T_FMT
+# undef PID_T_FMT
+#endif
+#define PID_T_FMT "%d"
+
+#ifdef INO_T_FMT
+# undef INO_T_FMT
+#endif
+#define INO_T_FMT "%llu"
+
+#ifdef TIME_T_FMT
+# undef TIME_T_FMT
+#endif
+#define TIME_T_FMT "%lld"
+
+/* seems arpa/nameser.h does not define this.
+Space-constrained devices could use much smaller; a few k. */
+#define NS_MAXMSG 65535
+
 /* End */
similarity index 100%
rename from OS/Makefile-AIX
rename to OS/unsupported/Makefile-AIX
similarity index 100%
rename from OS/Makefile-GNU
rename to OS/unsupported/Makefile-GNU
similarity index 100%
rename from OS/Makefile-QNX
rename to OS/unsupported/Makefile-QNX
similarity index 100%
rename from OS/Makefile-SCO
rename to OS/unsupported/Makefile-SCO
similarity index 100%
rename from OS/Makefile-USG
rename to OS/unsupported/Makefile-USG
diff --git a/OS/unsupported/README b/OS/unsupported/README
new file mode 100644 (file)
index 0000000..73790ae
--- /dev/null
@@ -0,0 +1,14 @@
+Files in this directory are historical.  They may have worked once but the
+project has no assurance that they still do.
+
+If you need to use one for a build for your platform, copy it up one directory
+level first.  We'll reinstate it given a current version and evidence of testing.
+For the latter please look into the project regression testsuite, and please
+consider operating a buildfarm animal in the long term (it runs the testsuite).
+
+The buildfarm status page is:
+  https://buildfarm.exim.org/cgi-bin/show_status.pl
+There's a "register" link there with a link to how-to instructions.  Please do
+monitor the status of your animal on an ongoing basis.  The exim-users or
+exim-dev mailinglist are good places to ask for help and to discuss any regressions
+seen in test runs.  There is also the #exim IRC channel on Freenode.
similarity index 86%
rename from OS/os.c-BSDI
rename to OS/unsupported/os.c-BSDI
index 3cef2ac..03a7a1c 100644 (file)
@@ -12,8 +12,8 @@ src/os.c file. */
 #define OS_UNSETENV
 
 int
-os_unsetenv(const unsigned char * name)
+os_unsetenv(const uschar * name)
 {
-unsetenv((char *)name);
+unsetenv(CS name);
 return 0;
 }
similarity index 100%
rename from OS/os.c-GNU
rename to OS/unsupported/os.c-GNU
similarity index 100%
rename from OS/os.c-HI-OSF
rename to OS/unsupported/os.c-HI-OSF
similarity index 100%
rename from OS/os.c-HP-UX
rename to OS/unsupported/os.c-HP-UX
similarity index 99%
rename from OS/os.c-IRIX
rename to OS/unsupported/os.c-IRIX
index 487091a..1f6b0e1 100644 (file)
@@ -82,7 +82,7 @@ for (nextaddr = buf; nextaddr < lim; nextaddr += ifm->ifm_msglen)
 
     if ((ifam->ifam_addrs & RTA_IFA) != 0)
       {
-      char *cp = (char *)mask;
+      char *cp = CS mask;
       struct sockaddr *sa = (struct sockaddr *)mask;
       ADVANCE(cp, sa);
       addr = (struct sockaddr_in *)cp;
similarity index 99%
rename from OS/os.c-IRIX6
rename to OS/unsupported/os.c-IRIX6
index 487091a..1f6b0e1 100644 (file)
@@ -82,7 +82,7 @@ for (nextaddr = buf; nextaddr < lim; nextaddr += ifm->ifm_msglen)
 
     if ((ifam->ifam_addrs & RTA_IFA) != 0)
       {
-      char *cp = (char *)mask;
+      char *cp = CS mask;
       struct sockaddr *sa = (struct sockaddr *)mask;
       ADVANCE(cp, sa);
       addr = (struct sockaddr_in *)cp;
similarity index 99%
rename from OS/os.c-IRIX632
rename to OS/unsupported/os.c-IRIX632
index 487091a..1f6b0e1 100644 (file)
@@ -82,7 +82,7 @@ for (nextaddr = buf; nextaddr < lim; nextaddr += ifm->ifm_msglen)
 
     if ((ifam->ifam_addrs & RTA_IFA) != 0)
       {
-      char *cp = (char *)mask;
+      char *cp = CS mask;
       struct sockaddr *sa = (struct sockaddr *)mask;
       ADVANCE(cp, sa);
       addr = (struct sockaddr_in *)cp;
similarity index 99%
rename from OS/os.c-IRIX65
rename to OS/unsupported/os.c-IRIX65
index 487091a..1f6b0e1 100644 (file)
@@ -82,7 +82,7 @@ for (nextaddr = buf; nextaddr < lim; nextaddr += ifm->ifm_msglen)
 
     if ((ifam->ifam_addrs & RTA_IFA) != 0)
       {
-      char *cp = (char *)mask;
+      char *cp = CS mask;
       struct sockaddr *sa = (struct sockaddr *)mask;
       ADVANCE(cp, sa);
       addr = (struct sockaddr_in *)cp;
similarity index 100%
rename from OS/os.c-OSF1
rename to OS/unsupported/os.c-OSF1
similarity index 100%
rename from OS/os.c-cygwin
rename to OS/unsupported/os.c-cygwin
similarity index 100%
rename from OS/os.h-AIX
rename to OS/unsupported/os.h-AIX
similarity index 100%
rename from OS/os.h-BSDI
rename to OS/unsupported/os.h-BSDI
similarity index 100%
rename from OS/os.h-DGUX
rename to OS/unsupported/os.h-DGUX
similarity index 100%
rename from OS/os.h-GNU
rename to OS/unsupported/os.h-GNU
similarity index 100%
rename from OS/os.h-HI-OSF
rename to OS/unsupported/os.h-HI-OSF
similarity index 100%
rename from OS/os.h-HI-UX
rename to OS/unsupported/os.h-HI-UX
similarity index 100%
rename from OS/os.h-HP-UX
rename to OS/unsupported/os.h-HP-UX
similarity index 100%
rename from OS/os.h-HP-UX-9
rename to OS/unsupported/os.h-HP-UX-9
similarity index 100%
rename from OS/os.h-IRIX
rename to OS/unsupported/os.h-IRIX
similarity index 100%
rename from OS/os.h-IRIX6
rename to OS/unsupported/os.h-IRIX6
similarity index 100%
rename from OS/os.h-IRIX632
rename to OS/unsupported/os.h-IRIX632
similarity index 100%
rename from OS/os.h-IRIX65
rename to OS/unsupported/os.h-IRIX65
similarity index 100%
rename from OS/os.h-NetBSD
rename to OS/unsupported/os.h-NetBSD
similarity index 100%
rename from OS/os.h-OSF1
rename to OS/unsupported/os.h-OSF1
similarity index 100%
rename from OS/os.h-QNX
rename to OS/unsupported/os.h-QNX
similarity index 100%
rename from OS/os.h-SCO
rename to OS/unsupported/os.h-SCO
similarity index 100%
rename from OS/os.h-SCO_SV
rename to OS/unsupported/os.h-SCO_SV
similarity index 100%
rename from OS/os.h-SunOS4
rename to OS/unsupported/os.h-SunOS4
similarity index 100%
rename from OS/os.h-ULTRIX
rename to OS/unsupported/os.h-ULTRIX
similarity index 100%
rename from OS/os.h-UNIX_SV
rename to OS/unsupported/os.h-UNIX_SV
similarity index 100%
rename from OS/os.h-USG
rename to OS/unsupported/os.h-USG
similarity index 100%
rename from OS/os.h-cygwin
rename to OS/unsupported/os.h-cygwin
similarity index 100%
rename from OS/os.h-mips
rename to OS/unsupported/os.h-mips
diff --git a/README b/README
index 652cee6..225295e 100644 (file)
--- a/README
+++ b/README
@@ -1,7 +1,7 @@
 THE EXIM MAIL TRANSFER AGENT VERSION 4
 --------------------------------------
 
-Copyright (c) 1995 - 2012 University of Cambridge.
+Copyright (c) 1995 - 2018 University of Cambridge.
 See the file NOTICE for conditions of use and distribution.
 
 There is a book about Exim by Philip Hazel called "The Exim SMTP Mail Server",
@@ -14,7 +14,7 @@ from Exim 3, though the basic structure and philosophy remains the same. The
 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.
 
 A copy of the Exim FAQ should be available from the same source that you used
index 05b3d9d..b619f5e 100644 (file)
@@ -26,6 +26,35 @@ The rest of this document contains information about changes in 4.xx releases
 that might affect a running system.
 
 
+Exim version 4.92
+-----------------
+
+ * Exim used to manually follow CNAME chains, to a limited depth.  In this
+   day-and-age we expect the resolver to be doing this for us, so the loop
+   is limited to one retry unless the (new) config option dns_cname_loops
+   is changed.
+
+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
 -----------------
 
@@ -63,7 +92,7 @@ Exim version 4.83
 -----------------
 
  * SPF condition results renamed "permerror" and "temperror".  The old
-   names are still accepted for back-compatability, for this release.
+   names are still accepted for back-compatibility, for this release.
 
  * TLS details are now logged on rejects, subject to log selectors.
 
@@ -104,7 +133,7 @@ Exim version 4.80
    upgrading, then lock the message, replace the new-lines that should be part
    of the -tls_peerdn line with the two-character sequence \n and then unlock
    the message.  No tool has been provided as we believe this is a rare
-   occurence.
+   occurrence.
 
  * For OpenSSL, SSLv2 is now disabled by default.  (GnuTLS does not support
    SSLv2).  RFC 6176 prohibits SSLv2 and some informal surveys suggest no
@@ -317,7 +346,7 @@ Exim version 4.70
 -----------------
 
 1. Experimental Yahoo! Domainkeys support has been dropped in this release.
-It has been superceded by a native implementation of its successor DKIM.
+It has been superseded by a native implementation of its successor DKIM.
 
 2. Up to version 4.69, Exim came with an embedded version of the PCRE library.
 As of 4.70, this is no longer the case. To compile Exim, you will need PCRE
index 136ca61..b2c7b4e 100644 (file)
@@ -1,6 +1,6 @@
---- EDITME.exim4-light 2017-03-04 11:15:58.309895066 +0100
-+++ EDITME.exim4-heavy 2017-03-04 11:17:12.616522005 +0100
-@@ -212,7 +212,7 @@
+--- EDITME.exim4-light 2019-04-16 15:54:51.009790678 +0000
++++ EDITME.exim4-heavy 2019-04-16 15:54:44.177917231 +0000
+@@ -217,7 +217,7 @@
  
  # This one is very special-purpose, so is not included by default.
  
@@ -9,7 +9,7 @@
  
  
  #------------------------------------------------------------------------------
-@@ -244,7 +244,7 @@
+@@ -249,7 +249,7 @@
  
  SUPPORT_MAILDIR=yes
  SUPPORT_MAILSTORE=yes
@@ -18,7 +18,7 @@
  
  
  #------------------------------------------------------------------------------
-@@ -305,15 +305,15 @@
+@@ -310,16 +310,16 @@
  LOOKUP_CDB=yes
  LOOKUP_DSEARCH=yes
  # LOOKUP_IBASE=yes
@@ -26,6 +26,7 @@
 -# LOOKUP_MYSQL=yes
 +LOOKUP_LDAP=yes
 +LOOKUP_MYSQL=yes
+ # LOOKUP_MYSQL_PC=mariadb
  LOOKUP_NIS=yes
  # LOOKUP_NISPLUS=yes
  # LOOKUP_ORACLE=yes
@@ -38,7 +39,7 @@
  # LOOKUP_SQLITE_PC=sqlite3
  # LOOKUP_WHOSON=yes
  
-@@ -334,7 +334,7 @@
+@@ -340,7 +340,7 @@
  # with Solaris 7 onwards. Uncomment whichever of these you are using.
  
  # LDAP_LIB_TYPE=OPENLDAP1
@@ -47,7 +48,7 @@
  # LDAP_LIB_TYPE=NETSCAPE
  # LDAP_LIB_TYPE=SOLARIS
  
-@@ -373,6 +373,9 @@
+@@ -385,6 +385,9 @@
  # LOOKUP_LIBS=-L/usr/local/lib -lldap -llber -lmysqlclient -lpq -lgds -lsqlite3
  
  
@@ -57,7 +58,7 @@
  #------------------------------------------------------------------------------
  # Compiling the Exim monitor: If you want to compile the Exim monitor, a
  # program that requires an X11 display, then EXIM_MONITOR should be set to the
-@@ -381,7 +384,7 @@
+@@ -393,7 +396,7 @@
  # files are defaulted in the OS/Makefile-Default file, but can be overridden in
  # local OS-specific make files.
  
  
  
  #------------------------------------------------------------------------------
-@@ -391,7 +394,7 @@
+@@ -403,7 +406,7 @@
  # and the MIME ACL. Please read the documentation to learn more about these
  # features.
  
 -# WITH_CONTENT_SCAN=yes
 +WITH_CONTENT_SCAN=yes
  
- #------------------------------------------------------------------------------
- # If you're using ClamAV and are backporting fixes to an old version, instead
-@@ -627,16 +630,16 @@
+ # If you have content scanning you may wish to only include some of the scanner
+ # interfaces.  Uncomment any of these lines to remove that code.
+@@ -645,16 +648,16 @@
  # configuration to make use of the mechanism(s) selected.
  
  AUTH_CRAM_MD5=yes
@@ -96,7 +97,7 @@
  
  # Heimdal through 1.5 required pkg-config 'heimdal-gssapi'; Heimdal 7.1
  # requires multiple pkg-config files to work with Exim, so the second example
-@@ -649,7 +652,7 @@
+@@ -667,7 +670,7 @@
  # Similarly for GNU SASL, unless pkg-config is used via AUTH_GSASL_PC.
  # Ditto for AUTH_HEIMDAL_GSSAPI(_PC).
  
  # AUTH_LIBS=-lgsasl
  # AUTH_LIBS=-lgssapi -lheimntlm -lkrb5 -lhx509 -lcom_err -lhcrypto -lasn1 -lwind -lroken -lcrypt
  
-@@ -923,7 +926,7 @@
+@@ -945,7 +948,7 @@
  # (version 5.004 or later) installed, set EXIM_PERL to perl.o. Using embedded
  # Perl costs quite a lot of resources. Only do this if you really need it.
  
  
  
  #------------------------------------------------------------------------------
-@@ -933,7 +936,7 @@
+@@ -955,7 +958,7 @@
  # that the local_scan API is made available by the linker. You may also need
  # to add -ldl to EXTRALIBS so that dlopen() is available to Exim.
  
  
  
  #------------------------------------------------------------------------------
-@@ -943,11 +946,11 @@
+@@ -965,11 +968,11 @@
  # support, which is intended for use in conjunction with the SMTP AUTH
  # facilities, is included only when requested by the following setting:
  
  
  
  #------------------------------------------------------------------------------
-@@ -961,7 +964,7 @@
+@@ -983,7 +986,7 @@
  # If you may want to use inbound (server-side) proxying, using Proxy Protocol,
  # uncomment the line below.
  
  
  
  #------------------------------------------------------------------------------
-@@ -1299,7 +1302,7 @@
+@@ -1338,7 +1341,7 @@
  # local part) can be increased by changing this value. It should be set to
  # a multiple of 16.
  
index 4b492cd..dc04331 100644 (file)
@@ -1,5 +1,5 @@
---- src/EDITME 2017-02-12 14:19:37.000000000 +0000
-+++ EDITME.exim4-light 2017-02-12 14:22:15.062382937 +0000
+--- src/EDITME 2019-04-16 15:52:53.000000000 +0000
++++ EDITME.exim4-light 2019-04-16 15:54:51.009790678 +0000
 @@ -98,7 +98,7 @@
  # /usr/local/sbin. The installation script will try to create this directory,
  # and any superior directories, if they do not exist.
@@ -44,7 +44,7 @@
  
  
  
-@@ -232,7 +233,7 @@
+@@ -237,7 +238,7 @@
  # This one is special-purpose, and commonly not required, so it is not
  # included by default.
  
@@ -53,7 +53,7 @@
  
  
  #------------------------------------------------------------------------------
-@@ -241,8 +242,8 @@
+@@ -246,8 +247,8 @@
  # MBX, is included only when requested. If you do not know what this is about,
  # leave these settings commented out.
  
@@ -64,7 +64,7 @@
  # SUPPORT_MBX=yes
  
  
-@@ -301,15 +302,15 @@
+@@ -306,16 +307,16 @@
  LOOKUP_LSEARCH=yes
  LOOKUP_DNSDB=yes
  
@@ -75,6 +75,7 @@
  # LOOKUP_IBASE=yes
  # LOOKUP_LDAP=yes
  # LOOKUP_MYSQL=yes
+ # LOOKUP_MYSQL_PC=mariadb
 -# LOOKUP_NIS=yes
 +LOOKUP_NIS=yes
  # LOOKUP_NISPLUS=yes
  # LOOKUP_PGSQL=yes
  # LOOKUP_REDIS=yes
  # LOOKUP_SQLITE=yes
-@@ -577,7 +578,7 @@
+@@ -367,7 +368,7 @@
+ # Uncomment the following line to add DANE support
+ # Note: Enabling this unconditionally overrides DISABLE_DNSSEC
+ # For DANE under GnuTLS we need an additional library.  See TLS_LIBS below.
+-# SUPPORT_DANE=yes
++SUPPORT_DANE=yes
+ #------------------------------------------------------------------------------
+ # Additional libraries and include directories may be required for some
+@@ -595,7 +596,7 @@
  # CONFIGURE_OWNER setting, to specify a configuration file which is listed in
  # the TRUSTED_CONFIG_LIST file, then root privileges are not dropped by Exim.
  
  
  
  #------------------------------------------------------------------------------
-@@ -613,6 +614,9 @@
+@@ -631,6 +632,9 @@
  
  # WHITELIST_D_MACROS=TLS:SPOOL
  
  #------------------------------------------------------------------------------
  # Exim has support for the AUTH (authentication) extension of the SMTP
  # protocol, as defined by RFC 2554. If you don't know what SMTP authentication
-@@ -622,7 +626,7 @@
+@@ -640,7 +644,7 @@
  # included in the Exim binary. You will then need to set up the run time
  # configuration to make use of the mechanism(s) selected.
  
  # AUTH_CYRUS_SASL=yes
  # AUTH_DOVECOT=yes
  # AUTH_GSASL=yes
-@@ -630,7 +634,7 @@
+@@ -648,7 +652,7 @@
  # AUTH_HEIMDAL_GSSAPI=yes
  # AUTH_HEIMDAL_GSSAPI_PC=heimdal-gssapi
  # AUTH_HEIMDAL_GSSAPI_PC=heimdal-gssapi heimdal-krb5
  # AUTH_SPA=yes
  # AUTH_TLS=yes
  
-@@ -656,7 +660,7 @@
+@@ -674,7 +678,7 @@
  # one that is set in the headers_charset option. The default setting is
  # defined by this setting:
  
  
  # If you are going to make use of $header_xxx expansions in your configuration
  # file, or if your users are going to use them in filter files, and the normal
-@@ -745,7 +749,7 @@
+@@ -763,7 +767,7 @@
  # leave these settings commented out.
  
  # This setting is required for any TLS support (either OpenSSL or GnuTLS)
  
  # Uncomment one of these settings if you are using OpenSSL; pkg-config vs not
  # USE_OPENSSL_PC=openssl
-@@ -753,9 +757,9 @@
+@@ -771,9 +775,9 @@
  
  # Uncomment the first and either the second or the third of these if you
  # are using GnuTLS.  If you have pkg-config, then the second, else the third.
  
  # If using GnuTLS older than 2.10 and using pkg-config then note that Exim's
  # build process will require libgcrypt-config to exist in your $PATH.  A
-@@ -847,6 +851,7 @@
+@@ -809,7 +813,7 @@
+ # TLS_LIBS=-L/opt/gnu/lib -lgnutls -ltasn1 -lgcrypt
+ # For DANE under GnuTLS we need an additional library.
+-# TLS_LIBS += -lgnutls-dane
++TLS_LIBS += -lgnutls-dane
+ # TLS_LIBS is included only on the command for linking Exim itself, not on any
+ # auxiliary programs. If the include files are not in a standard place, you can
+@@ -830,6 +834,7 @@
+ # description of the API to this function, see the Exim specification.
+ DLOPEN_LOCAL_SCAN=yes
++HAVE_LOCAL_SCAN=yes
+ # If you set DLOPEN_LOCAL_SCAN, then you need to include -rdynamic in the
+ # linker flags.  Without it, the loaded .so won't be able to access any
+@@ -868,6 +873,7 @@
  # to form the final file names. Some installations may want something like this:
  
  # LOG_FILE_PATH=/var/log/exim_%slog
  
  # which results in files with names /var/log/exim_mainlog, etc. The directory
  # in which the log files are placed must exist; Exim does not try to create
-@@ -895,7 +900,7 @@
+@@ -916,7 +922,7 @@
  # files. Both the name of the command and the suffix that it adds to files
  # need to be defined here. See also the EXICYCLOG_MAX configuration.
  
  COMPRESS_SUFFIX=gz
  
  
-@@ -910,7 +915,7 @@
+@@ -931,7 +937,7 @@
  # ZCAT_COMMAND=zcat
  #
  # Or specify the full pathname:
  
  #------------------------------------------------------------------------------
  # Compiling in support for embedded Perl: If you want to be able to
-@@ -942,6 +947,7 @@
+@@ -963,6 +969,7 @@
  
  # You probably need to add -lpam to EXTRALIBS, and in some releases of
  # GNU/Linux -ldl is also needed.
  
  
  #------------------------------------------------------------------------------
-@@ -950,7 +956,7 @@
+@@ -971,7 +978,7 @@
  # If you may want to use outbound (client-side) proxying, using Socks5,
  # uncomment the line below.
  
  
  # If you may want to use inbound (server-side) proxying, using Proxy Protocol,
  # uncomment the line below.
-@@ -1038,6 +1044,8 @@
+@@ -1069,6 +1076,8 @@
  
  # CYRUS_SASLAUTHD_SOCKET=/var/state/saslauthd/mux
  
  
  #------------------------------------------------------------------------------
  # TCP wrappers: If you want to use tcpwrappers from within Exim, uncomment
-@@ -1343,6 +1351,7 @@
+@@ -1381,6 +1390,7 @@
  # file can be specified here. Some installations may want something like this:
  
  # PID_FILE_PATH=/var/lock/exim.pid
  
  # If PID_FILE_PATH is not defined, Exim writes a file in its spool directory
  # using the name "exim-daemon.pid".
-@@ -1376,6 +1385,7 @@
+@@ -1414,6 +1424,7 @@
  # messages become "invisible" to the normal management tools.
  
  # SUPPORT_MOVE_FROZEN_MESSAGES=yes
  
  
  #------------------------------------------------------------------------------
-@@ -1414,3 +1424,6 @@
+@@ -1452,3 +1463,6 @@
  # ENABLE_DISABLE_FSYNC=yes
  
  # End of EDITME for Exim 4.
index 672f641..7ea2784 100644 (file)
@@ -1,5 +1,5 @@
---- exim_monitor/EDITME        2017-02-12 00:58:50.000000000 +0000
-+++ EDITME.eximon      2017-02-12 14:19:40.765243359 +0000
+--- exim_monitor/EDITME        2018-03-15 20:22:06.000000000 +0000
++++ EDITME.eximon      2018-03-16 18:27:06.609171034 +0000
 @@ -1,6 +1,7 @@
  ##################################################
  #                The Exim Monitor                #
index a00d7b6..0dc9836 100644 (file)
@@ -1,6 +1,6 @@
---- EDITME.exim4-light 2012-05-29 19:16:05.000000000 +0200
-+++ EDITME.exim4-light 2012-05-29 19:17:05.000000000 +0200
-@@ -697,13 +697,13 @@ SUPPORT_TLS=yes
+--- EDITME.exim4-light 2017-10-28 08:02:20.930695089 +0200
++++ EDITME.exim4-light 2017-10-28 08:03:25.433584564 +0200
+@@ -760,13 +760,13 @@ SUPPORT_TLS=yes
  
  # Uncomment one of these settings if you are using OpenSSL; pkg-config vs not
  # USE_OPENSSL_PC=openssl
@@ -15,5 +15,5 @@
 -TLS_LIBS=-lgnutls
 +# TLS_LIBS=-lgnutls
  
- # If you are running Exim as a server, note that just building it with TLS
- # support is not all you need to do. You also need to set up a suitable
+ # If using GnuTLS older than 2.10 and using pkg-config then note that Exim's
+ # build process will require libgcrypt-config to exist in your $PATH.  A
index 8fa7422..77b4a37 100644 (file)
              lead you to the page.
             </simpara>
          </listitem>
-         <listitem>
-           <simpara>
-              The Debian Exim 4 packages have their own
-             <ulink url="http://pkg-exim4.alioth.debian.org">
-               Home Page
-             </ulink> which also links to a User FAQ.
-           </simpara>
-          </listitem>
          <listitem>
            <para>
              The very extensive Upstream documentation is shipped
        extremely flexible, allowing you to get exactly the amount of
        control you need for the job at hand.
       </para>
-      <para>
-       The <ulink url="http://pkg-exim4.alioth.debian.org"
-         type="http">development web page</ulink> contains a lot of
-       useful links and other information. The subversion repository
-       of the Debian package is available for public read-only access
-       and is linked from the development web page.
-      </para>
       <section> <title>Feature Sets in the daemon packages</title>
        <para>
          To use Exim 4, you need at least the following packages:
@@ -1731,6 +1716,46 @@ commands        rmail rnews rsmtp
        </section>
       </section>
     </section>
+    <section> <title>Notes on running SpamAssassin at SMTP time</title>
+       <para>
+         Exim can run
+         <ulink url="https://spamassassin.apache.org/">
+         SpamAssassin</ulink> while receiving a message by SMTP which
+         allows one to avoid acceptance of spam messages. The Debian
+         configuration contains some example code for running SpamAssassin,
+         but like all filtering this needs to be handled carefully.
+       </para>
+       <para>
+         SpamAssassin's default report should not be used in a add_header
+         statement since it contains empty lines. (This triggers e.g.
+         Amavis' warning "BAD HEADER SECTION, Improper folded header field
+         made up entirely of whitespace".) This is a safe, terse alternative:
+         <programlisting>
+            clear_report_template
+            report (_SCORE_ / _REQD_ requ) _TESTSSCORES(,)_ autolearn=_AUTOLEARN_
+         </programlisting>
+       </para>
+       <para>
+         Rejecting spam messages: Do not reject spam-messages received on
+         (non-spam) mailing lists, this can/will cause auto-unsubscription.
+         This also applies to messages received via forwarding services
+         (e.g. @debian.org addresses). If theses messages are rejected the
+         forwarding services will need to send a bounce address to the
+         spammer and will probably disable the forwarding if it happens all
+         the time. You will need to have some kind of whitelist to exclude
+         these hosts.
+       </para>
+       <para>
+         Security considerations: By default <command>spamd</command>
+         runs as root and changes uid/gid to the requested user to run
+         SpamAssassin. The example uses SpamAssassin default non-privileged
+         user (nobody) which prevents use of Bayesian filtering since this
+         requires persistent storage. You might want to setup a dedicated
+         user for exim spam scanning and use that one, either for a separate
+         SpamAssassin user profile or to run SpamAssassin as non-privileged
+         user.
+       </para>
+    </section>
   </section>
 
   <section> <title>Updating from Exim 3</title>
diff --git a/debian/README.source b/debian/README.source
deleted file mode 100644 (file)
index 432e14f..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-Packaging of upstream snapshots and GIT checkout.
-===========================
-Upstream keeps code and documentation in different CVS modules, which is
-why development snapshots do not contain any documentation (including a
-changelog). Since this does not make packagable software these parts have
-been copied over from exim-doc:
-
-mkdir doc/
-cp ~/GIT/exim-doc/doc-txt/* doc/
-cp ~/GIT/exim-doc/doc-docbook/{exim.8,spec.txt,filter.txt} doc/
-
-
-The latter files are built from git with
-
-make exim.8 spec.txt filter.txt
-
-which requires installation of xmlto xfpt docbook-xsl w3m
-plus this patch:
-
-diff --git a/doc-docbook/MyStyle-txt-html.xsl b/doc-docbook/MyStyle-txt-html.xsl
-index 284a99d..9a59c58 100644
---- a/doc-docbook/MyStyle-txt-html.xsl
-+++ b/doc-docbook/MyStyle-txt-html.xsl
-@@ -7,7 +7,7 @@ HTML output, and then imports my common stylesheet for HTML output. Then it
- adds an instruction to use "(c)" for copyright rather than the Unicode
- character. -->
--<xsl:import href="/usr/share/sgml/docbook/xsl-stylesheets-1.70.1/xhtml/docbook.xsl"/>
-+<xsl:import href="/usr/share/xml/docbook/stylesheet/nwalsh/xhtml/docbook.xsl"/>
- <xsl:import href="MyStyle-html.xsl"/>
- <xsl:template name="dingbat.characters">
index 0b7ede0..740f52e 100644 (file)
-exim4 (4.89-2+deb9u6~hcoop11) unstable; urgency=medium
+exim4 (4.92-8+deb10u3) buster-security; urgency=high
 
-  * New upstream security release
+  * 78_02-Fix-buffer-overflow-in-string_vformat.-Bug-2449.patch:
+    Fix buffer overflow in string_vformat.
 
- -- Clinton Ebadi <clinton@unknownlamer.org>  Fri, 06 Sep 2019 14:23:08 -0400
+ -- Andreas Metzler <ametzler@debian.org>  Fri, 27 Sep 2019 18:09:35 +0200
 
-exim4 (4.89-2+deb9u6) stretch-security; urgency=high
+exim4 (4.92-8+deb10u2) buster-security; urgency=high
 
-  * 85_01-string.c-do-not-interpret-before-0-CVE-2019-15846.patch Fix SNI
+  * 78_01-string.c-do-not-interpret-before-0-CVE-2019-15846.patch Fix SNI
     related buffer overflow. CVE-2019-15846
 
- -- Andreas Metzler <ametzler@debian.org>  Tue, 03 Sep 2019 20:01:38 +0200
+ -- Andreas Metzler <ametzler@debian.org>  Tue, 03 Sep 2019 19:51:11 +0200
 
-exim4 (4.89-2+deb9u5) stretch-security; urgency=high
+exim4 (4.92-8+deb10u1) buster-security; urgency=high
 
   * Fix remote command execution vulnerability related to
     "${sort}"-expansion. CVE-2019-13917 OVE-20190718-0006
 
- -- Andreas Metzler <ametzler@debian.org>  Sat, 20 Jul 2019 13:32:35 +0200
+ -- Andreas Metzler <ametzler@debian.org>  Sat, 20 Jul 2019 13:35:58 +0200
 
-exim4 (4.89-2+deb9u4~hcoop10) unstable; urgency=medium
+exim4 (4.92-8) unstable; urgency=low
 
-  * Rebuild on 4.89-2+deb9u4
+  * Pulled from exim-4.92+fixes branch:
+    + 75_11-GnuTLS-fix-tls_out_ocsp-under-hosts_request_ocsp.patch
+      Fix expansion of $tls_out_ocsp under hosts_request_ocsp.
+    + 75_12-GnuTLS-fix-the-advertising-of-acceptable-certs-by-th.patch
+      When tls_verify_certificates was set to a directory instead of a file
+      exim/GnuTLS would still send out the list of accepted certificates,
+      This did not match documented behavior.
+    + 75_13-Use-dsn_from-for-success-DSN-messages.-Bug-2404.patch
+      The dsn_from option was not used for DSN success messages.
+  * Pulled from upstream GIT master:
+    + 75_14-Fix-smtp-response-timeout.patch
+      Fix the timeout on smtp response to apply to the whole response instead
+      of resetting for every byte received.
+    + 75_15-Fix-detection-of-32b-platform-at-build-time.-Bug-240.patch
+      https://bugs.exim.org/show_bug.cgi?id=2405
+      ${eval } was broken on 32bit archs.
 
- -- Clinton Ebadi <clinton@unknownlamer.org>  Thu, 06 Jun 2019 19:35:28 -0400
+ -- Andreas Metzler <ametzler@debian.org>  Sat, 08 Jun 2019 17:37:43 +0200
 
-exim4 (4.89-2+deb9u4) stretch-security; urgency=high
+exim4 (4.92-7) unstable; urgency=medium
 
-  * Non-maintainer upload by the Security Team.
-  * Fix remote command execution vulnerability (CVE-2019-10149)
+  * Upload to unstable.
 
- -- Salvatore Bonaccorso <carnil@debian.org>  Tue, 28 May 2019 22:13:55 +0200
+ -- Andreas Metzler <ametzler@debian.org>  Tue, 07 May 2019 19:44:23 +0200
 
-exim4 (4.89-2+deb9u3) stretch-security; urgency=high
+exim4 (4.92-6) experimental; urgency=medium
 
-  * Non-maintainer upload by the Security Team.
-  * Fix base64d() buffer size (CVE-2018-6789) (Closes: #890000)
+  * Revert 90_localscan_dlopen.dpatch removal to give Magnus some chance for
+    debugging sa-exim.
+  * Set HAVE_LOCAL_SCAN=yes in EDITME.
+  * Upload to experimental.
 
- -- Salvatore Bonaccorso <carnil@debian.org>  Sat, 10 Feb 2018 09:26:05 +0100
+ -- Andreas Metzler <ametzler@debian.org>  Tue, 16 Apr 2019 17:58:20 +0200
 
-exim4 (4.89-2+deb9u2) stretch-security; urgency=high
+exim4 (4.92-5) unstable; urgency=medium
 
-  * Non-maintainer upload by the Security Team.
-  * Avoid release of store if there have been later allocations
-    (CVE-2017-16943) (Closes: #882648)
-  * Chunking: do not treat the first lonely dot special (CVE-2017-16944)
-    (Closes: #882671)
+  * Improved spam-scanning example with accompaning information in
+    README.Debian. Explicitly warn about adding the default SpamAssassin
+    report in a header, which Closes: #774553
+  * Drop 90_localscan_dlopen.dpatch. (It has been non-functional for a couple
+    of months.) Closes: #925982 Add a Conflicts for sa-exim, which relied on
+    the (working) version of the patch. Drop exim4-dev package. Add a NEWS
+    entry for this change.
+
+ -- Andreas Metzler <ametzler@debian.org>  Sun, 07 Apr 2019 13:39:31 +0200
+
+exim4 (4.92-4) unstable; urgency=medium
+
+  * Another patch from exim-4.92+fixes branch:
+    75_10-Harden-plaintext-authenticator.patch
+
+ -- Andreas Metzler <ametzler@debian.org>  Fri, 22 Mar 2019 07:15:20 +0100
+
+exim4 (4.92-3) unstable; urgency=medium
+
+  * Pull fixes from exim-4.92+fixes branch.
+    + 75_05-Fix-expansions-for-RFC-822-addresses-having-comments.patch
+    + 75_06-Docs-Add-note-on-lsearch-for-IPv4-mapped-IPv6-addres.patch
+    + 75_07-Fix-crash-from-SRV-lookup-hitting-a-CNAME.patch
+    + 75_08-Logging-fix-initial-listening-on-log-line.patch
+    + 75_09-OpenSSL-Fix-aggregation-of-messages.patch
+
+ -- Andreas Metzler <ametzler@debian.org>  Wed, 20 Mar 2019 17:01:29 +0100
+
+exim4 (4.92-2) unstable; urgency=medium
+
+  * Upload to unstable.
+
+ -- Andreas Metzler <ametzler@debian.org>  Wed, 20 Feb 2019 19:23:11 +0100
+
+exim4 (4.92-1) experimental; urgency=medium
+
+  * Point watchfile to release directory again.
+  * New upstream stable release, identical to rc6 except for the version
+    string.
+  * Pull fixes from exim-4.92+fixes branch.
+    + 75_01-Fix-json-extract-operator-for-unfound-case.patch
+    + 75_02-Fix-transport-buffer-size-handling.patch
+    + 75_03-Fix-info-on-using-local_scan-in-the-default-Makefile.patch
+    + 75_04-GnuTLS-Fix-client-detection-of-server-reject-of-clie.patch
+  * Upload to experimental while waiting for rc6 to migrate.
+
+ -- Andreas Metzler <ametzler@debian.org>  Sun, 17 Feb 2019 13:13:55 +0100
+
+exim4 (4.92~RC6-1) unstable; urgency=low
+
+  * New upstream snapshot rc6, includes
+    40_01-Fix-dkim_verify_signers-option.-Bug-2366.patch.
+
+ -- Andreas Metzler <ametzler@debian.org>  Sat, 09 Feb 2019 14:33:15 +0100
+
+exim4 (4.92~RC5-2) unstable; urgency=high
+
+  * In init script use start-stop-daemon directly instead of lsb-base's
+    killproc which currently fails to pass on the executable name to s-s-d
+    (921558). This broke with s-s-d 1.19.2 which (for security reasons)
+    requires further filtering arguments in addition to --pidfile when the pid
+    file is not owned by root. Closes: #921205
+
+ -- Andreas Metzler <ametzler@debian.org>  Thu, 07 Feb 2019 18:42:41 +0100
+
+exim4 (4.92~RC5-1) unstable; urgency=medium
+
+  * New upstream snapshot rc5.
+  * 40_01-Fix-dkim_verify_signers-option.-Bug-2366.patch: dkim_verify_signers
+    was ignored.
+
+ -- Andreas Metzler <ametzler@debian.org>  Thu, 31 Jan 2019 19:25:03 +0100
+
+exim4 (4.92~RC4-3) unstable; urgency=medium
+
+  * Refresh debian/upstream/signing-key.asc from
+    https://downloads.exim.org/Exim-Maintainers-Keyring.asc.
+  * Drop outdated pointers to alioth package homepage from README.Debian.
+  * Update exim4-config Breaks to enforce upgrade to daemon binary package
+    with DANE support. Closes: #919902
+  * [lintian] Minimize upstream/signing-key.asc.
+
+ -- Andreas Metzler <ametzler@debian.org>  Sun, 20 Jan 2019 17:52:39 +0100
+
+exim4 (4.92~RC4-2) unstable; urgency=medium
+
+  * Upload to unstable.
+
+ -- Andreas Metzler <ametzler@debian.org>  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 <ametzler@debian.org>  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 <ametzler@debian.org>  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 <ametzler@debian.org>  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 <ametzler@debian.org>  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 <ametzler@debian.org>  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 <ametzler@debian.org>  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 <ametzler@debian.org>  Sun, 26 Aug 2018 11:33:15 +0200
+
+exim4 (4.91-6) unstable; urgency=low
+
+  * Update from exim-4_91+fixes branch:
+    + 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
+  * [lintian] Do not run mininal testsuite with DEB_BUILD_OPTIONS=nocheck.
+    (override_dh_auto_test-does-not-check-DEB_BUILD_OPTIONS)
+
+ -- Andreas Metzler <ametzler@debian.org>  Fri, 20 Jul 2018 11:21:24 +0200
+
+exim4 (4.91-5) unstable; urgency=medium
+
+  * Update from exim-4_91+fixes branch:
+    + 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
+
+ -- Andreas Metzler <ametzler@debian.org>  Sat, 09 Jun 2018 18:10:39 +0200
+
+exim4 (4.91-4) unstable; urgency=medium
+
+  * Update from exim-4_91+fixes branch:
+    + 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
+  * [lintian] Delete trailing empty lines in changelog.
+
+ -- Andreas Metzler <ametzler@debian.org>  Thu, 17 May 2018 17:14:53 +0200
+
+exim4 (4.91-3) unstable; urgency=medium
+
+  * Update from exim-4_91+fixes branch:
+    + 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
+    + Move 50_localscan_dlopen.dpatch to end of patch series and rename to
+      90_... to preserve alphanumeric patch ordering.
+  * Add log_message for local blacklists to improve log readability. (Patch by
+    Dominic Hargreaves).
+
+ -- Andreas Metzler <ametzler@debian.org>  Sat, 28 Apr 2018 14:59:36 +0200
+
+exim4 (4.91-2) unstable; urgency=low
+
+  * Upload to unstable.
+
+ -- Andreas Metzler <ametzler@debian.org>  Sat, 21 Apr 2018 10:38:50 +0200
+
+exim4 (4.91-1) experimental; urgency=medium
+
+  * Point watchfile to release directory again and use downloads.exim.org
+    host.
+  * New upstream version.
+  * Tighten b-d on libgnutls28-dev to >= 3.5.7, earlier Debian packages did
+    not ship libgnutls-dane0.
+
+ -- Andreas Metzler <ametzler@debian.org>  Sun, 15 Apr 2018 17:52:05 +0200
+
+exim4 (4.91~RC4-1) experimental; urgency=medium
+
+  * New upstream version.
+
+ -- Andreas Metzler <ametzler@debian.org>  Mon, 09 Apr 2018 19:25:18 +0200
+
+exim4 (4.91~RC3-1) experimental; urgency=medium
+
+  * New upstream version.
+  * Point vcs* to salsa.
+
+ -- Andreas Metzler <ametzler@debian.org>  Thu, 05 Apr 2018 19:43:39 +0200
+
+exim4 (4.91~RC2-1) experimental; urgency=medium
+
+  * New upstream version.
+    Drop 75_01-Fix-heavy-pipeline-SMTP-command-input-corruption.-Bu.patch
+
+ -- Andreas Metzler <ametzler@debian.org>  Wed, 21 Mar 2018 19:25:44 +0100
+
+exim4 (4.91~RC1-1) experimental; urgency=medium
+
+  * Point watchfile to test subdirectory.
+  * New upstream version:
+    + Drop debian/patches/75_*.
+    + Update example.conf.md5.
+      Upstream now enables verify = header_syntax check in default config,
+      mirror this change in Debian, introduce
+      NO_CHECK_DATA_VERIFY_HEADER_SYNTAX macro to override this.
+  * Build with newly available (well, for GnuTLS) DANE support.
+  * Pull 75_01-Fix-heavy-pipeline-SMTP-command-input-corruption.-Bu.patch from
+    upstream master, fixing https://bugs.exim.org/show_bug.cgi?id=2250.
+
+ -- Andreas Metzler <ametzler@debian.org>  Sat, 17 Mar 2018 17:41:51 +0100
+
+exim4 (4.90.1-5) unstable; urgency=medium
+
+  * Update from exim-4_90+fixes branch:
+    75_15-Pipe-transport-part-two.-Bug-2257.patch
+    75_16-Fix-spool_wireformat-final-dot-on-LMTP-transport.-Bu.patch
+    75_17-Cutthrough-enforce-non-use-in-combination-with-DKIM-.patch
+
+ -- Andreas Metzler <ametzler@debian.org>  Sat, 31 Mar 2018 07:14:31 +0200
+
+exim4 (4.90.1-4) unstable; urgency=medium
+
+  * Update from exim-4_90+fixes branch:
+    75_11-DMARC-add-variables-to-list-of-those-now-unused-at-t.patch
+    75_12-Fix-heavy-pipeline-SMTP-command-input-corruption.-Bu.patch
+    75_13-Unbreak-DMARC.patch
+    75_14-Fix-pipe-transport-to-not-use-a-socket-only-syscall..patch
+
+ -- Andreas Metzler <ametzler@debian.org>  Thu, 22 Mar 2018 07:44:05 +0100
+
+exim4 (4.90.1-3) unstable; urgency=medium
+
+  * Update from exim-4_90+fixes branch:
+    75_07-Fix-ldap-lookups-for-zero-length-attribute-value.-Bu.patch
+    75_08-Mark-variables-unused-before-release-of-store-in-the.patch
+    75_09-Mark-variables-unused-before-release-of-store-in-the.patch
+    75_10-Mark-variables-that-are-unused-before-release-of-sto.patch
+
+ -- Andreas Metzler <ametzler@debian.org>  Fri, 16 Mar 2018 18:35:01 +0100
+
+exim4 (4.90.1-2) unstable; urgency=medium
+
+  * Update from exim-4_90+fixes branch:
+    75_01-ACL-Enforce-non-usability-of-control-utf8_downconver.patch
+    75_02-Fix-memory-leak-during-multi-message-reception-using.patch
+    75_03-OpenSSL-Fix-memory-leak-during-multi-message-connect.patch
+    75_04-Fix-exim_dbmbuild-to-permit-directoryless-filenames..patch
+    75_05-OpenSSL-revert-needless-free-of-certificate-list.-Th.patch
+    75_06-I18N-Fix-utf8_downconvert-propagation-through-a-redi.patch
+
+ -- Andreas Metzler <ametzler@debian.org>  Sat, 10 Mar 2018 14:25:51 +0100
+
+exim4 (4.90.1-1) unstable; urgency=high
+
+  * New upstream version, fixing CVE-2018-6789. Closes: #890000
+    + Drop 75_*.patch.
+
+ -- Andreas Metzler <ametzler@debian.org>  Sat, 10 Feb 2018 13:45:40 +0100
+
+exim4 (4.90-7) unstable; urgency=medium
+
+  * Update from exim-4_90+fixes branch. (exim-4.90.0.27)
+    + 75_21-DKIM-fix-buffer-overflow-in-verify.patch
+    + 75_22-Repair-Heimdal-GSSAPI-authenticator-init.patch
+    + 75_23-Repair-Heimdal-GSSAPI-authenticator-init-part-2.patch
+  * Typo fixes in old patch descriptions. (Thanks, lintian!)
+
+ -- Andreas Metzler <ametzler@debian.org>  Sat, 10 Feb 2018 13:13:37 +0100
+
+exim4 (4.90-6) unstable; urgency=medium
+
+  * Update from exim-4_90+fixes branch.
+    + 75_17-Cutthrough-fix-for-port-number-defined-by-router.-Bu.patch
+    + 75_18-GnuTLS-fix-to-ignore-timeout-on-unrelated-callout-co.patch
+      Closes: #887489
+    + 75_19-Build-.git-may-be-a-file-when-this-repo-is-a-submodu.patch
+    + 75_20-Debugging-fix-potential-null-derefs-in-DSN-debug_pri.patch
+
+ -- Andreas Metzler <ametzler@debian.org>  Wed, 07 Feb 2018 19:37:03 +0100
+
+exim4 (4.90-5) unstable; urgency=low
+
+  * Add 75_16-Cutthrough-fix-multi-message-initiating-connections.patch from
+    exim-4_90+fixes branch.
+  * Improved exim4-daemon-custom documentation by Gedalya. Closes: #887971
+  * [update-exim4.conf] stop converting variables set to an empty value in
+    /etc/exim4/update-exim4.conf.conf to exim macros with a literal value of
+    "empty" in the generated configuration. Thanks, Gedalya. Closes: #887972
+
+ -- Andreas Metzler <ametzler@debian.org>  Sat, 27 Jan 2018 17:00:42 +0100
+
+exim4 (4.90-4) unstable; urgency=low
+
+  * Update from exim-4_90+fixes branch.
+    75_13-Lookups-fix-mysql-lookup-returns-for-no-data-queries.patch
+    75_14-Fix-D-string-expansion-to-not-use-millisec.patch
+    75_15-DKIM-DNS-records-having-no-v-tag-are-acceptable.-Bug.patch
+
+ -- Andreas Metzler <ametzler@debian.org>  Sat, 20 Jan 2018 08:00:45 +0100
+
+exim4 (4.90-3) unstable; urgency=medium
+
+  * Three more patches from exim-4_90+fixes branch:
+    75_10-Fix-issue-with-continued-connections-when-the-DNS-sh.patch
+    75_11-MIME-ACL-fix-SMTP-response-for-non-accept-result-of-.patch
+    75_12-DKIM-permit-dkim_private_key-to-override-dkim_strict.patch
+
+ -- Andreas Metzler <ametzler@debian.org>  Mon, 08 Jan 2018 18:55:28 +0100
+
+exim4 (4.90-2) unstable; urgency=medium
+
+  * Update to exim-4_90+fixes branch:
+    + Replace 75_Lookups-fix-pgsql-multiple-row-single-column-return.patch.
+    + 75_01-TLS-Fix-excessive-calling-of-smtp_auth_acl-under-AUT.patch
+    + 75_02-TLS-avoid-calling-smtp_auth_acl-on-client-cert-when-.patch
+    + 75_03-Debug-fix-coding-in-dnssec-reporting.-Bug-2205.patch
+    + 75_04-DKIM-Ignore-non-DKIM-TXT-records-in-DNS-response.-Bu.patch
+    + 75_05-Fix-build-of-nisplus-lookup.patch
+    + 75_06-Fix-const-issue-in-nisplus-lookup.patch
+    + 75_08-DKIM-tighter-checking-while-parsing-signature-header.patch
+    + 75_09-Fix-crash-associated-with-dnsdb-lookup-done-from-DKI.patch
+
+ -- Andreas Metzler <ametzler@debian.org>  Sat, 30 Dec 2017 15:43:52 +0100
+
+exim4 (4.90-1) unstable; urgency=low
+
+  * rc4 released as 4.90.
+  * Point watchfile to release directory again.
+  * 75_Lookups-fix-pgsql-multiple-row-single-column-return.patch from upstream
+    GIT master branch. Fix pgsql lookup for multiple result-tuples with a
+    single column. Previously only the last row was returned.
+    https://lists.exim.org/lurker/message/20171223.102237.a53dd5bd.en.html
+  * Simplify debian/rules and make it usable with dh v10 compat. The
+    fine-grained support for selecting the to be built packages (-custom with
+    or without -base) was dropped. The build process is now controlled by
+    attaching tasks to dh-override hooks instead of using file dependencies,
+    makefile-style.  The latter broke with dh v10 due to upstream's
+    build-system which always has the main targets out-of-date inter alia due
+    to the compile-number feature.
+  * Use hardening=+all instead of hardening=+bindnow,+pie. (Does not change
+    buildflags ATM.)
+  * Use debhelper v10 compat.
+  * Drop override_dh_strip-arch, we have had enough toolchain and
+    source changes to prevent file conflicts.
+
+ -- Andreas Metzler <ametzler@debian.org>  Thu, 28 Dec 2017 13:42:23 +0100
+
+exim4 (4.90~RC4-1) unstable; urgency=medium
+
+  * New upstream version.
+
+ -- Andreas Metzler <ametzler@debian.org>  Thu, 14 Dec 2017 18:11:40 +0100
+
+exim4 (4.90~RC3-2) unstable; urgency=low
+
+  * Upload to unstable.
+  * Point homepage to https URL.
 
- -- Salvatore Bonaccorso <carnil@debian.org>  Tue, 28 Nov 2017 22:58:00 +0100
+ -- Andreas Metzler <ametzler@debian.org>  Sat, 02 Dec 2017 17:37:13 +0100
+
+exim4 (4.90~RC3-1) experimental; urgency=medium
+
+  * New upstream version.
+    + Fix a use-after-free while reading smtp input for header lines.
+      A crafted sequence of BDAT commands could result in in-use memory
+      being freed.  CVE-2017-16943. Closes: #882648
+    + Fix checking for leading-dot on a line during headers reading
+      from SMTP input.  Previously it was always done; now only done for
+      DATA and not BDAT commands.  CVE-2017-16944 Closes: #882671
+  * Drop 78_Disable-chunking-BDAT-by-default.patch again.
+
+ -- Andreas Metzler <ametzler@debian.org>  Fri, 01 Dec 2017 19:14:08 +0100
+
+exim4 (4.90~RC2-3) experimental; urgency=medium
+
+  * As a workaround for the yet-unfixed security vulnerability resurrect (and
+    adapt for 4.90) 78_Disable-chunking-BDAT-by-default.patch (dropped in
+    4.89-4) to disable both incoming and outgoing BDAT/CHUNKING. #882648
+    https://lists.exim.org/lurker/message/20171125.034842.d1d75cac.en.html
+
+ -- Andreas Metzler <ametzler@debian.org>  Sat, 25 Nov 2017 12:01:40 +0100
+
+exim4 (4.90~RC2-2) experimental; urgency=low
+
+  * B-d on lynx, instead of lynx-cur | lynx.
+
+ -- Andreas Metzler <ametzler@debian.org>  Fri, 17 Nov 2017 17:03:10 +0100
+
+exim4 (4.90~RC2-1) experimental; urgency=low
+
+  * New upstream release candidate.
+    + Unfuzz patches, drop 40_reproducible_build.diff and
+      75_fix_ftbfs_SOURCE_DATE_EPOCH.diff.
+    + Refresh debian/example.conf.md5, No changes to Debian's configuration
+      needed, upstream added a (commented) entry to change OpenSSL ciphers.
+
+ -- Andreas Metzler <ametzler@debian.org>  Thu, 16 Nov 2017 19:40:35 +0100
+
+exim4 (4.90~RC1-1) experimental; urgency=low
+
+  * New upstream release candidate.
+    + Point watchfile to test subdirectory.
+    + Update 40_reproducible_build.diff
+    + Drop 75_fixes*.patch and
+      80_Repair-manualroute-transport-name-not-last-option.patch.
+    + Unfuzz EDITME*.diff
+    + 75_fix_ftbfs_SOURCE_DATE_EPOCH.diff Fix build-error when
+      SOURCE_DATE_EPOCH is set.
+  * Drop trailing whitespace in debian/README.source, debian/changelog and
+    debian/rules. (Thanks, lintian)
+  * Drop debian/README.source and outdated parts of debian/copyright.
+
+ -- Andreas Metzler <ametzler@debian.org>  Sun, 29 Oct 2017 10:52:30 +0100
+
+exim4 (4.89-13) unstable; urgency=high
+
+  * 75_fixes_21-Chunking-do-not-treat-the-first-lonely-dot-special.-.patch
+    from exim-4_89+fixes branch. Closes: #882671 CVE-2017-16944
+
+ -- Andreas Metzler <ametzler@debian.org>  Wed, 29 Nov 2017 19:30:37 +0100
+
+exim4 (4.89-12) unstable; urgency=high
+
+  * Sync with exim-4_89+fixes branch:
+    + 75_fixes_19-Fix-mariadb-mysql-macro-confusion.patch
+    + 75_fixes_20-Avoid-release-of-store-if-there-have-been-later-allo.patch
+      Closes: #882648 (use-after-free, remote-code-execution) CVE-2017-16943
+  * Update EDITME* for 75_fixes_19-Fix-mariadb-mysql-macro-confusion.patch.
+
+ -- Andreas Metzler <ametzler@debian.org>  Tue, 28 Nov 2017 20:04:23 +0100
+
+exim4 (4.89-11) unstable; urgency=critical
+
+  * B-d on lynx, instead of lynx-cur | lynx.
+
+ -- Andreas Metzler <ametzler@debian.org>  Sat, 25 Nov 2017 13:02:43 +0100
+
+exim4 (4.89-10) unstable; urgency=critical
+
+  * As a workaround for the yet-unfixed security vulnerability resurrect
+    78_Disable-chunking-BDAT-by-default.patch (dropped in 4.89-4) to disable
+    both incoming and outgoing BDAT/CHUNKING. #882648
+    https://lists.exim.org/lurker/message/20171125.034842.d1d75cac.en.html
+
+ -- Andreas Metzler <ametzler@debian.org>  Sat, 25 Nov 2017 11:43:24 +0100
+
+exim4 (4.89-9) unstable; urgency=medium
+
+  * Upload to unstable.
+
+ -- Andreas Metzler <ametzler@debian.org>  Fri, 27 Oct 2017 19:23:25 +0200
+
+exim4 (4.89-8) experimental; urgency=low
+
+  * Sync with exim-4_89+fixes branch:
+    75_fixes_17-Fix-queue_run_in_order-to-ignore-the-PID-portion-of-.patch
+    75_fixes_18-Use-safer-routine-for-possibly-overlapping-copy.patch
+  * Point watchfile to https site.
+
+ -- Andreas Metzler <ametzler@debian.org>  Mon, 23 Oct 2017 19:14:24 +0200
+
+exim4 (4.89-7) unstable; urgency=low
+
+  * In debian/rules' manually called update-mtaconflicts target use
+    grep-aptavail instead of hard-coding /var/lib/apt/lists/.
+    (Thanks, Julian Andres Klode) Closes: #874772
+  * Update debian/mtalist.
+  * Sync with exim-4_89+fixes branch:
+    75_fixes_13-Document-CVE-assignment-for-Berkeley-DB-issue.patch
+    75_fixes_14-DKIM-fix-signing-bug-induced-by-total-size-of-parame.patch
+    75_fixes_15-SOCKS-fix-unitialized-pointer.patch
+    75_fixes_16-Fix-crash-in-transport-on-second-smtp-connect-fail-f.patch.
+
+ -- Andreas Metzler <ametzler@debian.org>  Wed, 27 Sep 2017 07:35:23 +0200
+
+exim4 (4.89-6) unstable; urgency=medium
+
+  * Use "runuser --command ..." instead of "su - --command ..." in
+    exim4-base.cron.daily to avoid invoking pam_systemd. Closes: #871688
+    (Thanks, Jakobus Schürz)
+  * Sync priorities with override file: exim4{,-base,-config,-daemon-light}
+    optional from standard, exim4-dev optional from extra.
+  * In debian/rules when setting up the build-tree for -custom also copy
+    EDITME.eximon to allow building based on EDITME.exim4-light with eximon
+    building *not* disabled. (Thanks, Marko von Oppen) Closes: #783813
+
+ -- Andreas Metzler <ametzler@debian.org>  Sat, 09 Sep 2017 15:29:39 +0200
+
+exim4 (4.89-5) unstable; urgency=medium
+
+  * Update to exim-4_89+fixes branch:
+    75_fixes_01-Start-exim-4_89-fixes-to-cherry-pick-some-commits-fr.patch
+    75_fixes_02-Cleanup-prevent-repeated-use-of-p-oMr-to-avoid-mem-l.patch
+    (replaces 79_CVE-2017-1000369.patch)
+    75_fixes_03-Fix-log-line-corruption-for-DKIM-status.patch (replaces
+    81_Fix-log-line-corruption-for-DKIM-status.patch)
+    75_fixes_04-Openssl-disable-session-tickets-by-default-and-sessi.patch
+    75_fixes_05-Transport-fix-smtp-under-combo-of-mua_wrapper-and-li.patch
+    75_fixes_07-Openssl-disable-session-tickets-by-default-and-sessi.patch
+    75_fixes_08-Transport-fix-smtp-under-combo-of-mua_wrapper-and-li.patch
+    75_fixes_09-Use-the-BDB-environment-so-that-a-database-config-fi.patch
+    (CVE-2017-10140)
+    75_fixes_10-Fix-cache-cold-random-callout-verify.-Bug-2147.patch
+    75_fixes_11-On-callout-avoid-SIZE-every-time-but-noncacheable-rc.patch
+    75_fixes_12-Fix-build-for-earlier-version-Berkeley-DB.patch
+  * Simplify debian/rules by including buildflags.mk unconditionally which was
+    introduced in dpkg 1.16.1 released in October 2011.
+  * Use pkg-info.mk to get package-version, upstream-version and
+    SOURCE_DATE_EPOCH. For the latter fall back to current time if it is not
+    provided by pkg-info.mk.
+  * [lintian] In *daemon.postinst use which certtool instead of
+    [ -x /usr/bin/certtool ] to check for availablility of the command.
+
+ -- Andreas Metzler <ametzler@debian.org>  Thu, 10 Aug 2017 10:17:05 +0200
+
+exim4 (4.89-4) unstable; urgency=low
+
+  * 80_Repair-manualroute-transport-name-not-last-option.patch from GIT
+    master: Starting with 4.85 a transport name needed to specified after
+    options in route_list. Closes: #865287
+  * Add 81_Fix-log-line-corruption-for-DKIM-status.patch from GIT master.
+  * Drop 78_Disable-chunking-BDAT-by-default.patch, enable BDAT/Chunking by
+    default.
+  * Standards-Version: 4.0.0
+    + Do not check for availability of invoke-rc.d, use it always and do not
+      fall back to invoking the init-script directly.
+    + Drop eximon menu file.
+  * Migrate to automatic debug packages. Bump b-d on debhelper since
+    --dbgsym-migration was introduced in debhelper 9.20160114.
+
+ -- Andreas Metzler <ametzler@debian.org>  Sat, 15 Jul 2017 12:46:16 +0200
+
+exim4 (4.89-3) unstable; urgency=high
+
+  * Re-upload to unstable.
+
+ -- Andreas Metzler <ametzler@debian.org>  Mon, 19 Jun 2017 18:51:13 +0200
 
 exim4 (4.89-2+deb9u1) stretch-security; urgency=medium
 
@@ -627,7 +1237,7 @@ exim4 (4.86~RC2-1) experimental; urgency=medium
     +Drop included patches.
      (-72_0001-Guard-routing-against-a-null-deref.-Bug-1639.patch,
      72_0002-Spamd-add-missing-initialiser.-Rspamd-mode-was-incor.patch,
-     72_0003-DSN-fix-null-deref-when-bounce-is-due-to-conn-timeou.patch, 
+     72_0003-DSN-fix-null-deref-when-bounce-is-due-to-conn-timeou.patch,
      72_0004-Content-scan-Use-ETIMEDOUT-not-ETIME-as-having-bette.patch)
   * Sync Debian config with upstream default config:
     + Set prdr_enable.
@@ -1065,7 +1675,7 @@ exim4 (4.82~rc1-1) experimental; urgency=low
     86_Dovecot-robustness.diff 87_localinjected_mimeacl.diff), unfuzz patches.
   * Applying upstream's default configuration updates to Debian configuration
     change 30_exim4-config_examples to use tls_in_cipher/tls_out_cipher
-    instead of tls_out_cipher. - exim4-config therefore Breaks 
+    instead of tls_out_cipher. - exim4-config therefore Breaks
     exim daemon << 4.82~rc1.
   * 80_addmanuallybuiltdocs.diff: Upstream rc tarball ships empty filter.txt
     and spec.txt, replace these with correct handbuilt versions.
@@ -1285,7 +1895,7 @@ exim4 (4.77~rc4-1) experimental; urgency=low
       "match_ip" & "match_local_part". Named lists can still be used.  The
       previous behavior made it too easy to create (remotely) vulnerable
       configurations. A more detailed rationale and explanation can be found
-      on 
+      on
       https://lists.exim.org/lurker/message/20111003.122326.fbcf32b7.en.html
     + doc/pcrepattern.txt is not shipped anymore as part of the exim tarball
       (and therefore the Debian package suite.)
@@ -1469,14 +2079,14 @@ exim4 (4.73~rc1-1) experimental; urgency=low
     + Drop exim4-config's conflicts with bash (<< 2.05). This was relevant
       pre-sarge.
     + Drop exim4-daemon-* dependency on exim4-base (>> 4.71-2). This one is
-      superfluous because of of the dependency on 
+      superfluous because of of the dependency on
       exim4-base (>= ${Upstream-Version}).
     + exim4-config breaks instead of conflicts with pre-DKIM (i.e. << 4.69.1)
       exim4-daemon.
     + exim4-base breaks instead of conflicts with <<${Upstream-Version} daemon
       packages.
    * Add Vcs-Svn and Vcs-Browser fields to debian/control.
-   * Build depend on libmysqlclient-dev | libmysqlclient15-dev instead of 
+   * Build depend on libmysqlclient-dev | libmysqlclient15-dev instead of
      libmysqlclient15-dev. libmysqlclient-dev is not a virtual package
      anymore. Closes: #590218
    * Use db_settitle unconditionally, even etch supports this. Drop unneeded
@@ -1563,7 +2173,7 @@ exim4 (4.72-2) unstable; urgency=low
     Thanks to Fabien André. Closes: #578176
   * Re-work config.autogenerated header to more exactly reflect
     configuration source. (mh) Closes: #593984
-  
+
   [ Andreas Metzler ]
   * Fix getopt invocation to make update-exim4.conf.template -o work. (Thank
     you Matthew W. S. Bell) Closes: #590333
@@ -1576,7 +2186,7 @@ exim4 (4.72-2) unstable; urgency=low
 
 exim4 (4.72-1) unstable; urgency=low
 
-  * New upstream release. (Identical to the git snapshot previously 
+  * New upstream release. (Identical to the git snapshot previously
     uploaded to experimental.)
 
  -- Andreas Metzler <ametzler@debian.org>  Thu, 03 Jun 2010 17:42:52 +0200
@@ -1716,7 +2326,7 @@ exim4 (4.70~cvs+20091017-1) experimental; urgency=low
   * New upstream cvs snapshot.
     + Drop unnecessary patches: 36_pcre 37_exiwhatpsmisc.
     + Close dovecot socket after wrong password was given. Closes: #515503
-    + Standalone DKIM support. Obsoletes and therefore 
+    + Standalone DKIM support. Obsoletes and therefore
       Closes: #486437,#459883
   * Drop upstream URL from package descriptions. Closes: #471425
   * [patches/00_unpack.dpatch] Drop workaround for tar 1.14, even oldstable
@@ -1778,7 +2388,7 @@ exim4 (4.69-10) unstable; urgency=low
   * [exim4 init-script]. Modify check for smtp inetd entry to use an anchored
     pattern, matching "smtp" but not "smtp-foo". Closes: #516146
   * exim4-daemon-light now Provides: default-mta. See #508644.
-  * Ship both transport-filter.pl and ratelimit.pl in 
+  * Ship both transport-filter.pl and ratelimit.pl in
     /usr/share/doc/exim4-base/examples. Closes: #518836
   * [lintian] Add ${misc:Depends} to all Depends.
   * [lintian] Add override for dbg-package-missing-depends exim4-dbg.
@@ -1825,7 +2435,7 @@ exim4 (4.69-8) unstable; urgency=low
 exim4 (4.69-7) unstable; urgency=low
 
   [ Andreas Metzler ]
-  * Sync from ubuntu: Refer to spec.txt.gz instead of spec.txt in 
+  * Sync from ubuntu: Refer to spec.txt.gz instead of spec.txt in
     README.Debian.xml.
 
   [ Debconf translations ]
@@ -1928,13 +2538,13 @@ exim4 (4.69-3) unstable; urgency=low
     in daily cron job. Thanks to Justin Pryzby. Closes: #476541
   * Move docs from Apps/Net to Network/Communication
   * linda R.I.P.
-  
+
   [ Robert Millan ]
   * Process acl_local_deny_exceptions ACL before rejecting a message in SPF
     check. Thanks to Miklos Szeredi. Closes: #451633
 
   [ Andreas Metzler ]
-  * Fix typos in exinext's man page (/s/eximnext/exinext/). (Thanks, 
+  * Fix typos in exinext's man page (/s/eximnext/exinext/). (Thanks,
     Filipus Klutiero) Closes: #471113
   * exiwhat: Check at runtime whether killall is available. Fall back to a
     combination of 'ps ax' and regular kill otherwise.
@@ -2143,7 +2753,7 @@ exim4 (4.67-6) unstable; urgency=low
 exim4 (4.67-5) unstable; urgency=low
 
   * the "verderben viele Koeche den Brei?" release
-  
+
   [ Andreas Metzler ]
   * Point to exim4_passwd(5) instead of non-existing exim_passwd(5) in AUTH
     section of configuration.  (Thanks Arkadiusz Dykiel, #430149)
@@ -3628,7 +4238,7 @@ exim4 (4.43-1) experimental; urgency=low
     - better documentation about differences in configuring for GnuTLS or
       OpenSSL. (Closes: #241725)
     - verify = header_sender now respects callout options. (Closes: #260114)
-    - There is now an overall timeout for performing a callout verification. 
+    - There is now an overall timeout for performing a callout verification.
       (Closes: #261511)
     - Less typos in filter.txt. (Closes: #230545)
     - New ACL: acl_smtp_predata, useful for greylisting. (Closes: #237947)
@@ -4327,7 +4937,7 @@ exim4 (4.22-5) unstable; urgency=low
 
   * Sorry, this is not 4.23. Tom is on holidays and because 4.23 changes
     some ACL code, exiscan needs in depth checking and not just applying the
-    patch by hand. 
+    patch by hand.
   * exim4-config conflicts with bash (<< 2.05), because it cannot handle
     aliases in functions. This does not necessarily fix dist-upgrades
     from potato to sarge because debconf-config might happen before the
@@ -4903,7 +5513,7 @@ exim4 (4.10.13-0.0.4) unstable; urgency=low
   * remove the %s from PID_FILE_PATH
   * apply debian/fix-pid.issue.patch to fix minor security issue
     http://www.exim.org/pipermail/exim-users/Week-of-Mon-20021202/046978.html
-  * test in init-script for working config before reloading/restarting 
+  * test in init-script for working config before reloading/restarting
     (Andreas Piesk)
 
  -- Andreas Metzler <ametzler@downhill.at.eu.org>  Thu,  5 Dec 2002 13:04:51 +0100
@@ -5375,5 +5985,3 @@ exim (3.35-1) unstable; urgency=low
   * debian/control: Short description improved (Closes: #130698)
 
  -- Mark Baker <mark@mnb.org.uk>  Mon,  4 Mar 2002 23:04:52 +0000
-
-
index ec63514..f599e28 100644 (file)
@@ -1 +1 @@
-9
+10
index 16c00d3..cd773bb 100644 (file)
@@ -2,31 +2,69 @@ Source: exim4
 Section: mail
 Priority: standard
 Maintainer: Exim4 Maintainers <pkg-exim4-maintainers@lists.alioth.debian.org>
-Uploaders: Andreas Metzler <ametzler@debian.org>,Marc Haber <mh+debian-packages@zugschlus.de>
-Homepage: http://www.exim.org/
-Standards-Version: 3.9.8
-Vcs-Git: https://anonscm.debian.org/git/pkg-exim4/exim4.git
-Vcs-Browser: https://anonscm.debian.org/git/pkg-exim4/exim4.git
-Build-Depends: debhelper (>= 9), po-debconf, docbook-xsl, xsltproc,
-  lynx-cur | 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, libsasl2-dev
+Uploaders:
+ Andreas Metzler <ametzler@debian.org>,
+ Marc Haber <mh+debian-packages@zugschlus.de>
+Homepage: https://www.exim.org/
+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),
+ 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
 
 Package: exim4-base
 Architecture: any
-Breaks: exim4-daemon-light (<<${Upstream-Version}),
- exim4-daemon-heavy (<<${Upstream-Version}), 
- exim4-daemon-custom (<<${Upstream-Version})
+Priority: optional
+Breaks:
+ exim4-daemon-custom (<<${Upstream-Version}),
+ exim4-daemon-heavy (<<${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
@@ -56,10 +94,18 @@ Description: support files for all Exim MTA (v4) packages
 
 Package: exim4-config
 Architecture: all
-Breaks: exim4-daemon-light (<< 4.87~RC5), exim4-daemon-heavy (<< 4.87~RC5)
+Priority: optional
+Breaks:
+ exim4-daemon-heavy (<< 4.91~RC1),
+ exim4-daemon-light (<< 4.91~RC1)
 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
@@ -90,11 +136,17 @@ Description: configuration for the Exim MTA (v4)
 
 Package: exim4-daemon-light
 Architecture: any
-Provides: mail-transport-agent, exim4-localscanapi-2.0,
+Priority: optional
+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
@@ -120,10 +172,13 @@ Description: lightweight Exim MTA (v4) daemon
 
 Package: exim4
 Architecture: all
-Depends: ${misc:Depends}, debconf (>= 1.4.69) | cdebconf (>= 0.39),
- exim4-base (>= ${source:Version}),
+Priority: optional
+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.
@@ -147,11 +202,13 @@ Description: metapackage to ease Exim MTA (v4) installation
 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
@@ -181,10 +238,13 @@ Description: Exim MTA (v4) daemon with extended features, including exiscan-acl
 #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
@@ -213,121 +273,16 @@ Architecture: any
 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
  of actions on queued messages, such as freezing, bouncing and thawing
  messages.
 
-Package: exim4-dbg
-Architecture: any
-Priority: extra
-Section: debug
-Depends: exim4-base, exim4-config, ${misc:Depends}
-Recommends: eximon4
-Description: debugging symbols for the Exim MTA (utilities)
- Exim (v4) is a mail transport agent. This package contains
- debugging symbols for the binaries contained in the exim4
- packages. The daemon packages have their own debug package.
- .
- The Debian exim4 packages have their own web page,
- http://wiki.debian.org/PkgExim4. There is also a Debian-specific
- FAQ list. Information about the way the Debian packages are
- configured can be found in
- /usr/share/doc/exim4-base/README.Debian.gz, which additionally contains
- information about the way the Debian binary packages are built. The
- very extensive upstream documentation is shipped in
- /usr/share/doc/exim4-base/spec.txt.gz. To repeat the debconf-driven
- configuration process in a standard setup, invoke dpkg-reconfigure
- exim4-config. There is a Debian-centered mailing list,
- pkg-exim4-users@lists.alioth.debian.org. Please ask Debian-specific
- questions there, and only write to the upstream exim-users mailing
- list if you are sure that your question is not Debian-specific. You
- can find the subscription web page on
- http://lists.alioth.debian.org/mailman/listinfo/pkg-exim4-users
-
-Package: exim4-daemon-light-dbg
-Architecture: any
-Priority: extra
-Section: debug
-Depends: exim4-daemon-light, ${misc:Depends}
-Description: debugging symbols for the Exim MTA "light" daemon
- Exim (v4) is a mail transport agent. This package contains
- debugging symbols for the binaries contained in the
- exim4-daemon-light package.
- .
- The Debian exim4 packages have their own web page,
- http://wiki.debian.org/PkgExim4. There is also a Debian-specific
- FAQ list. Information about the way the Debian packages are
- configured can be found in
- /usr/share/doc/exim4-base/README.Debian.gz, which additionally contains
- information about the way the Debian binary packages are built. The
- very extensive upstream documentation is shipped in
- /usr/share/doc/exim4-base/spec.txt.gz. To repeat the debconf-driven
- configuration process in a standard setup, invoke dpkg-reconfigure
- exim4-config. There is a Debian-centered mailing list,
- pkg-exim4-users@lists.alioth.debian.org. Please ask Debian-specific
- questions there, and only write to the upstream exim-users mailing
- list if you are sure that your question is not Debian-specific. You
- can find the subscription web page on
- http://lists.alioth.debian.org/mailman/listinfo/pkg-exim4-users
-
-Package: exim4-daemon-heavy-dbg
-Architecture: any
-Priority: extra
-Section: debug
-Depends: exim4-daemon-heavy, ${misc:Depends}
-Description: debugging symbols for the Exim MTA "heavy" daemon
- Exim (v4) is a mail transport agent. This package contains
- debugging symbols for the binaries contained in the
- exim4-daemon-heavy package.
- .
- The Debian exim4 packages have their own web page,
- http://wiki.debian.org/PkgExim4. There is also a Debian-specific
- FAQ list. Information about the way the Debian packages are
- configured can be found in
- /usr/share/doc/exim4-base/README.Debian.gz, which additionally contains
- information about the way the Debian binary packages are built. The
- very extensive upstream documentation is shipped in
- /usr/share/doc/exim4-base/spec.txt.gz. To repeat the debconf-driven
- configuration process in a standard setup, invoke dpkg-reconfigure
- exim4-config. There is a Debian-centered mailing list,
- pkg-exim4-users@lists.alioth.debian.org. Please ask Debian-specific
- questions there, and only write to the upstream exim-users mailing
- list if you are sure that your question is not Debian-specific. You
- can find the subscription web page on
- http://lists.alioth.debian.org/mailman/listinfo/pkg-exim4-users
-
-#Package: exim4-daemon-custom-dbg
-#Architecture: any
-#Priority: extra
-#Section: debug
-#Depends: exim4-daemon-custom, ${misc:Depends}
-#Description: debugging symbols for the Exim MTA (v4) packages
-# Exim (v4) is a mail transport agent. This package contains
-# debugging symbols for the binaries contained in the
-# exim4-daemon-custom package.
-# .
-# The Debian exim4 packages have their own web page,
-# http://wiki.debian.org/PkgExim4. There is also a Debian-specific
-# FAQ list. Information about the way the Debian packages are
-# configured can be found in
-# /usr/share/doc/exim4-base/README.Debian.gz, which additionally contains
-# information about the way the Debian binary packages are built. The
-# very extensive upstream documentation is shipped in
-# /usr/share/doc/exim4-base/spec.txt.gz. To repeat the debconf-driven
-# configuration process in a standard setup, invoke dpkg-reconfigure
-# exim4-config. There is a Debian-centered mailing list,
-# pkg-exim4-users@lists.alioth.debian.org. Please ask Debian-specific
-# questions there, and only write to the upstream exim-users mailing
-# list if you are sure that your question is not Debian-specific. You
-# can find the subscription web page on
-# http://lists.alioth.debian.org/mailman/listinfo/pkg-exim4-users
-
 Package: exim4-dev
 Architecture: any
-Priority: extra
+Priority: optional
 Depends: ${misc:Depends}
 Description: header files for the Exim MTA (v4) packages
  Exim (v4) is a mail transport agent. This package contains header
index cd123f2..b986c5e 100644 (file)
@@ -55,10 +55,10 @@ important feedback:
 
 
 -----------------------------------------------------------------
-exim is copyright (c) 1995 - 2017 University of Cambridge.
+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.
 
 _________________________________________________________________________
@@ -219,36 +219,11 @@ src/pdkim/*
 
 PDKIM - a RFC4871 (DKIM) implementation
 http://duncanthrax.net/pdkim/
-Copyright (C) 2009 - 2016  Tom Kistner <tom@duncanthrax.net>
-Copyright (C) 2016 - 2017 Jeremy Harris <jgh@exim.org>
+Copyright (C) 2009      Tom Kistner <tom@duncanthrax.net>
 
-Includes code from the PolarSSL project.
-http://polarssl.org
-Copyright (C) 2009      Paul Bakker <polarssl_maintainer@polarssl.org>
-Copyright (C) 2006-2008 Christophe Devine
-Copyright (C) 2006-2010, Brainspark B.V.
+No longer includes code from the PolarSSL project.
+Copyright (C) 2016 Jeremy Harris <jgh@exim.org>
 
 This copy of PDKIM is included with Exim. For a standalone distribution,
 visit http://duncanthrax.net/pdkim/.
-
-License: Both the parts from PolarSSL and the original code are licensed
-under GPLv2+.
-
-Please note that the parts copied from PolarSSL are only used with ancient
-(< 2.10) GnuTLS.
------------------------------------------------------------------
-
 -----------------------------------------------------------------
-Generating a tarball from CVS snapshot.
-
-Upstream is keeping sourcecode and documentation (including changelog) in
-separate CVS modules: exim-src and exim-doc. However the release tarball
-contains parts from both modules.
-
-1. Use exim-src modules as base
-2. Generate a doc subdirectory containing he contents of exim-doc/doc-txt/.
-3. Take exim-doc and build the txt files You will need xfpt, xmlto, docbook-xsl
-and w3m.
-cd doc-docbook ; make spec.txt filter.txt exim.8
-Copy the three files to exim-version/doc/
-
index d616720..b8bde1e 100644 (file)
@@ -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 @@ acl_check_rcpt:
   # 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 @@ acl_check_rcpt:
   # 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
@@ -213,6 +223,7 @@ acl_check_rcpt:
   # the black list. See exim4-config_files(5) for details.
   deny
     message = sender envelope address $sender_address is locally blacklisted here. If you think this is wrong, get in touch with postmaster
+    log_message = sender envelope address is locally blacklisted.
     !acl = acl_local_deny_exceptions
     senders = ${if exists{CONFDIR/local_sender_blacklist}\
                    {CONFDIR/local_sender_blacklist}\
@@ -229,6 +240,7 @@ acl_check_rcpt:
   # the black list. See exim4-config_files(5) for details.
   deny
     message = sender IP address $sender_host_address is locally blacklisted here. If you think this is wrong, get in touch with postmaster
+    log_message = sender IP address is locally blacklisted.
     !acl = acl_local_deny_exceptions
     hosts = ${if exists{CONFDIR/local_host_blacklist}\
                  {CONFDIR/local_host_blacklist}\
index abfa164..5b5c099 100644 (file)
@@ -17,14 +17,14 @@ acl_check_data:
           condition  = ${if > {$max_received_linelength}{998}}
   .endif
 
-  # Deny unless the address list headers are syntactically correct.
+  # Deny if the headers contain badly-formed addresses.
   #
-  # If you enable this, you might reject legitimate mail.
-  .ifdef CHECK_DATA_VERIFY_HEADER_SYNTAX
+  .ifndef NO_CHECK_DATA_VERIFY_HEADER_SYNTAX
   deny
-    message = Message headers fail syntax check
     !acl = acl_local_deny_exceptions
     !verify = header_syntax
+    message = header syntax
+    log_message = header syntax ($acl_verify_message)
   .endif
 
 
@@ -50,25 +50,36 @@ acl_check_data:
 
 
   # Add headers to a message if it is judged to be spam. Before enabling this,
-  # you must install SpamAssassin. You also need to set the spamd_address
+  # you must install SpamAssassin. You may also need to set the spamd_address
   # option in the main configuration.
   #
   # exim4-daemon-heavy must be used for this section to work.
   #
-  # Please note that this is only suiteable as an example. There are
-  # multiple issues with this configuration method. For example, if you go
-  # this way, you'll give your spamassassin daemon write access to the
-  # entire exim spool which might be a security issue in case of a
-  # spamassassin exploit.
+  # Please note that this is only suiteable as an example. See
+  # /usr/share/doc/exim4-base/README.Debian.gz
   #
   # See the exim docs and the exim wiki for more suitable examples.
   #
+  # # Remove internal headers
   # warn
-  #   spam = Debian-exim:true
-  #   add_header = X-Spam_score: $spam_score\n\
-  #             X-Spam_score_int: $spam_score_int\n\
-  #             X-Spam_bar: $spam_bar\n\
-  #             X-Spam_report: $spam_report
+  #   remove_header = X-Spam_score: X-Spam_score_int : X-Spam_bar : \
+  #                   X-Spam_report
+  #
+  # warn
+  #   condition = ${if <{$message_size}{120k}{1}{0}}
+  #   # ":true" to add headers/acl variables even if not spam
+  #   spam = nobody:true
+  #   add_header = X-Spam_score: $spam_score
+  #   add_header = X-Spam_bar: $spam_bar
+  #   # Do not enable this unless you have shorted SpamAssassin's report
+  #   #add_header = X-Spam_report: $spam_report
+  #
+  # Reject spam messages (score >15.0).
+  # This breaks mailing list and forward messages.
+  # deny
+  #   message = Classified as spam (score $spam_score)
+  #   condition = ${if <{$message_size}{120k}{1}{0}}
+  #   condition = ${if >{$spam_score_int}{150}{true}{false}}
 
 
   # This hook allows you to hook in your own ACLs without having to
index 82b0d1f..baa48fa 100644 (file)
@@ -75,26 +75,6 @@ LOCAL_DELIVERY=mail_spool
 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
index bf00d03..abff1d8 100644 (file)
@@ -84,6 +84,10 @@ MAIN_HOST_LOOKUP = *
 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.
index 7681d91..8b03ae7 100644 (file)
@@ -19,6 +19,7 @@ dnslookup_relay_to_domains:
   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 @@ dnslookup:
   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
index 42bd601..bbad5fd 100644 (file)
@@ -51,3 +51,7 @@ tls_certificate = REMOTE_SMTP_TLS_CERTIFICATE
 .ifdef REMOTE_SMTP_PRIVATEKEY
 tls_privatekey = REMOTE_SMTP_PRIVATEKEY
 .endif
+.ifndef REMOTE_SMTP_DISABLE_DANE
+dnssec_request_domains = *
+hosts_try_dane = *
+.endif
index 9c18305..8c6b757 100644 (file)
@@ -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
index 59410db..084af7f 100644 (file)
@@ -353,7 +353,7 @@ UPEX4C_macros="${UPEX4C_macros}# dynamically by $0\n"
 preprocess_macro() {
   macroname="${1:-}"
   shift
-  contents="$(lowercase ${@:-empty} | check_ascii_pipe)"
+  contents="$(lowercase ${@} | check_ascii_pipe)"
   printf "%s" ".ifndef $macroname\n$macroname=$contents\n.endif\n"
 }
 
index 2c32320..f2bc72e 100644 (file)
@@ -21,17 +21,17 @@ fi
 
 if [ "$MODE" = 'stop' ]; then
   rm -f $SMARTHOSTFILE
-  /etc/init.d/exim4 reload > /dev/null || true
+  invoke exim4 reload > /dev/null || true
   exit 0
 fi
 
 if [ "$IF_EXIM4_SMARTHOST" = "none" ]; then
   rm -f $SMARTHOSTFILE
-  /etc/init.d/exim4 reload > /dev/null || true
+  invoke exim4 reload > /dev/null || true
   exit 0
 fi
 
 echo "DCsmarthost = ${IF_EXIM4_SMARTHOST}" > $SMARTHOSTFILE
 
-/etc/init.d/exim4 reload > /dev/null || true
+invoke exim4 reload > /dev/null || true
 /usr/sbin/exim4 -qqf
index c16aa76..e7ee18b 100644 (file)
@@ -1 +1 @@
-855d721412eba13426a8781cc804157d  -
+321b32be071eee7394d7884f9471e6bd  -
index 8f26b63..9ee4140 100644 (file)
@@ -98,8 +98,8 @@ if [ -x /usr/sbin/exim_tidydb ]; then
     # (see #373786 and #376165)
     find $SPOOLDIR/db -maxdepth 1 -name '*.lockfile' -or -name 'log.*' \
     -or -type f -printf '%f\0' | \
-    su - --shell /bin/bash \
-         --command "xargs -0r -n 1 /usr/sbin/exim_tidydb $SPOOLDIR > /dev/null" \
+    runuser --shell=/bin/bash \
+         --command="xargs -0r -n 1 /usr/sbin/exim_tidydb $SPOOLDIR > /dev/null" \
          Debian-exim
   fi
 fi
index 70c36b0..f45547e 100644 (file)
@@ -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
index cf76261..b785cea 100644 (file)
@@ -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
index 99b99ab..88bad16 100644 (file)
@@ -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
index 8bc24e3..61f2aff 100644 (file)
@@ -130,15 +130,19 @@ stop_exim()
 # we try to kill eximqr and exim SMTP listener, no matter what
 # ${QUEUERUNNER} is set to, we could have switched since starting.
   if [ -f "$QRPIDFILE" ]; then
-    killproc -p "$QRPIDFILE" "$DAEMON"
+    start-stop-daemon --stop --retry 5 --quiet --oknodo --remove-pidfile \
+      --pidfile "$QRPIDFILE" \
+      --exec "$DAEMON"
     # exim does not remove the pidfile
-    if [ $? -eq 0 ] ; then rm -f "$QRPIDFILE" ; fi
+    if [ $? -eq 2 ] ; then rm -f "$QRPIDFILE" ; fi
     log_progress_msg "exim4_queuerunner"
   fi
   if [ -f "$PIDFILE" ]; then
-    killproc -p "$PIDFILE" "$DAEMON"
+    start-stop-daemon --stop --retry 5 --quiet --oknodo --remove-pidfile \
+      --pidfile "$PIDFILE" \
+      --exec "$DAEMON"
     # exim does not remove the pidfile
-    if [ $? -eq 0 ] ; then rm -f "$PIDFILE" ; fi
+    if [ $? -eq 2 ] ; then rm -f "$PIDFILE" ; fi
     log_progress_msg "exim4_listener"
   fi
 }
@@ -147,13 +151,19 @@ reload_exim()
 {
   case ${QUEUERUNNER} in
     combined|no|ppp|queueonly)
-      killproc -p "$PIDFILE" "$DAEMON" -HUP
+      start-stop-daemon --stop --signal HUP --quiet --oknodo \
+        --pidfile "$PIDFILE" \
+        --exec "$DAEMON"
       log_progress_msg "exim4"
       ;;
     separate)
-      killproc -p "$PIDFILE" "$DAEMON" -HUP
+      start-stop-daemon --stop --signal HUP --quiet --oknodo \
+        --pidfile "$PIDFILE" \
+        --exec "$DAEMON"
       log_progress_msg "exim4_listener"
-      killproc -p "$QRPIDFILE" "$DAEMON" -HUP
+      start-stop-daemon --stop --signal HUP --quiet --oknodo \
+        --pidfile "$QRPIDFILE" \
+        --exec "$DAEMON"
       log_progress_msg "exim4_queuerunner"
       ;;
   esac
index f07dd6a..1578048 100644 (file)
@@ -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
index 318fb95..af32720 100644 (file)
@@ -2,6 +2,7 @@ b-exim4-daemon-light/doc/exim.8
 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/exinext.8
 debian/manpages/exiqgrep.8
 debian/manpages/exiqsumm.8
 debian/manpages/exiwhat.8
-debian/manpages/exim_convert4r4.8
index c875e52..a543546 100644 (file)
@@ -23,11 +23,7 @@ case "$1" in
                   cat /run/exim4/exim.pid
                   pidof exim4
                 fi
-               if command -v invoke-rc.d >/dev/null 2>&1; then
-                   invoke-rc.d exim4 stop
-               else
-                   /etc/init.d/exim4 stop
-               fi
+               invoke-rc.d exim4 stop
                 if [ -n "$EX4DEBUG" ]; then
                   netstat -tulpen
                   ls -al /run/exim4/
index e2a5709..a87381e 100644 (file)
@@ -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
index 9ad2aa1..94d6a91 100644 (file)
@@ -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
index 7888afb..542c9f5 100644 (file)
@@ -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
index f9d3635..decb79d 100644 (file)
@@ -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
index 9b6c819..a342ee2 100644 (file)
@@ -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 --git a/debian/exim4-daemon-heavy-dbg.links b/debian/exim4-daemon-heavy-dbg.links
deleted file mode 100644 (file)
index a53f6ad..0000000
+++ /dev/null
@@ -1 +0,0 @@
-usr/share/doc/exim4-base/changelog.gz usr/share/doc/exim4-daemon-heavy-dbg/changelog.gz
index 1971556..341ca05 100644 (file)
@@ -1,4 +1,4 @@
 /usr/lib/exim4
+/usr/lib/exim4/local_scan
 /usr/sbin
 /usr/share/man/man8
-/usr/lib/exim4/local_scan
index 28a9b62..373c212 100644 (file)
@@ -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 --git a/debian/exim4-daemon-light-dbg.links b/debian/exim4-daemon-light-dbg.links
deleted file mode 100644 (file)
index a8e778e..0000000
+++ /dev/null
@@ -1 +0,0 @@
-usr/share/doc/exim4-base/changelog.gz usr/share/doc/exim4-daemon-light-dbg/changelog.gz
index 6415a53..241b2dc 100644 (file)
@@ -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
index 1096ac8..4a2e108 100644 (file)
@@ -41,7 +41,7 @@ case "$1" in
                echo "Initializing GnuTLS DH parameter file" 1>&2
                tempgnutls=$(tempfile --directory /var/spool/exim4 --mode 644 --prefix  "gnutp")
                chown Debian-exim:Debian-exim $tempgnutls
-               if [ -x /usr/bin/certtool ] && \
+               if which certtool > /dev/null 2>&1 && \
                        timeout --preserve-status --kill-after=15 120 \
                        certtool --generate-dh-params --bits 2048 > $tempgnutls ; then
                                mv $tempgnutls /var/spool/exim4/gnutls-params-2048
index ddda13c..c7c3db8 100644 (file)
@@ -16,11 +16,7 @@ case "$1" in
                  cat /run/exim4/exim.pid
                  pidof exim4
                fi
-               if command -v invoke-rc.d >/dev/null 2>&1; then
-                   invoke-rc.d exim4 stop
-               else
-                   /etc/init.d/exim4 stop
-               fi
+               invoke-rc.d exim4 stop
                if [ -n "$EX4DEBUG" ]; then
                  netstat -tulpen
                  ls -al /run/exim4/
diff --git a/debian/exim4-dbg.links b/debian/exim4-dbg.links
deleted file mode 100644 (file)
index de4f4be..0000000
+++ /dev/null
@@ -1 +0,0 @@
-usr/share/doc/exim4-base/changelog.gz usr/share/doc/exim4-dbg/changelog.gz
index 3c2d914..d325233 100644 (file)
@@ -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
index a9615bd..3d162d8 100644 (file)
@@ -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
index 802fe2e..240369d 100644 (file)
@@ -1,2 +1,2 @@
-usr/sbin
 usr/lib/exim4
+usr/sbin
diff --git a/debian/eximon4.menu b/debian/eximon4.menu
deleted file mode 100644 (file)
index a4bbbe0..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-?package(eximon4):needs="X11" section="Applications/System/Administration"\
-  title="eximon" command="/usr/sbin/eximon"
index 92e44ee..23e03d0 100644 (file)
@@ -1 +1 @@
-courier-mta, esmtp-run, hula-mta, masqmail, mta-dummy, nullmailer, postfix, sendmail-bin, smail, ssmtp, xmail, zmailer
\ No newline at end of file
+citadel-server, courier-mta, dma, esmtp-run, hula-mta, masqmail, msmtp-mta, mta-dummy, nullmailer, opensmtpd, postfix, qmail-run, sendmail-bin, smail, ssmtp, xmail, zmailer
index af3ecd7..b8f8bf6 100755 (executable)
@@ -2,7 +2,7 @@ Description: We ship the binary as exim4 instead of exim, fix manpage
  accordingly.
 Author: Marc Haber <mh+debian-packages@zugschlus.de>, 
  Andreas Metzler <ametzler@bebt.de>
-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 @@ Forwarded: not-needed (upstream uses the "exim" name)
  PID_FILE_PATH in Local/Makefile. The file is written while Exim is still
  running as root.
  .sp
-@@ -175,7 +175,7 @@ of lookups, you will just get the same r
+@@ -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 @@ Forwarded: not-needed (upstream uses the "exim" name)
  .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
-@@ -201,7 +201,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 @@ Forwarded: not-needed (upstream uses the "exim" name)
  .sp
  This is helpful when the system filter adds header lines or sets filter
  variables that are used by the user filter.
-@@ -253,8 +253,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 @@ Forwarded: not-needed (upstream uses the "exim" name)
  .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
-@@ -412,7 +412,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 @@ Forwarded: not-needed (upstream uses the "exim" name)
  .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
-@@ -440,7 +440,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 @@ Forwarded: not-needed (upstream uses the "exim" name)
  .sp
  it searches for a matching named list of any type (domain, host, address, or
  local part) and outputs what it finds.
-@@ -449,7 +449,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 @@ Forwarded: not-needed (upstream uses the "exim" name)
  .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
-@@ -532,7 +532,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 @@ Forwarded: not-needed (upstream uses the "exim" name)
    Retry rule: *.comp.mus.example  F,2h,15m; F,4d,30m;
  .sp
   The first
-@@ -545,7 +545,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 @@ Forwarded: not-needed (upstream uses the "exim" name)
    Retry rule: *@haydn.comp.mus.example quota_3d  F,1h,15m
  .TP 10
  \fB\-brw\fP
-@@ -648,7 +648,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 @@ Forwarded: not-needed (upstream uses the "exim" name)
 +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.
-@@ -676,7 +676,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 @@ Forwarded: not-needed (upstream uses the "exim" name)
  security issues.
  .sp
  Verification differs from address testing (the \fB\-bt\fP option) in that routers
-@@ -789,14 +789,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 @@ Forwarded: not-needed (upstream uses the "exim" name)
  .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.
-@@ -926,8 +926,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 @@ Forwarded: not-needed (upstream uses the "exim" name)
  .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
-@@ -1292,12 +1292,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 @@ Forwarded: not-needed (upstream uses the "exim" name)
  .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
-@@ -1502,22 +1502,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 @@ Forwarded: not-needed (upstream uses the "exim" name)
  .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
-@@ -1533,7 +1533,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 @@ Forwarded: not-needed (upstream uses the "exim" name)
  .sp
  Such a daemon listens for incoming SMTP calls, and also starts a queue runner
  process every 30 minutes.
-@@ -1564,7 +1564,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 @@ Forwarded: not-needed (upstream uses the "exim" name)
  .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
-@@ -1680,6 +1680,26 @@ under most shells.
+@@ -1704,6 +1704,26 @@ under most shells.
  .sp
  .
  .SH "SEE ALSO"
old mode 100755 (executable)
new mode 100644 (file)
index 5098991..967869d
@@ -1,8 +1,8 @@
-Description: Accomodate source for installing exim as exim4.
+Description: Accommodate source for installing exim as exim4.
 Author: Andreas Metzler <ametzler@debian.org>
 Origin: vendor
 Forwarded: not-needed
-Last-Update: 2013-09-28
+Last-Update: 2018-12-12
 
 --- a/OS/Makefile-Linux
 +++ b/OS/Makefile-Linux
@@ -20,7 +20,7 @@ Last-Update: 2013-09-28
  # End
 --- a/src/exicyclog.src
 +++ b/src/exicyclog.src
-@@ -144,7 +144,7 @@ done
+@@ -149,7 +149,7 @@ done
  
  st='   '
  exim_path=`grep "^[$st]*exim_path" $config | sed "s/.*=[$st]*//"`
@@ -42,7 +42,7 @@ Last-Update: 2013-09-28
  #########################################################################
 --- a/src/eximon.src
 +++ b/src/eximon.src
-@@ -72,7 +72,7 @@ config=${EXIMON_EXIM_CONFIG-$config}
+@@ -79,7 +79,7 @@ config=${EXIMON_EXIM_CONFIG-$config}
  
  st='   '
  EXIM_PATH=`grep "^[$st]*exim_path" $config | sed "s/.*=[$st]*//"`
@@ -53,7 +53,7 @@ Last-Update: 2013-09-28
  LOG_FILE_PATH=`$EXIM_PATH -C $config -bP log_file_path | sed 's/.*=[  ]*//'`
 --- a/src/exinext.src
 +++ b/src/exinext.src
-@@ -90,7 +90,7 @@ if [ "$exim_path" = "" ]; then
+@@ -97,7 +97,7 @@ if [ "$exim_path" = "" ]; then
    exim_path=`grep "^[$st]*exim_path" $config | sed "s/.*=[$st]*//"`
  fi
  
@@ -62,7 +62,7 @@ Last-Update: 2013-09-28
  spool_directory=`$exim_path $eximmacdef -C $config -bP spool_directory | sed 's/.*=[  ]*//'`
  qualify_domain=`$exim_path $eximmacdef -C $config -bP qualify_domain | sed 's/.*=[  ]*//'`
  
-@@ -171,7 +171,7 @@ perl - $exim_path "$eximmacdef" $argone
+@@ -181,7 +181,7 @@ perl - $exim_path "$eximmacdef" $argone
  
    # Run exim_dumpdb to get out the retry data and pick off what we want
  
@@ -73,8 +73,8 @@ Last-Update: 2013-09-28
    while (<DATA>)
 --- a/src/exiqgrep.src
 +++ b/src/exiqgrep.src
-@@ -21,7 +21,7 @@ use strict;
- use Getopt::Std;
+@@ -24,7 +24,7 @@ use Getopt::Std;
+ use File::Basename;
  
  # Have this variable point to your exim binary.
 -my $exim = 'BIN_DIRECTORY/exim';
@@ -84,7 +84,7 @@ Last-Update: 2013-09-28
  my %opt;
 --- a/src/exiwhat.src
 +++ b/src/exiwhat.src
-@@ -88,7 +88,7 @@ fi
+@@ -98,7 +98,7 @@ fi
  
  st='   '
  exim_path=`grep "^[$st]*exim_path" $config | sed "s/.*=[$st]*//"`
@@ -95,12 +95,12 @@ Last-Update: 2013-09-28
  
 --- a/src/globals.c
 +++ b/src/globals.c
-@@ -705,7 +705,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 --git a/debian/patches/40_reproducible_build.diff b/debian/patches/40_reproducible_build.diff
deleted file mode 100644 (file)
index 818f0f3..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-Description: Reproducible build fix.
- Use REPBUILDDATE which is pulled from debian/changelog in debian/rules
- instead of __DATE__ as compile date.
-Author: Andreas Metzler <ametzler@debian.org>
-
---- a/exim_monitor/em_version.c
-+++ b/exim_monitor/em_version.c
-@@ -10,6 +10,8 @@
- #include <string.h>
- #include <stdlib.h>
-+#include "../src/repbuildtime.h"
-+
- extern uschar *version_string;
- extern uschar *version_date;
-@@ -21,7 +23,7 @@ uschar today[20];
- version_string = US"2.06";
--Ustrcpy(today, __DATE__);
-+Ustrcpy(today, REPBUILDDATE);
- if (today[4] == ' ') i = 1;
- today[3] = today[6] = '-';
-@@ -31,7 +33,7 @@ Ustrncat(version_date, today+4+i, 3-i);
- Ustrncat(version_date, today, 4);
- Ustrncat(version_date, today+7, 4);
- Ustrcat(version_date, " ");
--Ustrcat(version_date, __TIME__);
-+Ustrcat(version_date, REPBUILDTIME);
- }
- /* End of em_version.c */
---- a/src/version.c
-+++ b/src/version.c
-@@ -11,6 +11,8 @@
- #include "version.h"
-+#include "../src/repbuildtime.h"
-+
- /* The header file cnumber.h contains a single line containing the
- compilation number, making it easy to have it updated automatically.
-@@ -40,7 +42,7 @@ version_cnumber_format = US"%d\0<<eximcn
- sprintf(CS version_cnumber, CS version_cnumber_format, cnumber);
- version_string = US EXIM_VERSION_STR "\0<<eximversion>>";
--Ustrcpy(today, __DATE__);
-+Ustrcpy(today, REPBUILDDATE);
- if (today[4] == ' ') today[4] = '0';
- today[3] = today[6] = '-';
-@@ -50,7 +52,7 @@ Ustrncat(version_date, today+4, 3);
- Ustrncat(version_date, today, 4);
- Ustrncat(version_date, today+7, 4);
- Ustrcat(version_date, " ");
--Ustrcat(version_date, __TIME__);
-+Ustrcat(version_date, REPBUILDTIME);
- }
- /* End of version.c */
index cafa02d..290b913 100755 (executable)
@@ -4,9 +4,9 @@ Origin: vendor
 Forwarded: no
 Last-Update: 2013-09-28
 
---- exim4-4.82~rc1.orig/src/convert4r4.src
-+++ exim4-4.82~rc1/src/convert4r4.src
-@@ -652,6 +652,32 @@ return defined $main{$_[0]} && $main{$_[
+--- a/src/convert4r4.src
++++ b/src/convert4r4.src
+@@ -666,6 +666,32 @@ return defined $main{$_[0]} && $main{$_[
  
  print STDERR "Runtime configuration file converter for Exim release 4.\n";
  
index 4a819ef..daae1e4 100644 (file)
@@ -1,12 +1,12 @@
 Description: Stop using exim's -C option in utility scripts (exiwhat
   et al.) since this breaks with ALT_CONFIG_PREFIX.
-Author: Andreas Metzler <ametzler@downhill.at.eu.org>
+Author: Andreas Metzler <ametzler@bebt.de>
 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
-@@ -146,10 +146,10 @@ st='      '
+@@ -151,10 +151,10 @@ st='      '
  exim_path=`grep "^[$st]*exim_path" $config | sed "s/.*=[$st]*//"`
  if test "$exim_path" = ""; then exim_path=BIN_DIRECTORY/exim4; fi
  
@@ -21,7 +21,7 @@ Last-Update: 2014-12-01
  # If log_file_path contains only "syslog" then no Exim log files are in use.
 --- a/src/eximon.src
 +++ b/src/eximon.src
-@@ -74,8 +74,8 @@ st='  '
+@@ -81,8 +81,8 @@ st='  '
  EXIM_PATH=`grep "^[$st]*exim_path" $config | sed "s/.*=[$st]*//"`
  if test "$EXIM_PATH" = ""; then EXIM_PATH=BIN_DIRECTORY/exim4; fi
  
@@ -34,7 +34,7 @@ Last-Update: 2014-12-01
  # is unable to display a log tail unless EXIMON_LOG_FILE_PATH is set to tell
 --- a/src/exinext.src
 +++ b/src/exinext.src
-@@ -91,8 +91,8 @@ if [ "$exim_path" = "" ]; then
+@@ -98,8 +98,8 @@ if [ "$exim_path" = "" ]; then
  fi
  
  if test "$exim_path" = ""; then exim_path=BIN_DIRECTORY/exim4; fi
@@ -45,7 +45,7 @@ Last-Update: 2014-12-01
  
  # Now do the job. Perl uses $ so frequently that we don't want to have to
  # escape them all from the shell, so pass in shell variable values as
-@@ -134,7 +134,7 @@ perl - $exim_path "$eximmacdef" $argone
+@@ -144,7 +144,7 @@ perl - $exim_path "$eximmacdef" $argone
    # Run Exim to get a list of hosts for the given domain; for
    # each one construct the appropriate retry key.
  
@@ -56,7 +56,7 @@ Last-Update: 2014-12-01
    while (<LIST>)
 --- a/src/exiwhat.src
 +++ b/src/exiwhat.src
-@@ -89,8 +89,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
index 81e364f..9efe04f 100755 (executable)
@@ -1,9 +1,6 @@
-#! /bin/sh /usr/share/dpatch/dpatch-run
-## 70_remove_exim-users_references.dpatch by Marc Haber <mh+debian-packages@zugschlus.de>
-##
-## 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 <mh+debian-packages@zugschlus.de>
+Last-Update: 2018-12-31
 
 --- a/README
 +++ b/README
@@ -11,7 +8,7 @@ Last-Update: 2014-12-01
  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 @@ Last-Update: 2014-12-01
 +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 @@ Last-Update: 2014-12-01
  
  =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 --git a/debian/patches/75_01-Fix-json-extract-operator-for-unfound-case.patch b/debian/patches/75_01-Fix-json-extract-operator-for-unfound-case.patch
new file mode 100644 (file)
index 0000000..a0978af
--- /dev/null
@@ -0,0 +1,69 @@
+From b2734f7b45111f9b7de790c7b334a2ece47675b5 Mon Sep 17 00:00:00 2001
+From: Jeremy Harris <jgh146exb@wizmail.org>
+Date: Sat, 9 Feb 2019 16:56:59 +0000
+Subject: [PATCH 1/7] Fix json extract operator for unfound case
+
+(cherry picked from commit e73798976812e652320f096870359ef35ed069ff)
+---
+ doc/doc-docbook/spec.xfpt    |  4 ++++
+ src/expand.c             | 13 ++++++++-----
+ test/scripts/0000-Basic/0002 |  3 +++
+ test/stdout/0002             |  3 +++
+ 4 files changed, 18 insertions(+), 5 deletions(-)
+
+--- a/src/expand.c
++++ b/src/expand.c
+@@ -3901,7 +3901,8 @@ return NULL;
+ /* Pull off the leading array or object element, returning
+ a copy in an allocated string.  Update the list pointer.
+-The element may itself be an abject or array.
++The element may itself be an object or array.
++Return NULL when the list is empty.
+ */
+ uschar *
+@@ -3923,6 +3924,7 @@ for (item = s;
+     case '}': object_depth--; break;
+     }
+ *list = *s ? s+1 : s;
++if (item == s) return NULL;
+ item = string_copyn(item, s - item);
+ DEBUG(D_expand) debug_printf_indent("  json ele: '%s'\n", item);
+ return US item;
+@@ -5790,10 +5792,11 @@ while (*s != 0)
+             }
+           while (field_number > 0 && (item = json_nextinlist(&list)))
+             field_number--;
+-          s = item;
+-          lookup_value = s;
+-          while (*s) s++;
+-          while (--s >= lookup_value && isspace(*s)) *s = '\0';
++          if ((lookup_value = s = item))
++            {
++            while (*s) s++;
++            while (--s >= lookup_value && isspace(*s)) *s = '\0';
++            }
+           }
+         else
+           {
+--- a/doc/spec.txt
++++ b/doc/spec.txt
+@@ -8776,6 +8776,8 @@ ${extract json{<key>}{<string1>}{<string
+     The braces, commas and colons, and the quoting of the member name are
+     required; the spaces are optional. Matching of the key against the member
+     names is done case-sensitively.
++    If a returned value is a JSON string, it retains its leading and
++    trailing quotes.
+     The results of matching are handled as above.
+@@ -8813,6 +8815,8 @@ ${extract json{<number>}}{<string1>}{<st
+     Field selection and result handling is as above; there is no choice of
+     field separator.
++    If a returned value is a JSON string, it retains its leading and
++    trailing quotes.
+ ${filter{<string>}{<condition>}}
diff --git a/debian/patches/75_02-Fix-transport-buffer-size-handling.patch b/debian/patches/75_02-Fix-transport-buffer-size-handling.patch
new file mode 100644 (file)
index 0000000..a96350b
--- /dev/null
@@ -0,0 +1,52 @@
+From 1cfa7822ca8928f95160df8742af11fff888ae7e Mon Sep 17 00:00:00 2001
+From: Jeremy Harris <jgh146exb@wizmail.org>
+Date: Tue, 12 Feb 2019 16:52:51 +0000
+Subject: [PATCH 3/7] Fix transport buffer size handling Broken-by: 59932f7dcd
+
+(cherry picked from commit 05bf16f6217e93594929c8bbbbbc852caf3ed374)
+---
+ doc/ChangeLog | 7 +++++++
+ src/transport.c   | 4 ++--
+ 2 files changed, 9 insertions(+), 2 deletions(-)
+
+diff --git a/doc/ChangeLog b/doc/ChangeLog
+index 7da07ad4..66c8a7a1 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.92
++------------------
++
++JH/06 Fix buggy handling of autoreply bounce_return_size_limit, and a possible
++      buffer overrun for (non-chunking) other transports.
++
++
+ Exim version 4.92
+ -----------------
+diff --git a/src/transport.c b/src/transport.c
+index 8ccdd038..a069b883 100644
+--- a/src/transport.c
++++ b/src/transport.c
+@@ -1115,13 +1115,13 @@ DEBUG(D_transport)
+ if (!(tctx->options & topt_no_body))
+   {
+-  int size = size_limit;
++  unsigned long size = size_limit > 0 ? size_limit : ULONG_MAX;
+   nl_check_length = abs(nl_check_length);
+   nl_partial_match = 0;
+   if (lseek(deliver_datafile, SPOOL_DATA_START_OFFSET, SEEK_SET) < 0)
+     return FALSE;
+-  while (  (len = MAX(DELIVER_IN_BUFFER_SIZE, size)) > 0
++  while (  (len = MIN(DELIVER_IN_BUFFER_SIZE, size)) > 0
+       && (len = read(deliver_datafile, deliver_in_buffer, len)) > 0)
+     {
+     if (!write_chunk(tctx, deliver_in_buffer, len))
+-- 
+2.20.1
+
diff --git a/debian/patches/75_03-Fix-info-on-using-local_scan-in-the-default-Makefile.patch b/debian/patches/75_03-Fix-info-on-using-local_scan-in-the-default-Makefile.patch
new file mode 100644 (file)
index 0000000..6db6f83
--- /dev/null
@@ -0,0 +1,42 @@
+From cb25b75af850d664fc005d24fbad0e58bf79d4c7 Mon Sep 17 00:00:00 2001
+From: Jeremy Harris <jgh146exb@wizmail.org>
+Date: Thu, 14 Feb 2019 17:14:34 +0000
+Subject: [PATCH 5/7] Fix info on using local_scan() in the default Makefile
+
+Broken-by: 9723f96673
+(cherry picked from commit 882bc1704d33aa34873e3a0f72e657b0cc2985e5)
+---
+ OS/Makefile-Default | 10 ++++++++--
+ 1 file changed, 8 insertions(+), 2 deletions(-)
+
+diff --git a/OS/Makefile-Default b/OS/Makefile-Default
+index b3990fe8..41a4dbbd 100644
+--- a/OS/Makefile-Default
++++ b/OS/Makefile-Default
+@@ -232,6 +232,11 @@ RANLIB=ranlib
+ EXIM_CHMOD=@true
++# If you want to use local_scan() at all, the support code must be included
++# by uncommenting this line.
++
++# HAVE_LOCAL_SCAN=yes
++
+ # LOCAL_SCAN_SOURCE defines the file in which the function local_scan() is
+ # defined. This provides the administrator with a hook for including C code
+ # for scanning incoming mails. The path that is defined must be relative to
+@@ -239,8 +244,9 @@ EXIM_CHMOD=@true
+ # LOCAL_SCAN_SOURCE=Local/local_scan.c
+-# The default setting points to a template function that doesn't actually do
+-# any scanning, but just accepts the message.
++# A very simple example points to a template function that doesn't actually do
++# any scanning, but just accepts the message.  A compilable file must be
++# included in the build even if HAVE_LOCAL_SCAN is not defined.
+ LOCAL_SCAN_SOURCE=src/local_scan.c
+-- 
+2.20.1
+
diff --git a/debian/patches/75_04-GnuTLS-Fix-client-detection-of-server-reject-of-clie.patch b/debian/patches/75_04-GnuTLS-Fix-client-detection-of-server-reject-of-clie.patch
new file mode 100644 (file)
index 0000000..c45f6aa
--- /dev/null
@@ -0,0 +1,420 @@
+From c15523829ba17cce5829e2976aa1ff928965d948 Mon Sep 17 00:00:00 2001
+From: Jeremy Harris <jgh146exb@wizmail.org>
+Date: Sat, 16 Feb 2019 12:59:23 +0000
+Subject: [PATCH 7/7] GnuTLS: Fix client detection of server reject of client
+ cert under TLS1.3
+
+(cherry picked from commit fc243e944ec00b59b75f41d07494116f925d58b4)
+---
+ doc/ChangeLog         |  7 +++
+ src/deliver.c             |  2 +-
+ src/smtp_out.c            | 10 +++--
+ src/tls-gnu.c             | 23 +++-------
+ src/transports/lmtp.c     |  3 +-
+ src/transports/smtp.c     | 81 +++++++++++++++++++++++++++--------
+ test/confs/2027               |  8 ++--
+ test/confs/5652               |  1 +
+ test/confs/5821               |  2 +-
+ test/log/2027                 |  2 +-
+ test/runtest                  | 14 ++++++
+ test/scripts/2000-GnuTLS/2027 |  2 +
+ 12 files changed, 111 insertions(+), 44 deletions(-)
+
+diff --git a/doc/ChangeLog b/doc/ChangeLog
+index 66c8a7a1..867a1d8a 100644
+--- a/doc/ChangeLog
++++ b/doc/ChangeLog
+@@ -11,6 +11,13 @@ Since version 4.92
+ JH/06 Fix buggy handling of autoreply bounce_return_size_limit, and a possible
+       buffer overrun for (non-chunking) other transports.
++JH/07 GnuTLS: Our use of late (post-handshake) certificate verification, under
++      TLS1.3, means that a server rejecting a client certificate is not visible
++      to the client until the first read of encrypted data (typically the
++      response to EHLO).  Add detection for that case and treat it as a failed
++      TLS connection attempt, so that the normal retry-in-clear can work (if
++      suitably configured).
++
+ Exim version 4.92
+ -----------------
+diff --git a/src/deliver.c b/src/deliver.c
+index 664d0045..e1799411 100644
+--- a/src/deliver.c
++++ b/src/deliver.c
+@@ -7433,7 +7433,7 @@ if (addr_senddsn)
+     tctx.u.fd = fd;
+     tctx.options = topt_add_return_path | topt_no_body;
+-    /*XXX hmm, retval ignored.
++    /*XXX hmm, FALSE(fail) retval ignored.
+     Could error for any number of reasons, and they are not handled. */
+     transport_write_message(&tctx, 0);
+     fflush(f);
+diff --git a/src/smtp_out.c b/src/smtp_out.c
+index 9bd90c77..b194e804 100644
+--- a/src/smtp_out.c
++++ b/src/smtp_out.c
+@@ -688,20 +688,22 @@ Returns:    TRUE if a valid, non-error response was received; else FALSE
+ /*XXX could move to smtp transport; no other users */
+ BOOL
+-smtp_read_response(void * sx0, uschar *buffer, int size, int okdigit,
++smtp_read_response(void * sx0, uschar * buffer, int size, int okdigit,
+    int timeout)
+ {
+ smtp_context * sx = sx0;
+-uschar *ptr = buffer;
+-int count = 0;
++uschar * ptr = buffer;
++int count = 0, rc;
+ errno = 0;  /* Ensure errno starts out zero */
+ #ifdef EXPERIMENTAL_PIPE_CONNECT
+ if (sx->pending_BANNER || sx->pending_EHLO)
+-  if (smtp_reap_early_pipe(sx, &count) != OK)
++  if ((rc = smtp_reap_early_pipe(sx, &count)) != OK)
+     {
+     DEBUG(D_transport) debug_printf("failed reaping pipelined cmd responsess\n");
++    buffer[0] = '\0';
++    if (rc == DEFER) errno = ERRNO_TLSFAILURE;
+     return FALSE;
+     }
+ #endif
+diff --git a/src/tls-gnu.c b/src/tls-gnu.c
+index c404dc29..de2d70c0 100644
+--- a/src/tls-gnu.c
++++ b/src/tls-gnu.c
+@@ -229,7 +229,7 @@ static gnutls_dh_params_t dh_server_params = NULL;
+ static const int ssl_session_timeout = 200;
+-static const char * const exim_default_gnutls_priority = "NORMAL";
++static const uschar * const exim_default_gnutls_priority = US"NORMAL";
+ /* Guard library core initialisation */
+@@ -1278,7 +1278,6 @@ int rc;
+ size_t sz;
+ const char *errpos;
+ uschar *p;
+-BOOL want_default_priorities;
+ if (!exim_gnutls_base_init_done)
+   {
+@@ -1387,32 +1386,24 @@ and replaces gnutls_require_kx, gnutls_require_mac & gnutls_require_protocols.
+ This was backwards incompatible, but means Exim no longer needs to track
+ all algorithms and provide string forms for them. */
+-want_default_priorities = TRUE;
+-
++p = NULL;
+ if (state->tls_require_ciphers && *state->tls_require_ciphers)
+   {
+   if (!expand_check_tlsvar(tls_require_ciphers, errstr))
+     return DEFER;
+   if (state->exp_tls_require_ciphers && *state->exp_tls_require_ciphers)
+     {
+-    DEBUG(D_tls) debug_printf("GnuTLS session cipher/priority \"%s\"\n",
+-        state->exp_tls_require_ciphers);
+-
+-    rc = gnutls_priority_init(&state->priority_cache,
+-        CS state->exp_tls_require_ciphers, &errpos);
+-    want_default_priorities = FALSE;
+     p = state->exp_tls_require_ciphers;
++    DEBUG(D_tls) debug_printf("GnuTLS session cipher/priority \"%s\"\n", p);
+     }
+   }
+-if (want_default_priorities)
++if (!p)
+   {
++  p = exim_default_gnutls_priority;
+   DEBUG(D_tls)
+-    debug_printf("GnuTLS using default session cipher/priority \"%s\"\n",
+-        exim_default_gnutls_priority);
+-  rc = gnutls_priority_init(&state->priority_cache,
+-      exim_default_gnutls_priority, &errpos);
+-  p = US exim_default_gnutls_priority;
++    debug_printf("GnuTLS using default session cipher/priority \"%s\"\n", p);
+   }
++rc = gnutls_priority_init(&state->priority_cache, CCS p, &errpos);
+ exim_gnutls_err_check(rc, string_sprintf(
+       "gnutls_priority_init(%s) failed at offset %ld, \"%.6s..\"",
+diff --git a/src/transports/lmtp.c b/src/transports/lmtp.c
+index 240d78b2..57b346d4 100644
+--- a/src/transports/lmtp.c
++++ b/src/transports/lmtp.c
+@@ -122,7 +122,8 @@ Arguments:
+ Returns:       TRUE if a "QUIT" command should be sent, else FALSE
+ */
+-static BOOL check_response(int *errno_value, int more_errno, uschar *buffer,
++static BOOL
++check_response(int *errno_value, int more_errno, uschar *buffer,
+   int *yield, uschar **message)
+ {
+ *yield = '4';    /* Default setting is to give a temporary error */
+diff --git a/src/transports/smtp.c b/src/transports/smtp.c
+index a351da84..bfd6018d 100644
+--- a/src/transports/smtp.c
++++ b/src/transports/smtp.c
+@@ -594,6 +594,11 @@ switch(*errno_value)
+         pl, smtp_command, s);
+     return FALSE;
++  case ERRNO_TLSFAILURE:      /* Handle bad first read; can happen with
++                              GnuTLS and TLS1.3 */
++    *message = US"bad first read from TLS conn";
++    return TRUE;
++
+   case ERRNO_FILTER_FAIL:     /* Handle a failed filter process error;
+                         can't send QUIT as we mustn't end the DATA. */
+     *message = string_sprintf("transport filter process failed (%d)%s",
+@@ -942,6 +947,7 @@ Arguments:
+ Return:
+  OK   all well
++ DEFER        error on first read of TLS'd conn
+  FAIL SMTP error in response
+ */
+ int
+@@ -949,6 +955,7 @@ smtp_reap_early_pipe(smtp_context * sx, int * countp)
+ {
+ BOOL pending_BANNER = sx->pending_BANNER;
+ BOOL pending_EHLO = sx->pending_EHLO;
++int rc = FAIL;
+ sx->pending_BANNER = FALSE;   /* clear early to avoid recursion */
+ sx->pending_EHLO = FALSE;
+@@ -960,6 +967,7 @@ if (pending_BANNER)
+   if (!smtp_reap_banner(sx))
+     {
+     DEBUG(D_transport) debug_printf("bad banner\n");
++    if (tls_out.active.sock >= 0) rc = DEFER;
+     goto fail;
+     }
+   }
+@@ -974,6 +982,7 @@ if (pending_EHLO)
+   if (!smtp_reap_ehlo(sx))
+     {
+     DEBUG(D_transport) debug_printf("bad response for EHLO\n");
++    if (tls_out.active.sock >= 0) rc = DEFER;
+     goto fail;
+     }
+@@ -1011,7 +1020,7 @@ return OK;
+ fail:
+   invalidate_ehlo_cache_entry(sx);
+   (void) smtp_discard_responses(sx, sx->conn_args.ob, *countp);
+-  return FAIL;
++  return rc;
+ }
+ #endif
+@@ -1056,6 +1065,7 @@ Returns:      3 if at least one address had 2xx and one had 5xx
+              -2 I/O or other non-response error for RCPT
+              -3 DATA or MAIL failed - errno and buffer set
+            -4 banner or EHLO failed (early-pipelining)
++           -5 banner or EHLO failed (early-pipelining, TLS)
+ */
+ static int
+@@ -1064,10 +1074,11 @@ sync_responses(smtp_context * sx, int count, int pending_DATA)
+ address_item * addr = sx->sync_addr;
+ smtp_transport_options_block * ob = sx->conn_args.ob;
+ int yield = 0;
++int rc;
+ #ifdef EXPERIMENTAL_PIPE_CONNECT
+-if (smtp_reap_early_pipe(sx, &count) != OK)
+-  return -4;
++if ((rc = smtp_reap_early_pipe(sx, &count)) != OK)
++  return rc == FAIL ? -4 : -5;
+ #endif
+ /* Handle the response for a MAIL command. On error, reinstate the original
+@@ -1083,6 +1094,8 @@ if (sx->pending_MAIL)
+     {
+     DEBUG(D_transport) debug_printf("bad response for MAIL\n");
+     Ustrcpy(big_buffer, mail_command);  /* Fits, because it came from there! */
++    if (errno == ERRNO_TLSFAILURE)
++      return -5;
+     if (errno == 0 && sx->buffer[0] != 0)
+       {
+       int save_errno = 0;
+@@ -1141,6 +1154,11 @@ while (count-- > 0)
+       }
+     }
++  /* Error on first TLS read */
++
++  else if (errno == ERRNO_TLSFAILURE)
++    return -5;
++
+   /* Timeout while reading the response */
+   else if (errno == ETIMEDOUT)
+@@ -1253,6 +1271,10 @@ if (pending_DATA != 0)
+     int code;
+     uschar *msg;
+     BOOL pass_message;
++
++    if (errno == ERRNO_TLSFAILURE)    /* Error on first TLS read */
++      return -5;
++
+     if (pending_DATA > 0 || (yield & 1) != 0)
+       {
+       if (errno == 0 && sx->buffer[0] == '4')
+@@ -1802,7 +1824,9 @@ Args:
+    tc_chunk_last      add LAST option to SMTP BDAT command
+    tc_reap_prev               reap response to previous SMTP commands
+-Returns:      OK or ERROR
++Returns:
++  OK or ERROR
++  DEFER                       TLS error on first read (EHLO-resp); errno set
+ */
+ static int
+@@ -1859,10 +1883,12 @@ if (flags & tc_reap_prev  &&  prev_cmd_count > 0)
+     case 2: sx->completed_addr = TRUE;        /* 5xx (only) => progress made */
+     case 0: break;                    /* No 2xx or 5xx, but no probs */
+-    case -1:                          /* Timeout on RCPT */
++    case -5: errno = ERRNO_TLSFAILURE;
++           return DEFER;
+ #ifdef EXPERIMENTAL_PIPE_CONNECT
+     case -4:                          /* non-2xx for pipelined banner or EHLO */
+ #endif
++    case -1:                          /* Timeout on RCPT */
+     default: return ERROR;            /* I/O error, or any MAIL/DATA error */
+     }
+   cmd_count = 1;
+@@ -1933,6 +1959,9 @@ BOOL pass_message = FALSE;
+ uschar * message = NULL;
+ int yield = OK;
+ int rc;
++#ifdef SUPPORT_TLS
++uschar * tls_errstr;
++#endif
+ sx->conn_args.ob = ob;
+@@ -2474,27 +2503,27 @@ if (  smtp_peer_options & OPTION_TLS
+   TLS_NEGOTIATE:
+     {
+     address_item * addr;
+-    uschar * errstr;
+     sx->cctx.tls_ctx = tls_client_start(sx->cctx.sock, sx->conn_args.host,
+                           sx->addrlist, sx->conn_args.tblock,
+ # ifdef SUPPORT_DANE
+                            sx->dane ? &tlsa_dnsa : NULL,
+ # endif
+-                           &tls_out, &errstr);
++                           &tls_out, &tls_errstr);
+     if (!sx->cctx.tls_ctx)
+       {
+       /* TLS negotiation failed; give an error. From outside, this function may
+       be called again to try in clear on a new connection, if the options permit
+       it for this host. */
+-      DEBUG(D_tls) debug_printf("TLS session fail: %s\n", errstr);
++GNUTLS_CONN_FAILED:
++      DEBUG(D_tls) debug_printf("TLS session fail: %s\n", tls_errstr);
+ # ifdef SUPPORT_DANE
+       if (sx->dane)
+         {
+       log_write(0, LOG_MAIN,
+         "DANE attempt failed; TLS connection to %s [%s]: %s",
+-        sx->conn_args.host->name, sx->conn_args.host->address, errstr);
++        sx->conn_args.host->name, sx->conn_args.host->address, tls_errstr);
+ #  ifndef DISABLE_EVENT
+       (void) event_raise(sx->conn_args.tblock->event_action,
+         US"dane:fail", US"validation-failure");       /* could do with better detail */
+@@ -2503,7 +2532,7 @@ if (  smtp_peer_options & OPTION_TLS
+ # endif
+       errno = ERRNO_TLSFAILURE;
+-      message = string_sprintf("TLS session: %s", errstr);
++      message = string_sprintf("TLS session: %s", tls_errstr);
+       sx->send_quit = FALSE;
+       goto TLS_FAILED;
+       }
+@@ -2601,7 +2630,22 @@ if (tls_out.active.sock >= 0)
+ #endif
+     {
+     if (!smtp_reap_ehlo(sx))
++#ifdef USE_GNUTLS
++      {
++      /* The GnuTLS layer in Exim only spots a server-rejection of a client
++      cert late, under TLS1.3 - which means here; the first time we try to
++      receive crypted data.  Treat it as if it was a connect-time failure.
++      See also the early-pipe equivalent... which will be hard; every call
++      to sync_responses will need to check the result.
++      It would be nicer to have GnuTLS check the cert during the handshake.
++      Can it do that, with all the flexibility we need? */
++
++      tls_errstr = US"error on first read";
++      goto GNUTLS_CONN_FAILED;
++      }
++#else
+       goto RESPONSE_FAILED;
++#endif
+     smtp_peer_options = 0;
+     }
+   }
+@@ -3261,6 +3305,7 @@ for (addr = sx->first_addr, address_count = 0;
+ #ifdef EXPERIMENTAL_PIPE_CONNECT
+       case -4: return -1;                     /* non-2xx for pipelined banner or EHLO */
++      case -5: return -1;                     /* TLS first-read error */
+ #endif
+       }
+     sx->pending_MAIL = FALSE;            /* Dealt with MAIL */
+@@ -3589,11 +3634,12 @@ if (  !(sx.peer_offered & OPTION_CHUNKING)
+     case 1: sx.ok = TRUE;            /* 2xx (only) => OK, but if LMTP, */
+     if (!sx.lmtp) sx.completed_addr = TRUE; /* can't tell about progress yet */
+-    case 0: break;                       /* No 2xx or 5xx, but no probs */
++    case 0: break;                    /* No 2xx or 5xx, but no probs */
+-    case -1: goto END_OFF;               /* Timeout on RCPT */
++    case -1: goto END_OFF;            /* Timeout on RCPT */
+ #ifdef EXPERIMENTAL_PIPE_CONNECT
++    case -5:                          /* TLS first-read error */
+     case -4:  HDEBUG(D_transport)
+               debug_printf("failed reaping pipelined cmd responses\n");
+ #endif
+@@ -3730,19 +3776,20 @@ else
+       {
+       case 3: sx.ok = TRUE;            /* 2xx & 5xx => OK & progress made */
+       case 2: sx.completed_addr = TRUE;    /* 5xx (only) => progress made */
+-      break;
++            break;
+-      case 1: sx.ok = TRUE;            /* 2xx (only) => OK, but if LMTP, */
++      case 1: sx.ok = TRUE;           /* 2xx (only) => OK, but if LMTP, */
+       if (!sx.lmtp) sx.completed_addr = TRUE; /* can't tell about progress yet */
+-      case 0: break;                       /* No 2xx or 5xx, but no probs */
++      case 0: break;                  /* No 2xx or 5xx, but no probs */
+-      case -1: goto END_OFF;               /* Timeout on RCPT */
++      case -1: goto END_OFF;          /* Timeout on RCPT */
+ #ifdef EXPERIMENTAL_PIPE_CONNECT
++      case -5:                                /* TLS first-read error */
+       case -4:  HDEBUG(D_transport)
+                 debug_printf("failed reaping pipelined cmd responses\n");
+ #endif
+-      default: goto RESPONSE_FAILED;       /* I/O error, or any MAIL/DATA error */
++      default: goto RESPONSE_FAILED;  /* I/O error, or any MAIL/DATA error */
+       }
+     }
+-- 
+2.20.1
+
diff --git a/debian/patches/75_05-Fix-expansions-for-RFC-822-addresses-having-comments.patch b/debian/patches/75_05-Fix-expansions-for-RFC-822-addresses-having-comments.patch
new file mode 100644 (file)
index 0000000..517eb1c
--- /dev/null
@@ -0,0 +1,91 @@
+From f634b80846cc7ffcab65c9855bcb35312f0232e8 Mon Sep 17 00:00:00 2001
+From: Jasen Betts <jasen@xnet.co.nz>
+Date: Mon, 18 Feb 2019 13:52:16 +0000
+Subject: [PATCH 1/5] Fix expansions for RFC 822 addresses having comments in
+ local-part and/or domain.  Bug 2375
+
+(cherry picked from commit e2ff8e24f41caca3623228b1ec66a3f3961ecad6)
+---
+ doc/ChangeLog        |  3 +++
+ src/expand.c             | 19 +++++++------------
+ test/scripts/0000-Basic/0002 |  7 +++++++
+ test/stdout/0002             |  7 +++++++
+ 4 files changed, 24 insertions(+), 12 deletions(-)
+
+diff --git a/doc/ChangeLog b/doc/ChangeLog
+index 867a1d8a..9659da32 100644
+--- a/doc/ChangeLog
++++ b/doc/ChangeLog
+@@ -16,10 +16,13 @@ JH/07 GnuTLS: Our use of late (post-handshake) certificate verification, under
+       to the client until the first read of encrypted data (typically the
+       response to EHLO).  Add detection for that case and treat it as a failed
+       TLS connection attempt, so that the normal retry-in-clear can work (if
+       suitably configured).
++JB/01 BZg 2375: fix expansions of 822 addresses having comments in local-part
++      and/or domain.  Found and fixed by Jason Betts.
++
+ Exim version 4.92
+ -----------------
+ JH/01 Remove code calling the customisable local_scan function, unless a new
+diff --git a/src/expand.c b/src/expand.c
+index 2c290251..35ede718 100644
+--- a/src/expand.c
++++ b/src/expand.c
+@@ -7071,20 +7071,15 @@ while (*s != 0)
+         uschar * error;
+         int start, end, domain;
+         uschar * t = parse_extract_address(sub, &error, &start, &end, &domain,
+           FALSE);
+         if (t)
+-          if (c != EOP_DOMAIN)
+-            {
+-            if (c == EOP_LOCAL_PART && domain != 0) end = start + domain - 1;
+-            yield = string_catn(yield, sub+start, end-start);
+-            }
+-          else if (domain != 0)
+-            {
+-            domain += start;
+-            yield = string_catn(yield, sub+domain, end-domain);
+-            }
++        yield = c == EOP_DOMAIN
++          ? string_cat(yield, t + domain)
++          : c == EOP_LOCAL_PART && domain > 0
++          ? string_catn(yield, t, domain - 1 )
++          : string_cat(yield, t);
+         continue;
+         }
+       case EOP_ADDRESSES:
+         {
+@@ -7104,11 +7099,11 @@ while (*s != 0)
+             }
+         f.parse_allow_group = TRUE;
+         for (;;)
+           {
+-          uschar *p = parse_find_address_end(sub, FALSE);
++          uschar * p = parse_find_address_end(sub, FALSE);
+           uschar saveend = *p;
+           *p = '\0';
+           address = parse_extract_address(sub, &error, &start, &end, &domain,
+             FALSE);
+           *p = saveend;
+@@ -7117,11 +7112,11 @@ while (*s != 0)
+           done in chunks by searching for the separator character. At the
+           start, unless we are dealing with the first address of the output
+           list, add in a space if the new address begins with the separator
+           character, or is an empty string. */
+-          if (address != NULL)
++          if (address)
+             {
+             if (yield->ptr != save_ptr && address[0] == *outsep)
+               yield = string_catn(yield, US" ", 1);
+             for (;;)
+-- 
+2.20.1
+
diff --git a/debian/patches/75_06-Docs-Add-note-on-lsearch-for-IPv4-mapped-IPv6-addres.patch b/debian/patches/75_06-Docs-Add-note-on-lsearch-for-IPv4-mapped-IPv6-addres.patch
new file mode 100644 (file)
index 0000000..a7863ef
--- /dev/null
@@ -0,0 +1,48 @@
+From 8dde16b89efe2138f92cbfa6c59fb31dc80ec22a Mon Sep 17 00:00:00 2001
+From: Jeremy Harris <jgh146exb@wizmail.org>
+Date: Tue, 19 Feb 2019 14:45:27 +0000
+Subject: [PATCH 2/5] Docs: Add note on lsearch for IPv4-mapped IPv6 addresses
+
+Cherry-picked from: 52af443324, c77d3d85fe
+---
+ doc/doc-docbook/spec.xfpt | 11 ++++++++++-
+ doc/ChangeLog     |  2 +-
+ 2 files changed, 11 insertions(+), 2 deletions(-)
+
+--- a/doc/ChangeLog
++++ b/doc/ChangeLog
+@@ -18,7 +18,7 @@ JH/07 GnuTLS: Our use of late (post-hand
+       TLS connection attempt, so that the normal retry-in-clear can work (if
+       suitably configured).
+-JB/01 BZg 2375: fix expansions of 822 addresses having comments in local-part
++JB/01 Bug 2375: fix expansions of 822 addresses having comments in local-part
+       and/or domain.  Found and fixed by Jason Betts.
+--- a/doc/spec.txt
++++ b/doc/spec.txt
+@@ -6302,6 +6302,10 @@ The following single-key lookup types ar
+     implicit key is the host's IP address rather than its name (see section
+     10.12).
++    Warning 3: Do not use an IPv4-mapped IPv6 address for a key; use the
++    IPv4, in dotted-quad form. (Exim converts IPv4-mapped IPv6 addresses to
++    this notation before executing the lookup.)
++
+   * lsearch: The given file is a text file that is searched linearly for a line
+     beginning with the search key, terminated by a colon or white space or the
+     end of the line. The search is case-insensitive; that is, upper and lower
+@@ -8003,7 +8007,11 @@ quote keys was made available in lsearch
+ implemented iplsearch files do require colons in IPv6 keys (notated using the
+ quoting facility) so as to distinguish them from IPv4 keys. For this reason,
+ when the lookup type is iplsearch, IPv6 addresses are converted using colons
+-and not dots. In all cases, full, unabbreviated IPv6 addresses are always used.
++and not dots.
++
++In all cases except IPv4-mapped IPv6, full, unabbreviated IPv6 addresses
++are always used. The latter are converted to IPv4 addresses, in dotted-quad
++form.
+ Ideally, it would be nice to tidy up this anomalous situation by changing to
+ colons in all cases, given that quoting is now available for lsearch. However,
diff --git a/debian/patches/75_07-Fix-crash-from-SRV-lookup-hitting-a-CNAME.patch b/debian/patches/75_07-Fix-crash-from-SRV-lookup-hitting-a-CNAME.patch
new file mode 100644 (file)
index 0000000..cfdbe51
--- /dev/null
@@ -0,0 +1,69 @@
+From 09720dd9506176294154dad7152f5f40554046a4 Mon Sep 17 00:00:00 2001
+From: Jeremy Harris <jgh146exb@wizmail.org>
+Date: Thu, 14 Mar 2019 12:26:34 +0000
+Subject: [PATCH 3/5] Fix crash from SRV lookup hitting a CNAME
+
+(cherry picked from commit 14bc9cf085aff7bd5147881e5b7068769a29b026)
+---
+ doc/ChangeLog |  4 ++++
+ src/dns.c         | 10 +++++++---
+ 2 files changed, 11 insertions(+), 3 deletions(-)
+
+diff --git a/doc/ChangeLog b/doc/ChangeLog
+index 419c1061..0f8d05b2 100644
+--- a/doc/ChangeLog
++++ b/doc/ChangeLog
+@@ -19,10 +19,14 @@ JH/07 GnuTLS: Our use of late (post-handshake) certificate verification, under
+       suitably configured).
+ JB/01 Bug 2375: fix expansions of 822 addresses having comments in local-part
+       and/or domain.  Found and fixed by Jason Betts.
++JH/08 Add hardening against SRV & TLSA lookups the hit CNAMEs (a nonvalid
++      configuration).  If a CNAME target was not a wellformed name pattern, a
++      crash could result.
++
+ Exim version 4.92
+ -----------------
+ JH/01 Remove code calling the customisable local_scan function, unless a new
+diff --git a/src/dns.c b/src/dns.c
+index 0f0b435d..b7978c52 100644
+--- a/src/dns.c
++++ b/src/dns.c
+@@ -714,11 +714,15 @@ regex has substrings that are used - the default uses a conditional.
+ This test is omitted for PTR records. These occur only in calls from the dnsdb
+ lookup, which constructs the names itself, so they should be OK. Besides,
+ bitstring labels don't conform to normal name syntax. (But the aren't used any
+ more.)
+-For SRV records, we omit the initial _smtp._tcp. components at the start. */
++For SRV records, we omit the initial _smtp._tcp. components at the start.
++The check has been seen to bite on the destination of a SRV lookup that
++initiall hit a CNAME, for which the next name had only two components.
++RFC2782 makes no mention of the possibiility of CNAMES, but the Wikipedia
++article on SRV says they are not a valid configuration. */
+ #ifndef STAND_ALONE   /* Omit this for stand-alone tests */
+ if (check_dns_names_pattern[0] != 0 && type != T_PTR && type != T_TXT)
+   {
+@@ -730,12 +734,12 @@ if (check_dns_names_pattern[0] != 0 && type != T_PTR && type != T_TXT)
+   /* For an SRV lookup, skip over the first two components (the service and
+   protocol names, which both start with an underscore). */
+   if (type == T_SRV || type == T_TLSA)
+     {
+-    while (*checkname++ != '.');
+-    while (*checkname++ != '.');
++    while (*checkname && *checkname++ != '.') ;
++    while (*checkname && *checkname++ != '.') ;
+     }
+   if (pcre_exec(regex_check_dns_names, NULL, CCS checkname, Ustrlen(checkname),
+       0, PCRE_EOPT, ovector, nelem(ovector)) < 0)
+     {
+-- 
+2.20.1
+
diff --git a/debian/patches/75_08-Logging-fix-initial-listening-on-log-line.patch b/debian/patches/75_08-Logging-fix-initial-listening-on-log-line.patch
new file mode 100644 (file)
index 0000000..4af2972
--- /dev/null
@@ -0,0 +1,206 @@
+From e5be948a65fe601024e5d4256f64efbfed3dd72e Mon Sep 17 00:00:00 2001
+From: Jeremy Harris <jgh146exb@wizmail.org>
+Date: Mon, 18 Mar 2019 00:31:43 +0000
+Subject: [PATCH 4/5] Logging: fix initial listening-on log line
+
+(cherry picked from commit 254f38d1c5ada5e4df0bccb385dc466549620c71)
+---
+ doc/ChangeLog |  4 +++
+ src/daemon.c      | 73 +++++++++++++++++++++++++++----------------
+ src/host.c        |  1 +
+ src/structs.h     |  1 +
+ test/confs/0282       |  2 +-
+ test/log/0282         |  2 +-
+ 6 files changed, 54 insertions(+), 29 deletions(-)
+
+diff --git a/doc/ChangeLog b/doc/ChangeLog
+index 0f8d05b2..3c0ffbf0 100644
+--- a/doc/ChangeLog
++++ b/doc/ChangeLog
+@@ -23,10 +23,14 @@ JB/01 Bug 2375: fix expansions of 822 addresses having comments in local-part
+ JH/08 Add hardening against SRV & TLSA lookups the hit CNAMEs (a nonvalid
+       configuration).  If a CNAME target was not a wellformed name pattern, a
+       crash could result.
++JH/09 Logging: Fix initial listening-on line for multiple ports for an IP when
++      the OS reports them interleaved with other addresses.
++
++
+ Exim version 4.92
+ -----------------
+ JH/01 Remove code calling the customisable local_scan function, unless a new
+diff --git a/src/daemon.c b/src/daemon.c
+index a852192e..01da3936 100644
+--- a/src/daemon.c
++++ b/src/daemon.c
+@@ -1625,12 +1625,12 @@ if (f.inetd_wait_mode)
+ else if (f.daemon_listen)
+   {
+   int i, j;
+   int smtp_ports = 0;
+   int smtps_ports = 0;
+-  ip_address_item * ipa, * i2;
+-  uschar * p = big_buffer;
++  ip_address_item * ipa;
++  uschar * p;
+   uschar * qinfo = queue_interval > 0
+     ? string_sprintf("-q%s", readconf_printtime(queue_interval))
+     : US"no queue runs";
+   /* Build a list of listening addresses in big_buffer, but limit it to 10
+@@ -1638,73 +1638,92 @@ else if (f.daemon_listen)
+   It is now possible to have some ports listening for SMTPS (the old,
+   deprecated protocol that starts TLS without using STARTTLS), and others
+   listening for standard SMTP. Keep their listings separate. */
+-  for (j = 0; j < 2; j++)
++  for (int j = 0, i; j < 2; j++)
+     {
+     for (i = 0, ipa = addresses; i < 10 && ipa; i++, ipa = ipa->next)
+       {
+       /* First time round, look for SMTP ports; second time round, look for
+-      SMTPS ports. For the first one of each, insert leading text. */
++      SMTPS ports. Build IP+port strings. */
+       if (host_is_tls_on_connect_port(ipa->port) == (j > 0))
+       {
+       if (j == 0)
+-        {
+-        if (smtp_ports++ == 0)
+-          {
+-          memcpy(p, "SMTP on", 8);
+-          p += 7;
+-          }
+-        }
++        smtp_ports++;
+       else
+-        if (smtps_ports++ == 0)
+-          p += sprintf(CS p, "%sSMTPS on",
+-            smtp_ports == 0 ? "" : " and for ");
++        smtps_ports++;
+       /* Now the information about the port (and sometimes interface) */
+       if (ipa->address[0] == ':' && ipa->address[1] == 0)
+         {                                             /* v6 wildcard */
+         if (ipa->next && ipa->next->address[0] == 0 &&
+             ipa->next->port == ipa->port)
+           {
+-          p += sprintf(CS p, " port %d (IPv6 and IPv4)", ipa->port);
+-          ipa = ipa->next;
++          ipa->log = string_sprintf(" port %d (IPv6 and IPv4)", ipa->port);
++          (ipa = ipa->next)->log = NULL;
+           }
+         else if (ipa->v6_include_v4)
+-          p += sprintf(CS p, " port %d (IPv6 with IPv4)", ipa->port);
++          ipa->log = string_sprintf(" port %d (IPv6 with IPv4)", ipa->port);
+         else
+-          p += sprintf(CS p, " port %d (IPv6)", ipa->port);
++          ipa->log = string_sprintf(" port %d (IPv6)", ipa->port);
+         }
+       else if (ipa->address[0] == 0)                  /* v4 wildcard */
+-        p += sprintf(CS p, " port %d (IPv4)", ipa->port);
++        ipa->log = string_sprintf(" port %d (IPv4)", ipa->port);
+       else                            /* check for previously-seen IP */
+         {
++        ip_address_item * i2;
+         for (i2 = addresses; i2 != ipa; i2 = i2->next)
+           if (  host_is_tls_on_connect_port(i2->port) == (j > 0)
+              && Ustrcmp(ipa->address, i2->address) == 0
+              )
+             {                         /* found; append port to list */
+-            if (p[-1] == '}') p--;
+-            while (isdigit(*--p)) ;
+-            p +=  1 + sprintf(CS p+1, "%s%d,%d}", *p == ',' ? "" : "{",
+-              i2->port, ipa->port);
++            for (p = i2->log; *p; ) p++;      /* end of existing string */
++            if (*--p == '}') *p = '\0';       /* drop EOL */
++            while (isdigit(*--p)) ;           /* char before port */
++
++            i2->log = *p == ':'               /* no list yet? */
++              ? string_sprintf("%.*s{%s,%d}",
++                (int)(p - i2->log + 1), i2->log, p+1, ipa->port)
++              : string_sprintf("%s,%d}", i2->log, ipa->port);
++            ipa->log = NULL;
+             break;
+             }
+         if (i2 == ipa)                /* first-time IP */
+-          p += sprintf(CS p, " [%s]:%d", ipa->address, ipa->port);
++          ipa->log = string_sprintf(" [%s]:%d", ipa->address, ipa->port);
+         }
+       }
+       }
++    }
+-    if (ipa)
++  p = big_buffer;
++  for (int j = 0, i; j < 2; j++)
++    {
++    /* First time round, look for SMTP ports; second time round, look for
++    SMTPS ports. For the first one of each, insert leading text. */
++
++    if (j == 0)
+       {
+-      memcpy(p, " ...", 5);
+-      p += 4;
++      if (smtp_ports > 0)
++      p += sprintf(CS p, "SMTP on");
+       }
++    else
++      if (smtps_ports > 0)
++      p += sprintf(CS p, "%sSMTPS on",
++        smtp_ports == 0 ? "" : " and for ");
++
++    /* Now the information about the port (and sometimes interface) */
++
++    for (i = 0, ipa = addresses; i < 10 && ipa; i++, ipa = ipa->next)
++      if (host_is_tls_on_connect_port(ipa->port) == (j > 0))
++      if (ipa->log)
++        p += sprintf(CS p, "%s",  ipa->log);
++
++    if (ipa)
++      p += sprintf(CS p, " ...");
+     }
+   log_write(0, LOG_MAIN,
+     "exim %s daemon started: pid=%d, %s, listening for %s",
+     version_string, getpid(), qinfo, big_buffer);
+diff --git a/src/host.c b/src/host.c
+index 29c977fe..a3b0977b 100644
+--- a/src/host.c
++++ b/src/host.c
+@@ -757,10 +757,11 @@ while ((s = string_nextinlist(&list, &sep, NULL, 0)))
+   next = store_get(sizeof(ip_address_item));
+   next->next = NULL;
+   Ustrcpy(next->address, s);
+   next->port = port;
+   next->v6_include_v4 = FALSE;
++  next->log = NULL;
+   if (!yield)
+     yield = last = next;
+   else
+     {
+diff --git a/src/structs.h b/src/structs.h
+index 20db0e5f..1e63d752 100644
+--- a/src/structs.h
++++ b/src/structs.h
+@@ -442,10 +442,11 @@ hold an IPv6 address. */
+ typedef struct ip_address_item {
+   struct ip_address_item *next;
+   int    port;
+   BOOL   v6_include_v4;            /* Used in the daemon */
+   uschar address[46];
++  uschar * log;                          /* portion of "listening on" log line */
+ } ip_address_item;
+ /* Structure for chaining together arbitrary strings. */
+ typedef struct string_item {
+-- 
+2.20.1
+
diff --git a/debian/patches/75_09-OpenSSL-Fix-aggregation-of-messages.patch b/debian/patches/75_09-OpenSSL-Fix-aggregation-of-messages.patch
new file mode 100644 (file)
index 0000000..b82891d
--- /dev/null
@@ -0,0 +1,127 @@
+From 332ebeaf8139b2b75f475880fc14b63c7c45c706 Mon Sep 17 00:00:00 2001
+From: Jeremy Harris <jgh146exb@wizmail.org>
+Date: Tue, 19 Mar 2019 15:33:31 +0000
+Subject: [PATCH 5/5] OpenSSL: Fix aggregation of messages.
+
+Broken-by: a5ffa9b475
+(cherry picked from commit c09dbcfb71f4b9a42cbfd8a20e0be6bfa1b12488)
+---
+ doc/ChangeLog |  5 +++
+ src/tls-openssl.c | 24 ++++++++++----
+ test/confs/2152       | 76 +++++++++++++++++++++++++++++++++++++++++++
+ test/log/2152         |  9 +++++
+ 4 files changed, 108 insertions(+), 6 deletions(-)
+ create mode 100644 test/confs/2152
+ create mode 100644 test/log/2152
+
+diff --git a/doc/ChangeLog b/doc/ChangeLog
+index 3c0ffbf0..3d63725f 100644
+--- a/doc/ChangeLog
++++ b/doc/ChangeLog
+@@ -26,10 +26,15 @@ JH/08 Add hardening against SRV & TLSA lookups the hit CNAMEs (a nonvalid
+       crash could result.
+ JH/09 Logging: Fix initial listening-on line for multiple ports for an IP when
+       the OS reports them interleaved with other addresses.
++JH/10 OpenSSL: Fix aggregation of messages.  Previously, when PIPELINING was
++      used both for input and for a verify callout, both encrypted, SMTP
++      responses being sent by the server could be lost.  This resulted in
++      dropped connections and sometimes bounces generated by a peer sending
++      to this system.
+ Exim version 4.92
+ -----------------
+diff --git a/src/tls-openssl.c b/src/tls-openssl.c
+index 8f4cf4d8..cc0ead02 100644
+--- a/src/tls-openssl.c
++++ b/src/tls-openssl.c
+@@ -272,10 +272,11 @@ Server:
+ */
+ typedef struct {
+   SSL_CTX *   ctx;
+   SSL *               ssl;
++  gstring *   corked;
+ } exim_openssl_client_tls_ctx;
+ static SSL_CTX *server_ctx = NULL;
+ static SSL     *server_ssl = NULL;
+@@ -2471,10 +2472,11 @@ BOOL require_ocsp = FALSE;
+ #endif
+ rc = store_pool;
+ store_pool = POOL_PERM;
+ exim_client_ctx = store_get(sizeof(exim_openssl_client_tls_ctx));
++exim_client_ctx->corked = NULL;
+ store_pool = rc;
+ #ifdef SUPPORT_DANE
+ tlsp->tlsa_usage = 0;
+ #endif
+@@ -2906,22 +2908,29 @@ Used by both server-side and client-side TLS.
+ int
+ tls_write(void * ct_ctx, const uschar *buff, size_t len, BOOL more)
+ {
+ int outbytes, error, left;
+-SSL * ssl = ct_ctx ? ((exim_openssl_client_tls_ctx *)ct_ctx)->ssl : server_ssl;
+-static gstring * corked = NULL;
++SSL * ssl = ct_ctx
++  ? ((exim_openssl_client_tls_ctx *)ct_ctx)->ssl : server_ssl;
++static gstring * server_corked = NULL;
++gstring ** corkedp = ct_ctx
++  ? &((exim_openssl_client_tls_ctx *)ct_ctx)->corked : &server_corked;
++gstring * corked = *corkedp;
+ DEBUG(D_tls) debug_printf("%s(%p, %lu%s)\n", __FUNCTION__,
+   buff, (unsigned long)len, more ? ", more" : "");
+ /* Lacking a CORK or MSG_MORE facility (such as GnuTLS has) we copy data when
+ "more" is notified.  This hack is only ok if small amounts are involved AND only
+ one stream does it, in one context (i.e. no store reset).  Currently it is used
+-for the responses to the received SMTP MAIL , RCPT, DATA sequence, only. */
+-/*XXX + if PIPE_COMMAND, banner & ehlo-resp for smmtp-on-connect. Suspect there's
+-a store reset there. */
++for the responses to the received SMTP MAIL , RCPT, DATA sequence, only.
++We support callouts done by the server process by using a separate client
++context for the stashed information. */
++/* + if PIPE_COMMAND, banner & ehlo-resp for smmtp-on-connect. Suspect there's
++a store reset there, so use POOL_PERM. */
++/* + if CHUNKING, cmds EHLO,MAIL,RCPT(s),BDAT */
+ if (!ct_ctx && (more || corked))
+   {
+ #ifdef EXPERIMENTAL_PIPE_CONNECT
+   int save_pool = store_pool;
+@@ -2933,14 +2942,17 @@ if (!ct_ctx && (more || corked))
+ #ifdef EXPERIMENTAL_PIPE_CONNECT
+   store_pool = save_pool;
+ #endif
+   if (more)
++    {
++    *corkedp = corked;
+     return len;
++    }
+   buff = CUS corked->s;
+   len = corked->ptr;
+-  corked = NULL;
++  *corkedp = NULL;
+   }
+ for (left = len; left > 0;)
+   {
+   DEBUG(D_tls) debug_printf("SSL_write(%p, %p, %d)\n", ssl, buff, left);
+diff --git a/test/confs/2152 b/test/confs/2152
+new file mode 100644
+index 00000000..f783192b
+diff --git a/test/log/2152 b/test/log/2152
+new file mode 100644
+index 00000000..720200be
+-- 
+2.20.1
+
diff --git a/debian/patches/75_10-Harden-plaintext-authenticator.patch b/debian/patches/75_10-Harden-plaintext-authenticator.patch
new file mode 100644 (file)
index 0000000..9dcfd47
--- /dev/null
@@ -0,0 +1,55 @@
+From e5b942ae007d0533fbd599c64d550f3a8355b940 Mon Sep 17 00:00:00 2001
+From: Jeremy Harris <jgh146exb@wizmail.org>
+Date: Thu, 21 Mar 2019 20:01:03 +0000
+Subject: [PATCH] Harden plaintext authenticator
+
+Cherry-picked from: f9fc942757
+---
+ doc/ChangeLog     | 5 +++++
+ src/auths/plaintext.c | 6 +-----
+ 2 files changed, 6 insertions(+), 5 deletions(-)
+
+diff --git a/doc/ChangeLog b/doc/ChangeLog
+index 3d63725f..c34e60d1 100644
+--- a/doc/ChangeLog
++++ b/doc/ChangeLog
+@@ -32,10 +32,15 @@ JH/10 OpenSSL: Fix aggregation of messages.  Previously, when PIPELINING was
+       used both for input and for a verify callout, both encrypted, SMTP
+       responses being sent by the server could be lost.  This resulted in
+       dropped connections and sometimes bounces generated by a peer sending
+       to this system.
++JH/11 Harden plaintext authenticator against a badly misconfigured client-send
++      string.  Previously it was possible to cause undefined behaviour in a
++      library routine (usually a crash).  Found by "zerons".
++
++
+ Exim version 4.92
+ -----------------
+ JH/01 Remove code calling the customisable local_scan function, unless a new
+diff --git a/src/auths/plaintext.c b/src/auths/plaintext.c
+index 7a0f7885..fa05b0ad 100644
+--- a/src/auths/plaintext.c
++++ b/src/auths/plaintext.c
+@@ -221,15 +221,11 @@ while ((s = string_nextinlist(&text, &sep, big_buffer, big_buffer_size)))
+   for (i = 0; i < len; i++)
+     if (ss[i] == '^')
+       if (ss[i+1] != '^')
+       ss[i] = 0;
+       else
+-        {
+-        i++;
+-        len--;
+-        memmove(ss + i, ss + i + 1, len - i);
+-        }
++        if (--len > ++i) memmove(ss + i, ss + i + 1, len - i);
+   /* The first string is attached to the AUTH command; others are sent
+   unembellished. */
+   if (first)
+-- 
+2.20.1
+
diff --git a/debian/patches/75_11-GnuTLS-fix-tls_out_ocsp-under-hosts_request_ocsp.patch b/debian/patches/75_11-GnuTLS-fix-tls_out_ocsp-under-hosts_request_ocsp.patch
new file mode 100644 (file)
index 0000000..8322d93
--- /dev/null
@@ -0,0 +1,54 @@
+From 5e64b73ef7cdaf20b998b3345a588b462fd30bfb Mon Sep 17 00:00:00 2001
+From: Jeremy Harris <jgh146exb@wizmail.org>
+Date: Tue, 7 May 2019 22:55:41 +0100
+Subject: [PATCH] GnuTLS: fix $tls_out_ocsp under hosts_request_ocsp
+
+(cherry picked from commit 7a501c874f028f689c44999ab05bb0d39da46941)
+---
+ doc/ChangeLog |  3 +++
+ src/tls-gnu.c     | 12 ++++++++----
+ test/log/5651         |  2 +-
+ test/log/5730         |  8 ++++----
+ 4 files changed, 16 insertions(+), 9 deletions(-)
+
+--- a/doc/ChangeLog
++++ b/doc/ChangeLog
+@@ -39,6 +39,9 @@ JH/11 Harden plaintext authenticator aga
+       library routine (usually a crash).  Found by "zerons".
++JH/18 GnuTLS: fix $tls_out_ocsp under hosts_request_ocsp. Previously the
++      verification result was not updated unless hosts_require_ocsp applied.
++
+ Exim version 4.92
+ -----------------
+--- a/src/tls-gnu.c
++++ b/src/tls-gnu.c
+@@ -2450,7 +2450,7 @@ if (!verify_certificate(state, errstr))
+   }
+ #ifndef DISABLE_OCSP
+-if (require_ocsp)
++if (request_ocsp)
+   {
+   DEBUG(D_tls)
+     {
+@@ -2474,10 +2474,14 @@ if (require_ocsp)
+     {
+     tlsp->ocsp = OCSP_FAILED;
+     tls_error(US"certificate status check failed", NULL, state->host, errstr);
+-    return NULL;
++    if (require_ocsp)
++      return FALSE;
++    }
++  else
++    {
++    DEBUG(D_tls) debug_printf("Passed OCSP checking\n");
++    tlsp->ocsp = OCSP_VFIED;
+     }
+-  DEBUG(D_tls) debug_printf("Passed OCSP checking\n");
+-  tlsp->ocsp = OCSP_VFIED;
+   }
+ #endif
diff --git a/debian/patches/75_12-GnuTLS-fix-the-advertising-of-acceptable-certs-by-th.patch b/debian/patches/75_12-GnuTLS-fix-the-advertising-of-acceptable-certs-by-th.patch
new file mode 100644 (file)
index 0000000..5b98faa
--- /dev/null
@@ -0,0 +1,42 @@
+From 44893ba5249c6c6d5a0d62a1cc57ba3fbf7185b4 Mon Sep 17 00:00:00 2001
+From: Jeremy Harris <jgh146exb@wizmail.org>
+Date: Sun, 19 May 2019 12:12:36 +0100
+Subject: [PATCH 1/2] GnuTLS: fix the advertising of acceptable certs by the
+ server.  Bug 2389
+
+(cherry picked from commit 12d95aa62042377fc9f603245a17a43142972447)
+---
+ doc/ChangeLog | 4 ++++
+ src/tls-gnu.c     | 8 ++++++++
+ 2 files changed, 12 insertions(+)
+
+--- a/doc/ChangeLog
++++ b/doc/ChangeLog
+@@ -42,6 +42,10 @@ JH/11 Harden plaintext authenticator aga
+ JH/18 GnuTLS: fix $tls_out_ocsp under hosts_request_ocsp. Previously the
+       verification result was not updated unless hosts_require_ocsp applied.
++JH/20 Bug 2389: fix server advertising of usable certificates, under GnuTLS in
++      directory-of-certs mode.  Previously they were advertised despite the
++      documentation.
++
+ Exim version 4.92
+ -----------------
+--- a/src/tls-gnu.c
++++ b/src/tls-gnu.c
+@@ -1133,6 +1133,14 @@ else
+ #endif
+     gnutls_certificate_set_x509_trust_file(state->x509_cred,
+       CS state->exp_tls_verify_certificates, GNUTLS_X509_FMT_PEM);
++
++#ifdef SUPPORT_CA_DIR
++  /* Mimic the behaviour with OpenSSL of not advertising a usable-cert list
++  when using the directory-of-certs config model. */
++
++  if ((statbuf.st_mode & S_IFMT) == S_IFDIR)
++    gnutls_certificate_send_x509_rdn_sequence(state->session, 1);
++#endif
+   }
+ if (cert_count < 0)
diff --git a/debian/patches/75_13-Use-dsn_from-for-success-DSN-messages.-Bug-2404.patch b/debian/patches/75_13-Use-dsn_from-for-success-DSN-messages.-Bug-2404.patch
new file mode 100644 (file)
index 0000000..0eb4d4b
--- /dev/null
@@ -0,0 +1,52 @@
+From 454bab46ae6812e29652d10c390451c962a6f806 Mon Sep 17 00:00:00 2001
+From: Jeremy Harris <jgh146exb@wizmail.org>
+Date: Tue, 4 Jun 2019 18:13:21 +0100
+Subject: [PATCH 2/2] Use dsn_from for success-DSN messages.  Bug 2404
+
+(cherry picked from commit 87abcb247b4444bab5fd0bcb212ddb26d5fd9191)
+---
+ doc/ChangeLog | 4 ++++
+ src/deliver.c     | 4 ++--
+ 2 files changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/doc/ChangeLog b/doc/ChangeLog
+index 5a3e453d..1a12c014 100644
+--- a/doc/ChangeLog
++++ b/doc/ChangeLog
+@@ -65,6 +65,10 @@ JH/20 Bug 2389: fix server advertising of usable certificates, under GnuTLS in
+       directory-of-certs mode.  Previously they were advertised despite the
+       documentation.
++JH/27 Bug 2404: Use the main-section configuration option "dsn_from" for
++      success-DSN messages.  Previously the From: header was always the default
++      one for these; the option was ignored.
++
+ Exim version 4.92
+ -----------------
+diff --git a/src/deliver.c b/src/deliver.c
+index e1799411..4720f596 100644
+--- a/src/deliver.c
++++ b/src/deliver.c
+@@ -7365,8 +7365,8 @@ if (addr_senddsn)
+     if (errors_reply_to)
+       fprintf(f, "Reply-To: %s\n", errors_reply_to);
++    moan_write_from(f);
+     fprintf(f, "Auto-Submitted: auto-generated\n"
+-      "From: Mail Delivery System <Mailer-Daemon@%s>\n"
+       "To: %s\n"
+       "Subject: Delivery Status Notification\n"
+       "Content-Type: multipart/report; report-type=delivery-status; boundary=%s\n"
+@@ -7377,7 +7377,7 @@ if (addr_senddsn)
+       "This message was created automatically by mail delivery software.\n"
+       " ----- The following addresses had successful delivery notifications -----\n",
+-      qualify_domain_sender, sender_address, bound, bound);
++      sender_address, bound, bound);
+     for (addr_dsntmp = addr_senddsn; addr_dsntmp;
+        addr_dsntmp = addr_dsntmp->next)
+-- 
+2.20.1
+
diff --git a/debian/patches/75_14-Fix-smtp-response-timeout.patch b/debian/patches/75_14-Fix-smtp-response-timeout.patch
new file mode 100644 (file)
index 0000000..abf2da4
--- /dev/null
@@ -0,0 +1,325 @@
+From 0a5441fcd93ae4145c07b3ed138dfe0e107174e0 Mon Sep 17 00:00:00 2001
+From: Jeremy Harris <jgh146exb@wizmail.org>
+Date: Mon, 27 May 2019 23:44:31 +0100
+Subject: [PATCH 1/2] Fix smtp response timeout
+
+---
+ doc/ChangeLog           |  6 ++++++
+ src/functions.h             |  4 ++--
+ src/ip.c                    | 16 +++++++---------
+ src/malware.c               | 26 +++++++++++++-------------
+ src/routers/iplookup.c      |  2 +-
+ src/smtp_out.c              |  9 +++++----
+ src/spam.c                  |  2 +-
+ src/transports/smtp_socks.c |  6 +++---
+ src/verify.c                |  2 +-
+ 9 files changed, 39 insertions(+), 34 deletions(-)
+
+--- a/doc/ChangeLog
++++ b/doc/ChangeLog
+@@ -50,6 +50,13 @@ JH/27 Bug 2404: Use the main-section con
+       success-DSN messages.  Previously the From: header was always the default
+       one for these; the option was ignored.
++JH/28 Fix the timeout on smtp response to apply to the whole response.
++      Previously it was reset for every read, so a teergrubing peer sending
++      single bytes within the time limit could extend the connection for a
++      long time.  Credit to Qualsys Security Advisory Team for the discovery.
++[from GIT master]
++
++
+ Exim version 4.92
+ -----------------
+--- a/src/functions.h
++++ b/src/functions.h
+@@ -225,7 +225,7 @@ extern uschar *expand_string_copy(const
+ extern int_eximarith_t expand_string_integer(uschar *, BOOL);
+ extern void    modify_variable(uschar *, void *);
+-extern BOOL    fd_ready(int, int);
++extern BOOL    fd_ready(int, time_t);
+ extern int     filter_interpret(uschar *, int, address_item **, uschar **);
+ extern BOOL    filter_personal(string_item *, BOOL);
+@@ -271,7 +271,7 @@ extern int     ip_connectedsocket(int, c
+                  int, host_item *, uschar **, const blob *);
+ extern int     ip_get_address_family(int);
+ extern void    ip_keepalive(int, const uschar *, BOOL);
+-extern int     ip_recv(client_conn_ctx *, uschar *, int, int);
++extern int     ip_recv(client_conn_ctx *, uschar *, int, time_t);
+ extern int     ip_socket(int, int);
+ extern int     ip_tcpsocket(const uschar *, uschar **, int);
+--- a/src/ip.c
++++ b/src/ip.c
+@@ -566,16 +566,15 @@ if (setsockopt(sock, SOL_SOCKET, SO_KEEP
+ /*
+ Arguments:
+   fd          the file descriptor
+-  timeout     the timeout, seconds
++  timelimit   the timeout endpoint, seconds-since-epoch
+ Returns:      TRUE => ready for i/o
+               FALSE => timed out, or other error
+ */
+ BOOL
+-fd_ready(int fd, int timeout)
++fd_ready(int fd, time_t timelimit)
+ {
+ fd_set select_inset;
+-time_t start_recv = time(NULL);
+-int time_left = timeout;
++int time_left = timelimit - time(NULL);
+ int rc;
+ if (time_left <= 0)
+@@ -609,8 +608,7 @@ do
+     DEBUG(D_transport) debug_printf("EINTR while waiting for socket data\n");
+     /* Watch out, 'continue' jumps to the condition, not to the loops top */
+-    time_left = timeout - (time(NULL) - start_recv);
+-    if (time_left > 0) continue;
++    if ((time_left = timelimit - time(NULL)) > 0) continue;
+     }
+   if (rc <= 0)
+@@ -634,18 +632,18 @@ Arguments:
+   cctx        the connection context (socket fd, possibly TLS context)
+   buffer      to read into
+   bufsize     the buffer size
+-  timeout     the timeout
++  timelimit   the timeout endpoint, seconds-since-epoch
+ Returns:      > 0 => that much data read
+               <= 0 on error or EOF; errno set - zero for EOF
+ */
+ int
+-ip_recv(client_conn_ctx * cctx, uschar * buffer, int buffsize, int timeout)
++ip_recv(client_conn_ctx * cctx, uschar * buffer, int buffsize, time_t timelimit)
+ {
+ int rc;
+-if (!fd_ready(cctx->sock, timeout))
++if (!fd_ready(cctx->sock, timelimit))
+   return -1;
+ /* The socket is ready, read from it (via TLS if it's active). On EOF (i.e.
+--- a/src/malware.c
++++ b/src/malware.c
+@@ -349,13 +349,13 @@ return cre;
+          -2 on timeout or error
+ */
+ static int
+-recv_line(int fd, uschar * buffer, int bsize, int tmo)
++recv_line(int fd, uschar * buffer, int bsize, time_t tmo)
+ {
+ uschar * p = buffer;
+ ssize_t rcv;
+ BOOL ok = FALSE;
+-if (!fd_ready(fd, tmo-time(NULL)))
++if (!fd_ready(fd, tmo))
+   return -2;
+ /*XXX tmo handling assumes we always get a whole line */
+@@ -382,9 +382,9 @@ return p - buffer;
+ /* return TRUE iff size as requested */
+ static BOOL
+-recv_len(int sock, void * buf, int size, int tmo)
++recv_len(int sock, void * buf, int size, time_t tmo)
+ {
+-return fd_ready(sock, tmo-time(NULL))
++return fd_ready(sock, tmo)
+   ? recv(sock, buf, size, 0) == size
+   : FALSE;
+ }
+@@ -430,7 +430,7 @@ for (;;)
+ }
+ static inline int
+-mksd_read_lines (int sock, uschar *av_buffer, int av_buffer_size, int tmo)
++mksd_read_lines (int sock, uschar *av_buffer, int av_buffer_size, time_t tmo)
+ {
+ client_conn_ctx cctx = {.sock = sock};
+ int offset = 0;
+@@ -438,7 +438,7 @@ int i;
+ do
+   {
+-  i = ip_recv(&cctx, av_buffer+offset, av_buffer_size-offset, tmo-time(NULL));
++  i = ip_recv(&cctx, av_buffer+offset, av_buffer_size-offset, tmo);
+   if (i <= 0)
+     {
+     (void) malware_panic_defer(US"unable to read from mksd UNIX socket (/var/run/mksd/socket)");
+@@ -497,7 +497,7 @@ switch (*line)
+ static int
+ mksd_scan_packed(struct scan * scanent, int sock, const uschar * scan_filename,
+-  int tmo)
++  time_t tmo)
+ {
+ struct iovec iov[3];
+ const char *cmd = "MSQ\n";
+@@ -746,7 +746,7 @@ if (!malware_ok)
+       if (m_sock_send(malware_daemon_ctx.sock, scanrequest, Ustrlen(scanrequest), &errstr) < 0)
+         return m_panic_defer(scanent, CUS callout_address, errstr);
+-      bread = ip_recv(&malware_daemon_ctx, av_buffer, sizeof(av_buffer), tmo-time(NULL));
++      bread = ip_recv(&malware_daemon_ctx, av_buffer, sizeof(av_buffer), tmo);
+       if (bread <= 0)
+         return m_panic_defer_3(scanent, CUS callout_address,
+@@ -1064,7 +1064,7 @@ badseek:  err = errno;
+       if (m_sock_send(malware_daemon_ctx.sock, cmdopt[i], Ustrlen(cmdopt[i]), &errstr) < 0)
+         return m_panic_defer(scanent, CUS callout_address, errstr);
+-      bread = ip_recv(&malware_daemon_ctx, av_buffer, sizeof(av_buffer), tmo-time(NULL));
++      bread = ip_recv(&malware_daemon_ctx, av_buffer, sizeof(av_buffer), tmo);
+       if (bread > 0) av_buffer[bread]='\0';
+       if (bread < 0)
+         return m_panic_defer_3(scanent, CUS callout_address,
+@@ -1096,7 +1096,7 @@ badseek:  err = errno;
+         {
+         errno = ETIMEDOUT;
+         i =  av_buffer+sizeof(av_buffer)-p;
+-        if ((bread= ip_recv(&malware_daemon_ctx, p, i-1, tmo-time(NULL))) < 0)
++        if ((bread= ip_recv(&malware_daemon_ctx, p, i-1, tmo)) < 0)
+           return m_panic_defer_3(scanent, CUS callout_address,
+             string_sprintf("unable to read result (%s)", strerror(errno)),
+             malware_daemon_ctx.sock);
+@@ -1401,7 +1401,7 @@ badseek:  err = errno;
+       /* wait for result */
+       memset(av_buffer, 0, sizeof(av_buffer));
+-      if ((bread = ip_recv(&malware_daemon_ctx, av_buffer, sizeof(av_buffer), tmo-time(NULL))) <= 0)
++      if ((bread = ip_recv(&malware_daemon_ctx, av_buffer, sizeof(av_buffer), tmo)) <= 0)
+       return m_panic_defer_3(scanent, CUS callout_address,
+         string_sprintf("unable to read from UNIX socket (%s)", scanner_options),
+         malware_daemon_ctx.sock);
+@@ -1737,7 +1737,7 @@ b_seek:   err = errno;
+       /* Read the result */
+       memset(av_buffer, 0, sizeof(av_buffer));
+-      bread = ip_recv(&malware_daemon_ctx, av_buffer, sizeof(av_buffer), tmo-time(NULL));
++      bread = ip_recv(&malware_daemon_ctx, av_buffer, sizeof(av_buffer), tmo);
+       (void)close(malware_daemon_ctx.sock);
+       malware_daemon_ctx.sock = -1;
+       malware_daemon_ctx.tls_ctx = NULL;
+@@ -1895,7 +1895,7 @@ b_seek:   err = errno;
+       return m_panic_defer(scanent, CUS callout_address, errstr);
+       /* Read the result */
+-      bread = ip_recv(&malware_daemon_ctx, av_buffer, sizeof(av_buffer), tmo-time(NULL));
++      bread = ip_recv(&malware_daemon_ctx, av_buffer, sizeof(av_buffer), tmo);
+       if (bread <= 0)
+       return m_panic_defer_3(scanent, CUS callout_address,
+--- a/src/routers/iplookup.c
++++ b/src/routers/iplookup.c
+@@ -279,7 +279,7 @@ while ((hostname = string_nextinlist(&li
+     /* Read the response and close the socket. If the read fails, try the
+     next IP address. */
+-    count = ip_recv(&query_cctx, reply, sizeof(reply) - 1, ob->timeout);
++    count = ip_recv(&query_cctx, reply, sizeof(reply) - 1, time(NULL) + ob->timeout);
+     (void)close(query_cctx.sock);
+     if (count <= 0)
+       {
+--- a/src/smtp_out.c
++++ b/src/smtp_out.c
+@@ -587,14 +587,14 @@ Arguments:
+   inblock   the SMTP input block (contains holding buffer, socket, etc.)
+   buffer    where to put the line
+   size      space available for the line
+-  timeout   the timeout to use when reading a packet
++  timelimit deadline for reading the lime, seconds past epoch
+ Returns:    length of a line that has been put in the buffer
+             -1 otherwise, with errno set
+ */
+ static int
+-read_response_line(smtp_inblock *inblock, uschar *buffer, int size, int timeout)
++read_response_line(smtp_inblock *inblock, uschar *buffer, int size, time_t timelimit)
+ {
+ uschar *p = buffer;
+ uschar *ptr = inblock->ptr;
+@@ -637,7 +637,7 @@ for (;;)
+   /* Need to read a new input packet. */
+-  if((rc = ip_recv(cctx, inblock->buffer, inblock->buffersize, timeout)) <= 0)
++  if((rc = ip_recv(cctx, inblock->buffer, inblock->buffersize, timelimit)) <= 0)
+     {
+     DEBUG(D_deliver|D_transport|D_acl)
+       debug_printf_indent(errno ? "  SMTP(%s)<<\n" : "  SMTP(closed)<<\n",
+@@ -694,6 +694,7 @@ smtp_read_response(void * sx0, uschar *
+ smtp_context * sx = sx0;
+ uschar * ptr = buffer;
+ int count = 0, rc;
++time_t timelimit = time(NULL) + timeout;
+ errno = 0;  /* Ensure errno starts out zero */
+@@ -713,7 +714,7 @@ response. */
+ for (;;)
+   {
+-  if ((count = read_response_line(&sx->inblock, ptr, size, timeout)) < 0)
++  if ((count = read_response_line(&sx->inblock, ptr, size, timelimit)) < 0)
+     return FALSE;
+   HDEBUG(D_transport|D_acl|D_v)
+--- a/src/spam.c
++++ b/src/spam.c
+@@ -503,7 +503,7 @@ offset = 0;
+ while ((i = ip_recv(&spamd_cctx,
+                  spamd_buffer + offset,
+                  sizeof(spamd_buffer) - offset - 1,
+-                 sd->timeout - time(NULL) + start)) > 0)
++                 sd->timeout + start)) > 0)
+   offset += i;
+ spamd_buffer[offset] = '\0';  /* guard byte */
+--- a/src/transports/smtp_socks.c
++++ b/src/transports/smtp_socks.c
+@@ -129,7 +129,7 @@ switch(method)
+ #ifdef TCP_QUICKACK
+     (void) setsockopt(fd, IPPROTO_TCP, TCP_QUICKACK, US &off, sizeof(off));
+ #endif
+-    if (!fd_ready(fd, tmo-time(NULL)) || read(fd, s, 2) != 2)
++    if (!fd_ready(fd, tmo) || read(fd, s, 2) != 2)
+       return FAIL;
+     HDEBUG(D_transport|D_acl|D_v)
+       debug_printf_indent("  SOCKS<< %02x %02x\n", s[0], s[1]);
+@@ -320,7 +320,7 @@ HDEBUG(D_transport|D_acl|D_v) debug_prin
+ (void) setsockopt(fd, IPPROTO_TCP, TCP_QUICKACK, US &off, sizeof(off));
+ #endif
+-if (  !fd_ready(fd, tmo-time(NULL))
++if (  !fd_ready(fd, tmo)
+    || read(fd, buf, 2) != 2
+    )
+   goto rcv_err;
+@@ -370,7 +370,7 @@ if (send(fd, buf, size, 0) < 0)
+ /* expect conn-reply (success, local(ipver, addr, port))
+ of same length as conn-request, or non-success fail code */
+-if (  !fd_ready(fd, tmo-time(NULL))
++if (  !fd_ready(fd, tmo)
+    || (size = read(fd, buf, size)) < 2
+    )
+   goto rcv_err;
+--- a/src/verify.c
++++ b/src/verify.c
+@@ -2770,7 +2770,7 @@ for (;;)
+   int size = sizeof(buffer) - (p - buffer);
+   if (size <= 0) goto END_OFF;   /* Buffer filled without seeing \n. */
+-  count = ip_recv(&ident_conn_ctx, p, size, rfc1413_query_timeout);
++  count = ip_recv(&ident_conn_ctx, p, size, time(NULL) + rfc1413_query_timeout);
+   if (count <= 0) goto END_OFF;  /* Read error or EOF */
+   /* Scan what we just read, to see if we have reached the terminating \r\n. Be
diff --git a/debian/patches/75_15-Fix-detection-of-32b-platform-at-build-time.-Bug-240.patch b/debian/patches/75_15-Fix-detection-of-32b-platform-at-build-time.-Bug-240.patch
new file mode 100644 (file)
index 0000000..039ed5f
--- /dev/null
@@ -0,0 +1,48 @@
+From 26dd3aa007b3b77969610c031f59388e0953bd00 Mon Sep 17 00:00:00 2001
+From: Jeremy Harris <jgh146exb@wizmail.org>
+Date: Fri, 7 Jun 2019 11:54:10 +0100
+Subject: [PATCH 2/2] Fix detection of 32b platform at build time.  Bug 2405
+
+---
+ src/buildconfig.c        | 12 +++---
+ test/scripts/0000-Basic/0002 | 72 +++++++++++++++++++-----------------
+ test/stdout/0002             | 72 +++++++++++++++++++-----------------
+ 3 files changed, 83 insertions(+), 73 deletions(-)
+
+diff --git a/src/buildconfig.c b/src/buildconfig.c
+index 71cf97b1..a680b344 100644
+--- a/src/buildconfig.c
++++ b/src/buildconfig.c
+@@ -111,6 +111,7 @@ unsigned long test_ulong_t = 0L;
+ unsigned int test_uint_t = 0;
+ #endif
+ long test_long_t = 0;
++long long test_longlong_t = 0;
+ int test_int_t = 0;
+ FILE *base;
+ FILE *new;
+@@ -155,15 +156,16 @@ This assumption is known to be OK for the common operating systems. */
+ fprintf(new, "#ifndef OFF_T_FMT\n");
+ if (sizeof(test_off_t) > sizeof(test_long_t))
+-  {
+   fprintf(new, "# define OFF_T_FMT  \"%%lld\"\n");
+-  fprintf(new, "# define LONGLONG_T long long int\n");
+-  }
+ else
+-  {
+   fprintf(new, "# define OFF_T_FMT  \"%%ld\"\n");
++fprintf(new, "#endif\n\n");
++
++fprintf(new, "#ifndef LONGLONG_T\n");
++if (sizeof(test_longlong_t) > sizeof(test_long_t))
++  fprintf(new, "# define LONGLONG_T long long int\n");
++else
+   fprintf(new, "# define LONGLONG_T long int\n");
+-  }
+ fprintf(new, "#endif\n\n");
+ /* Now do the same thing for time_t variables. If the length is greater than
+-- 
+2.20.1
+
@@ -14,7 +14,7 @@ Subject: [PATCH] Avoid re-expansion in ${sort } CVE-2019-13917
 
 --- a/src/expand.c
 +++ b/src/expand.c
-@@ -2115,6 +2115,55 @@ return ret;
+@@ -2147,6 +2147,55 @@ return ret;
  
  
  
@@ -70,7 +70,7 @@ Subject: [PATCH] Avoid re-expansion in ${sort } CVE-2019-13917
  
  /*************************************************
  *        Read and evaluate a condition           *
-@@ -2145,6 +2194,7 @@ BOOL sub2_honour_dollar = TRUE;
+@@ -2177,6 +2226,7 @@ BOOL sub2_honour_dollar = TRUE;
  int i, rc, cond_type, roffset;
  int_eximarith_t num[2];
  struct stat statbuf;
@@ -78,7 +78,7 @@ Subject: [PATCH] Avoid re-expansion in ${sort } CVE-2019-13917
  uschar name[256];
  const uschar *sub[10];
  
-@@ -2157,37 +2207,7 @@ for (;;)
+@@ -2189,37 +2239,7 @@ for (;;)
    if (*s == '!') { testfor = !testfor; s++; } else break;
    }
  
@@ -117,7 +117,7 @@ Subject: [PATCH] Avoid re-expansion in ${sort } CVE-2019-13917
    {
    /* def: tests for a non-empty variable, or for the existence of a header. If
    yield == NULL we are in a skipping state, and don't care about the answer. */
-@@ -2506,7 +2526,7 @@ switch(cond_type)
+@@ -2538,7 +2558,7 @@ switch(cond_type)
        {
        if (i == 0) goto COND_FAILED_CURLY_START;
        expand_string_message = string_sprintf("missing 2nd string in {} "
@@ -125,8 +125,8 @@ Subject: [PATCH] Avoid re-expansion in ${sort } CVE-2019-13917
 +        "after \"%s\"", opname);
        return NULL;
        }
-     sub[i] = expand_string_internal(s+1, TRUE, &s, yield == NULL,
-@@ -2518,7 +2538,7 @@ switch(cond_ty