From a3c403d854118e8ef0e2d661383445eb2d7ec732 Mon Sep 17 00:00:00 2001
From: V3n3RiX <venerix@koprulu.sector>
Date: Sun, 11 Feb 2024 23:35:14 +0000
Subject: gentoo auto-resync : 11:02:2024 - 23:35:13

---
 mail-mta/exim/Manifest                             |   4 +-
 mail-mta/exim/exim-4.97.1-r2.ebuild                | 631 ---------------------
 mail-mta/exim/exim-4.97.1-r3.ebuild                | 631 +++++++++++++++++++++
 .../files/exim-4.97.1-memory-usage-bug-3047.patch  |  35 +-
 4 files changed, 667 insertions(+), 634 deletions(-)
 delete mode 100644 mail-mta/exim/exim-4.97.1-r2.ebuild
 create mode 100644 mail-mta/exim/exim-4.97.1-r3.ebuild

(limited to 'mail-mta/exim')

diff --git a/mail-mta/exim/Manifest b/mail-mta/exim/Manifest
index 5dfa7437310e..6823cc4ce109 100644
--- a/mail-mta/exim/Manifest
+++ b/mail-mta/exim/Manifest
@@ -8,7 +8,7 @@ AUX exim-4.94-maildir.patch 316 BLAKE2B fe0b27712e77eba83244434c33372cec47fa3170
 AUX exim-4.97-as-needed-ldflags.patch 6032 BLAKE2B ba3e78e49435581eba3fa238c4e660acf9e4bc91c47110f6932675eb0c33568c03ee00a91cef6de93f5acb4611ad6ac1bf465a90f4bc055ac2528d77b588822c SHA512 b7f1e84e3c788d1a9c56339c5dc7eb14eff39b8efaf90d32fd66ddd589f60d4bfab5f36cae51cb84646c1f0b0f7523e56d6a898116b72dc108e89f33d8919333
 AUX exim-4.97-localscan_dlopen.patch 6429 BLAKE2B 166c44c93730ef4a0cecd9c8cc556ce2c53dcc21d85b2cb7663fc01d445eab3ecba20f3525b1206238e2b6508a58fe79c72ad86c1722b7c4e1164a6bf9534d6d SHA512 f1d29829f4d7159227476bed377a01a4db6d9aad021bda476d9c1ad1dc4fe7a621260a9e1e4ff9b2686c46575a553a96af7f75f625cb99a5941aa4562f01646a
 AUX exim-4.97-no-exim_id_update.patch 402 BLAKE2B 0c2f7ec1fe995f8ee58c6907e149367082c5ce837d1508b9e61f10681825fdcc78a52316184629aa6a80021fbfa21aa0ee90eee6b8fae5a1b05efb77337dd2c5 SHA512 07c062f042176b108444b9a163a309b3186fc19f2953dbb7ad066874189417684b0934fe1300933d04231cc59eeeacfb22ad42b0f328212585908c2e9eae5a8b
-AUX exim-4.97.1-memory-usage-bug-3047.patch 6622 BLAKE2B 54cba844bc14c8cee4600e4c5c721c6fa97f8d871d15e345cef41e284ea28b2fd7c0fe155cb543e2e4d20dacc6ba12f73a643cbe372708eed9b7206ed14c7ca8 SHA512 ded12661bda511cbe60206494bec5c39925f4e24932ad80ebe2c5de10dd2d49b129d0451e1e853a7c2b378e12a085849c649387dd3d9b747667c412b986cf6c2
+AUX exim-4.97.1-memory-usage-bug-3047.patch 7759 BLAKE2B 3c63cf9ffebeba41576882ab246e9644a3c5d9b44f9c0f116431cc9e53fda63a2d9120e197d4629c3eadc7bcc0e819d3c81fa9dda7448aa78ee75d5f6c531c60 SHA512 90b0c0f0e862df404e5af7b32da50110052070e5e089d842f4de4801120530f60d58e3305e58f995bcd694d364f01922e7da957049bc8f8508c598205cfb07d1
 AUX exim-submission.socket 161 BLAKE2B 409a5a687897af369a6a2ff0c30564096cc6b308dbc5d0afb6742df44d2aa972e45bad9681d2cb72be9731b260d23fdadb80bae644e7b875af5e34e9c8b8b40f SHA512 4a233761793e3510e9efa5aad3a6098c41b757f13133a7ea825680f2b393aba8d7935f16bf1dd065dde884fe7ba45639a8d398333a7d9bf0a6b72f88c8f2a09d
 AUX exim-submission_at.service 360 BLAKE2B 9ebcac1ab0f01a8264141843a4e711d77f634bdd910406bd466a0c197fdad8a9ff4bc31b9b28ef73c810aaff3e549eb60c0a2546507910dfc800da154eb1da00 SHA512 dc28698f15e8eaa4614ae81fc8cb76d92fed1110ce02f7a6ee8feace418dbb194711eb2d4dd444cf818628c11721e21d80b7b974879ab6ddd78cc717cce17c2f
 AUX exim.confd 141 BLAKE2B bc200e6121544d17e7feb0e162b5f6a5157647c3323492218da1556a19f3a2febf89a698e157a6dc657540d2f46088a9b1e34700655c715fbeaf0c201bc4aa9f SHA512 cb5e4aa71d3f0b7945e9806064f6a3ab64cb894381654ead40c73a49ae2d1bbb3dc587919952a09b2c81b9fcf8784f73d59c12081cda96a5b7210442f5088998
@@ -20,6 +20,6 @@ AUX exim_at.service 140 BLAKE2B 8624f4a555e2acdc7aaf917952c4152ad00dc063a51076ae
 DIST exim-4.97.1.tar.xz 1919308 BLAKE2B ea41bf851185c7330e648c7757f2bf0b0aea3133e399630a40d220f5f542e9055e3ed0cd67c9ee5dcede281ccc17919a4ac328abd8f05d4d828e0381f10df0b8 SHA512 eab7ca28b37f1635c48f5e963ab69fcbad539b2c35a84286ecaad7d7ff5210bbefce86452302e08099afdc0710f9cb7ca6d9b152b0ba88a19292f7c5541e0cfc
 DIST exim-pdf-4.97.1.tar.xz 2139688 BLAKE2B baadbb6ca7b88b11ea88f6b5ce0c96d9d713a1f5b358e4dfb52647ccc2bb1a9a6f74e75341839a8ee7df327f2f5645dbf223e4e5923631b02aa53a777701b436 SHA512 6aa733b1d48b6237f458939ff53e484e702f47a0c10ba781ba101db404d39667bd2ddc876af4f597deda1991e534d5b8b874c549e6a86b5325ebd624a6713183
 DIST system_filter.exim.gz 3075 BLAKE2B d05e872b5cef377d29126cda03fc0a74c8777b2119b76ff43da6e8de808035eb9bfcb034a85d81824f135d484e864bfc0629fc1af2c228a7277d5ee7cf9cde79 SHA512 cb358d3ce2499a0bb5920d962a06f2af8486e55ec90c8c928bd8e3aefb279aa57f5f960d5adfcef68bd94110b405eaa144e9629cfe6014a529c79c544600bbf3
-EBUILD exim-4.97.1-r2.ebuild 15278 BLAKE2B cddf310530897026a229e90a13233735eb66a1f35baeee6639808a851268c49dd6617525d751ae8b18b3cf962ae0c1d6036029dacc9d0c9d5cf66b0bb06b7618 SHA512 295c92b931956056c111fb8567b5c0fa3e47430865f75b9e2c918f94c7b9814accac6b4b468aa733bda1786334a151f8364387a932e59fd0621f51e503ed031c
+EBUILD exim-4.97.1-r3.ebuild 15278 BLAKE2B cddf310530897026a229e90a13233735eb66a1f35baeee6639808a851268c49dd6617525d751ae8b18b3cf962ae0c1d6036029dacc9d0c9d5cf66b0bb06b7618 SHA512 295c92b931956056c111fb8567b5c0fa3e47430865f75b9e2c918f94c7b9814accac6b4b468aa733bda1786334a151f8364387a932e59fd0621f51e503ed031c
 EBUILD exim-4.97.1.ebuild 15198 BLAKE2B 70f91735480772c11ad7134b7cdb92a114b2ae39a51268f5ebae52f74c8d81cea5b26d2d27e562048c11b5a23aa7845cf07a2a13463912fdd9c8e689420a9728 SHA512 3f58ad80687cb6e19f5184603705e34ec90749666b903ae400ae0d0ec8838fbd5bf063507cd544a7c2bab208a3af24ffed5795ac39bf9b23749f56f87d2ca551
 MISC metadata.xml 2488 BLAKE2B 2b6eee3c45210da4bb79ed1a01801cabbdf2be353652602b60cb7c512426197eb14defb2382dd71bcbf0101685a8e5d2f58d52fbee402894f2d86e51329d2165 SHA512 1b3f9fe9cbff738595101b32179f5c8230b5afefcce5266e06db97a3a07a73ad842f0a8be44f421a71e120cdff11e262ba1893f1c7117a0a4c42cf5f37a44d7b
diff --git a/mail-mta/exim/exim-4.97.1-r2.ebuild b/mail-mta/exim/exim-4.97.1-r2.ebuild
deleted file mode 100644
index 8ac924524bb1..000000000000
--- a/mail-mta/exim/exim-4.97.1-r2.ebuild
+++ /dev/null
@@ -1,631 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="7"
-
-inherit db-use flag-o-matic toolchain-funcs pam systemd
-
-IUSE="arc berkdb +dane dcc +dkim dlfunc dmarc +dnsdb doc dovecot-sasl
-dsn gdbm gnutls idn ipv6 ldap lmtp maildir mbx
-mysql nis pam perl pkcs11 postgres +prdr proxy radius redis sasl selinux
-socks5 spf sqlite srs +ssl syslog tdb tcpd +tpda X"
-REQUIRED_USE="
-	arc? ( dkim spf )
-	dane? ( ssl !gnutls )
-	dmarc? ( dkim spf )
-	dkim? ( ssl !gnutls )
-	gnutls? ( ssl )
-	pkcs11? ( ssl )
-	|| ( berkdb gdbm tdb )
-"
-# NOTE on USE="gnutls dane", gnutls[dane] is masked in base, unmasked
-# for x86 and amd64 only, due to this, repoman won't allow depending on
-# gnutls[dane] for all else.  Because we cannot express USE=dane when
-# USE=gnutls is in effect only in package.use.mask, the only option we
-# have left is to a) ignore the dependency (but that results in bug
-# #661164) or b) mask the usage of USE=dane with USE=gnutls.  Both are
-# incorrect, but b) is the only "correct" view from repoman.
-# We cannot express a required use for berkdb/gdbm/tdb correctly because
-# berkdb and gdbm are both enabled in base profile
-
-SDIR=$([[ ${PV} == *_rc* ]]   && echo /test
-	 [[ ${PV} == *.*.*.* ]] && echo /fixes)
-COMM_URI="https://downloads.exim.org/exim4${SDIR}"
-
-GPV="r0"
-DESCRIPTION="A highly configurable, drop-in replacement for sendmail"
-SRC_URI="${COMM_URI}/${P//_rc/-RC}.tar.xz
-	mirror://gentoo/system_filter.exim.gz
-	doc? ( ${COMM_URI}/${PN}-pdf-${PV//_rc/-RC}.tar.xz )"
-HOMEPAGE="https://www.exim.org/"
-
-SLOT="0"
-LICENSE="GPL-2"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~ppc ~ppc64 ~sparc ~x86"
-
-COMMON_DEPEND=">=sys-apps/sed-4.0.5
-	dev-libs/libpcre2:=
-	tdb? ( sys-libs/tdb:= )
-	!tdb? ( berkdb? ( >=sys-libs/db-3.2:= <sys-libs/db-6:= ) )
-	!tdb? ( !berkdb? ( sys-libs/gdbm:= ) )
-	idn? ( net-dns/libidn:= net-dns/libidn2:= )
-	perl? ( dev-lang/perl:= )
-	pam? ( sys-libs/pam )
-	tcpd? ( sys-apps/tcp-wrappers )
-	ssl? (
-		gnutls? (
-			net-libs/gnutls:0=[pkcs11?]
-			dev-libs/libtasn1
-		)
-		!gnutls? (
-			dev-libs/openssl:0=
-		)
-	)
-	ldap? ( >=net-nds/openldap-2.0.7:= )
-	elibc_glibc? (
-		net-libs/libnsl:=
-		nis? (
-			net-libs/libtirpc:=
-			>=net-libs/libnsl-1:=
-		)
-	)
-	mysql? ( dev-db/mysql-connector-c:= )
-	postgres? ( dev-db/postgresql:= )
-	sasl? ( >=dev-libs/cyrus-sasl-2.1.26-r2 )
-	redis? ( dev-libs/hiredis:= )
-	spf? ( >=mail-filter/libspf2-1.2.5-r1 )
-	dmarc? ( mail-filter/opendmarc:= )
-	X? (
-		x11-libs/libX11
-		x11-libs/libXmu
-		x11-libs/libXt
-		x11-libs/libXaw
-	)
-	sqlite? ( dev-db/sqlite )
-	radius? ( net-dialup/freeradius-client )
-	virtual/libcrypt:=
-	virtual/libiconv
-	"
-	# added X check for #57206
-BDEPEND="virtual/pkgconfig"
-DEPEND="${COMMON_DEPEND}"
-RDEPEND="${COMMON_DEPEND}
-	!mail-mta/courier
-	!mail-mta/esmtp
-	!mail-mta/msmtp[mta]
-	!mail-mta/netqmail
-	!mail-mta/nullmailer
-	!mail-mta/postfix
-	!mail-mta/sendmail
-	!mail-mta/opensmtpd
-	!mail-mta/ssmtp[mta]
-	>=net-mail/mailbase-0.00-r5
-	virtual/logger
-	dcc? ( mail-filter/dcc )
-	selinux? ( sec-policy/selinux-exim )
-	"
-
-S=${WORKDIR}/${P//_rc/-RC}
-
-src_prepare() {
-	# Legacy patches which need a respin for -p1
-	eapply -p0 "${FILESDIR}"/exim-4.14-tail.patch
-	eapply -p0 "${FILESDIR}"/exim-4.74-radius-db-ENV-clash.patch # 287426
-	eapply     "${FILESDIR}"/exim-4.97-as-needed-ldflags.patch # 352265, 391279
-	eapply -p0 "${FILESDIR}"/exim-4.76-crosscompile.patch # 266591
-	eapply     "${FILESDIR}"/exim-4.69-r1.27021.patch
-	eapply     "${FILESDIR}"/exim-4.97-localscan_dlopen.patch
-	eapply     "${FILESDIR}"/exim-4.97-no-exim_id_update.patch
-	eapply     "${FILESDIR}"/exim-4.97.1-memory-usage-bug-3047.patch # 922780
-
-	# oddity, they disable berkdb as hack, and then throw an error when
-	# berkdb isn't enabled
-	sed -i \
-		-e 's/_DB_/_DONTMESS_/' \
-		-e 's/define DB void/define DONTMESS void/' \
-		src/auths/call_radius.c || die
-
-	if use maildir ; then
-		eapply "${FILESDIR}"/exim-4.94-maildir.patch
-	else
-		eapply -p0 "${FILESDIR}"/exim-4.80-spool-mail-group.patch # 438606
-	fi
-
-	eapply_user
-
-	# user Exim believes it should be
-	MAILUSER=mail
-	MAILGROUP=mail
-	if use prefix && [[ ${EUID} != 0 ]] ; then
-		MAILUSER=$(id -un)
-		MAILGROUP=$(id -gn)
-	fi
-}
-
-src_configure() {
-	# general config and paths
-
-	local aliases="${EPREFIX}/etc/mail/aliases"
-	sed -i \
-		-e "/SYSTEM_ALIASES_FILE/s'SYSTEM_ALIASES_FILE'${aliases}'" \
-		src/configure.default || die
-
-	sed -i -e 's/^buildname=.*/buildname=exim-gentoo/' Makefile || die
-
-	if use elibc_musl; then
-		sed -i -e 's/^LIBS = -lnsl/LIBS =/g' OS/Makefile-Linux || die
-		append-cflags -DNO_EXECINFO
-	fi
-
-	local conffile="${EPREFIX}/etc/exim/exim.conf"
-	sed -e "48i\CFLAGS=${CFLAGS}" \
-		-e "s:BIN_DIRECTORY=/usr/exim/bin:BIN_DIRECTORY=${EPREFIX}/usr/sbin:" \
-		-e "s;EXIM_USER=;EXIM_USER=ref:${MAILUSER};" \
-		-e "s:CONFIGURE_FILE=.*$:CONFIGURE_FILE=${conffile}:" \
-		-e "s:ZCAT_COMMAND=.*$:ZCAT_COMMAND=${EPREFIX}/bin/zcat:" \
-		-e "s:COMPRESS_COMMAND=.*$:COMPRESS_COMMAND=${EPREFIX}/bin/gzip:" \
-		src/EDITME > Local/Makefile || die
-
-	# work on Local/Makefile from now on
-	cd Local
-
-	cat >> Makefile <<- EOC
-		INFO_DIRECTORY=${EPREFIX}/usr/share/info
-		PID_FILE_PATH=${EPREFIX}/run/exim.pid
-		SPOOL_DIRECTORY=${EPREFIX}/var/spool/exim
-		HAVE_ICONV=yes
-		WITH_CONTENT_SCAN=yes
-	EOC
-
-	# configure db implementation, Exim always needs one for its hints
-	# database, we prefer tdb and gdbm, since bdb is kind of getting
-	# less and less support
-	if use tdb ; then
-		cat >> Makefile <<- EOC
-			USE_TDB=yes
-			DBMLIB = -ltdb
-		EOC
-		sed -i -e 's:^USE_DB=yes:# USE_DB=yes:' Makefile || die
-		sed -i -e 's:^USE_GDBM=yes:# USE_GDBM=yes:' Makefile || die
-	elif use gdbm ; then
-		cat >> Makefile <<- EOC
-			USE_GDBM=yes
-			DBMLIB = -lgdbm
-		EOC
-		sed -i -e 's:^USE_DB=yes:# USE_DB=yes:' Makefile || die
-		sed -i -e 's:^USE_TDB=yes:# USE_TDB=yes:' Makefile || die
-	else # must be berkdb via required_use
-		# use the "native" interfaces to the DBM and CDB libraries, support
-		# passwd and directory lookups by default
-		local DB_VERS="5.3 5.1 4.8 4.7 4.6 4.5 4.4 4.3 4.2 3.2"
-		cat >> Makefile <<- EOC
-			USE_DB=yes
-			# keep include in CFLAGS because exim.h -> dbstuff.h -> db.h
-			CFLAGS += -I$(db_includedir ${DB_VERS})
-			DBMLIB = -l$(db_libname ${DB_VERS})
-		EOC
-		sed -i -e 's:^USE_GDBM=yes:# USE_GDBM=yes:' Makefile || die
-		sed -i -e 's:^USE_TDB=yes:# USE_TDB=yes:' Makefile || die
-	fi
-
-	# if we use libiconv, now is the time to tell so
-	if use !elibc_glibc && use !elibc_musl ; then
-		cat >> Makefile <<- EOC
-			EXTRALIBS_EXIM=-liconv
-		EOC
-	fi
-
-	# support for IPv6
-	if use ipv6; then
-		cat >> Makefile <<- EOC
-			HAVE_IPV6=YES
-		EOC
-	fi
-
-	# support i18n/IDNA
-	if use idn; then
-		cat >> Makefile <<- EOC
-			SUPPORT_I18N=yes
-			SUPPORT_I18N_2008=yes
-			EXTRALIBS_EXIM += -lidn -lidn2
-		EOC
-	fi
-
-	#
-	# mail storage formats
-	#
-
-	# mailstore is Exim's traditional storage format
-	cat >> Makefile <<- EOC
-		SUPPORT_MAILSTORE=yes
-	EOC
-
-	# mbox
-	if use mbx; then
-		cat >> Makefile <<- EOC
-			SUPPORT_MBX=yes
-		EOC
-	fi
-
-	# maildir
-	if use maildir; then
-		cat >> Makefile <<- EOC
-			SUPPORT_MAILDIR=yes
-		EOC
-	fi
-
-	#
-	# lookup methods
-	#
-
-	# support passwd and directory lookups by default
-	cat >> Makefile <<- EOC
-		LOOKUP_CDB=yes
-		LOOKUP_PASSWD=yes
-		LOOKUP_DSEARCH=yes
-	EOC
-
-	if ! use dnsdb; then
-		# DNSDB lookup is enabled by default
-		sed -i -e 's:^LOOKUP_DNSDB=yes:# LOOKUP_DNSDB=yes:' Makefile || die
-	fi
-
-	if use ldap; then
-		cat >> Makefile <<- EOC
-			LOOKUP_LDAP=yes
-			LDAP_LIB_TYPE=OPENLDAP2
-			LOOKUP_INCLUDE += -I"${EPREFIX}"/usr/include/ldap
-			LOOKUP_LIBS += -lldap -llber
-		EOC
-	fi
-
-	if use mysql; then
-		cat >> Makefile <<- EOC
-			LOOKUP_MYSQL=yes
-			LOOKUP_INCLUDE += $(mysql_config --include)
-			LOOKUP_LIBS += $(mysql_config --libs)
-		EOC
-	fi
-
-	if use nis; then
-		cat >> Makefile <<- EOC
-			LOOKUP_NIS=yes
-			LOOKUP_NISPLUS=yes
-		EOC
-		if use elibc_glibc ; then
-			cat >> Makefile <<- EOC
-				LOOKUP_INCLUDE += -I"${EPREFIX}"/usr/include/tirpc
-				LOOKUP_LIBS += -lnsl
-			EOC
-		fi
-	fi
-
-	if use postgres; then
-		cat >> Makefile <<- EOC
-			LOOKUP_PGSQL=yes
-			LOOKUP_INCLUDE += -I$(pg_config --includedir)
-			LOOKUP_LIBS += -L$(pg_config --libdir) -lpq
-		EOC
-	fi
-
-	if use sqlite; then
-		cat >> Makefile <<- EOC
-			LOOKUP_SQLITE=yes
-			LOOKUP_SQLITE_PC=sqlite3
-		EOC
-	fi
-
-	if use redis; then
-		cat >> Makefile <<- EOC
-			LOOKUP_REDIS=yes
-			LOOKUP_LIBS += -lhiredis
-		EOC
-	fi
-
-	# Exim monitor, enabled by default, controlled via X USE-flag,
-	# disable if not requested, bug #46778
-	if use X; then
-		cp ../exim_monitor/EDITME eximon.conf || die
-		cat >> Makefile <<- EOC
-			EXIM_MONITOR=eximon.bin
-		EOC
-	fi
-
-	#
-	# features
-	#
-
-	# DomainKeys Identified Mail, RFC4871
-	if ! use dkim; then
-		# DKIM is enabled by default
-		cat >> Makefile <<- EOC
-			DISABLE_DKIM=yes
-		EOC
-	fi
-
-	# Per-Recipient-Data-Response
-	if ! use prdr; then
-		# PRDR is enabled by default
-		cat >> Makefile <<- EOC
-			DISABLE_PRDR=yes
-		EOC
-	fi
-
-	# Transport post-delivery actions
-	if use !tpda && use !dane; then
-		# EVENT is enabled by default
-		cat >> Makefile <<- EOC
-			DISABLE_EVENT=yes
-		EOC
-	fi
-
-	# log to syslog
-	if use syslog; then
-		local eximlog="${EPREFIX}/var/log/exim/exim_%s.log"
-		sed -i \
-			-e "s:LOG_FILE_PATH=${eximlog}:LOG_FILE_PATH=syslog:" \
-			Makefile || die
-		cat >> Makefile <<- EOC
-			LOG_FILE_PATH=syslog
-		EOC
-	else
-		cat >> Makefile <<- EOC
-			LOG_FILE_PATH=${EPREFIX}/var/log/exim/exim_%s.log
-		EOC
-	fi
-
-	# starttls support (ssl)
-	if use ssl; then
-		if use gnutls; then
-			echo "USE_GNUTLS=yes" >> Makefile
-			echo "USE_GNUTLS_PC=gnutls $(use dane && echo gnutls-dane)" \
-				>> Makefile
-			use pkcs11 || echo "AVOID_GNUTLS_PKCS11=yes" >> Makefile
-		else
-			echo "USE_OPENSSL=yes" >> Makefile
-			echo "USE_OPENSSL_PC=openssl" >> Makefile
-		fi
-	else
-		echo "DISABLE_TLS=yes" >> Makefile
-	fi
-
-	# TCP wrappers
-	if use tcpd; then
-		cat >> Makefile <<- EOC
-			USE_TCP_WRAPPERS=yes
-			EXTRALIBS_EXIM += -lwrap
-		EOC
-	fi
-
-	# Light Mail Transport Protocol
-	if use lmtp; then
-		cat >> Makefile <<- EOC
-			TRANSPORT_LMTP=yes
-		EOC
-	fi
-
-	# embedded Perl
-	if use perl; then
-		cat >> Makefile <<- EOC
-			EXIM_PERL=perl.o
-		EOC
-	fi
-
-	# dlfunc
-	if use dlfunc; then
-		cat >> Makefile <<- EOC
-			EXPAND_DLFUNC=yes
-			HAVE_LOCAL_SCAN=yes
-			DLOPEN_LOCAL_SCAN=yes
-		EOC
-	fi
-
-	# Proxy Protocol
-	if use proxy; then
-		cat >> Makefile <<- EOC
-			SUPPORT_PROXY=yes
-		EOC
-	fi
-
-	# SOCKS5 (outbound) proxy support
-	if use socks5; then
-		cat >> Makefile <<- EOC
-			SUPPORT_SOCKS=yes
-		EOC
-	fi
-
-	# DANE
-	if use !dane; then
-		# DANE is enabled by default
-		sed -i -e 's:^SUPPORT_DANE=yes:# SUPPORT_DANE=yes:' Makefile || die
-	fi
-
-	# DMARC
-	if use dmarc; then
-		cat >> Makefile <<- EOC
-			SUPPORT_DMARC=yes
-			EXTRALIBS_EXIM += -lopendmarc
-		EOC
-	fi
-
-	# Sender Policy Framework
-	if use spf; then
-		cat >> Makefile <<- EOC
-			SUPPORT_SPF=yes
-			EXTRALIBS_EXIM += -lspf2
-		EOC
-	fi
-
-	#
-	# experimental features
-	#
-
-	# Authenticated Receive Chain
-	if use arc; then
-		echo "EXPERIMENTAL_ARC=yes">> Makefile
-	fi
-
-	# Distributed Checksum Clearinghouse
-	if use dcc; then
-		echo "EXPERIMENTAL_DCC=yes">> Makefile
-	fi
-
-	# Sender Rewriting Scheme
-	if use srs; then
-		# this one is the default/supported variant since 4.95, and the
-		# only variant available since 4.96
-		cat >> Makefile <<- EOC
-			SUPPORT_SRS=yes
-		EOC
-	fi
-
-	# Delivery Sender Notifications extra information in fail message
-	if use dsn; then
-		cat >> Makefile <<- EOC
-			EXPERIMENTAL_DSN_INFO=yes
-		EOC
-	fi
-
-	#
-	# authentication (SMTP AUTH)
-	#
-
-	# standard bits
-	cat >> Makefile <<- EOC
-		AUTH_SPA=yes
-		AUTH_CRAM_MD5=yes
-		AUTH_PLAINTEXT=yes
-	EOC
-
-	# Cyrus SASL
-	if use sasl; then
-		cat >> Makefile <<- EOC
-			CYRUS_SASLAUTHD_SOCKET=${EPREFIX}/run/saslauthd/mux
-			AUTH_CYRUS_SASL=yes
-			AUTH_LIBS += -lsasl2
-		EOC
-	fi
-
-	# Dovecot
-	if use dovecot-sasl; then
-		cat >> Makefile <<- EOC
-			AUTH_DOVECOT=yes
-		EOC
-	fi
-
-	# Pluggable Authentication Modules
-	if use pam; then
-		cat >> Makefile <<- EOC
-			SUPPORT_PAM=yes
-			AUTH_LIBS += -lpam
-		EOC
-	fi
-
-	# Radius
-	if use radius; then
-		cat >> Makefile <<- EOC
-			RADIUS_CONFIG_FILE=${EPREFIX}/etc/radiusclient/radiusclient.conf
-			RADIUS_LIB_TYPE=RADIUSCLIENTNEW
-			AUTH_LIBS += -lfreeradius-client
-		EOC
-	fi
-}
-
-src_compile() {
-	emake CC="$(tc-getCC)" HOSTCC="$(tc-getBUILD_CC)" \
-		AR="$(tc-getAR) cq" RANLIB="$(tc-getRANLIB)" FULLECHO=''
-}
-
-src_install() {
-	cd "${S}"/build-exim-gentoo || die
-	dosbin exim
-	if use X; then
-		dosbin eximon.bin
-		dosbin eximon
-	fi
-	fperms 4755 /usr/sbin/exim
-
-	dosym exim /usr/sbin/sendmail
-	dosym exim /usr/sbin/rsmtp
-	dosym exim /usr/sbin/rmail
-	dosym ../sbin/exim /usr/bin/mailq
-	dosym ../sbin/exim /usr/bin/newaliases
-	dosym ../sbin/sendmail /usr/lib/sendmail
-
-	for i in exicyclog exim_dbmbuild exim_dumpdb exim_fixdb exim_lock \
-		exim_tidydb exinext exiwhat exigrep eximstats exiqsumm exiqgrep \
-		convert4r3 convert4r4 exipick
-	do
-		dosbin $i
-	done
-
-	dodoc -r "${S}"/doc/.
-	doman "${S}"/doc/exim.8
-	use dsn && dodoc "${S}"/README.DSN
-	use doc && dodoc "${WORKDIR}"/${PN}-pdf-${PV//rc/RC}/doc/*.pdf
-
-	# conf files
-	insinto /etc/exim
-	newins "${S}"/src/configure.default exim.conf.dist
-	doins "${WORKDIR}"/system_filter.exim
-	doins "${FILESDIR}"/auth_conf.sub
-
-	if use pam; then
-		pamd_mimic system-auth exim auth account
-	fi
-
-	# headers, #436406
-	if use dlfunc ; then
-		# fixup includes so they actually can be found when including
-		sed -i \
-			-e '/#include "\(config\|store\|mytypes\).h"/s:"\(.\+\)":<exim/\1>:' \
-			local_scan.h || die
-		insinto /usr/include/exim
-		doins {config,local_scan}.h ../src/{mytypes,store}.h
-	fi
-
-	insinto /etc/logrotate.d
-	newins "${FILESDIR}/exim.logrotate" exim
-
-	newinitd "${FILESDIR}"/exim.rc10 exim
-	newconfd "${FILESDIR}"/exim.confd exim
-
-	systemd_dounit \
-		"${FILESDIR}"/{exim.service,exim.socket,exim-submission.socket}
-	systemd_newunit \
-		"${FILESDIR}"/exim_at.service 'exim@.service'
-	systemd_newunit \
-		"${FILESDIR}"/exim-submission_at.service 'exim-submission@.service'
-
-	diropts -m 0750 -o ${MAILUSER} -g ${MAILGROUP}
-	keepdir /var/log/${PN}
-}
-
-pkg_postinst() {
-	if [[ ! -f ${EROOT}/etc/exim/exim.conf ]] ; then
-		einfo "${EROOT}/etc/exim/system_filter.exim is a sample system_filter."
-		einfo "${EROOT}/etc/exim/auth_conf.sub contains the configuration sub"
-		einfo "for using smtp auth."
-		einfo "Please create ${EROOT}/etc/exim/exim.conf from"
-		einfo "  ${EROOT}/etc/exim/exim.conf.dist."
-	fi
-	if use berkdb && ( use gdbm || use tdb ) ; then
-		ewarn "USE=berkdb is ignored because USE=gdbm or USE=tdb is enabled!"
-	fi
-	if use dmarc ; then
-		einfo "DMARC support requires ${EROOT}/etc/exim/opendmarc.tlds"
-		einfo "you can populate this file with the contents downloaded from"
-		einfo "  https://publicsuffix.org/list/public_suffix_list.dat"
-	fi
-	if use dcc ; then
-		einfo "DCC support is experimental, you can find some limited"
-		einfo "documentation at the bottom of this prerelease message:"
-		einfo "  http://article.gmane.org/gmane.mail.exim.devel/3579"
-	fi
-	use dsn && einfo "extra information in fail DSN message is experimental"
-	einfo
-	elog "Note that this release contains a tainted variable check that"
-	elog "is likely to break your configuration used with Exim 4.93 and before."
-	elog "Please check your transports for occurences of \$local_part, and"
-	elog "use a replacement like \$local_part_data where possible."
-}
diff --git a/mail-mta/exim/exim-4.97.1-r3.ebuild b/mail-mta/exim/exim-4.97.1-r3.ebuild
new file mode 100644
index 000000000000..8ac924524bb1
--- /dev/null
+++ b/mail-mta/exim/exim-4.97.1-r3.ebuild
@@ -0,0 +1,631 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+inherit db-use flag-o-matic toolchain-funcs pam systemd
+
+IUSE="arc berkdb +dane dcc +dkim dlfunc dmarc +dnsdb doc dovecot-sasl
+dsn gdbm gnutls idn ipv6 ldap lmtp maildir mbx
+mysql nis pam perl pkcs11 postgres +prdr proxy radius redis sasl selinux
+socks5 spf sqlite srs +ssl syslog tdb tcpd +tpda X"
+REQUIRED_USE="
+	arc? ( dkim spf )
+	dane? ( ssl !gnutls )
+	dmarc? ( dkim spf )
+	dkim? ( ssl !gnutls )
+	gnutls? ( ssl )
+	pkcs11? ( ssl )
+	|| ( berkdb gdbm tdb )
+"
+# NOTE on USE="gnutls dane", gnutls[dane] is masked in base, unmasked
+# for x86 and amd64 only, due to this, repoman won't allow depending on
+# gnutls[dane] for all else.  Because we cannot express USE=dane when
+# USE=gnutls is in effect only in package.use.mask, the only option we
+# have left is to a) ignore the dependency (but that results in bug
+# #661164) or b) mask the usage of USE=dane with USE=gnutls.  Both are
+# incorrect, but b) is the only "correct" view from repoman.
+# We cannot express a required use for berkdb/gdbm/tdb correctly because
+# berkdb and gdbm are both enabled in base profile
+
+SDIR=$([[ ${PV} == *_rc* ]]   && echo /test
+	 [[ ${PV} == *.*.*.* ]] && echo /fixes)
+COMM_URI="https://downloads.exim.org/exim4${SDIR}"
+
+GPV="r0"
+DESCRIPTION="A highly configurable, drop-in replacement for sendmail"
+SRC_URI="${COMM_URI}/${P//_rc/-RC}.tar.xz
+	mirror://gentoo/system_filter.exim.gz
+	doc? ( ${COMM_URI}/${PN}-pdf-${PV//_rc/-RC}.tar.xz )"
+HOMEPAGE="https://www.exim.org/"
+
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~ppc ~ppc64 ~sparc ~x86"
+
+COMMON_DEPEND=">=sys-apps/sed-4.0.5
+	dev-libs/libpcre2:=
+	tdb? ( sys-libs/tdb:= )
+	!tdb? ( berkdb? ( >=sys-libs/db-3.2:= <sys-libs/db-6:= ) )
+	!tdb? ( !berkdb? ( sys-libs/gdbm:= ) )
+	idn? ( net-dns/libidn:= net-dns/libidn2:= )
+	perl? ( dev-lang/perl:= )
+	pam? ( sys-libs/pam )
+	tcpd? ( sys-apps/tcp-wrappers )
+	ssl? (
+		gnutls? (
+			net-libs/gnutls:0=[pkcs11?]
+			dev-libs/libtasn1
+		)
+		!gnutls? (
+			dev-libs/openssl:0=
+		)
+	)
+	ldap? ( >=net-nds/openldap-2.0.7:= )
+	elibc_glibc? (
+		net-libs/libnsl:=
+		nis? (
+			net-libs/libtirpc:=
+			>=net-libs/libnsl-1:=
+		)
+	)
+	mysql? ( dev-db/mysql-connector-c:= )
+	postgres? ( dev-db/postgresql:= )
+	sasl? ( >=dev-libs/cyrus-sasl-2.1.26-r2 )
+	redis? ( dev-libs/hiredis:= )
+	spf? ( >=mail-filter/libspf2-1.2.5-r1 )
+	dmarc? ( mail-filter/opendmarc:= )
+	X? (
+		x11-libs/libX11
+		x11-libs/libXmu
+		x11-libs/libXt
+		x11-libs/libXaw
+	)
+	sqlite? ( dev-db/sqlite )
+	radius? ( net-dialup/freeradius-client )
+	virtual/libcrypt:=
+	virtual/libiconv
+	"
+	# added X check for #57206
+BDEPEND="virtual/pkgconfig"
+DEPEND="${COMMON_DEPEND}"
+RDEPEND="${COMMON_DEPEND}
+	!mail-mta/courier
+	!mail-mta/esmtp
+	!mail-mta/msmtp[mta]
+	!mail-mta/netqmail
+	!mail-mta/nullmailer
+	!mail-mta/postfix
+	!mail-mta/sendmail
+	!mail-mta/opensmtpd
+	!mail-mta/ssmtp[mta]
+	>=net-mail/mailbase-0.00-r5
+	virtual/logger
+	dcc? ( mail-filter/dcc )
+	selinux? ( sec-policy/selinux-exim )
+	"
+
+S=${WORKDIR}/${P//_rc/-RC}
+
+src_prepare() {
+	# Legacy patches which need a respin for -p1
+	eapply -p0 "${FILESDIR}"/exim-4.14-tail.patch
+	eapply -p0 "${FILESDIR}"/exim-4.74-radius-db-ENV-clash.patch # 287426
+	eapply     "${FILESDIR}"/exim-4.97-as-needed-ldflags.patch # 352265, 391279
+	eapply -p0 "${FILESDIR}"/exim-4.76-crosscompile.patch # 266591
+	eapply     "${FILESDIR}"/exim-4.69-r1.27021.patch
+	eapply     "${FILESDIR}"/exim-4.97-localscan_dlopen.patch
+	eapply     "${FILESDIR}"/exim-4.97-no-exim_id_update.patch
+	eapply     "${FILESDIR}"/exim-4.97.1-memory-usage-bug-3047.patch # 922780
+
+	# oddity, they disable berkdb as hack, and then throw an error when
+	# berkdb isn't enabled
+	sed -i \
+		-e 's/_DB_/_DONTMESS_/' \
+		-e 's/define DB void/define DONTMESS void/' \
+		src/auths/call_radius.c || die
+
+	if use maildir ; then
+		eapply "${FILESDIR}"/exim-4.94-maildir.patch
+	else
+		eapply -p0 "${FILESDIR}"/exim-4.80-spool-mail-group.patch # 438606
+	fi
+
+	eapply_user
+
+	# user Exim believes it should be
+	MAILUSER=mail
+	MAILGROUP=mail
+	if use prefix && [[ ${EUID} != 0 ]] ; then
+		MAILUSER=$(id -un)
+		MAILGROUP=$(id -gn)
+	fi
+}
+
+src_configure() {
+	# general config and paths
+
+	local aliases="${EPREFIX}/etc/mail/aliases"
+	sed -i \
+		-e "/SYSTEM_ALIASES_FILE/s'SYSTEM_ALIASES_FILE'${aliases}'" \
+		src/configure.default || die
+
+	sed -i -e 's/^buildname=.*/buildname=exim-gentoo/' Makefile || die
+
+	if use elibc_musl; then
+		sed -i -e 's/^LIBS = -lnsl/LIBS =/g' OS/Makefile-Linux || die
+		append-cflags -DNO_EXECINFO
+	fi
+
+	local conffile="${EPREFIX}/etc/exim/exim.conf"
+	sed -e "48i\CFLAGS=${CFLAGS}" \
+		-e "s:BIN_DIRECTORY=/usr/exim/bin:BIN_DIRECTORY=${EPREFIX}/usr/sbin:" \
+		-e "s;EXIM_USER=;EXIM_USER=ref:${MAILUSER};" \
+		-e "s:CONFIGURE_FILE=.*$:CONFIGURE_FILE=${conffile}:" \
+		-e "s:ZCAT_COMMAND=.*$:ZCAT_COMMAND=${EPREFIX}/bin/zcat:" \
+		-e "s:COMPRESS_COMMAND=.*$:COMPRESS_COMMAND=${EPREFIX}/bin/gzip:" \
+		src/EDITME > Local/Makefile || die
+
+	# work on Local/Makefile from now on
+	cd Local
+
+	cat >> Makefile <<- EOC
+		INFO_DIRECTORY=${EPREFIX}/usr/share/info
+		PID_FILE_PATH=${EPREFIX}/run/exim.pid
+		SPOOL_DIRECTORY=${EPREFIX}/var/spool/exim
+		HAVE_ICONV=yes
+		WITH_CONTENT_SCAN=yes
+	EOC
+
+	# configure db implementation, Exim always needs one for its hints
+	# database, we prefer tdb and gdbm, since bdb is kind of getting
+	# less and less support
+	if use tdb ; then
+		cat >> Makefile <<- EOC
+			USE_TDB=yes
+			DBMLIB = -ltdb
+		EOC
+		sed -i -e 's:^USE_DB=yes:# USE_DB=yes:' Makefile || die
+		sed -i -e 's:^USE_GDBM=yes:# USE_GDBM=yes:' Makefile || die
+	elif use gdbm ; then
+		cat >> Makefile <<- EOC
+			USE_GDBM=yes
+			DBMLIB = -lgdbm
+		EOC
+		sed -i -e 's:^USE_DB=yes:# USE_DB=yes:' Makefile || die
+		sed -i -e 's:^USE_TDB=yes:# USE_TDB=yes:' Makefile || die
+	else # must be berkdb via required_use
+		# use the "native" interfaces to the DBM and CDB libraries, support
+		# passwd and directory lookups by default
+		local DB_VERS="5.3 5.1 4.8 4.7 4.6 4.5 4.4 4.3 4.2 3.2"
+		cat >> Makefile <<- EOC
+			USE_DB=yes
+			# keep include in CFLAGS because exim.h -> dbstuff.h -> db.h
+			CFLAGS += -I$(db_includedir ${DB_VERS})
+			DBMLIB = -l$(db_libname ${DB_VERS})
+		EOC
+		sed -i -e 's:^USE_GDBM=yes:# USE_GDBM=yes:' Makefile || die
+		sed -i -e 's:^USE_TDB=yes:# USE_TDB=yes:' Makefile || die
+	fi
+
+	# if we use libiconv, now is the time to tell so
+	if use !elibc_glibc && use !elibc_musl ; then
+		cat >> Makefile <<- EOC
+			EXTRALIBS_EXIM=-liconv
+		EOC
+	fi
+
+	# support for IPv6
+	if use ipv6; then
+		cat >> Makefile <<- EOC
+			HAVE_IPV6=YES
+		EOC
+	fi
+
+	# support i18n/IDNA
+	if use idn; then
+		cat >> Makefile <<- EOC
+			SUPPORT_I18N=yes
+			SUPPORT_I18N_2008=yes
+			EXTRALIBS_EXIM += -lidn -lidn2
+		EOC
+	fi
+
+	#
+	# mail storage formats
+	#
+
+	# mailstore is Exim's traditional storage format
+	cat >> Makefile <<- EOC
+		SUPPORT_MAILSTORE=yes
+	EOC
+
+	# mbox
+	if use mbx; then
+		cat >> Makefile <<- EOC
+			SUPPORT_MBX=yes
+		EOC
+	fi
+
+	# maildir
+	if use maildir; then
+		cat >> Makefile <<- EOC
+			SUPPORT_MAILDIR=yes
+		EOC
+	fi
+
+	#
+	# lookup methods
+	#
+
+	# support passwd and directory lookups by default
+	cat >> Makefile <<- EOC
+		LOOKUP_CDB=yes
+		LOOKUP_PASSWD=yes
+		LOOKUP_DSEARCH=yes
+	EOC
+
+	if ! use dnsdb; then
+		# DNSDB lookup is enabled by default
+		sed -i -e 's:^LOOKUP_DNSDB=yes:# LOOKUP_DNSDB=yes:' Makefile || die
+	fi
+
+	if use ldap; then
+		cat >> Makefile <<- EOC
+			LOOKUP_LDAP=yes
+			LDAP_LIB_TYPE=OPENLDAP2
+			LOOKUP_INCLUDE += -I"${EPREFIX}"/usr/include/ldap
+			LOOKUP_LIBS += -lldap -llber
+		EOC
+	fi
+
+	if use mysql; then
+		cat >> Makefile <<- EOC
+			LOOKUP_MYSQL=yes
+			LOOKUP_INCLUDE += $(mysql_config --include)
+			LOOKUP_LIBS += $(mysql_config --libs)
+		EOC
+	fi
+
+	if use nis; then
+		cat >> Makefile <<- EOC
+			LOOKUP_NIS=yes
+			LOOKUP_NISPLUS=yes
+		EOC
+		if use elibc_glibc ; then
+			cat >> Makefile <<- EOC
+				LOOKUP_INCLUDE += -I"${EPREFIX}"/usr/include/tirpc
+				LOOKUP_LIBS += -lnsl
+			EOC
+		fi
+	fi
+
+	if use postgres; then
+		cat >> Makefile <<- EOC
+			LOOKUP_PGSQL=yes
+			LOOKUP_INCLUDE += -I$(pg_config --includedir)
+			LOOKUP_LIBS += -L$(pg_config --libdir) -lpq
+		EOC
+	fi
+
+	if use sqlite; then
+		cat >> Makefile <<- EOC
+			LOOKUP_SQLITE=yes
+			LOOKUP_SQLITE_PC=sqlite3
+		EOC
+	fi
+
+	if use redis; then
+		cat >> Makefile <<- EOC
+			LOOKUP_REDIS=yes
+			LOOKUP_LIBS += -lhiredis
+		EOC
+	fi
+
+	# Exim monitor, enabled by default, controlled via X USE-flag,
+	# disable if not requested, bug #46778
+	if use X; then
+		cp ../exim_monitor/EDITME eximon.conf || die
+		cat >> Makefile <<- EOC
+			EXIM_MONITOR=eximon.bin
+		EOC
+	fi
+
+	#
+	# features
+	#
+
+	# DomainKeys Identified Mail, RFC4871
+	if ! use dkim; then
+		# DKIM is enabled by default
+		cat >> Makefile <<- EOC
+			DISABLE_DKIM=yes
+		EOC
+	fi
+
+	# Per-Recipient-Data-Response
+	if ! use prdr; then
+		# PRDR is enabled by default
+		cat >> Makefile <<- EOC
+			DISABLE_PRDR=yes
+		EOC
+	fi
+
+	# Transport post-delivery actions
+	if use !tpda && use !dane; then
+		# EVENT is enabled by default
+		cat >> Makefile <<- EOC
+			DISABLE_EVENT=yes
+		EOC
+	fi
+
+	# log to syslog
+	if use syslog; then
+		local eximlog="${EPREFIX}/var/log/exim/exim_%s.log"
+		sed -i \
+			-e "s:LOG_FILE_PATH=${eximlog}:LOG_FILE_PATH=syslog:" \
+			Makefile || die
+		cat >> Makefile <<- EOC
+			LOG_FILE_PATH=syslog
+		EOC
+	else
+		cat >> Makefile <<- EOC
+			LOG_FILE_PATH=${EPREFIX}/var/log/exim/exim_%s.log
+		EOC
+	fi
+
+	# starttls support (ssl)
+	if use ssl; then
+		if use gnutls; then
+			echo "USE_GNUTLS=yes" >> Makefile
+			echo "USE_GNUTLS_PC=gnutls $(use dane && echo gnutls-dane)" \
+				>> Makefile
+			use pkcs11 || echo "AVOID_GNUTLS_PKCS11=yes" >> Makefile
+		else
+			echo "USE_OPENSSL=yes" >> Makefile
+			echo "USE_OPENSSL_PC=openssl" >> Makefile
+		fi
+	else
+		echo "DISABLE_TLS=yes" >> Makefile
+	fi
+
+	# TCP wrappers
+	if use tcpd; then
+		cat >> Makefile <<- EOC
+			USE_TCP_WRAPPERS=yes
+			EXTRALIBS_EXIM += -lwrap
+		EOC
+	fi
+
+	# Light Mail Transport Protocol
+	if use lmtp; then
+		cat >> Makefile <<- EOC
+			TRANSPORT_LMTP=yes
+		EOC
+	fi
+
+	# embedded Perl
+	if use perl; then
+		cat >> Makefile <<- EOC
+			EXIM_PERL=perl.o
+		EOC
+	fi
+
+	# dlfunc
+	if use dlfunc; then
+		cat >> Makefile <<- EOC
+			EXPAND_DLFUNC=yes
+			HAVE_LOCAL_SCAN=yes
+			DLOPEN_LOCAL_SCAN=yes
+		EOC
+	fi
+
+	# Proxy Protocol
+	if use proxy; then
+		cat >> Makefile <<- EOC
+			SUPPORT_PROXY=yes
+		EOC
+	fi
+
+	# SOCKS5 (outbound) proxy support
+	if use socks5; then
+		cat >> Makefile <<- EOC
+			SUPPORT_SOCKS=yes
+		EOC
+	fi
+
+	# DANE
+	if use !dane; then
+		# DANE is enabled by default
+		sed -i -e 's:^SUPPORT_DANE=yes:# SUPPORT_DANE=yes:' Makefile || die
+	fi
+
+	# DMARC
+	if use dmarc; then
+		cat >> Makefile <<- EOC
+			SUPPORT_DMARC=yes
+			EXTRALIBS_EXIM += -lopendmarc
+		EOC
+	fi
+
+	# Sender Policy Framework
+	if use spf; then
+		cat >> Makefile <<- EOC
+			SUPPORT_SPF=yes
+			EXTRALIBS_EXIM += -lspf2
+		EOC
+	fi
+
+	#
+	# experimental features
+	#
+
+	# Authenticated Receive Chain
+	if use arc; then
+		echo "EXPERIMENTAL_ARC=yes">> Makefile
+	fi
+
+	# Distributed Checksum Clearinghouse
+	if use dcc; then
+		echo "EXPERIMENTAL_DCC=yes">> Makefile
+	fi
+
+	# Sender Rewriting Scheme
+	if use srs; then
+		# this one is the default/supported variant since 4.95, and the
+		# only variant available since 4.96
+		cat >> Makefile <<- EOC
+			SUPPORT_SRS=yes
+		EOC
+	fi
+
+	# Delivery Sender Notifications extra information in fail message
+	if use dsn; then
+		cat >> Makefile <<- EOC
+			EXPERIMENTAL_DSN_INFO=yes
+		EOC
+	fi
+
+	#
+	# authentication (SMTP AUTH)
+	#
+
+	# standard bits
+	cat >> Makefile <<- EOC
+		AUTH_SPA=yes
+		AUTH_CRAM_MD5=yes
+		AUTH_PLAINTEXT=yes
+	EOC
+
+	# Cyrus SASL
+	if use sasl; then
+		cat >> Makefile <<- EOC
+			CYRUS_SASLAUTHD_SOCKET=${EPREFIX}/run/saslauthd/mux
+			AUTH_CYRUS_SASL=yes
+			AUTH_LIBS += -lsasl2
+		EOC
+	fi
+
+	# Dovecot
+	if use dovecot-sasl; then
+		cat >> Makefile <<- EOC
+			AUTH_DOVECOT=yes
+		EOC
+	fi
+
+	# Pluggable Authentication Modules
+	if use pam; then
+		cat >> Makefile <<- EOC
+			SUPPORT_PAM=yes
+			AUTH_LIBS += -lpam
+		EOC
+	fi
+
+	# Radius
+	if use radius; then
+		cat >> Makefile <<- EOC
+			RADIUS_CONFIG_FILE=${EPREFIX}/etc/radiusclient/radiusclient.conf
+			RADIUS_LIB_TYPE=RADIUSCLIENTNEW
+			AUTH_LIBS += -lfreeradius-client
+		EOC
+	fi
+}
+
+src_compile() {
+	emake CC="$(tc-getCC)" HOSTCC="$(tc-getBUILD_CC)" \
+		AR="$(tc-getAR) cq" RANLIB="$(tc-getRANLIB)" FULLECHO=''
+}
+
+src_install() {
+	cd "${S}"/build-exim-gentoo || die
+	dosbin exim
+	if use X; then
+		dosbin eximon.bin
+		dosbin eximon
+	fi
+	fperms 4755 /usr/sbin/exim
+
+	dosym exim /usr/sbin/sendmail
+	dosym exim /usr/sbin/rsmtp
+	dosym exim /usr/sbin/rmail
+	dosym ../sbin/exim /usr/bin/mailq
+	dosym ../sbin/exim /usr/bin/newaliases
+	dosym ../sbin/sendmail /usr/lib/sendmail
+
+	for i in exicyclog exim_dbmbuild exim_dumpdb exim_fixdb exim_lock \
+		exim_tidydb exinext exiwhat exigrep eximstats exiqsumm exiqgrep \
+		convert4r3 convert4r4 exipick
+	do
+		dosbin $i
+	done
+
+	dodoc -r "${S}"/doc/.
+	doman "${S}"/doc/exim.8
+	use dsn && dodoc "${S}"/README.DSN
+	use doc && dodoc "${WORKDIR}"/${PN}-pdf-${PV//rc/RC}/doc/*.pdf
+
+	# conf files
+	insinto /etc/exim
+	newins "${S}"/src/configure.default exim.conf.dist
+	doins "${WORKDIR}"/system_filter.exim
+	doins "${FILESDIR}"/auth_conf.sub
+
+	if use pam; then
+		pamd_mimic system-auth exim auth account
+	fi
+
+	# headers, #436406
+	if use dlfunc ; then
+		# fixup includes so they actually can be found when including
+		sed -i \
+			-e '/#include "\(config\|store\|mytypes\).h"/s:"\(.\+\)":<exim/\1>:' \
+			local_scan.h || die
+		insinto /usr/include/exim
+		doins {config,local_scan}.h ../src/{mytypes,store}.h
+	fi
+
+	insinto /etc/logrotate.d
+	newins "${FILESDIR}/exim.logrotate" exim
+
+	newinitd "${FILESDIR}"/exim.rc10 exim
+	newconfd "${FILESDIR}"/exim.confd exim
+
+	systemd_dounit \
+		"${FILESDIR}"/{exim.service,exim.socket,exim-submission.socket}
+	systemd_newunit \
+		"${FILESDIR}"/exim_at.service 'exim@.service'
+	systemd_newunit \
+		"${FILESDIR}"/exim-submission_at.service 'exim-submission@.service'
+
+	diropts -m 0750 -o ${MAILUSER} -g ${MAILGROUP}
+	keepdir /var/log/${PN}
+}
+
+pkg_postinst() {
+	if [[ ! -f ${EROOT}/etc/exim/exim.conf ]] ; then
+		einfo "${EROOT}/etc/exim/system_filter.exim is a sample system_filter."
+		einfo "${EROOT}/etc/exim/auth_conf.sub contains the configuration sub"
+		einfo "for using smtp auth."
+		einfo "Please create ${EROOT}/etc/exim/exim.conf from"
+		einfo "  ${EROOT}/etc/exim/exim.conf.dist."
+	fi
+	if use berkdb && ( use gdbm || use tdb ) ; then
+		ewarn "USE=berkdb is ignored because USE=gdbm or USE=tdb is enabled!"
+	fi
+	if use dmarc ; then
+		einfo "DMARC support requires ${EROOT}/etc/exim/opendmarc.tlds"
+		einfo "you can populate this file with the contents downloaded from"
+		einfo "  https://publicsuffix.org/list/public_suffix_list.dat"
+	fi
+	if use dcc ; then
+		einfo "DCC support is experimental, you can find some limited"
+		einfo "documentation at the bottom of this prerelease message:"
+		einfo "  http://article.gmane.org/gmane.mail.exim.devel/3579"
+	fi
+	use dsn && einfo "extra information in fail DSN message is experimental"
+	einfo
+	elog "Note that this release contains a tainted variable check that"
+	elog "is likely to break your configuration used with Exim 4.93 and before."
+	elog "Please check your transports for occurences of \$local_part, and"
+	elog "use a replacement like \$local_part_data where possible."
+}
diff --git a/mail-mta/exim/files/exim-4.97.1-memory-usage-bug-3047.patch b/mail-mta/exim/files/exim-4.97.1-memory-usage-bug-3047.patch
index 75e5d1a42781..b8f4eb9c5eef 100644
--- a/mail-mta/exim/files/exim-4.97.1-memory-usage-bug-3047.patch
+++ b/mail-mta/exim/files/exim-4.97.1-memory-usage-bug-3047.patch
@@ -10,6 +10,11 @@ Date: Fri, 26 Jan 2024 21:58:59 +0000
 Subject: [PATCH] ACL: in "regex" condition, release store every thousand
  lines.  Bug 3047
 
+From: Jeremy Harris <jgh146exb@wizmail.org>
+Date: Sun, 11 Feb 2024 13:57:18 +0000 (+0000)
+Subject: Use non-releaseable memory for regex match strings. Bug 3047
+Broken-by: 35aacb69f5c8
+
 
 diff --git a/src/src/exim.c b/src/src/exim.c
 --- a/src/exim.c
@@ -110,7 +115,7 @@ diff --git a/src/src/regex.c b/src/src/regex.c
  
  /* precompile our regexes */
  while ((regex_string = string_nextinlist(&list, &sep, NULL, 0)))
-@@ -58,7 +57,9 @@ while ((regex_string = string_nextinlist(&list, &sep, NULL, 0)))
+@@ -58,10 +57,19 @@ while ((regex_string = string_nextinlist(&list, &sep, NULL, 0)))
      ri->pcre_text = regex_string;
      ri->next = re_list_head;
      re_list_head = ri;
@@ -120,6 +125,34 @@ diff --git a/src/src/regex.c b/src/src/regex.c
  return re_list_head;
  }
  
++
++/* Check list of REs against buffer, returning OK for (first) match,
++else FAIL.  On match return allocated result strings in regex_vars[]. 
++
++We use the perm-pool for that, so that our caller can release
++other allocations.
++*/
+ static int
+ matcher(pcre_list * re_list_head, uschar * linebuffer, int len)
+ {
+@@ -75,6 +82,9 @@ for (pcre_list * ri = re_list_head; ri; ri = ri->next)
+   /* try matcher on the line */
+   if ((n = pcre2_match(ri->re, (PCRE2_SPTR)linebuffer, len, 0, 0, md, pcre_gen_mtc_ctx)) > 0)
+     {
++    int save_pool = store_pool;
++    store_pool = POOL_PERM;
++
+     Ustrncpy(regex_match_string_buffer, ri->pcre_text,
+ 	      sizeof(regex_match_string_buffer)-1);
+     regex_match_string = regex_match_string_buffer;
+@@ -87,6 +97,7 @@ for (pcre_list * ri = re_list_head; ri; ri = ri->next)
+       regex_vars[nn-1] = string_copyn(linebuffer + ovec[off], len);
+       }
+ 
++    store_pool = save_pool;
+     return OK;
+     }
+   }
 @@ -112,7 +113,8 @@ FILE * mbox_file;
  pcre_list * re_list_head;
  uschar * linebuffer;
-- 
cgit v1.2.3