diff --git a/mail/sendmail/Makefile b/mail/sendmail/Makefile index 55d2588df2c5..f28c8155c635 100644 --- a/mail/sendmail/Makefile +++ b/mail/sendmail/Makefile @@ -1,376 +1,376 @@ PORTNAME= sendmail -PORTVERSION= 8.16.1 -PORTREVISION= 4 +PORTVERSION= 8.17.1 +PORTREVISION= 0 CATEGORIES= mail MASTER_SITES= ftp://ftp.sendmail.org/pub/sendmail/ DISTNAME= ${PORTNAME}.${PORTVERSION} MAINTAINER= dinoex@FreeBSD.org COMMENT= Reliable, highly configurable mail transfer agent with utilities LICENSE= Sendmail LICENSE_NAME= Sendmail License LICENSE_FILE= ${WRKSRC}/LICENSE LICENSE_PERMS= dist-mirror dist-sell pkg-mirror pkg-sell auto-accept CONFLICTS?= courier-0.* postfix-1.* postfix-2.* smail-3.* zmailer-2.* opensmtpd-* USERS= smmsp GROUPS= smmsp USES= cpe uidfix groff MAKE_ARGS= UBINOWN=${UID} UBINGRP=${GID} \ SBINOWN=${UID} SBINGRP=${GID} \ GBINOWN=${UID} GBINGRP=${GID} \ MANOWN=${UID} MANGRP=${GID} \ CFOWN=${UID} CFGRP=${GID} \ MSPQOWN=${UID} \ LIBMODE=0644 UBINMODE=0755 GBINMODE=2755 WRKSRC= ${WRKDIR}/${PORTNAME}-${PORTVERSION} DOCS= KNOWNBUGS LICENSE PGPKEYS README RELEASE_NOTES \ sendmail/TRACEFLAGS sendmail/SECURITY sendmail/TUNING PLIST_SUB+= PREFIX=${PREFIX:S=${PREFIX}/==} \ MANPREFIX=${MANPREFIX:S=$=/=:S=${PREFIX}==:S=^/==} SUB_FILES= pkg-message WCONF= ${WRKSRC}/devtools/Site SITE= ${FILESDIR}/site.config.m4.pre4 PLIST= ${WRKDIR}/.PLIST.more LMAN1= mailq.1 newaliases.1 vacation.1 LMAN5= aliases.5 LMAN8= sendmail.8 mailstats.8 makemap.8 praliases.8 smrsh.8 \ mail.local.8 rmail.8 editmap.8 SENDMAIL= ${PREFIX}/sbin/sendmail BASEMAIL= /usr/libexec/sendmail/sendmail MILTER_SOVER?= 6 OPTIONS_DEFINE?= SHMEM SEM LA NIS IPV6 TLS DANE SASL SASLAUTHD LDAP \ BDB GDBM SOCKETMAP CYRUSLOOKUP BLACKLISTD SMTPUTF8 \ PICKY_HELO_CHECK MILTER DOCS OPTIONS_DEFAULT?= SHMEM SEM LA NIS TLS DANE SASL SASLAUTHD BDB1 \ BLACKLISTD PICKY_HELO_CHECK MILTER NO_OPTIONS_SORT=yes SHMEM_DESC= System V shared memory support LA_DESC= load averages support TLS_DESC= SMTP-TLS and SMTPS support DANE_DESC= Enable DANE support SASLAUTHD_DESC= SASLAUTHD support BDB_DESC= Berkeley DB version 4+ support GDBM_DESC= GNU dbm library support (option COMPAT needed) SOCKETMAP_DESC= Enable socketmap feature BLACKLISTD_DESC= Enable blacklistd support CYRUSLOOKUP_DESC= Enable cyruslookup feature PICKY_HELO_CHECK_DESC= Enable picky HELO check MILTER_DESC= Enable milter support SMTPUTF8_DESC= Enable unicode address support TLS_USES= ssl SASL_LIB_DEPENDS= libsasl2.so:security/cyrus-sasl2 SASLAUTHD_RUN_DEPENDS= saslauthd:security/cyrus-sasl2-saslauthd DANE_IMPLIES= TLS LDAP_USE= OPENLDAP=yes LDAP_PREVENTS= DANE BDB_USES= bdb GDBM_LIB_DEPENDS= libgdbm.so:databases/gdbm GDBM_CONFIGURE_WITH= compat SMTPUTF8_LIB_DEPENDS= libidn2.so:dns/libidn2 libicui18n.so:devel/icu .include .if ${OPSYS} == FreeBSD && ${OSVERSION} < 1200000 PKGNAMESUFFIX?= ${TLS_SUFFIX}${SASL_SUFFIX}${LDAP_SUFFIX}${BDB_SUFFIX}${PKGNAMESUFFIX2} .endif .if ${PORT_OPTIONS:MSHMEM} && !defined(BUILDING_INDEX) IPCCHECK!= ipcrm -q 0 2>&1 || true .if ${IPCCHECK:Mimplemented} IGNORE= your system does not support sysvipc .endif .endif .if ${PORT_OPTIONS:MBDB} BDB_SUFFIX= +${BDB_INCLUDE_DIR:S,^${LOCALBASE}/include/,,} CONFLICTS+= sendmail-ldap-8.* sendmail-sasl2-8.* sendmail-tls-8.* .endif .if ${PORT_OPTIONS:MLDAP} LDAP_SUFFIX?= +ldap CONFLICTS+= sendmail-sasl2-8.* sendmail-tls-8.* .endif .if ${PORT_OPTIONS:MSASL} SASL_SUFFIX?= +sasl2 CONFLICTS+= sendmail-ldap-8.* sendmail-tls-8.* .endif .if ${PORT_OPTIONS:MCYRUSLOOKUP} .if ! ${PORT_OPTIONS:MSOCKETMAP} IGNORE= option CYRUSLOOKUP requires option SOCKETMAP .else EXTRA_PATCHES+= ${FILESDIR}/cyruslookup.patch .endif .endif .if ${PORT_OPTIONS:MTLS} TLS_SUFFIX?= +tls CONFLICTS+= sendmail-ldap-8.* sendmail-sasl2-8.* .endif MAKE_PKGNAMES= for i in "" +tls; do \ for j in "" +sasl2; do \ for k in "" +ldap; do \ for l in "" +db48 +db5 +db6; do \ echo "sendmail$${i}$${j}$${k}$${l}-8.*" ;\ done done done done ALL_PKGNAMES!= ${MAKE_PKGNAMES} CONFLICTS2!= ${MAKE_PKGNAMES} | ${GREP} -v "${PORTNAME}${PKGNAMESUFFIX:S|${PKGNAMESUFFIX2}||}-8." CONFLICTS+= ${CONFLICTS2} # Build site.config.m4 SITE+= ${FILESDIR}/site.config.m4 .if ${PORT_OPTIONS:MIPV6} SITE+= ${FILESDIR}/site.config.m4.ipv6 .endif .if ${PORT_OPTIONS:MDANE} SITE+= ${FILESDIR}/site.config.m4.dane .endif .if ${PORT_OPTIONS:MSASL} SITE+= ${FILESDIR}/site.config.m4.sasl2 .endif .if ${PORT_OPTIONS:MLDAP} SITE+= ${FILESDIR}/site.config.m4.ldap .endif .if ${PORT_OPTIONS:MBLACKLISTD} SITE+= ${FILESDIR}/site.config.m4.blacklistd .endif .if ${PORT_OPTIONS:MSMTPUTF8} SITE+= ${FILESDIR}/site.config.m4.smtputf8 .endif .if ${PORT_OPTIONS:MMILTER} SITE+= ${FILESDIR}/site.config.m4.milter .endif .if ${PORT_OPTIONS:MGDBM} NO_PACKAGE= GPLv3 license conflict SITE+= ${FILESDIR}/site.config.m4.gdbm .endif SED_SCRIPT= -e "s|\`-O'|\`${CFLAGS}'|" \ -e 's|%%CC%%|${CC}|' -e 's|%%LD%%|${LD}|' .if ! ${PORT_OPTIONS:MNIS} SED_SCRIPT+= -e "s;-DNIS ;;" .endif post-patch: @cd ${WRKSRC} && ${FIND} cf -type f -name "*.orig" -print0 | ${XARGS} -0 ${RM} do-configure: .if ${PORT_OPTIONS:MGDBM} @(if [ ! -e "${LOCALBASE}/lib/libgdbm_compat.so" ] ; then \ ${ECHO_MSG} "===> option COMPAT is missing in databases/gdbm."; \ ${FALSE}; \ fi) .endif .if ${PORT_OPTIONS:MBLACKLISTD} @(if [ ! -e "${DESTDIR}/usr/lib/libblacklist.so" ] ; then \ ${ECHO_MSG} "===> libblacklist.so not found. Please update to FreeBSD 11"; \ ${FALSE}; \ fi) .endif ${REINPLACE_CMD} ${SED_SCRIPT} ${WRKSRC}/devtools/OS/FreeBSD ${SED} -e "s=%%PREFIX%%=${PREFIX}=g" \ -e "s=%%LOCALBASE%%=${LOCALBASE}=g" \ ${SITE} > ${WCONF}/site.config.m4 .if ${PORT_OPTIONS:MBDB} ${ECHO_CMD} \ 'APPENDDEF(`confENVDEF'\'', `-I${BDB_INCLUDE_DIR}'\'')' \ >> ${WCONF}/site.config.m4 ${ECHO_CMD} \ 'APPENDDEF(`confLIBDIRS'\'', `-L${LOCALBASE}/lib'\'')' \ >> ${WCONF}/site.config.m4 .for i in sendmail editmap makemap praliases vacation ${ECHO_CMD} \ 'APPENDDEF(`conf_${i}_LIBS'\'', `-l${BDB_LIB_NAME}'\'')' \ >> ${WCONF}/site.config.m4 .endfor .endif .if ${PORT_OPTIONS:MSOCKETMAP} ${ECHO_CMD} \ 'APPENDDEF(`conf_sendmail_ENVDEF'\'', `-DSOCKETMAP'\'')' \ >> ${WCONF}/site.config.m4 .endif .if ${PORT_OPTIONS:MPICKY_HELO_CHECK} ${ECHO_CMD} \ 'APPENDDEF(`conf_sendmail_ENVDEF'\'', `-DPICKY_HELO_CHECK'\'')' \ >> ${WCONF}/site.config.m4 .endif .if ! ${PORT_OPTIONS:MSHMEM} ${ECHO_CMD} \ 'APPENDDEF(`confENVDEF'\'', `-DSM_CONF_SHM=0'\'')' \ >> ${WCONF}/site.config.m4 .endif .if ! ${PORT_OPTIONS:MSEM} ${ECHO_CMD} \ 'APPENDDEF(`confENVDEF'\'', `-DSM_CONF_SEM=0'\'')' \ >> ${WCONF}/site.config.m4 .endif .if ! ${PORT_OPTIONS:MLA} ${ECHO_CMD} \ 'APPENDDEF(`confENVDEF'\'', `-DLA_TYPE=LA_ZERO'\'')' \ >> ${WCONF}/site.config.m4 .endif post-build: (cd ${WRKSRC}/doc/op && \ ${SETENV} ${MAKE_ENV} ${MAKE} ${MAKE_FLAGS} ${MAKEFILE} op.txt) pre-install: ${MKDIR} ${STAGEDIR}/etc/mail @${CAT} ${PKGDIR}/pkg-plist >${PLIST} @cd ${WRKSRC} && ${FIND} cf -type f | \ ${AWK} '{print "share/sendmail/" $$1}' >>${PLIST} .if ${PORT_OPTIONS:MDOCS} .for i in ${DOCS} @${ECHO_CMD} `${BASENAME} ${i}` | \ ${AWK} '{print "%%DOCSDIR%%/" $$1}' >>${PLIST} .endfor .if ${PORT_OPTIONS:MCYRUSLOOKUP} @${ECHO_CMD} "share/doc/sendmail/CYRUS_LOOKUP" >>${PLIST} .endif .endif ${MKDIR} ${STAGEDIR}${PREFIX}/etc/mail @${SED} \ -e "s=\([ ]\)/.*$$=\\1${SENDMAIL}=" \ ${FILESDIR}/mailer.conf \ > ${STAGEDIR}${PREFIX}/etc/mail/mailer.conf.sendmail # We want mail.local and rmail for our system. # the build install catmans only, we have to fix this. post-install: (cd ${WRKSRC}/mail.local && \ ${SETENV} ${MAKE_ENV} ${MAKE} ${MAKE_FLAGS} ${MAKEFILE} ${MAKE_ARGS} force-install) (cd ${WRKSRC}/rmail && \ ${SETENV} ${MAKE_ENV} ${MAKE} ${MAKE_FLAGS} ${MAKEFILE} ${MAKE_ARGS} force-install) .for i in ${LMAN8} ${INSTALL_MAN} ${WRKSRC}/*/${i} ${STAGEDIR}${MANPREFIX}/man/man8/ .endfor .for i in ${LMAN5} ${INSTALL_MAN} ${WRKSRC}/*/${i} ${STAGEDIR}${MANPREFIX}/man/man5/ .endfor .for i in ${LMAN1} ${INSTALL_MAN} ${WRKSRC}/*/${i} ${STAGEDIR}${MANPREFIX}/man/man1/ .endfor ${MKDIR} ${STAGEDIR}${PREFIX}/share/sendmail ${TAR} -C ${WRKSRC} -cf - cf | \ ${TAR} -C ${STAGEDIR}${PREFIX}/share/sendmail -xf - ${RM} ${STAGEDIR}${PREFIX}/man/cat*/* # final perm of sendmail is 2555 (see plist), needed for strip cmd ${CHMOD} 755 ${STAGEDIR}${PREFIX}/sbin/sendmail ${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/vacation ${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/rmail ${STRIP_CMD} ${STAGEDIR}${PREFIX}/sbin/* ${STRIP_CMD} ${STAGEDIR}${PREFIX}/libexec/* post-install-DOCS-on: ${MKDIR} ${STAGEDIR}${DOCSDIR} cd ${WRKSRC} && ${INSTALL_DATA} ${DOCS} ${STAGEDIR}${DOCSDIR}/ ${INSTALL_DATA} ${WRKSRC}/doc/op/op.ps ${STAGEDIR}${DOCSDIR}/op.ps ${INSTALL_DATA} ${WRKSRC}/doc/op/op.txt ${STAGEDIR}${DOCSDIR}/op.txt ${INSTALL_DATA} ${WRKSRC}/devtools/README ${STAGEDIR}${DOCSDIR}/DEVTOOLS ${INSTALL_DATA} ${WRKSRC}/sendmail/README ${STAGEDIR}${DOCSDIR}/SENDMAIL ${INSTALL_DATA} ${WRKSRC}/mail.local/README ${STAGEDIR}${DOCSDIR}/MAIL.LOCAL ${INSTALL_DATA} ${WRKSRC}/smrsh/README ${STAGEDIR}${DOCSDIR}/SMRSH .if ${PORT_OPTIONS:MCYRUSLOOKUP} ${INSTALL_DATA} ${FILESDIR}/CYRUS_LOOKUP ${STAGEDIR}${DOCSDIR}/CYRUS_LOOKUP .endif mailer.base: @${SED} \ -e "s=\([ ]\)/.*$$=\\1${BASEMAIL}=" \ ${FILESDIR}/mailer.conf > ${DESTDIR}/etc/mail/mailer.conf.new ${MV} ${DESTDIR}/etc/mail/mailer.conf.new \ ${DESTDIR}/etc/mail/mailer.conf mailer.conf: .if exists(${DESTDIR}${PREFIX}/etc/mail/mailer.conf.sendmail) @${CP} -v ${DESTDIR}${PREFIX}/etc/mail/mailer.conf.sendmail \ ${DESTDIR}${PREFIX}/etc/mail/mailer.conf .else @${MKDIR} ${DESTDIR}${PREFIX}/etc/mail @${SED} \ -e "s=\([ ]\)/.*$$=\\1${SENDMAIL}=" \ ${FILESDIR}/mailer.conf \ > ${DESTDIR}${PREFIX}/etc/mail/mailer.conf .endif # create sumbit.cf on older systems # submit.cf: ${DESTDIR}/etc/mail/submit.cf ${DESTDIR}/etc/mail/submit.mc: ${INSTALL_DATA} ${PREFIX}/share/sendmail/cf/cf/submit.mc \ ${DESTDIR}/etc/mail/submit.mc ${DESTDIR}/etc/mail/submit.cf: ${DESTDIR}/etc/mail/submit.mc @( cd ${DESTDIR}/etc/mail && ${MAKE} \ SENDMAIL_CF_DIR=${PREFIX}/share/sendmail/cf \ SENDMAIL_MC=submit ) # create basics for smtp-auth # howto-sasldb: @${ECHO_CMD} "# Links:" @${ECHO_CMD} "#" @${ECHO_CMD} "# http://www.sendmail.org/~gshapiro/" @${ECHO_CMD} "# http://www.sendmail.org/~ca/email/auth.html" @${ECHO_CMD} "# http://www.bme.ogi.edu/~pchytil/linux/sendmail/" @${ECHO_CMD} "# http://blue-labs.org/software/sm-pgsql/" @${ECHO_CMD} "# http://www.falkotimme.com/howtos/sendmail_smtp_auth_tls/" @${ECHO_CMD} "#" # create certificates for TLS/SSL # tls-install: ${SETENV} DESTDIR=${DESTDIR} FILESDIR=${FILESDIR} \ ${SH} ${FILESDIR}/tls-install.sh help: @${ECHO_CMD} "# additional targets:" @${ECHO_CMD} "#" @${ECHO_CMD} "# configure ${DESTDIR}/etc/mail/mailer.conf" @${ECHO_CMD} "# for sendmail from ports" @${ECHO_CMD} "make mailer.conf" @${ECHO_CMD} "# for sendmail in the base" @${ECHO_CMD} "make mailer.base" @${ECHO_CMD} "#" @${ECHO_CMD} "# show howto for configuring sasldb" @${ECHO_CMD} "make howto-sasldb" @${ECHO_CMD} "#" @${ECHO_CMD} "# create a self-signed certificate" @${ECHO_CMD} "make tls-install" @${ECHO_CMD} "#" .include .if ${PORT_OPTIONS:MTLS} .if ${SSL_DEFAULT} != base SITE+= ${FILESDIR}/site.config.m4.ssl .endif SITE+= ${FILESDIR}/site.config.m4.tls .endif .if exists(${FILESDIR}/site.config.m4.local) SITE+= ${FILESDIR}/site.config.m4.local .endif .if ${PREFIX} == "/usr" pre-everything:: @${ECHO_CMD} "#" @${ECHO_CMD} "# You can't override the base sendmail this way." @${ECHO_CMD} "# your version FreeBSD use mailwrapper." @${ECHO_CMD} "#" @${ECHO_CMD} "# Please install with normal PREFIX" @${ECHO_CMD} "# and activate the port version with" @${ECHO_CMD} "# cd /usr/local/etc/mail && cp mailer.conf.sendmail mailer.conf" @${ECHO_CMD} "#" @${FALSE} .endif .include diff --git a/mail/sendmail/distinfo b/mail/sendmail/distinfo index 3d9052cba9a7..cc56819d26a9 100644 --- a/mail/sendmail/distinfo +++ b/mail/sendmail/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1593954526 -SHA256 (sendmail.8.16.1.tar.gz) = 7886d5dc4b436b86175f32b5b9c7305c80787749847e2909bf99123ecc4e64ba -SIZE (sendmail.8.16.1.tar.gz) = 2236402 +TIMESTAMP = 1629273011 +SHA256 (sendmail.8.17.1.tar.gz) = 04bc76b6c886e6d111be7fd8daa32b8ce00128a288b6b52e067bc29f3854a6e6 +SIZE (sendmail.8.17.1.tar.gz) = 2284027 diff --git a/mail/sendmail/files/patch-daemon.c b/mail/sendmail/files/patch-daemon.c index a0a223365692..4d1a8cd58f89 100644 --- a/mail/sendmail/files/patch-daemon.c +++ b/mail/sendmail/files/patch-daemon.c @@ -1,11 +1,11 @@ ---- sendmail/daemon.c.orig 2015-02-28 00:50:03 UTC +--- sendmail/daemon.c.orig 2021-07-14 05:34:51 UTC +++ sendmail/daemon.c -@@ -754,6 +754,8 @@ getrequests(e) +@@ -788,6 +788,8 @@ getrequests(e) anynet_ntoa(&RealHostAddr)); } + BLACKLIST_INIT(); + if (pipefd[0] != -1) { auto char c; diff --git a/mail/sendmail/files/patch-mail.local.8 b/mail/sendmail/files/patch-mail.local.8 index f8cbe1618c06..422b593ef7b2 100644 --- a/mail/sendmail/files/patch-mail.local.8 +++ b/mail/sendmail/files/patch-mail.local.8 @@ -1,57 +1,57 @@ ---- mail.local/mail.local.8.orig 2014-03-05 00:59:45 UTC +--- mail.local/mail.local.8.orig 2021-04-05 08:49:42 UTC +++ mail.local/mail.local.8 @@ -16,9 +16,9 @@ mail.local \- store mail in a mailbox .SH SYNOPSIS .B mail.local -.RB [ \-7 "] [" \-b "] [" \-d "] [" \-D +.RB [ \-7 "] [" \-b "] [" \-B "] [" \-d "] [" \-D .IR mbdb ] -.RB [ \-l "] [" \-f +.RB [ \-l "] [" \-s "] [" \-f \fIfrom\fR|\fB\-r\fR .IR from ] .RB [ \-h @@ -38,6 +38,11 @@ The options are as follows: .B \-7 Do not advertise 8BITMIME support in LMTP mode. .TP +.B \-B +Turn off the attempts to notify the +.Dq biff +service. +.TP .B \-b Return a permanent error instead of a temporary error if a mailbox exceeds quota. @@ -56,6 +61,13 @@ Specify the sender's name. .TP .B \-l Turn on LMTP mode. +.TP +.B \-s +Turn off the +.Xr fsync 2 +call that forces the mailbox to be committed to disk before returning a +.Dq success +status. .TP .BI \-r " from" Specify the sender's name (for backward compatibility). -@@ -120,7 +132,7 @@ Used to set the appropriate time zone on +@@ -120,7 +132,7 @@ Used to set the appropriate time zone on the timestamp .SH FILES .PD 0.2v .TP 2.2i -/tmp/local.XXXXXX +/var/tmp/local.XXXXXX temporary files .TP /var/mail/user @@ -131,7 +143,6 @@ lock file for a user's default mailbox .PD .SH SEE ALSO mail(1), -xsend(1), flock(2), getservbyname(3), comsat(8), diff --git a/mail/sendmail/files/patch-mail.local.c b/mail/sendmail/files/patch-mail.local.c index dc0870d26581..3691f145e977 100644 --- a/mail/sendmail/files/patch-mail.local.c +++ b/mail/sendmail/files/patch-mail.local.c @@ -1,97 +1,97 @@ ---- mail.local/mail.local.c.orig 2020-04-30 11:52:48 UTC +--- mail.local/mail.local.c.orig 2021-06-22 08:24:43 UTC +++ mail.local/mail.local.c -@@ -153,6 +153,8 @@ int ExitVal = EX_OK; /* sysexits.h error value. */ +@@ -154,6 +154,8 @@ int ExitVal = EX_OK; /* sysexits.h error value. */ bool HoldErrs = false; /* Hold errors in ErrBuf */ bool LMTPMode = false; bool BounceQuota = false; /* permanent error when over quota */ +bool NoBiff = false; +bool NoFsync = false; bool CloseMBDB = false; char *HomeMailFile = NULL; /* store mail in homedir */ -@@ -234,12 +236,12 @@ main(argc, argv) - sm_exit(EX_CONFIG); - } +@@ -237,12 +239,12 @@ main(argc, argv) + + /* HACK: add U to all options - this should be only for USE_EAI */ #if HASHSPOOL -- while ((ch = getopt(argc, argv, "7bdD:f:h:r:lH:p:n")) != -1) -+ while ((ch = getopt(argc, argv, "7bBdD:f:h:r:lsH:p:n")) != -1) +- while ((ch = getopt(argc, argv, "7bdD:f:h:r:lH:p:nUV")) != -1) ++ while ((ch = getopt(argc, argv, "7bBdD:f:h:r:lH:p:nUV")) != -1) #else /* HASHSPOOL */ - # if _FFR_SPOOL_PATH -- while ((ch = getopt(argc, argv, "7bdD:f:h:r:lp:")) != -1) -+ while ((ch = getopt(argc, argv, "7bBdD:f:h:r:lsp:")) != -1) - # else -- while ((ch = getopt(argc, argv, "7bdD:f:h:r:l")) != -1) -+ while ((ch = getopt(argc, argv, "7bBdD:f:h:r:ls")) != -1) - # endif + # if _FFR_SPOOL_PATH +- while ((ch = getopt(argc, argv, "7bdD:f:h:r:lp:UV")) != -1) ++ while ((ch = getopt(argc, argv, "7bBdD:f:h:r:lp:UV")) != -1) + # else +- while ((ch = getopt(argc, argv, "7bdD:f:h:r:lUV")) != -1) ++ while ((ch = getopt(argc, argv, "7bBdD:f:h:r:lUV")) != -1) + # endif #endif /* HASHSPOOL */ { -@@ -249,6 +251,10 @@ main(argc, argv) +@@ -252,6 +254,10 @@ main(argc, argv) EightBitMime = false; break; + case 'B': + NoBiff = true; + break; + case 'b': /* bounce mail when over quota. */ BounceQuota = true; break; -@@ -342,6 +348,10 @@ main(argc, argv) +@@ -361,6 +367,10 @@ main(argc, argv) + #endif break; - #endif /* HASHSPOOL || _FFR_SPOOL_PATH */ + case 's': + NoFsync = true; + break; + case '?': default: usage(); -@@ -351,7 +361,8 @@ main(argc, argv) +@@ -370,7 +380,8 @@ main(argc, argv) argv += optind; /* initialize biff structures */ - notifybiff(NULL); + if (!NoBiff) + notifybiff(NULL); err = sm_mbdb_initialize(mbdbname); if (err != EX_OK) -@@ -1273,6 +1284,7 @@ tryagain: +@@ -1300,6 +1311,7 @@ tryagain: /* Get the starting offset of the new message */ curoff = lseek(mbfd, (off_t) 0, SEEK_END); + if (!NoBiff) (void) sm_snprintf(biffmsg, sizeof(biffmsg), "%s@%lld\n", name, (LONGLONG_T) curoff); -@@ -1335,7 +1347,7 @@ tryagain: +@@ -1362,7 +1374,7 @@ tryagain: } /* Flush to disk, don't wait for update. */ - if (fsync(mbfd) < 0) + if (!NoFsync && fsync(mbfd) < 0) { - mailerr("450 4.2.0", "%s: %s", path, sm_errstring(errno)); + mailerr("450 4.2.0", "Sync %s: %s", path, sm_errstring(errno)); err3: -@@ -1402,7 +1414,7 @@ err0: (void) setreuid(0, 0); +@@ -1433,7 +1445,7 @@ err0: /* Attempt to truncate back to pre-write size */ goto err3; } - else + else if (!NoBiff) notifybiff(biffmsg); - if (setreuid(0, 0) < 0) -@@ -1582,9 +1594,9 @@ usage() - { + if ( +@@ -1618,9 +1630,9 @@ usage() ExitVal = EX_USAGE; - # if _FFR_SPOOL_PATH + /* XXX add U to options for USE_EAI */ + #if _FFR_SPOOL_PATH - mailerr(NULL, "usage: mail.local [-7] [-b] [-d] [-l] [-f from|-r from] [-h filename] [-p path] user ..."); -+ mailerr(NULL, "usage: mail.local [-7] [-b] [-B] [-d] [-l] [-s] [-f from|-r from] [-h filename] [-p path] user ..."); - # else ++ mailerr(NULL, "usage: mail.local [-7] [-b] [-B] [-d] [-l] [-f from|-r from] [-h filename] [-p path] user ..."); + #else - mailerr(NULL, "usage: mail.local [-7] [-b] [-d] [-l] [-f from|-r from] [-h filename] user ..."); -+ mailerr(NULL, "usage: mail.local [-7] [-b] [-B] [-d] [-l] [-s] [-f from|-r from] [-h filename] user ..."); - # endif ++ mailerr(NULL, "usage: mail.local [-7] [-b] [-B] [-d] [-l] [-f from|-r from] [-h filename] user ..."); + #endif sm_exit(ExitVal); } diff --git a/mail/sendmail/files/patch-notify.c b/mail/sendmail/files/patch-notify.c deleted file mode 100644 index 49bdc25fe130..000000000000 --- a/mail/sendmail/files/patch-notify.c +++ /dev/null @@ -1,26 +0,0 @@ ---- libsm/notify.c.orig 2020-05-19 19:54:32 UTC -+++ libsm/notify.c -@@ -10,11 +10,6 @@ - - #include - --#include /* FDSET_CAST */ --#include --#include --#include -- - #include - #include - #include -@@ -24,6 +19,11 @@ - #include - #include - #include /* for memset() */ -+ -+#include /* FDSET_CAST */ -+#include -+#include -+#include - - #if SM_NOTIFY_DEBUG - #define SM_DBG(p) fprintf p diff --git a/mail/sendmail/files/patch-readcf.c b/mail/sendmail/files/patch-readcf.c index 3eb727ec8127..67ce57ab7d99 100644 --- a/mail/sendmail/files/patch-readcf.c +++ b/mail/sendmail/files/patch-readcf.c @@ -1,26 +1,26 @@ ---- sendmail/readcf.c.orig 2020-06-02 09:41:43 UTC +--- sendmail/readcf.c.orig 2021-07-14 05:34:51 UTC +++ sendmail/readcf.c -@@ -2979,6 +2979,10 @@ static struct optioninfo - { "SetCertAltnames", O_CHECKALTNAMES, OI_NONE }, +@@ -3056,6 +3056,10 @@ static struct optioninfo + { "CipherSuites", O_CIPHERSUITES, OI_NONE }, #endif +#if USE_BLACKLIST +# define O_BLACKLIST 0xf2 + { "UseBlacklist", O_BLACKLIST, OI_NONE }, +#endif { NULL, '\0', OI_NONE } }; -@@ -4678,6 +4682,12 @@ setoption(opt, val, safe, sticky, e) - SetCertAltnames = atobool(val); +@@ -4795,6 +4799,12 @@ setoption(opt, val, safe, sticky, e) break; - # endif -+ + #endif + +#if USE_BLACKLIST + case O_BLACKLIST: + UseBlacklist = atobool(val); + break; +#endif - ++ default: if (tTd(37, 1)) + { diff --git a/mail/sendmail/files/patch-sendmail.8 b/mail/sendmail/files/patch-sendmail.8 index 447c4dd7cdb5..57d6bf42590c 100644 --- a/mail/sendmail/files/patch-sendmail.8 +++ b/mail/sendmail/files/patch-sendmail.8 @@ -1,14 +1,14 @@ ---- sendmail/sendmail.8.orig 2014-06-13 14:57:59 UTC +--- sendmail/sendmail.8.orig 2021-07-14 05:34:51 UTC +++ sendmail/sendmail.8 -@@ -537,6 +537,11 @@ for this amount of time, - failed messages will be returned to the sender. +@@ -552,6 +552,11 @@ for this amount of time, + failed messages will be returned to the sender. The default is five days. .TP +UseBlacklist +If set, send authentication failure and success notifications to the +.BR blacklistd (8) +daemon. +.TP .RI UserDatabaseSpec= userdatabase If set, a user database is consulted to get forwarding information. - You can consider this an adjunct to the aliasing mechanism, + You can consider this an adjunct to the aliasing mechanism, diff --git a/mail/sendmail/files/patch-sendmail.h b/mail/sendmail/files/patch-sendmail.h index 311efa6e5e43..8d247ed47782 100644 --- a/mail/sendmail/files/patch-sendmail.h +++ b/mail/sendmail/files/patch-sendmail.h @@ -1,24 +1,24 @@ ---- sendmail/sendmail.h.orig 2020-07-02 05:00:37 UTC +--- sendmail/sendmail.h.orig 2021-07-14 05:34:51 UTC +++ sendmail/sendmail.h -@@ -63,6 +63,10 @@ SM_UNUSED(static char SmailId[]) = "@(#)$Id: sendmail. +@@ -73,6 +73,10 @@ SM_UNUSED(static char SmailId[]) = "@(#)$Id: sendmail. #endif #include "bf.h" +#if USE_BLACKLIST +#include +#endif +#include "blacklist_client.h" #include "timers.h" #include - #include -@@ -2575,6 +2579,10 @@ EXTERN int Hacks; /* bit field of run-time enabled "ha + #include +@@ -2655,6 +2659,10 @@ EXTERN int Hacks; /* bit field of run-time enabled "ha #endif EXTERN int ConnectionRateWindowSize; + +#if USE_BLACKLIST +EXTERN bool UseBlacklist; +#endif /* ** Declarations of useful functions diff --git a/mail/sendmail/files/patch-srvrsmtp.c b/mail/sendmail/files/patch-srvrsmtp.c index 68a6cc63e15f..a20d84e3cd3e 100644 --- a/mail/sendmail/files/patch-srvrsmtp.c +++ b/mail/sendmail/files/patch-srvrsmtp.c @@ -1,92 +1,92 @@ ---- sendmail/srvrsmtp.c.orig 2020-06-08 08:35:03 UTC +--- sendmail/srvrsmtp.c.orig 2021-08-03 10:35:09 UTC +++ sendmail/srvrsmtp.c -@@ -906,6 +906,9 @@ smtp(nullserver, d_flags, e) +@@ -940,6 +940,9 @@ smtp(nullserver, d_flags, e) #if _FFR_BADRCPT_SHUTDOWN int n_badrcpts_adj; #endif +#ifdef USE_BLACKLIST + int saved_bl_fd; +#endif RESET_AUTH_FAIL_LOG_USER; SevenBitInput_Saved = SevenBitInput; -@@ -1408,6 +1411,7 @@ smtp(nullserver, d_flags, e) +@@ -1442,6 +1445,7 @@ smtp(nullserver, d_flags, e) (int) tp.tv_sec + (tp.tv_usec >= 500000 ? 1 : 0) ); + BLACKLIST_NOTIFY(BLACKLIST_AUTH_FAIL, fd, "pre-greeting traffic"); } } } -@@ -1510,6 +1514,10 @@ smtp(nullserver, d_flags, e) +@@ -1544,6 +1548,10 @@ smtp(nullserver, d_flags, e) SmtpPhase = "server cmd read"; sm_setproctitle(true, e, "server %s cmd read", CurSmtpClient); +#ifdef USE_BLACKLIST + saved_bl_fd = dup(sm_io_getinfo(InChannel, SM_IO_WHAT_FD, NULL)); +#endif + /* handle errors */ if (sm_io_error(OutChannel) || (p = sfgets(inp, sizeof(inp), InChannel, -@@ -1823,8 +1831,11 @@ smtp(nullserver, d_flags, e) +@@ -1860,8 +1868,11 @@ smtp(nullserver, d_flags, e) #define LOGAUTHFAIL \ do \ { \ + int fd; \ SET_AUTH_USER_CONDITIONALLY \ message("535 5.7.0 authentication failed"); \ + fd = sm_io_getinfo(InChannel, SM_IO_WHAT_FD, NULL); \ + BLACKLIST_NOTIFY(BLACKLIST_AUTH_FAIL, fd, "AUTH FAIL"); \ if (LogLevel >= 9) \ sm_syslog(LOG_WARNING, e->e_id, \ "AUTH failure (%s): %s (%d) %s%s%.*s, relay=%.100s", \ -@@ -1974,6 +1985,9 @@ smtp(nullserver, d_flags, e) +@@ -2011,6 +2022,9 @@ smtp(nullserver, d_flags, e) DELAY_CONN("AUTH"); if (!sasl_ok || n_mechs <= 0) { + int fd; + fd = sm_io_getinfo(InChannel, SM_IO_WHAT_FD, NULL); + BLACKLIST_NOTIFY(BLACKLIST_AUTH_FAIL, fd, "AUTH LOGIN FAIL"); message("503 5.3.3 AUTH not available"); break; } -@@ -3602,10 +3616,17 @@ doquit: +@@ -3704,10 +3718,17 @@ doquit: ** timeouts for the same connection. */ +#ifdef USE_BLACKLIST + /* no immediate BLACKLIST_ABUSIVE_BEHAVIOR */ + BLACKLIST_NOTIFY(BLACKLIST_AUTH_FAIL, saved_bl_fd, "no command issued"); +#endif sm_syslog(LOG_INFO, e->e_id, "%s did not issue MAIL/EXPN/VRFY/ETRN during connection to %s", CurSmtpClient, d); } +#ifdef USE_BLACKLIST + close(saved_bl_fd); +#endif if (tTd(93, 100)) { /* return to handle next connection */ -@@ -3663,7 +3684,10 @@ doquit: +@@ -3789,7 +3810,10 @@ doquit: #if MAXBADCOMMANDS > 0 if (++n_badcmds > MAXBADCOMMANDS) { + int fd; stopattack: + fd = sm_io_getinfo(InChannel, SM_IO_WHAT_FD, NULL); + BLACKLIST_NOTIFY(BLACKLIST_ABUSIVE_BEHAVIOR, fd, "too many bad commands"); message("421 4.7.0 %s Too many bad commands; closing connection", MyHostName); -@@ -3714,6 +3738,9 @@ doquit: +@@ -3843,6 +3867,9 @@ doquit: } #if SASL } +#endif +#ifdef USE_BLACKLIST + close(saved_bl_fd); #endif } SM_EXCEPT(exc, "[!F]*") diff --git a/mail/sendmail/files/patch-usersmtp.c b/mail/sendmail/files/patch-usersmtp.c index 30898406c1b6..5c63c03bab75 100644 --- a/mail/sendmail/files/patch-usersmtp.c +++ b/mail/sendmail/files/patch-usersmtp.c @@ -1,26 +1,26 @@ ---- sendmail/usersmtp.c.orig 2020-06-03 05:48:46 UTC +--- sendmail/usersmtp.c.orig 2021-07-14 05:34:51 UTC +++ sendmail/usersmtp.c -@@ -1842,6 +1842,9 @@ attemptauth(m, mci, e, sai) +@@ -1870,6 +1870,9 @@ attemptauth(m, mci, e, sai) if (saslresult != SASL_OK && saslresult != SASL_CONTINUE) { + int fd = sm_io_getinfo(mci->mci_in, SM_IO_WHAT_FD, NULL); + BLACKLIST_NOTIFY(BLACKLIST_AUTH_FAIL, fd, "AUTH FAIL"); + if (tTd(95, 5)) sm_dprintf("AUTH FAIL=%s (%d)\n", sasl_errstring(saslresult, NULL, NULL), -@@ -1987,9 +1990,11 @@ smtpauth(m, mci, e) +@@ -2015,9 +2018,11 @@ smtpauth(m, mci, e) do { result = attemptauth(m, mci, e, &(mci->mci_sai)); - if (result == EX_OK) + if (result == EX_OK) { + int fd = sm_io_getinfo(mci->mci_in, SM_IO_WHAT_FD, NULL); + BLACKLIST_NOTIFY(BLACKLIST_AUTH_OK, fd, "AUTH OK"); mci->mci_sasl_auth = true; - else if (result == EX_TEMPFAIL || result == EX_NOPERM) + } else if (result == EX_TEMPFAIL || result == EX_NOPERM) { mci->mci_saslcap = removemech((mci->mci_sai)[SASL_MECH], mci->mci_saslcap, diff --git a/mail/sendmail/files/site.config.m4.smtputf8 b/mail/sendmail/files/site.config.m4.smtputf8 index 0668f6dfb941..e4a517848db3 100644 --- a/mail/sendmail/files/site.config.m4.smtputf8 +++ b/mail/sendmail/files/site.config.m4.smtputf8 @@ -1,2 +1,2 @@ -APPENDDEF(`confLIBS', `-licui18n -licuuc -licudata') -APPENDDEF(`conf_sendmail_ENVDEF', `-D_FFR_EAI') +APPENDDEF(`confLIBS', `-licuuc') +APPENDDEF(`confENVDEF',`-DUSE_EAI')