diff --git a/mail/exim-doc-html/Makefile b/mail/exim-doc-html/Makefile index ca43854331e7..43a994de4171 100644 --- a/mail/exim-doc-html/Makefile +++ b/mail/exim-doc-html/Makefile @@ -1,67 +1,67 @@ PORTNAME= exim -PORTVERSION= 4.97.1 +PORTVERSION= 4.98 CATEGORIES= mail MASTER_SITES= EXIM MASTER_SITE_SUBDIR= /exim4/ \ /exim4/old/ PKGNAMESUFFIX= -doc-${DOCFORMAT} DISTNAME= exim-${DISTDOCFORMAT}-${PORTVERSION} DISTFILES= ${DISTNAME}${EXTRACT_SUFX} DIST_SUBDIR= exim MAINTAINER= fluffy@FreeBSD.org COMMENT= Documentation for the Exim MTA in multiple formats WWW= https://www.exim.org/ USES= tar:bzip2 DOCFORMAT?= html DISTDOCFORMAT?= ${DOCFORMAT} AVAILABLE_FORMATS= html \ pdf \ postscript NO_BUILD= yes OPTIONS_DEFINE= DOCS .if make(makesum) && !defined(FETCH_ALL) .error "You forgot to define FETCH_ALL to create the sane distinfo" .endif .if defined(FETCH_ALL) . for _df in ${AVAILABLE_FORMATS} . if ${_df} != ${DOCFORMAT} DISTFILES+= exim-${_df}-${PORTVERSION}${EXTRACT_SUFX} . endif . endfor .endif .if ${DOCFORMAT} == "html" PORTDOCS= html .elif ${DOCFORMAT} == "pdf" PORTDOCS= *.pdf .elif ${DOCFORMAT} == "postscript" PORTDOCS= *.ps .elif ${DOCFORMAT} == "info" IGNORE= exim no longer provides documentation in info format .else pre-everything:: @ ${ECHO} 'ERROR: invalid value for DOCFORMAT: "${DOCFORMAT}"' @ ${ECHO} 'Possible values are "html", "pdf", and "postscript".' @ ${FALSE} .endif do-install: @ ${MKDIR} ${STAGEDIR}${DOCSDIR} .if ${DOCFORMAT} == "html" ${TAR} -C ${WRKSRC}/exim-html-current/doc -cf - html | \ ${TAR} --unlink -C ${STAGEDIR}${DOCSDIR} -xf - .elif ${DOCFORMAT} == "pdf" @ ${INSTALL_DATA} ${WRKSRC}/doc/*.pdf ${STAGEDIR}${DOCSDIR} .elif ${DOCFORMAT} == "postscript" @ ${INSTALL_DATA} ${WRKSRC}/doc/*.ps ${STAGEDIR}${DOCSDIR} .else @${FALSE} .endif .include diff --git a/mail/exim-doc-html/distinfo b/mail/exim-doc-html/distinfo index 26cad29c5fb1..5442787163fc 100644 --- a/mail/exim-doc-html/distinfo +++ b/mail/exim-doc-html/distinfo @@ -1,7 +1,7 @@ -TIMESTAMP = 1704499920 -SHA256 (exim/exim-html-4.97.1.tar.bz2) = 9e2cc6b39f4480ee7f575946466d025331fc21368c873a8685b66fdb1919693c -SIZE (exim/exim-html-4.97.1.tar.bz2) = 647718 -SHA256 (exim/exim-pdf-4.97.1.tar.bz2) = 9761ab9f6099bb865b9838ecf3d62008683cadd2ba2ae6fbb9640139044640ba -SIZE (exim/exim-pdf-4.97.1.tar.bz2) = 2176843 -SHA256 (exim/exim-postscript-4.97.1.tar.bz2) = a01809e46d2c6283482788822445187299325d6e909611f6496d2e5ad1f1d14b -SIZE (exim/exim-postscript-4.97.1.tar.bz2) = 1144052 +TIMESTAMP = 1721038337 +SHA256 (exim/exim-html-4.98.tar.bz2) = 89a4f17a18461f7156d0f7779a292612a547cedb13e5eb10fc70b0973d0a1001 +SIZE (exim/exim-html-4.98.tar.bz2) = 650008 +SHA256 (exim/exim-pdf-4.98.tar.bz2) = 90def6b48a47d3dab0513dcb61b5a7c896eeca8f233b1d412d441b1067ca7e0d +SIZE (exim/exim-pdf-4.98.tar.bz2) = 2186363 +SHA256 (exim/exim-postscript-4.98.tar.bz2) = 8d405ef9024d72255534c7ab7af3da98d5e1a83acbf528d97cbddfb014e24a5c +SIZE (exim/exim-postscript-4.98.tar.bz2) = 1150095 diff --git a/mail/exim-ldap2/Makefile b/mail/exim-ldap2/Makefile index a2078c6faa88..0619677e438f 100644 --- a/mail/exim-ldap2/Makefile +++ b/mail/exim-ldap2/Makefile @@ -1,7 +1,6 @@ -PORTREVISION= 1 PKGNAMESUFFIX= -ldap2 MASTERDIR= ${.CURDIR}/../exim OPTIONS_SLAVE= OPENLDAP .include "${MASTERDIR}/Makefile" diff --git a/mail/exim/Makefile b/mail/exim/Makefile index 3fc8b7e82928..2a9c9578667b 100644 --- a/mail/exim/Makefile +++ b/mail/exim/Makefile @@ -1,653 +1,653 @@ PORTNAME= exim PORTVERSION?= ${EXIM_VERSION} -PORTREVISION?= 5 +PORTREVISION?= 0 CATEGORIES= mail MASTER_SITES= EXIM:exim MASTER_SITE_SUBDIR= /exim4/:exim \ /exim4/fixes/:exim \ /exim4/old/:exim DISTNAME= ${PORTNAME}-${EXIM_VERSION} DISTFILES= ${DISTNAME}${EXTRACT_SUFX}:exim DIST_SUBDIR= exim EXTRACT_ONLY= ${DISTNAME}${EXTRACT_SUFX} MAINTAINER= fluffy@FreeBSD.org COMMENT?= High performance MTA for Unix systems on the Internet WWW= https://www.exim.org/ LICENSE= GPLv2 BUILD_DEPENDS= p5-File-FcntlLock>0:devel/p5-File-FcntlLock RUN_DEPENDS= p5-File-FcntlLock>0:devel/p5-File-FcntlLock USES= compiler cpe tar:bzip2 perl5 USE_CSTD= c99 # Exim build system is job unsafe atm MAKE_JOBS_UNSAFE= yes # One can tune the following "hidden" knobs: # - EXIM_USER: user exim is running as; # - EXIM_GROUP: ditto for the group; # - LOGDIR: where Exim logs will be put; # - LOG_FILE_PATH: path where '%s' will be substituted with # the target name (main, reject, etc); # - CONFIG_FILE_PATH: path to the default configuration file; # - ALT_CONFIG_PREFIX: path to the default prefix for all # configuration files, excluding the main one; # will be effective only when WITH_ALT_CONFIG_PREFIX # will be set via OPTIONS. .if make(makesum) && !defined(FETCH_ALL) .error "You forgot to define FETCH_ALL to create the sane distinfo" .endif .include "options" OPTIONS_SUB= yes AUTH_SASL_LIB_DEPENDS= libsasl2.so:security/cyrus-sasl2 BDB_USES= bdb DMARC_LIB_DEPENDS= libopendmarc.so:mail/opendmarc EXIMON_USES= xorg EXIMON_USE= xorg=x11,xaw,xext,xmu,xt GNUTLS_LIB_DEPENDS= libgnutls.so:security/gnutls ICONV_USES= iconv:lib,build INTERNATIONAL_LIB_DEPENDS= libidn.so:dns/libidn LMDB_LIB_DEPENDS= liblmdb.so:databases/lmdb MYSQL_USES= mysql OPENLDAP_USES= ldap PGSQL_LIB_DEPENDS= libicudata.so:devel/icu PGSQL_USES= pgsql pkgconfig REDIS_LIB_DEPENDS= libhiredis.so:databases/hiredis SASLAUTHD_RUN_DEPENDS= ${LOCALBASE}/sbin/saslauthd:security/cyrus-sasl2-saslauthd SA_EXIM_RUN_DEPENDS= ${LOCALBASE}/bin/spamc:mail/spamassassin SPF_LIB_DEPENDS= libspf2.so:mail/libspf2 SQLITE_LIB_DEPENDS= libicudata.so:devel/icu SQLITE_USES= pkgconfig sqlite #DEBIAN_PATCHES_PREFIX= ${FILESDIR}/debian/75 #EXTRA_PATCHES= \ # ${DEBIAN_PATCHES_PREFIX}_01-Fix-exit-on-attempt-to-rewrite-a-malformed-address.-.patch:-p1 \ # ${DEBIAN_PATCHES_PREFIX}_05-SPF-fix-memory-accounting-for-error-case.patch:-p1 .include # OCSP is supported for openssl only .if ${PORT_OPTIONS:MOCSP} .if ! ${PORT_OPTIONS:MTLS} IGNORE= you cannot enable OCSP stapling without TLS support .elif ${PORT_OPTIONS:MGNUTLS} IGNORE= you cannot enable OCSP stapling with gnutls .endif .endif # DMARC implies SPF and DKIM .if ${PORT_OPTIONS:MDMARC} .if ! ${PORT_OPTIONS:MSPF} || ! ${PORT_OPTIONS:MDKIM} IGNORE= you cannot enable DMARC without SPF and DKIM support .endif .endif # ARC implies SPF and DKIM .if ${PORT_OPTIONS:MARC} .if ! ${PORT_OPTIONS:MSPF} || ! ${PORT_OPTIONS:MDKIM} IGNORE= you cannot enable ARC without SPF and DKIM support .endif .endif # DANE implies DNSSEC .if ${PORT_OPTIONS:MDANE} .if ! ${PORT_OPTIONS:MDNSSEC} || ! ${PORT_OPTIONS:MTLS} IGNORE= you cannot enable DANE without DNSSEC support or without TLS support .endif .endif .if ${PORT_OPTIONS:MSA_EXIM} || defined(FETCH_ALL) MASTER_SITES+= http://marc.merlins.org/linux/exim/files/:sa_exim \ SF/sa-exim/sa-exim/${SA_EXIM_VERSION}:sa_exim DISTFILES+= sa-exim-${SA_EXIM_VERSION}.tar.gz:sa_exim EXTRA_PATCHES+= ${FILESDIR}/extra-patch-Local-sa-exim.c EXTRA_PATCHES+= ${FILESDIR}/extra-patch-Local-sa-exim.conf .endif -EXIM_VERSION= 4.97.1 +EXIM_VERSION= 4.98 SA_EXIM_VERSION=4.2.1 EXIM_INSTALL_ARG+= "-no_chown" "-no_symlink" EXTRA_PATCHES+= `${FIND} ${PATCHDIR} -name '74_*.patch'|${SORT} -h` .if !defined(EXIMON_ONLY) PLIST_SUB+= EXIM="" .if defined(PKGNAMESUFFIX) CONFLICTS+= ${PKGNAMEPREFIX}${PORTNAME}-4.* .endif .for suffix in -ldap2 -mysql -postgresql -sa-exim -sqlite .if !defined(PKGNAMESUFFIX) || ${PKGNAMESUFFIX} != ${suffix} CONFLICTS+= ${PKGNAMEPREFIX}${PORTNAME}${suffix}-4.* .endif .endfor .if ${PORT_OPTIONS:MEXIMON} CONFLICTS+= ${PKGNAMEPREFIX}${PORTNAME}-monitor-4.* .endif PKGMESSAGE= ${WRKDIR}/POST-INSTALL-NOTES .else # !EXIMON_ONLY PLIST_SUB+= EXIM="@comment " PORT_OPTIONS+= EXIMON PKGMESSAGE= ${WRKDIR}/pkg-message EXIM_INSTALL_ARG+= "eximon" "eximon.bin" .endif # !EXIMON_ONLY PORTDOC_BASE= ACKNOWLEDGMENTS NOTICE README.UPDATING PORTDOC_FILES= ChangeLog Exim3.upgrade Exim4.upgrade NewStuff \ OptionLists.txt README README.SIEVE dbm.discuss.txt \ experimental-spec.txt filter.txt spec.txt PORT_EXAMPLES= convert4r3 convert4r4 transport-filter.pl DAILY_SCRIPTS= 150.exim-tidydb 460.exim-mail-rejects MAKE_ENV+= OSTYPE="${OPSYS}" ARCHTYPE="${ARCH}" DUMMY_LDFLAGS="${DUMMY_LDFLAGS}" STRIP_COMMAND="${STRIP_CMD}" EXIM_USER?= mailnull EXIM_GROUP?= mail # Default user/group are system ones, so we don't want to check them .if ${EXIM_USER} != "mailnull" USERS= ${EXIM_USER} .endif .if ${EXIM_GROUP} != "mail" GROUPS= ${EXIM_GROUP} .endif LOGDIR?= /var/log/exim LOG_FILE_PATH?= ${LOGDIR}/%slog CONFIG_FILE_PATH?= ${PREFIX}/etc/exim/configure ALT_CONFIG_PREFIX?= ${PREFIX}/etc/exim/ EXIM_DYNAMIC_LDFLAGS= -fPIC -rdynamic -Wl,--export-dynamic SED_SCRIPT= -e 's,%%PREFIX%%,${PREFIX},g' \ -e 's,%%DOCSDIR%%,${DOCSDIR},g' \ -e 's,%%EXAMPLESDIR%%,${EXAMPLESDIR},g' \ -e 's,%%EXIM_USER%%,${EXIM_USER},g' \ -e 's,%%EXIM_GROUP%%,${EXIM_GROUP},g' \ -e 's,%%LOGDIR%%,${LOGDIR},g' SEDLIST+= -e 's,XX_CFLAGS_XX,${CFLAGS:S/,/\\,/g},' \ -e 's,XX_PREFIX_XX,${PREFIX:S/,/\\,/g},' \ -e 's,XX_LOCALBASE_XX,${LOCALBASE:S/,/\\,/g},' \ -e 's,XX_LOG_FILE_PATH_XX,${LOG_FILE_PATH:S/,/\\,/g},' \ -e 's,XX_CONFIG_FILE_PATH_XX,${CONFIG_FILE_PATH:S/,/\\,/g},' \ -e 's,XX_ALT_CONFIG_PREFIX_XX,${ALT_CONFIG_PREFIX:S/,/\\,/g},' \ -e 's,XX_EXIM_USER_XX,${EXIM_USER:S/,/\\,/g},' \ -e 's,XX_EXIM_GROUP_XX,${EXIM_GROUP:S/,/\\,/g},' \ -e 's,XX_DEFAULT_CHARSET_XX,${WITH_DEFAULT_CHARSET:S/,/\\,/g},' \ -e 's,XX_DYNAMIC_LDFLAGS_XX,${EXIM_DYNAMIC_LDFLAGS:S/,/\\,/g},' PLIST_SUB+= EXIM_VERSION="${EXIM_VERSION}-${PORTREVISION}" \ EXIM_USER=${EXIM_USER} \ EXIM_GROUP=${EXIM_GROUP} \ LOGDIR="${LOGDIR:S/^\///}" # Exim refuses to run local deliveries as root by default. You can # add other users to this colon-separated list that cannot be # overridden at runtime below, but are advised not to remove "root". #WITH_FIXED_NEVER_USERS= root:daemon:bin # When Exim is decoding MIME "words" in header lines it converts any foreign # character sets to the one that is set in the headers_charset option. # The default setting is defined by this setting: WITH_DEFAULT_CHARSET?= ISO-8859-1 # You should not need to fiddle with anything below this point. LIB_DEPENDS+= libpcre2-posix.so:devel/pcre2 .if ! ${PORT_OPTIONS:MDKIM} SEDLIST+= -e 's,^\# (DISABLE_DKIM=),\1,' .endif .if ${PORT_OPTIONS:MLISTMATCH_RHS} SEDLIST+= -e 's,^\# (EXPAND_LISTMATCH_RHS=),\1,' .endif .if ${PORT_OPTIONS:MDCC} SEDLIST+= -e 's,^\# (EXPERIMENTAL_DCC=),\1,' .endif .if ${PORT_OPTIONS:MPROXY} SEDLIST+= -e 's,^\# (SUPPORT_PROXY=),\1,' .endif .if ${PORT_OPTIONS:MCERTNAMES} SEDLIST+= -e 's,^\# (EXPERIMENTAL_CERTNAMES=),\1,' .endif .if ${PORT_OPTIONS:MDSN} SEDLIST+= -e 's,^\# (EXPERIMENTAL_DSN=),\1,' .endif .if !${PORT_OPTIONS:MDANE} SEDLIST+= -e 's,^(SUPPORT_DANE=),\#\1,' .endif .if ${PORT_OPTIONS:MARC} SEDLIST+= -e 's,^\# (EXPERIMENTAL_ARC=),\1,' .endif .if !${PORT_OPTIONS:MEVENT} SEDLIST+= -e 's,^\# (DISABLE_EVENT=),\1,' .endif .if ${PORT_OPTIONS:MINTERNATIONAL} SEDLIST+= -e 's,^\# (SUPPORT_I18N=),\1,' \ -e 's,XX_IDN_LIBS_XX,-L${LOCALBASE}/lib -lidn,' .else SEDLIST+= -e 's,XX_IDN_LIBS_XX,,' .endif .if ${PORT_OPTIONS:MSOCKS} SEDLIST+= -e 's,^\# (SUPPORT_SOCKS=),\1,' .endif .if !${PORT_OPTIONS:MPRDR} SEDLIST+= -e 's,^\# (DISABLE_PRDR=),\1,' .endif .if !${PORT_OPTIONS:MOCSP} SEDLIST+= -e 's,^\# (DISABLE_OCSP=),\1,' .endif .if !${PORT_OPTIONS:MDNSSEC} SEDLIST+= -e 's,^\# (DISABLE_DNSSEC=),\1,' .endif .if ${PORT_OPTIONS:MDMARC} SEDLIST+= -e 's,XX_DMARC_LIBS_XX,-L${LOCALBASE}/lib -lopendmarc,' \ -e 's,^\# (SUPPORT_DMARC=),\1,' .else SEDLIST+= -e 's,XX_DMARC_LIBS_XX,,' .endif .if ${PORT_OPTIONS:MWISHLIST} EXTRA_PATCHES+= `${FIND} ${PATCHDIR} -name 'wishlist-*.patch'` .endif .if ${PORT_OPTIONS:MFIXED_NEVER_USERS} SEDLIST+= -e 's,^(FIXED_NEVER_USERS=).*,\1${WITH_FIXED_NEVER_USERS:S/,/\\,/g},' .endif .if ${PORT_OPTIONS:MEXIMON} SEDLIST+= -e 's,^\# (EXIM_MONITOR=),\1,' .endif .if ${PORT_OPTIONS:MTLS} .if ! ${PORT_OPTIONS:MGNUTLS} USES+= ssl SEDLIST+= -e 's,^\# (USE_OPENSSL=),\1,' SEDLIST+= -e 's,^\# (TLS_LIBS=.*-lssl[[:space:]]),\1,' BROKEN_SSL= openssl31 BROKEN_SSL_REASON= error: token is not a valid binary operator in a preprocessor subexpression .else SEDLIST+= -e 's,^\# (USE_GNUTLS=),\1,' SEDLIST+= -e 's,^\# (TLS_LIBS=.*-lgnutls[[:space:]]),\1,' .endif .else # TLS support SEDLIST+= -e 's,^\# (DISABLE_TLS=),\1,' .endif .if ${PORT_OPTIONS:MEMBEDDED_PERL} SEDLIST+= -e 's,^\# (EXIM_PERL=),\1,' .endif .if ${PORT_OPTIONS:MTCP_WRAPPERS} SEDLIST+= -e 's,XX_TCP_WRAPPERS_LIBS_XX,-lwrap,' \ -e 's,^\# (USE_TCP_WRAPPERS=),\1,' .else SEDLIST+= -e 's,XX_TCP_WRAPPERS_LIBS_XX,,' .endif .if ${PORT_OPTIONS:MICONV} SEDLIST+= -e 's,XX_ICONV_LIBS_XX,-L${LOCALBASE:S/,/\\,/g}/lib ${ICONV_LIB},' \ -e 's,^\# (HAVE_ICONV=),\1,' .else SEDLIST+= -e 's,XX_ICONV_LIBS_XX,,' .endif .if ${PORT_OPTIONS:MOPENLDAP} LDAP_LIB_TYPE= OPENLDAP2 SEDLIST+= -e 's,XX_LDAP_LIBS_XX,-L${LOCALBASE:S/,/\\,/g}/lib -llber -lldap,' \ -e 's,XX_LDAP_INCLUDE_XX,-I${LOCALBASE:S/,/\\,/g}/include,' \ -e 's,XX_LDAP_TYPE_XX,${LDAP_LIB_TYPE:S/,/\\,/g},' \ -e 's,^\# (LOOKUP_LDAP=),\1,' .else SEDLIST+= -e 's,XX_LDAP_[^ ]*_XX,,' \ -e 's,^(LDAP_LIB_TYPE=),\# \1,' .endif .if ${PORT_OPTIONS:MBDB} INVALID_BDB_VER= 2 3 6 18 DB_LIBS= -L${BDB_LIB_DIR} -l${BDB_LIB_NAME} DB_INCLUDES= -I${BDB_INCLUDE_DIR} .else DB_LIBS= DB_INCLUDES= SEDLIST+= -e 's,^(DBMLIB=),\# \1,' .endif SEDLIST+= -e 's,XX_DB_LIBS_XX,${DB_LIBS:S/,/\\,/g},' \ -e 's,XX_DB_INCLUDES_XX,${DB_INCLUDES:S/,/\\,/g},' .if ${PORT_OPTIONS:MLMDB} _LMDB_LIBS= -L${LOCALBASE}/lib -llmdb _LMDB_INCLUDES= -I${LOCALBASE}/include SEDLIST+= -e 's,^\# (EXPERIMENTAL_LMDB=),\1,' .else _LMDB_LIBS= _LMDB_INCLUDES= .endif SEDLIST+= -e 's,XX_LMDB_LIBS_XX,${_LMDB_LIBS:S/,/\\,/g},' \ -e 's,XX_LMDB_INCLUDES_XX,${_LMDB_INCLUDES:S/,/\\,/g},' .if ${PORT_OPTIONS:MMYSQL} SEDLIST+= -e 's,XX_MYSQL_LIBS_XX,-L${LOCALBASE:S/,/\\,/g}/lib/mysql -l${_MYSQL_SHLIB:S/lib//},' \ -e 's,XX_MYSQL_INCLUDE_XX,-I${LOCALBASE:S/,/\\,/g}/include/mysql,' \ -e 's,^\# (LOOKUP_MYSQL=),\1,' .else SEDLIST+= -e 's,XX_MYSQL_[^ ]*_XX,,' .endif .if ${PORT_OPTIONS:MSASLAUTHD} SASLAUTHD_SOCKET?= /var/run/saslauthd/mux SEDLIST+= -e 's,^\# (CYRUS_SASLAUTHD_SOCKET=).*,\1${SASLAUTHD_SOCKET:S/,/\\,/g},' .endif .if ${PORT_OPTIONS:MPAM} SEDLIST+= -e 's,XX_PAM_LIBS_XX,-lpam,' \ -e 's,^\# (SUPPORT_PAM=),\1,' .else SEDLIST+= -e 's,XX_PAM_LIBS_XX,,' .endif .if ${PORT_OPTIONS:MAUTH_CRAM_MD5} SEDLIST+= -e 's,^\# (AUTH_CRAM_MD5=),\1,' .endif .if ${PORT_OPTIONS:MAUTH_PLAINTEXT} SEDLIST+= -e 's,^\# (AUTH_PLAINTEXT=),\1,' .endif .if ${PORT_OPTIONS:MAUTH_DOVECOT} SEDLIST+= -e 's,^\# (AUTH_DOVECOT=),\1,' .endif .if ${PORT_OPTIONS:MAUTH_SPA} SEDLIST+= -e 's,^\# (AUTH_SPA=),\1,' .endif .if ${PORT_OPTIONS:MAUTH_SASL} SEDLIST+= -e 's,^\# (AUTH_CYRUS_SASL=),\1,' \ -e 's,^\# (AUTH_LIBS=.*-lsasl2),\1,' .endif .if ${PORT_OPTIONS:MAUTH_TLS} SEDLIST+= -e 's,^\# (AUTH_TLS=),\1,' .endif .if ${PORT_OPTIONS:MAUTH_RADIUS} WITH_RADIUS_TYPE?= RADLIB .if ${WITH_RADIUS_TYPE:tl} == radlib SEDLIST+= -e 's,XX_RADIUS_LIBS_XX,-lradius,' \ -e 's,^\# (RADIUS_CONFIG_FILE=).*,\1/etc/radius.conf,' \ -e 's,^\# (RADIUS_LIB_TYPE=).*,\1RADLIB,' .elif ${WITH_RADIUS_TYPE:tl} == radiusclient LIB_DEPENDS+= libfreeradius-client.so:net/freeradius-client SEDLIST+= -e 's,XX_RADIUS_LIBS_XX,-L${LOCALBASE:S/,/\\,/g}/lib -lfreeradius-client,' \ -e 's,^\# (RADIUS_CONFIG_FILE=).*,\1${LOCALBASE:S/,/\\,/g}/etc/radiusclient/radiusclient.conf,' \ -e 's,^\# (RADIUS_LIB_TYPE=).*,\1RADIUSCLIENTNEW,' .else IGNORE= the variable WITH_RADIUS_TYPE must be either RADLIB or RADIUSCLIENT .endif .else SEDLIST+= -e 's,XX_RADIUS_LIBS_XX,,' .endif .if ${PORT_OPTIONS:MPGSQL} SEDLIST+= -e 's,XX_PGSQL_LIBS_XX,-L${LOCALBASE:S/,/\\,/g}/lib -lpq,' \ -e 's,XX_PGSQL_INCLUDE_XX,-I${LOCALBASE:S/,/\\,/g}/include/pgsql,' \ -e 's,^\# (LOOKUP_PGSQL=),\1,' .else SEDLIST+= -e 's,XX_PGSQL_[^ ]*_XX,,' .endif .if ! ${PORT_OPTIONS:MPGSQL} && ! ${PORT_OPTIONS:MMYSQL} && !defined(LDAP_LIB_TYPE) && \ ! ${PORT_OPTIONS:MBDB} && ! ${PORT_OPTIONS:MLMDB} SEDLIST+= -e 's,^(LOOKUP_LIBS=),\# \1,' \ -e 's,^(LOOKUP_INCLUDE=),\# \1,' .endif .if ! ${PORT_OPTIONS:MDNSDB} SEDLIST+= -e 's,^(LOOKUP_DNSDB=),\# \1,' .endif .if ${PORT_OPTIONS:MMAILDIR} SEDLIST+= -e 's,^\# (SUPPORT_MAILDIR=),\1,' .endif .if ${PORT_OPTIONS:MMAILSTORE} SEDLIST+= -e 's,^\# (SUPPORT_MAILSTORE=),\1,' .endif .if ${PORT_OPTIONS:MMBX} SEDLIST+= -e 's,^\# (SUPPORT_MBX=),\1,' .endif .if ${PORT_OPTIONS:MCDB} SEDLIST+= -e 's,^\# (LOOKUP_CDB=),\1,' .endif .if ${PORT_OPTIONS:MDSEARCH} SEDLIST+= -e 's,^\# (LOOKUP_DSEARCH=),\1,' .endif .if ! ${PORT_OPTIONS:MLSEARCH} SEDLIST+= -e 's,^(LOOKUP_LSEARCH=),\# \1,' .endif .if ${PORT_OPTIONS:MNIS} SEDLIST+= -e 's,^\# (LOOKUP_NIS=),\1,' .endif .if ${PORT_OPTIONS:MPASSWD} SEDLIST+= -e 's,^\# (LOOKUP_PASSWD=),\1,' .endif .if ${PORT_OPTIONS:MSQLITE} SEDLIST+= -e 's,XX_SQLITE_LIBS_XX,`pkg-config --static --libs sqlite3`,' \ -e 's,XX_SQLITE_FLAGS_XX,`pkg-config --cflags sqlite3`,' \ -e 's,^\# (LOOKUP_SQLITE=),\1,' .else SEDLIST+= -e 's,XX_SQLITE_LIBS_XX,,' \ -e 's,XX_SQLITE_FLAGS_XX,,' .endif .if ${PORT_OPTIONS:MREDIS} SEDLIST+= -e 's,XX_REDIS_LIBS_XX,-L${LOCALBASE}/lib -lhiredis,' \ -e 's,^\# (LOOKUP_REDIS=),\1,' \ -e 's,^\# (REDIS=),\1,' .else SEDLIST+= -e 's,XX_REDIS_LIBS_XX,,' .endif .if ${PORT_OPTIONS:MLMTP} SEDLIST+= -e 's,^\# (TRANSPORT_LMTP=),\1,' .endif .if ! ${PORT_OPTIONS:MALT_CONFIG_PREFIX} SEDLIST+= -e 's,^(ALT_CONFIG_PREFIX=),\# \1,' .endif .if ${PORT_OPTIONS:MSPF} SEDLIST+= -e 's,XX_SPF_FLAGS_XX,-DSPF,' \ -e 's,XX_SPF_LIBS_XX,-L${LOCALBASE}/lib -lspf2 -lpthread,' \ -e 's,^\# (SUPPORT_SPF=),\1,' .else SEDLIST+= -e 's,XX_SPF_FLAGS_XX,,' \ -e 's,XX_SPF_LIBS_XX,,' .endif .if ${PORT_OPTIONS:MSRS} SEDLIST+= -e 's,XX_SRS_FLAGS_XX,-DSUPPORT_SRS,' \ -e 's,XX_SRS_LIBS_XX,,' .elif ${PORT_OPTIONS:MOLD_SRS} LIB_DEPENDS+= libsrs_alt.so:mail/libsrs_alt SEDLIST+= -e 's,XX_SRS_FLAGS_XX,-DEXPERIMENTAL_SRS_ALT,' \ -e 's,XX_SRS_LIBS_XX,-L${LOCALBASE}/lib -lsrs_alt,' .else SEDLIST+= -e 's,XX_SRS_FLAGS_XX,,' \ -e 's,XX_SRS_LIBS_XX,,' .endif .if ${PORT_OPTIONS:MREADLINE} SEDLIST+= -e 's,^\# (USE_READLINE=),\1,' .endif .if ${PORT_OPTIONS:MCONTENT_SCAN} SEDLIST+= -e 's,^\# (WITH_CONTENT_SCAN=),\1,' .endif .if !defined(EXIMON_ONLY) && ${PORT_OPTIONS:MDAEMON} USE_RC_SUBR= exim PLIST_SUB+= EXIMDAEMON="" SUB_LIST+= LOGDIR="${LOGDIR}" .else PLIST_SUB+= EXIMDAEMON="@comment " .endif .if ${PORT_OPTIONS:MIPV6} SEDLIST+= -e 's,^\# (HAVE_IPV6=),\1,' .endif .if ${PORT_OPTIONS:MDISABLE_D_OPT} SEDLIST+= -e 's,^\# (DISABLE_D_OPTION=),\1,' .else .if defined(WHITELIST_D_MACROS) SEDLIST+= -e 's,^\# (WHITELIST_D_MACROS=).*$$,\1${WHITELIST_D_MACROS:S/,/\\,/g},' .endif .endif .if defined(TRUSTED_CONFIG_LIST) SEDLIST+= -e 's,^\# (TRUSTED_CONFIG_LIST=).*$$,\1${TRUSTED_CONFIG_LIST:S/,/\\,/g},' .endif .if ${PORT_OPTIONS:MQUEUEFILE} SEDLIST+= -e 's,^\# (EXPERIMENTAL_QUEUEFILE=),\1,' .endif MAKE_ENV+= INSTALL_ARG="${EXIM_INSTALL_ARG}" DUMMY_LDFLAGS!= ${ECHO_CMD} ${LDFLAGS} | ${SED} -e 's|-Wl,-rpath|-Wl,-DUMMYrpath|g; s|-rpath|-Wl,-rpath|g; s|-DUMMYrpath|-rpath|g' pre-everything:: @${ECHO} 'Exim now drops privileges when alternate configuration' @${ECHO} 'files are used. You can set make variable TRUSTED_CONFIG_LIST' @${ECHO} 'to specify the list of configuration files for which' @${ECHO} 'root privileges will be retained.' @${ECHO} '' @${ECHO} 'You can whitelist some macros using the make variable' @${ECHO} 'WHITELIST_D_MACROS. This is useful if you are running' @${ECHO} 'with DISABLE_D_OPT set, but macros whitelisting will be' @${ECHO} 'removed in some future Exim release, so it is better' @${ECHO} 'to use TRUSTED_CONFIG_LIST to set the list of trusted' @${ECHO} 'configuration files.' .if empty(.MAKEFLAGS:M-s) && ${PORT_OPTIONS:MWISHLIST} @${ECHO} '' @${ECHO} 'Included extra patches:' @${FIND} ${PATCHDIR} -name 'wishlist-*.patch' \ -exec ${SED} -ne 's,^# , ,p' {} \; @${ECHO} '' .endif post-extract: .if ${PORT_OPTIONS:MSA_EXIM} @cd ${WRKDIR} && ${TAR} ${EXTRACT_BEFORE_ARGS} ${_DISTDIR}/sa-exim-${SA_EXIM_VERSION}.tar.gz ${EXTRACT_AFTER_ARGS} @@${CP} ${WRKDIR}/sa-exim-${SA_EXIM_VERSION}/sa-exim.c ${WRKSRC}/Local @@${CP} ${WRKDIR}/sa-exim-${SA_EXIM_VERSION}/sa-exim.conf ${WRKSRC}/Local .endif do-configure: @${MKDIR} ${WRKSRC}/Local @${SED} -E ${SEDLIST} ${WRKSRC}/src/EDITME > ${WRKSRC}/Local/Makefile .if ${PORT_OPTIONS:MEXIMON} @${CP} ${WRKSRC}/exim_monitor/EDITME ${WRKSRC}/Local/eximon.conf .endif @${REINPLACE_CMD} -E ${SEDLIST} ${WRKSRC}/src/configure.default @${REINPLACE_CMD} -e 's!$$(LDFLAGS)!$$(DUMMY_LDFLAGS) -L$${LOCALBASE}/lib!' ${WRKSRC}/OS/Makefile-Base @${REINPLACE_CMD} -e 's/"(Exim $$version_number)\\n\\t"/"(Exim $$version_number (${OPSYS}))\\n\\t"/' \ ${WRKSRC}/src/globals.c @${REINPLACE_CMD} -e 's/Exim version %s \(#%s \)\{0,1\}/&(${OPSYS} ${OSREL}) /' ${WRKSRC}/src/exim.c @${REINPLACE_CMD} -e 's/^#include "cnumber\.h"$$/${PORTREVISION}/' ${WRKSRC}/src/version.c @${REINPLACE_CMD} -E -e 's/^(PERL_COMMAND=).*/\1${PERL:S,/,\/,g}/' \ -e 's/^(CC=).*/\1${CC:S,/,\/,g}/' ${WRKSRC}/OS/Makefile-Default .if ${PORT_OPTIONS:MSA_EXIM} @${REINPLACE_CMD} -E -e 's/^\# (HAVE_LOCAL_SCAN=).*/\1yes/' \ ${WRKSRC}/OS/Makefile-Default @${REINPLACE_CMD} -E -e 's/^(LOCAL_SCAN_SOURCE=).*/\1Local\/sa-exim.c/' \ ${WRKSRC}/OS/Makefile-Default @{ \ ${ECHO_CMD} "char *version=\"${SA_EXIM_VERSION}\";"; \ ${ECHO_CMD} "#define SPAMC_LOCATION \"${LOCALBASE}/bin/spamc\""; \ ${ECHO_CMD} "#define SPAMASSASSIN_CONF \"${PREFIX}/etc/exim/sa-exim.conf\""; \ } > ${WRKSRC}/Local/sa-exim.h @${REINPLACE_CMD} -e 's,/usr/bin/spamc,${LOCALBASE}/bin/spamc,' \ ${WRKSRC}/Local/sa-exim.conf .endif @(cd ${WRKSRC}; ${SETENV} ${MAKE_ENV} ${MAKE} ${MAKE_FLAGS} ${MAKEFILE} ${MAKE_ARGS} configure) post-build: .for script in ${DAILY_SCRIPTS} @${SED} ${SED_SCRIPT} ${FILESDIR}/${script}.sh > ${WRKDIR}/${script}.sh .endfor @${SED} ${SED_SCRIPT} ${FILESDIR}/POST-INSTALL-NOTES > \ ${WRKDIR}/POST-INSTALL-NOTES @${SED} ${SED_SCRIPT} ${FILESDIR}/POST-INSTALL-NOTES.clamd > ${WRKDIR}/POST-INSTALL-NOTES.clamd @${SED} ${SED_SCRIPT} ${FILESDIR}/POST-INSTALL-NOTES > ${WRKDIR}/POST-INSTALL-NOTES @[ ! -f ${PKGDIR}/pkg-message ] || ${SED} ${SED_SCRIPT} ${PKGDIR}/pkg-message > ${WRKDIR}/pkg-message .if !defined(EXIMON_ONLY) post-install: .if ${PORT_OPTIONS:MDAEMON} ${MKDIR} ${STAGEDIR}${PREFIX}/etc/periodic/daily .for script in ${DAILY_SCRIPTS} ${INSTALL_SCRIPT} ${WRKDIR}/${script}.sh ${STAGEDIR}${PREFIX}/etc/periodic/daily/${script} .endfor .endif @${MKDIR} -m 750 ${STAGEDIR}${LOGDIR} ${INSTALL_MAN} ${WRKSRC}/doc/exim.8 ${STAGEDIR}${PREFIX}/share/man/man8 .if ${PORT_OPTIONS:MDOCS} @${MKDIR} ${STAGEDIR}${DOCSDIR} ${INSTALL_DATA} ${WRKDIR}/POST-INSTALL-NOTES ${STAGEDIR}${DOCSDIR} ${INSTALL_DATA} ${WRKDIR}/POST-INSTALL-NOTES.clamd ${STAGEDIR}${DOCSDIR} .for docfile in ${PORTDOC_BASE} ${INSTALL_DATA} ${WRKSRC}/${docfile} ${STAGEDIR}${DOCSDIR} .endfor .for docfile in ${PORTDOC_FILES} ${INSTALL_DATA} ${WRKSRC}/doc/${docfile} ${STAGEDIR}${DOCSDIR} .endfor @${MKDIR} ${STAGEDIR}${EXAMPLESDIR} .for example in ${PORT_EXAMPLES} ${INSTALL_SCRIPT} ${WRKSRC}/build-${OPSYS}-${ARCH}/${example} ${STAGEDIR}${EXAMPLESDIR} .endfor .endif .if ${PORT_OPTIONS:MSA_EXIM} ${INSTALL_DATA} ${WRKSRC}/Local/sa-exim.conf \ ${STAGEDIR}${PREFIX}/etc/exim/sa-exim.conf.sample .endif .endif # ! defined(EXIMON_ONLY) .include # If using clang, avoid too many warnings due to Exim code style .if ${CHOSEN_COMPILER_TYPE} == "clang" EXIM_WARN_FLAGS?= -Wno-logical-op-parentheses -Wno-macro-redefined -Wno-parentheses -Wno-dangling-else .endif CFLAGS+= ${EXIM_WARN_FLAGS} .include diff --git a/mail/exim/distinfo b/mail/exim/distinfo index f3c9f86041e0..5a49e8ab04d2 100644 --- a/mail/exim/distinfo +++ b/mail/exim/distinfo @@ -1,5 +1,5 @@ -TIMESTAMP = 1704046714 -SHA256 (exim/exim-4.97.1.tar.bz2) = 3a9614ac5b5d10dd98bfc7594561503a51a89c2ccbc52bca3153ee98af1cb37a -SIZE (exim/exim-4.97.1.tar.bz2) = 2071215 +TIMESTAMP = 1721038320 +SHA256 (exim/exim-4.98.tar.bz2) = acfd93f6e4a38e4887867614770ea062b2453ed93e355772adeae6c6598b0d92 +SIZE (exim/exim-4.98.tar.bz2) = 2099901 SHA256 (exim/sa-exim-4.2.1.tar.gz) = 24d4bf7b0fdddaea11f132981cebb6a86a4ab20ef54111a8ebd481b421c6e2c1 SIZE (exim/sa-exim-4.2.1.tar.gz) = 68933 diff --git a/mail/exim/files/patch-periodic-queue-runs b/mail/exim/files/patch-periodic-queue-runs deleted file mode 100644 index b19336269151..000000000000 --- a/mail/exim/files/patch-periodic-queue-runs +++ /dev/null @@ -1,212 +0,0 @@ -From ced0bbf43860a2e4ddc88e3ba20ae731324586c5 Mon Sep 17 00:00:00 2001 -From: Jeremy Harris -Date: Fri, 15 Dec 2023 21:05:32 +0000 -Subject: [PATCH] Fix periodic queue runs. Bug 3046 - -Broken-by: 7d5055276a22 ---- - doc/ChangeLog | 5 ++++ - src/daemon.c | 58 ++++++++++++++++++++++++++++--------------- - src/structs.h | 2 +- - 3 files changed, 44 insertions(+), 21 deletions(-) - -diff --git a/doc/doc-txt/ChangeLog b/doc/doc-txt/ChangeLog -index 85064cc8d..c46f3b8c0 100644 ---- doc/ChangeLog -+++ doc/ChangeLog -@@ -53,6 +53,11 @@ JH/10 Bug 3058: Ensure that a failing expansion in a router "set" option defers - the routing operation. Previously it would silently stop routing the - message. - -+JH/11 Bug 3046: Fix queue-runs. Previously, the arrivel of a notification or -+ info-request event close in time to a scheduled run timer could result in -+ the latter being missed, and no further queue scheduled runs being -+ initiated. This ouwld be more likely on high-load systems. -+ - - - Exim version 4.97 -diff --git a/src/src/daemon.c b/src/src/daemon.c -index f2183c735..aff05120a 100644 ---- src/daemon.c -+++ src/daemon.c -@@ -1258,10 +1258,9 @@ static const uschar * queuerun_msg_qname; - - /* The notifier socket has something to read. Pull the message from it, decode - and do the action. -+*/ - --Return TRUE if a sigalrm should be emulated */ -- --static BOOL -+static void - daemon_notification(void) - { - uschar buf[256], cbuf[256]; -@@ -1277,8 +1276,8 @@ struct msghdr msg = { .msg_name = &sa_un, - ssize_t sz; - - buf[sizeof(buf)-1] = 0; --if ((sz = recvmsg(daemon_notifier_fd, &msg, 0)) <= 0) return FALSE; --if (sz >= sizeof(buf)) return FALSE; -+if ((sz = recvmsg(daemon_notifier_fd, &msg, 0)) <= 0) return; -+if (sz >= sizeof(buf)) return; - - #ifdef notdef - debug_printf("addrlen %d\n", msg.msg_namelen); -@@ -1351,7 +1350,7 @@ switch (buf[0]) - : !buf[1+MESSAGE_ID_LENGTH+1] - ) - { queuerun_msg_qname = q->name; break; } -- return TRUE; -+ return; - #endif - - case NOTIFY_QUEUE_SIZE_REQ: -@@ -1373,7 +1372,7 @@ switch (buf[0]) - regex_at_daemon(buf); - break; - } --return FALSE; -+return; - } - - -@@ -1432,7 +1431,7 @@ for (qrunner * q = qrunners, * next; q; q = next) - if (sorted) - { - qrunner ** p = &sorted; -- for (qrunner * qq; qq = *p; p = &(qq->next)) -+ for (qrunner * qq; qq = *p; p = &qq->next) - if ( q->next_tick < qq->next_tick - || q->next_tick == qq->next_tick && q->interval < qq->interval - ) -@@ -1451,6 +1450,13 @@ qrunners = sorted; - return qrunners ? qrunners->next_tick - time(NULL) : 0; - } - -+/* See if we can do a queue run. If policy limit permit, kick one off. -+If both notification and timer events are present, handle the former -+and leave the timer outstanding. -+ -+Return the number of seconds until the next due runner. -+*/ -+ - static int - daemon_qrun(int local_queue_run_max, struct pollfd * fd_polls, int listen_socket_count) - { -@@ -1464,13 +1470,16 @@ DEBUG(D_any) debug_printf("%s received\n", - enough queue runners on the go. If we are not running as root, a re-exec is - required. In the calling process, restart the alamr timer for the next run. */ - --if (is_multiple_qrun()) -+if (is_multiple_qrun()) /* we are managing periodic runs */ - if (local_queue_run_max <= 0 || queue_run_count < local_queue_run_max) - { - qrunner * q = NULL; - - #ifndef DISABLE_QUEUE_RAMP -- if (*queuerun_msgid) /* See if we can start another runner for this queue */ -+ /* If this is a triggered run for a specific message, see if we can start -+ another runner for this queue. */ -+ -+ if (*queuerun_msgid) - { - for (qrunner * qq = qrunners; qq; qq = qq->next) - if (qq->name == queuerun_msg_qname) -@@ -1481,13 +1490,13 @@ if (is_multiple_qrun()) - } - else - #endif -- /* In order of run priority, find the first queue for which we can start -- a runner */ -+ /* Normal periodic runL in order of run priority, find the first queue -+ for which we can start a runner */ - - for (q = qrunners; q; q = q->next) - if (q->run_count < q->run_max) break; - -- if (q) -+ if (q) /* found a queue to run */ - { - pid_t pid; - -@@ -1619,19 +1628,23 @@ if (is_multiple_qrun()) - } - } - --sigalrm_seen = FALSE; -+/* The queue run has been initiated (unless we were already running enough) */ -+ - #ifndef DISABLE_QUEUE_RAMP --if (*queuerun_msgid) /* it was a fast-ramp kick */ -+if (*queuerun_msgid) /* it was a fast-ramp kick; dealt with */ - *queuerun_msgid = 0; - else /* periodic or one-time queue run */ - #endif -- { /* Impose a minimum 1s tick, even when a run was outstanding */ -+ /* Set up next timer callback. Impose a minimum 1s tick, -+ even when a run was outstanding */ -+ { - int interval = next_qrunner_interval(); - if (interval <= 0) interval = 1; - -+ sigalrm_seen = FALSE; - if (qrunners) /* there are still periodic qrunners */ - { -- ALARM(interval); -+ ALARM(interval); /* set up next qrun tick */ - return interval; - } - } -@@ -2612,7 +2625,7 @@ for (;;) - - The other option is that we have an inetd wait timeout specified to -bw. */ - -- if (sigalrm_seen) -+ if (sigalrm_seen || *queuerun_msgid) - if (inetd_wait_timeout > 0) - daemon_inetd_wtimeout(last_connection_time); /* Might not return */ - else -@@ -2641,7 +2654,9 @@ for (;;) - select() was interrupted so that we reap the child. This might still leave - a small window when a SIGCHLD could get lost. However, since we use SIGCHLD - only to do the reaping more quickly, it shouldn't result in anything other -- than a delay until something else causes a wake-up. */ -+ than a delay until something else causes a wake-up. -+ For the normal case, wait for either a pollable fd (eg. new connection) or -+ or a SIGALRM (for a periodic queue run) */ - - if (sigchld_seen) - { -@@ -2706,10 +2721,13 @@ for (;;) - break; /* to top of daemon loop */ - } - #endif -+ /* Handle the daemon-notifier socket. If it was a fast-ramp -+ notification then queuerun_msgid will have a nonzerolength string. */ -+ - if (dnotify_poll && dnotify_poll->revents & POLLIN) - { - dnotify_poll->revents = 0; -- sigalrm_seen = daemon_notification(); -+ daemon_notification(); - break; /* to top of daemon loop */ - } - for (struct pollfd * p = fd_polls; p < fd_polls + listen_socket_count; -diff --git a/src/src/structs.h b/src/src/structs.h -index 209d657c6..256560ef8 100644 ---- src/structs.h -+++ src/structs.h -@@ -964,7 +964,7 @@ typedef struct qrunner { - struct qrunner * next; /* list sorted by next tick */ - - uschar * name; /* NULL for the default queue */ -- unsigned interval; /* tick rate, seconds */ -+ unsigned interval; /* tick rate, seconds. Zero for a one-time run */ - time_t next_tick; /* next run should, or should have, start(ed) */ - unsigned run_max; /* concurrent queue runner limit */ - unsigned run_count; /* current runners */ --- -2.30.2 - diff --git a/mail/exim/files/patch-src-lookups-dnsdb.c b/mail/exim/files/patch-src-lookups-dnsdb.c deleted file mode 100644 index 2e8438c122ec..000000000000 --- a/mail/exim/files/patch-src-lookups-dnsdb.c +++ /dev/null @@ -1,66 +0,0 @@ -From 79670d3c32ccb37fe06f25d8192943b58606a32a Mon Sep 17 00:00:00 2001 -From: Jeremy Harris -Date: Fri, 17 Nov 2023 16:55:17 +0000 -Subject: [PATCH] Lookups: Fix dnsdb lookup of multi-chunk TXT. Bug 3054 - -Broken=by: f6b1f8e7d642 -Source: https://git.exim.org/exim.git/patch/79670d3c32cc - ---- src/lookups/dnsdb.c.orig 2023-11-04 13:55:49.000000000 +0100 -+++ src/lookups/dnsdb.c 2023-11-17 21:34:25.986385000 +0100 -@@ -387,38 +387,31 @@ - } - - /* Other kinds of record just have one piece of data each, but there may be -- several of them, of course. */ -+ several of them, of course. TXT & SPF can have data in multiple chunks. */ - - if (yield->ptr) yield = string_catn(yield, outsep, 1); - - if (type == T_TXT || type == T_SPF) -- { -- if (!outsep2) /* output only the first item of data */ -+ for (unsigned data_offset = 0; data_offset + 1 < rr->size; ) - { -- uschar n = (rr->data)[0]; -- /* size byte + data bytes must not excced the RRs length */ -- if (n + 1 <= rr->size) -- yield = string_catn(yield, US (rr->data+1), n); -- } -- else -- for (unsigned data_offset = 0; data_offset < rr->size; ) -- { -- uschar chunk_len = (rr->data)[data_offset]; -- int remain = rr->size - data_offset; -+ uschar chunk_len = (rr->data)[data_offset]; -+ int remain; - -- /* Apparently there are resolvers that do not check RRs before passing -- them on, and glibc fails to do so. So every application must... -- Check for chunk len exceeding RR */ -+ if (outsep2 && *outsep2 && data_offset != 0) -+ yield = string_catn(yield, outsep2, 1); - -- if (chunk_len > remain) -- chunk_len = remain; -+ /* Apparently there are resolvers that do not check RRs before passing -+ them on, and glibc fails to do so. So every application must... -+ Check for chunk len exceeding RR */ - -- if (*outsep2 && data_offset != 0) -- yield = string_catn(yield, outsep2, 1); -- yield = string_catn(yield, US ((rr->data) + ++data_offset), --chunk_len); -- data_offset += chunk_len; -- } -- } -+ remain = rr->size - ++data_offset; -+ if (chunk_len > remain) -+ chunk_len = remain; -+ yield = string_catn(yield, US ((rr->data) + data_offset), chunk_len); -+ data_offset += chunk_len; -+ -+ if (!outsep2) break; /* output only the first chunk of the RR */ -+ } - else if (type == T_TLSA) - if (rr->size < 3) - continue; diff --git a/mail/exim/files/patch-src_tls-openssl.c b/mail/exim/files/patch-src_tls-openssl.c deleted file mode 100644 index 9306c0a193a0..000000000000 --- a/mail/exim/files/patch-src_tls-openssl.c +++ /dev/null @@ -1,11 +0,0 @@ ---- src/tls-openssl.c.orig 2023-11-07 21:07:29.239948000 +0100 -+++ src/tls-openssl.c 2023-11-07 21:08:03.517118000 +0100 -@@ -2605,7 +2605,7 @@ - asking for certificate-status under DANE, so this callback won't run for - that combination. It still will for non-DANE. */ - --#ifdef EXIM_HAVE_OPENSSL_OCSP_RESP_GET0_SIGNER -+#if defined(EXIM_HAVE_OPENSSL_OCSP_RESP_GET0_SIGNER) && defined(SUPPORT_DANE) - X509 * signer; - - if ( tls_out.dane_verified