diff options
40 files changed, 2039 insertions, 0 deletions
diff --git a/mail/Makefile b/mail/Makefile index 2fce0e0ed3b4..60dfe392c222 100644 --- a/mail/Makefile +++ b/mail/Makefile @@ -634,6 +634,7 @@ SUBDIR += sa-utils SUBDIR += scam-backscatter SUBDIR += sendmail + SUBDIR += sendmail-devel SUBDIR += sendok SUBDIR += sentinel SUBDIR += serialmail diff --git a/mail/sendmail-devel/Makefile b/mail/sendmail-devel/Makefile new file mode 100644 index 000000000000..720880b01b9a --- /dev/null +++ b/mail/sendmail-devel/Makefile @@ -0,0 +1,382 @@ +# $FreeBSD$ + +PORTNAME= sendmail +PORTVERSION= 8.16.0.41 +PORTREVISION= 0 +CATEGORIES= mail ipv6 +MASTER_SITES= ftp://ftp.sendmail.org/pub/sendmail/snapshots/ +PKGNAMESUFFIX?= -devel${PKGNAMESUFFIX2} +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=^/==} +PKGMESSAGE= ${WRKSRC}/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 SASL SASLAUTHD LDAP BDB \ + GDBM SOCKETMAP CYRUSLOOKUP BLACKLISTD SMTPUTF8 \ + PICKY_HELO_CHECK MILTER DOCS +OPTIONS_DEFAULT?= SHMEM SEM LA NIS TLS 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 +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= ${LOCALBASE}/sbin/saslauthd:security/cyrus-sasl2-saslauthd +LDAP_USE= OPENLDAP=yes +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 <bsd.port.options.mk> +.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:MSMTPUTF8} +EXTRA_PATCHES+= ${FILESDIR}/smtputf8.patch +.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: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: + @${SED} -e "s=%%PREFIX%%=${PREFIX}=g" \ + -e "s=%%LOCALBASE%%=${LOCALBASE}=g" \ + -e "s=%%PORTSDIR%%=${PORTSDIR}=g" \ + ${PKGDIR}/pkg-message > ${WRKSRC}/pkg-message + +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 + ${RM} ${STAGEDIR}/etc/mail/submit.cf + ${RMDIR} ${STAGEDIR}/var/spool/clientmqueue + + ${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=^sendmail[ ]*/.*$$=sendmail ${BASEMAIL}=" \ + -e "s=^send-mail[ ]*/.*$$=send-mail ${BASEMAIL}=" \ + -e "s=^mailq[ ]*/.*$$=mailq ${BASEMAIL}=" \ + -e "s=^newaliases[ ]*/.*$$=newaliases ${BASEMAIL}=" \ + -e "s=^hoststat[ ]*/.*$$=hoststat ${BASEMAIL}=" \ + -e "s=^purgestat[ ]*/.*$$=purgestat ${BASEMAIL}=" \ + ${DESTDIR}/etc/mail/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 <bsd.port.pre.mk> + +.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 ${PORTSDIR}/mail/sendmail && make mailer.conf" + @${ECHO_CMD} "#" + @${FALSE} +.endif + +.include <bsd.port.post.mk> diff --git a/mail/sendmail-devel/distinfo b/mail/sendmail-devel/distinfo new file mode 100644 index 000000000000..aed42a7a1f0b --- /dev/null +++ b/mail/sendmail-devel/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1553765712 +SHA256 (sendmail.8.16.0.41.tar.gz) = e01b73de900e419248a5ff0ab38b9dc4873847fba70e98e4ce994452936ffdc2 +SIZE (sendmail.8.16.0.41.tar.gz) = 2262860 diff --git a/mail/sendmail-devel/files/CYRUS_LOOKUP b/mail/sendmail-devel/files/CYRUS_LOOKUP new file mode 100644 index 000000000000..ff36ee7ee72c --- /dev/null +++ b/mail/sendmail-devel/files/CYRUS_LOOKUP @@ -0,0 +1,79 @@ + + CYRUS MAILBOX LOOKUP FOR SENDMAIL + --------------------------------- + +You have enabled modifications for sendmail for looking up +whether a cyrus (2.2.3+) mailbox exists and is under quota +before accepting any mail to be relayed to cyrus. + +They are based on the idea and work by + +Andrzej Filip, http://anfi.homeunix.net/sendmail/rtcyrus2.html +and +Mike Boev, http://tric.ru/users/mike/ckuser_cyrus/ + +Please, use these urls to learn all configuration details +(although a quick recipe is provided below) and may be to give +credits to the authors. +****************************************************************** +IMPORTANT: +Now that the mrs_cyrus.m4 has been updated, you may need to adjust +the modifications you made to your .mc file if you used the old one! +See http://anfi.homeunix.net/sendmail/rtcyrus2.html for current +installation instructions. +****************************************************************** + +HOW TO : +--------- + +0. Build the `mail/sendmail' sendmail port with + SENDMAIL_WITH_SOCKETMAP=yes SENDMAIL_WITH_CYRUSLOOKUP=yes + This is what you've just obviously done, unless you are just browsing the + ports tree. To stick with these settings, you can place something like + the following in your `/etc/make.conf'. + +PORTSDIR?= /usr/ports +.if ${.CURDIR} == ${PORTSDIR}/mail/sendmail +SENDMAIL_WITH_CYRUSLOOKUP= yes +SENDMAIL_WITH_SOCKETMAP= yes +# possibly other sendmail knobs here too. +.endif + + You should have also installed and configured Cyrus IMAP server, + version 2.2.3 or higher. Not the worst idea is to utilize the + `mail/cyrus-imapd22' port. + +1. Insert the following lines to the SERVICES sections of `cyrus.conf'. + By default, the port installs it to `/usr/local/etc'. + + # Sendmail socket map smmapd(8) + smmap cmd="smmapd" listen="/var/imap/socket/smmapd" prefork=0 + + A SIGHUP would make the Cyrus master(8) process catch this change + on-the-fly. Please, also note, that if sendmail and cyrus run on + separate machines, you will obviously need to modify this line + and a couple of others. + +2. As per the `install-configure' from Cyrus IMAP server's documentation, + in the simplest case, you added: + + define(`confLOCAL_MAILER', `cyrusv2')dnl + MAILER(`cyrusv2')dnl + + to your sendmail's .mc file to make local delivery to Cyrus mailboxes. + Now, simply add (somewhere near other FEATURES, before MAILER lines): + + FEATURE(`ckuser_cyrus')dnl + + for sendmail to start rejecting local addresses for nonexisting and + full mailboxes. Rebuild your sendmail.cf, restart sendmail, and enjoy! + + If your configuration is more complicated than just defining Cyrus + as your local mailer, read Andrzej's article. It covers more of the + other cases. + +****************************************************************** + +2004, September 16th +Michael O. Boev, +mike@tric.ru. diff --git a/mail/sendmail-devel/files/cyruslookup.patch b/mail/sendmail-devel/files/cyruslookup.patch new file mode 100644 index 000000000000..a321b6a4a70e --- /dev/null +++ b/mail/sendmail-devel/files/cyruslookup.patch @@ -0,0 +1,161 @@ +diff -ruN cf.orig/feature/ckuser_cyrus.m4 cf/feature/ckuser_cyrus.m4 +--- cf.orig/feature/ckuser_cyrus.m4 Thu Jan 1 07:00:00 1970 ++++ cf/feature/ckuser_cyrus.m4 Wed Sep 22 19:53:53 2004 +@@ -0,0 +1,34 @@ ++divert(-1) ++# Written by Mike Boev <mike@tric.ru>, 2004. ++# Homepage: http://tric.ru/users/mike/ckuser_cyrus/ ++# Inspired by: mrs_cyrus.m4 by Andrzej Adam Filip ++# ++# By using this file, you agree to the terms and conditions set ++# forth in the LICENSE file which can be found at the top level of ++# the sendmail distribution. ++# ++divert(0) ++VERSIONID(`Id: ckuser_cyrus.m4,v 1.4 2004/09/21 19:02:17 m Exp ') ++divert(-1) ++define(`CYRUS_SMMAPD_SOCKET', ++ ifelse(len(X`'_ARG_), `1', `local:/var/imap/socket/smmapd', _ARG_)) ++ ++MODIFY_MAILER_FLAGS(`CYRUSV2',`+5') ++ ++LOCAL_CONFIG ++# Cyrus smmapd(8)'s map for verifying mailboxes of local recipients ++Kcyrus socket -a<OK> -T<TMPF> CYRUS_SMMAPD_SOCKET ++ ++LOCAL_RULESETS ++SLocal_localaddr ++R$+ $: $> "ckuser_cyrus" $1 ++ ++Sckuser_cyrus ++#Query smmapd(8) ++R$+ $: <!> $1 $| $(cyrus $1 $: $) ++#Cyrus OK, skip ++R<!> $* $| $* <OK> $@ $1 ++#Over quota or lookup failure ++R<!> $* $| $* <TMPF> $# error $@ 4.3.0 $: "451 TEMPFAIL." ++#Mailbox doesn't exist or its ACL forbids posting ++R<!> $* $| $* $# error $@ 5.1.1 $: "550 Mailbox is not available." +diff -ruN cf.orig/feature/mrs.m4 cf/feature/mrs.m4 +--- cf.orig/feature/mrs.m4 Thu Jan 1 07:00:00 1970 ++++ cf/feature/mrs.m4 Wed Sep 22 19:54:56 2004 +@@ -0,0 +1,25 @@ ++divert(-1) ++dnl ++dnl Updates: http://anfi.webhop.net/sendmail/mrs.html ++dnl ++dnl By using this file, you agree to the terms and conditions set ++dnl forth in the LICENSE file which can be found at the top level of ++dnl the sendmail distribution (sendmail-8.12). ++dnl ++dnl Contributed by Andrzej Filip ++dnl ++dnl THE FEATURE REQUIRES PATCHING cf/m4/proto.m4 ++dnl SEE THE LINK AFTER "Updates:" ++dnl ++dnl Log: mrs.m4,v ++dnl Revision 8.3 2004/03/18 21:39:22 anfi ++dnl Changed comments prefixes to dnl to avoid m4 expansions ++dnl ++dnl Revision 8.2 2004/03/15 09:14:28 anfi ++dnl Added "Updates:" web link. ++dnl ++divert(0) ++VERSIONID(`Id: mrs.m4,v 8.3 2004/03/18 21:39:22 anfi Exp ') ++divert(-1) ++ ++define(`_MRS_RELAY_', `') +diff -ruN cf.orig/feature/mrs_cyrus.m4 cf/feature/mrs_cyrus.m4 +--- cf.orig/feature/mrs_cyrus.m4 Thu Jan 1 07:00:00 1970 ++++ cf/feature/mrs_cyrus.m4 Wed Sep 22 19:55:05 2004 +@@ -0,0 +1,77 @@ ++divert(-1) ++dnl ++dnl Updates: http://anfi.homeunix.net/sendmail/rtcyrus2.html ++dnl ++dnl By using this file, you agree to the terms and conditions set ++dnl forth in the LICENSE file which can be found at the top level of ++dnl the sendmail distribution (sendmail-8.12). ++dnl ++dnl Contributed by Andrzej Filip ++dnl ++dnl Log: mrs_cyrus.m4,v ++dnl Revision 8.8 2004/08/11 18:20:05 anfi ++dnl "stipdom" replaced by "dummy" ++dnl ++dnl Revision 8.7 2004/04/01 14:29:50 anfi ++dnl Added "stripdom" handling in mrs_cyrus_user. ++dnl Fully defined error mailer details. ++dnl ++dnl Revision 8.6 2004/03/18 23:17:57 anfi ++dnl Fundamental rewrite. ++dnl ++ifdef(`_MRS_RELAY_',`', ++ `errprint(`*** ERROR: FEATURE(mrs_cyrus) requires FEATURE(mrs) ++')') ++ifdef(`_MRS_CYRUS_', ++ `errprint(`*** ERROR: There can be only one FEATURE(mrs_cyrus*) ++')') ++define(`_MRS_CYRUS_',`') ++ ++divert(0) ++VERSIONID(`Id: mrs_cyrus.m4,v 8.8 2004/08/11 18:20:05 anfi Exp ') ++divert(-1) ++define(`CYRUS_SMMAPD_SOCKET', ++ ifelse(len(X`'_ARG_), `1', `/var/imap/socket/smmapd', _ARG_)) ++define(`CYRUS_SMMAPD_SOCKET_TYPE', ++ ifelse(len(X`'_ARG2_), `1', `local', _ARG2_)) ++LOCAL_CONFIG ++# Add 3 mrs_cyrus rule sets to list of valid mrs rule sets ++C{MRS}mrs_cyrus_user mrs_cyrus_mailertable mrs_cyrus_stickyhub ++# map for checking cyrus imap mailbox existence ++Kcyrus socket -a<OK> -T<TMPF> CYRUS_SMMAPD_SOCKET_TYPE:CYRUS_SMMAPD_SOCKET ++ ++LOCAL_RULESETS ++###################################################################### ++### feature mrs_cyrus rulesets to be used by feature mrs ++###################################################################### ++ ++Smrs_cyrus_user ++R<$*> $+ <@$+.> $: <$1> $2 <@ $3 > ++R<$*> $+ <@$*> $: <$1> $2 <@$3> $| $(cyrus $2 $: $) ++R<$*> $+ <@$*> $| $* <TMPF> $# error $@ 4.3.0 $: "451 Temporary system failure. Please try again later." ++R<$*> $+ <@$*> $| $* <OK> $# cyrusv2 $@ dummy $: $4 ++R<$*> $+ <@$*> $| $* $: <$1> $2 <@$3> ++R<dummy> $+ <@dummy> $@ $1 ++R< $~[ : $* > $* $>MailerToTriple < $1 : $2 > $3 ++R< $+ > $* $>MailerToTriple < $1 > $2 ++R< > $* $# error $@ 5.1.1 $: "550 User unknown" ++ ++Smrs_cyrus_mailertable ++R<$*> $+ <@$+.> $: <$1> $2 <@ $3 > ++R<$*> $+ <@$+> $: <$1> $2 <@$3> $| $(cyrus $2@$3 $: $) ++R<$*> $+ <@$+> $| $* <TMPF> $# error $@ 4.3.0 $: "451 Temporary system failure. Please try again later." ++R<$*> $+ <@$+> $| $* <OK> $# cyrusv2d $@ dummy $: $2 <@$3> ++R<$*> $+ <@$*> $| $* $: <$1> $2 <@$3> ++R< $~[ : $* > $* $>MailerToTriple < $1 : $2 > $3 ++R< $+ > $* $>MailerToTriple < $1 > $2 ++R< > $* $# error $@ 5.1.1 $: "550 User unknown" ++ ++Smrs_cyrus_stickyhub ++R<dummy> $+ <@$+.> $: <dummy> $1 <@ $2 > ++R<dummy> $* <@dummy> $@ $1 ++R<dummy> $+ <@$={VirtCyrus}> $: <dummy> $1 <@$2> $| $(cyrus $1@$2 $: $) ++R<dummy> $+ <@$={VirtCyrus}> $| $* <TMPF> $# error $@ 4.3.0 $: "451 Temporary system failure. Please try again later." ++R<dummy> $+ <@$={VirtCyrus}> $| $* <OK> $# cyrusv2d $@ dummy $: $1 <@$2> ++R<dummy> $+ <@$={VirtCyrus}> $| $* $# error $@ 5.1.1 $: "550 User unknown" ++R<dummy> $=L <@$*> $# ifdef(`confLOCAL_MAILER',confLOCAL_MAILER,`local') $: @$1 ++R<dummy> $* <@$*> $# ifdef(`confLOCAL_MAILER',confLOCAL_MAILER,`local') $: $1 +diff -ruN cf.orig/m4/proto.m4 cf/m4/proto.m4 +--- cf.orig/m4/proto.m4 Wed Sep 22 20:15:04 2004 ++++ cf/m4/proto.m4 Wed Sep 22 19:52:41 2004 +@@ -1315,6 +1315,9 @@ + R< error : $- : $+ > $* $#error $@ $(dequote $1 $) $: $2 + R< error : $+ > $* $#error $: $1 + R< local : $* > $* $>CanonLocal < $1 > $2 ++ifdef(`_MRS_RELAY_',`dnl ++R< $={MRS} : $* > $* $@ $> $1 < $2 > $3 ++dnl') + dnl it is $~[ instead of $- to avoid matches on IPv6 addresses + R< $~[ : $+ @ $+ > $*<$*>$* $# $1 $@ $3 $: $2<@$3> use literal user + R< $~[ : $+ > $* $# $1 $@ $2 $: $3 try qualified mailer diff --git a/mail/sendmail-devel/files/mailer.conf b/mail/sendmail-devel/files/mailer.conf new file mode 100644 index 000000000000..e95ad3d5039c --- /dev/null +++ b/mail/sendmail-devel/files/mailer.conf @@ -0,0 +1,10 @@ +# $FreeBSD$ +# +# Execute the "real" sendmail program, named /usr/local/sbin/sendmail +# +sendmail /usr/local/sbin/sendmail +send-mail /usr/local/sbin/sendmail +mailq /usr/local/sbin/sendmail +newaliases /usr/local/sbin/sendmail +hoststat /usr/local/sbin/sendmail +purgestat /usr/local/sbin/sendmail diff --git a/mail/sendmail-devel/files/patch-FreeBSD b/mail/sendmail-devel/files/patch-FreeBSD new file mode 100644 index 000000000000..774593e6bc7a --- /dev/null +++ b/mail/sendmail-devel/files/patch-FreeBSD @@ -0,0 +1,11 @@ +--- devtools/OS/FreeBSD.orig 2014-03-05 00:59:45 UTC ++++ devtools/OS/FreeBSD +@@ -6,7 +6,7 @@ dnl Place personal settings in devtools/ + define(`confMAPDEF', `-DNEWDB -DNIS -DMAP_REGEX') + define(`confLIBS', `-lutil') + +-define(`confLD', `cc') ++define(`confCC', `%%CC%%') + define(`confMTLDOPTS', `-pthread') + define(`confMTCCOPTS', `-D_THREAD_SAFE') + define(`confLDOPTS_SO', `-shared') diff --git a/mail/sendmail-devel/files/patch-Makefile.m4 b/mail/sendmail-devel/files/patch-Makefile.m4 new file mode 100644 index 000000000000..efdea226d13f --- /dev/null +++ b/mail/sendmail-devel/files/patch-Makefile.m4 @@ -0,0 +1,10 @@ +--- sendmail/Makefile.m4.orig 2019-02-15 10:30:19 UTC ++++ sendmail/Makefile.m4 +@@ -7,6 +7,7 @@ bldPRODUCT_START(`executable', `sendmail + define(`bldBIN_TYPE', `G') + define(`bldINSTALL_DIR', `') + define(`bldSOURCES', `main.c alias.c arpadate.c bf.c collect.c conf.c control.c convtime.c daemon.c deliver.c domain.c envelope.c err.c headers.c macro.c map.c mci.c milter.c mime.c parseaddr.c queue.c ratectrl.c readcf.c recipient.c sasl.c savemail.c sfsasl.c shmticklib.c sm_resolve.c srvrsmtp.c stab.c stats.c sysexits.c timers.c tlsh.c tls.c trace.c udb.c usersmtp.c util.c version.c ') ++APPENDDEF(`bldSOURCES',`blacklist.c ') + PREPENDDEF(`confENVDEF', `confMAPDEF') + bldPUSH_SMLIB(`sm') + bldPUSH_SMLIB(`smutil') diff --git a/mail/sendmail-devel/files/patch-blacklist.c b/mail/sendmail-devel/files/patch-blacklist.c new file mode 100644 index 000000000000..59782a08473e --- /dev/null +++ b/mail/sendmail-devel/files/patch-blacklist.c @@ -0,0 +1,60 @@ +--- sendmail/blacklist.c.orig 2018-01-02 20:16:44 UTC ++++ sendmail/blacklist.c +@@ -0,0 +1,57 @@ ++/*- ++ * Copyright (c) 2016 The FreeBSD Foundation ++ * All rights reserved. ++ * ++ * This software was developed by Kurt Lidl under sponsorship from the ++ * FreeBSD Foundation. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE ++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++ * SUCH DAMAGE. */ ++ ++/* $FreeBSD$ */ ++ ++#ifdef USE_BLACKLIST ++#include <sm/gen.h> ++#include <sendmail.h> /* for EXTERN UseBlacklist */ ++ ++#include <blacklist.h> ++#include "blacklist_client.h" ++ ++static struct blacklist *blstate; ++ ++void ++blacklist_init(void) ++{ ++ ++ if (UseBlacklist) ++ blstate = blacklist_open(); ++} ++ ++void ++blacklist_notify(int action, int fd, const char *msg) ++{ ++ ++ if (blstate == NULL) ++ return; ++ (void)blacklist_r(blstate, action, fd, msg); ++} ++ ++#endif /* USE_BLACKLIST */ diff --git a/mail/sendmail-devel/files/patch-blacklist_client.h b/mail/sendmail-devel/files/patch-blacklist_client.h new file mode 100644 index 000000000000..6f8c130045c3 --- /dev/null +++ b/mail/sendmail-devel/files/patch-blacklist_client.h @@ -0,0 +1,60 @@ +--- sendmail/blacklist_client.h.orig 2018-01-02 20:16:44 UTC ++++ sendmail/blacklist_client.h +@@ -0,0 +1,57 @@ ++/*- ++ * Copyright (c) 2016 The FreeBSD Foundation ++ * All rights reserved. ++ * ++ * This software was developed by Kurt Lidl under sponsorship from the ++ * FreeBSD Foundation. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE ++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++ * SUCH DAMAGE. */ ++ ++/* $FreeBSD$ */ ++ ++#ifndef BLACKLIST_CLIENT_H ++#define BLACKLIST_CLIENT_H ++ ++#ifndef BLACKLIST_API_ENUM ++enum { ++ BLACKLIST_AUTH_OK = 0, ++ BLACKLIST_AUTH_FAIL, ++ BLACKLIST_ABUSIVE_BEHAVIOR, ++ BLACKLIST_BAD_USER ++}; ++#endif ++ ++#ifdef USE_BLACKLIST ++void blacklist_init(void); ++void blacklist_notify(int, int, const char *); ++ ++#define BLACKLIST_INIT() blacklist_init() ++#define BLACKLIST_NOTIFY(x, y, msg) blacklist_notify(x, y, msg) ++ ++#else ++ ++#define BLACKLIST_INIT() ++#define BLACKLIST_NOTIFY(x, y, msg) ++ ++#endif ++ ++#endif /* BLACKLIST_CLIENT_H */ diff --git a/mail/sendmail-devel/files/patch-bsd4.4.m4 b/mail/sendmail-devel/files/patch-bsd4.4.m4 new file mode 100644 index 000000000000..135523583a20 --- /dev/null +++ b/mail/sendmail-devel/files/patch-bsd4.4.m4 @@ -0,0 +1,8 @@ +--- cf/ostype/bsd4.4.m4.orig 2014-03-05 00:59:45 UTC ++++ cf/ostype/bsd4.4.m4 +@@ -17,4 +17,5 @@ divert(0) + VERSIONID(`$Id: bsd4.4.m4,v 8.15 2013-11-22 20:51:15 ca Exp $') + ifdef(`STATUS_FILE',, `define(`STATUS_FILE', `/var/log/sendmail.st')')dnl + ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /usr/libexec/mail.local)')dnl ++ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `mail $u')')dnl + ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -z -a$g $h!rmail ($u)')')dnl diff --git a/mail/sendmail-devel/files/patch-cfhead.m4 b/mail/sendmail-devel/files/patch-cfhead.m4 new file mode 100644 index 000000000000..8eacc7528521 --- /dev/null +++ b/mail/sendmail-devel/files/patch-cfhead.m4 @@ -0,0 +1,12 @@ +--- cf/m4/cfhead.m4.orig 2019-02-15 10:30:19 UTC ++++ cf/m4/cfhead.m4 +@@ -278,7 +278,8 @@ define(`_REC_AUTH_', `$.$?{auth_type}(au + define(`_REC_FULL_AUTH_', `$.$?{auth_type}(user=${auth_authen} $?{auth_author}author=${auth_author} $.mech=${auth_type}') + define(`_REC_HDR_', `$?sfrom $s $.$?_($?s$|from $.$_)') + define(`_REC_END_', `for $u; $|; +- $.$b') ++ $.$b$?g ++ (envelope-from $g)$.') + define(`_REC_TLS_', `(version=${tls_version} cipher=${cipher} bits=${cipher_bits} verify=${verify})$.$?u') + define(`_REC_BY_', `$.by $j ($v/$Z)$?r with $r$. id $i$?{tls_version}') + define(`confRECEIVED_HEADER', `_REC_HDR_ diff --git a/mail/sendmail-devel/files/patch-daemon.c b/mail/sendmail-devel/files/patch-daemon.c new file mode 100644 index 000000000000..a0a223365692 --- /dev/null +++ b/mail/sendmail-devel/files/patch-daemon.c @@ -0,0 +1,11 @@ +--- sendmail/daemon.c.orig 2015-02-28 00:50:03 UTC ++++ sendmail/daemon.c +@@ -754,6 +754,8 @@ getrequests(e) + anynet_ntoa(&RealHostAddr)); + } + ++ BLACKLIST_INIT(); ++ + if (pipefd[0] != -1) + { + auto char c; diff --git a/mail/sendmail-devel/files/patch-doc-op-Makefile b/mail/sendmail-devel/files/patch-doc-op-Makefile new file mode 100644 index 000000000000..1e75f91c0c09 --- /dev/null +++ b/mail/sendmail-devel/files/patch-doc-op-Makefile @@ -0,0 +1,11 @@ +--- doc/op/Makefile.orig 2014-03-05 00:59:45 UTC ++++ doc/op/Makefile +@@ -12,7 +12,7 @@ PS2PDF_CMD= ps2pdf + PIC= ${PIC_CMD} -C + EQNASCII= ${EQN_CMD} -C -Tascii + EQNPS= ${EQN_CMD} -C -Tps +-ROFFASCII= ${ROFF_CMD} -Tascii ${MACROS} ++ROFFASCII= ${ROFF_CMD} -P-c -Tascii ${MACROS} + ROFFPS= ${ROFF_CMD} -Tps -mps ${MACROS} + ULASCII= ${UL_CMD} -t dumb + PS2PDF= ${PS2PDF_CMD} diff --git a/mail/sendmail-devel/files/patch-mail.local.8 b/mail/sendmail-devel/files/patch-mail.local.8 new file mode 100644 index 000000000000..f8cbe1618c06 --- /dev/null +++ b/mail/sendmail-devel/files/patch-mail.local.8 @@ -0,0 +1,57 @@ +--- mail.local/mail.local.8.orig 2014-03-05 00:59:45 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 + .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-devel/files/patch-mail.local.c b/mail/sendmail-devel/files/patch-mail.local.c new file mode 100644 index 000000000000..5e7b7daaa652 --- /dev/null +++ b/mail/sendmail-devel/files/patch-mail.local.c @@ -0,0 +1,97 @@ +--- mail.local/mail.local.c.orig 2014-06-12 17:30:47 UTC ++++ mail.local/mail.local.c +@@ -153,6 +153,8 @@ int ExitVal = EX_OK; /* sysexits.h erro + 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); + } + #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) + #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 /* _FFR_SPOOL_PATH */ +- while ((ch = getopt(argc, argv, "7bdD:f:h:r:l")) != -1) ++ while ((ch = getopt(argc, argv, "7bBdD:f:h:r:ls")) != -1) + # endif /* _FFR_SPOOL_PATH */ + #endif /* HASHSPOOL */ + { +@@ -249,6 +251,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) + break; + #endif /* HASHSPOOL || _FFR_SPOOL_PATH */ + ++ case 's': ++ NoFsync = true; ++ break; ++ + case '?': + default: + usage(); +@@ -351,7 +361,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: + + /* 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: + } + + /* 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)); + err3: +@@ -1402,7 +1414,7 @@ err0: (void) setreuid(0, 0); + /* 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() + { + ExitVal = EX_USAGE; + # 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 /* _FFR_SPOOL_PATH */ +- 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 /* _FFR_SPOOL_PATH */ + sm_exit(ExitVal); + } diff --git a/mail/sendmail-devel/files/patch-makeinfo.sh b/mail/sendmail-devel/files/patch-makeinfo.sh new file mode 100644 index 000000000000..c3a668f80c76 --- /dev/null +++ b/mail/sendmail-devel/files/patch-makeinfo.sh @@ -0,0 +1,11 @@ +--- cf/sh/makeinfo.sh.orig 2014-03-05 00:59:45 UTC ++++ cf/sh/makeinfo.sh +@@ -52,7 +52,7 @@ then + else + host=`uname -n` + fi +-echo '#####' built by $user@$host on `date` ++echo '#####' built by $user@$host on `LC_TIME=C date` + echo '#####' in `pwd` | sed 's/\/tmp_mnt//' + echo '#####' using $1 as configuration include directory | sed 's/\/tmp_mnt//' + echo "define(\`__HOST__', $host)dnl" diff --git a/mail/sendmail-devel/files/patch-readcf.c b/mail/sendmail-devel/files/patch-readcf.c new file mode 100644 index 000000000000..2753468c16d7 --- /dev/null +++ b/mail/sendmail-devel/files/patch-readcf.c @@ -0,0 +1,26 @@ +--- sendmail/readcf.c.orig 2019-02-15 10:30:19 UTC ++++ sendmail/readcf.c +@@ -2988,6 +2988,10 @@ static struct optioninfo + { "ClientCACertPath", O_CLTCACERTPATH, OI_NONE }, + #endif + ++#if USE_BLACKLIST ++# define O_BLACKLIST 0xf2 ++ { "UseBlacklist", O_BLACKLIST, OI_NONE }, ++#endif + { NULL, '\0', OI_NONE } + }; + +@@ -4661,6 +4665,12 @@ setoption(opt, val, safe, sticky, e) + break; + #endif + ++#if USE_BLACKLIST ++ case O_BLACKLIST: ++ UseBlacklist = atobool(val); ++ break; ++#endif ++ + default: + if (tTd(37, 1)) + { diff --git a/mail/sendmail-devel/files/patch-rmail.c b/mail/sendmail-devel/files/patch-rmail.c new file mode 100644 index 000000000000..0a2e4b53e5ff --- /dev/null +++ b/mail/sendmail-devel/files/patch-rmail.c @@ -0,0 +1,14 @@ +--- rmail/rmail.c.orig 2014-03-05 00:59:45 UTC ++++ rmail/rmail.c +@@ -276,7 +276,11 @@ main(argc, argv) + args[i++] = _PATH_SENDMAIL; /* Build sendmail's argument list. */ + args[i++] = "-G"; /* relay submission */ + args[i++] = "-oee"; /* No errors, just status. */ ++#ifdef QUEUE_ONLY + args[i++] = "-odq"; /* Queue it, don't try to deliver. */ ++#else ++ args[i++] = "-odi"; /* Deliver in foreground. */ ++#endif + args[i++] = "-oi"; /* Ignore '.' on a line by itself. */ + + /* set from system and protocol used */ diff --git a/mail/sendmail-devel/files/patch-sendmail.8 b/mail/sendmail-devel/files/patch-sendmail.8 new file mode 100644 index 000000000000..447c4dd7cdb5 --- /dev/null +++ b/mail/sendmail-devel/files/patch-sendmail.8 @@ -0,0 +1,14 @@ +--- sendmail/sendmail.8.orig 2014-06-13 14:57:59 UTC ++++ sendmail/sendmail.8 +@@ -537,6 +537,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, diff --git a/mail/sendmail-devel/files/patch-sendmail.h b/mail/sendmail-devel/files/patch-sendmail.h new file mode 100644 index 000000000000..448f0d15ddce --- /dev/null +++ b/mail/sendmail-devel/files/patch-sendmail.h @@ -0,0 +1,24 @@ +--- sendmail/sendmail.h.orig 2019-02-15 10:30:19 UTC ++++ sendmail/sendmail.h +@@ -61,6 +61,10 @@ SM_UNUSED(static char SmailId[]) = "@(#) + #endif /* _DEFINE */ + + #include "bf.h" ++#if USE_BLACKLIST ++#include <blacklist.h> ++#endif ++#include "blacklist_client.h" + #include "timers.h" + #include <sm/exc.h> + #include <sm/heap.h> +@@ -2513,6 +2517,10 @@ EXTERN int Hacks; /* bit field of run-ti + + EXTERN int ConnectionRateWindowSize; + ++#if USE_BLACKLIST ++EXTERN bool UseBlacklist; ++#endif ++ + /* + ** Declarations of useful functions + */ diff --git a/mail/sendmail-devel/files/patch-smrsh.8 b/mail/sendmail-devel/files/patch-smrsh.8 new file mode 100644 index 000000000000..5ca6c4c08f98 --- /dev/null +++ b/mail/sendmail-devel/files/patch-smrsh.8 @@ -0,0 +1,27 @@ +--- smrsh/smrsh.8.orig 2014-03-05 00:59:45 UTC ++++ smrsh/smrsh.8 +@@ -39,7 +39,7 @@ Briefly, + .I smrsh + limits programs to be in a single directory, + by default +-/usr/adm/sm.bin, ++/usr/libexec/sm.bin, + allowing the system administrator to choose the set of acceptable commands, + and to the shell builtin commands ``exec'', ``exit'', and ``echo''. + It also rejects any commands with the characters +@@ -50,13 +50,12 @@ It allows ``||'' and ``&&'' to enable co + ``"|exec /usr/local/bin/filter || exit 75"'' + .PP + Initial pathnames on programs are stripped, +-so forwarding to ``/usr/ucb/vacation'', +-``/usr/bin/vacation'', ++so forwarding to ``/usr/bin/vacation'', + ``/home/server/mydir/bin/vacation'', + and + ``vacation'' + all actually forward to +-``/usr/adm/sm.bin/vacation''. ++``/usr/libexec/sm.bin/vacation''. + .PP + System administrators should be conservative about populating + the sm.bin directory. diff --git a/mail/sendmail-devel/files/patch-srvrsmtp.c b/mail/sendmail-devel/files/patch-srvrsmtp.c new file mode 100644 index 000000000000..5ffa4eec4dbd --- /dev/null +++ b/mail/sendmail-devel/files/patch-srvrsmtp.c @@ -0,0 +1,92 @@ +--- sendmail/srvrsmtp.c.orig 2019-02-15 10:30:19 UTC ++++ sendmail/srvrsmtp.c +@@ -878,6 +878,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; +@@ -1377,6 +1380,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"); + } + } + } +@@ -1479,6 +1483,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, +@@ -1792,8 +1800,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", \ +@@ -1943,6 +1954,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; + } +@@ -3546,10 +3560,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 */ +@@ -3607,7 +3628,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); + +@@ -3659,6 +3683,9 @@ doquit: + #if SASL + } + #endif ++#ifdef USE_BLACKLIST ++ close(saved_bl_fd); ++#endif + } + SM_EXCEPT(exc, "[!F]*") + { diff --git a/mail/sendmail-devel/files/patch-usersmtp.c b/mail/sendmail-devel/files/patch-usersmtp.c new file mode 100644 index 000000000000..a50a11f3787e --- /dev/null +++ b/mail/sendmail-devel/files/patch-usersmtp.c @@ -0,0 +1,26 @@ +--- sendmail/usersmtp.c.orig 2014-12-05 15:42:28 UTC ++++ sendmail/usersmtp.c +@@ -1825,6 +1825,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), +@@ -1970,9 +1973,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-devel/files/site.config.m4 b/mail/sendmail-devel/files/site.config.m4 new file mode 100644 index 000000000000..6fca36fdda64 --- /dev/null +++ b/mail/sendmail-devel/files/site.config.m4 @@ -0,0 +1,10 @@ +define(`confEBINDIR',`%%PREFIX%%/libexec') +define(`confMANROOT',`%%PREFIX%%/man/cat') +define(`confMANROOTMAN',`%%PREFIX%%/man/man') +define(`confMBINDIR',`%%PREFIX%%/sbin') +define(`confSBINDIR',`%%PREFIX%%/sbin') +define(`confUBINDIR',`%%PREFIX%%/bin') +define(`confNO_STATISTICS_INSTALL',`True') +define(`confHFDIR', `%%PREFIX%%/share/sendmail') +APPENDDEF(`conf_sendmail_ENVDEF', `-DTCPWRAPPERS') +APPENDDEF(`conf_sendmail_LIBS', `-lwrap')" diff --git a/mail/sendmail-devel/files/site.config.m4.blacklistd b/mail/sendmail-devel/files/site.config.m4.blacklistd new file mode 100644 index 000000000000..bc3a46e40d60 --- /dev/null +++ b/mail/sendmail-devel/files/site.config.m4.blacklistd @@ -0,0 +1,2 @@ +APPENDDEF(`conf_sendmail_ENVDEF', `-DUSE_BLACKLIST') +APPENDDEF(`conf_sendmail_LIBS', `-lblacklist') diff --git a/mail/sendmail-devel/files/site.config.m4.gdbm b/mail/sendmail-devel/files/site.config.m4.gdbm new file mode 100644 index 000000000000..0210aab3851c --- /dev/null +++ b/mail/sendmail-devel/files/site.config.m4.gdbm @@ -0,0 +1,4 @@ +APPENDDEF(`confMAPDEF', `-DNDBM') +APPENDDEF(`confINCDIRS', `-I%%LOCALBASE%%/include') +APPENDDEF(`confLIBDIRS', `-L%%LOCALBASE%%/lib') +APPENDDEF(`confLIBS', `-lgdbm_compat -lgdbm') diff --git a/mail/sendmail-devel/files/site.config.m4.ipv6 b/mail/sendmail-devel/files/site.config.m4.ipv6 new file mode 100644 index 000000000000..5040616c1823 --- /dev/null +++ b/mail/sendmail-devel/files/site.config.m4.ipv6 @@ -0,0 +1,3 @@ +APPENDDEF(`conf_sendmail_ENVDEF', `-DNETINET6') +APPENDDEF(`conf_libmilter_ENVDEF', `-DNETINET6') +APPENDDEF(`conf_libsm_ENVDEF', `-DNETINET6') diff --git a/mail/sendmail-devel/files/site.config.m4.ldap b/mail/sendmail-devel/files/site.config.m4.ldap new file mode 100644 index 000000000000..0a67a5a29d35 --- /dev/null +++ b/mail/sendmail-devel/files/site.config.m4.ldap @@ -0,0 +1,25 @@ +APPENDDEF(`confLIBDIRS', `-L%%LOCALBASE%%/lib') +APPENDDEF(`conf_libsm_ENVDEF', `-I%%LOCALBASE%%/include') +APPENDDEF(`conf_libsm_ENVDEF', `-DLDAPMAP') +APPENDDEF(`conf_libsm_LIBS', `-lldap') +APPENDDEF(`conf_libsm_LIBS', `-llber') +APPENDDEF(`conf_sendmail_ENVDEF', `-I%%LOCALBASE%%/include') +APPENDDEF(`conf_sendmail_ENVDEF', `-DLDAPMAP') +APPENDDEF(`conf_sendmail_LIBS', `-lldap') +APPENDDEF(`conf_sendmail_LIBS', `-llber') +APPENDDEF(`conf_editmap_LIBS', `-lldap') +APPENDDEF(`conf_editmap_LIBS', `-llber') +APPENDDEF(`conf_mail_local_LIBS', `-lldap') +APPENDDEF(`conf_mail_local_LIBS', `-llber') +APPENDDEF(`conf_mailstats_LIBS', `-lldap') +APPENDDEF(`conf_mailstats_LIBS', `-llber') +APPENDDEF(`conf_makemap_LIBS', `-lldap') +APPENDDEF(`conf_makemap_LIBS', `-llber') +APPENDDEF(`conf_praliases_LIBS', `-lldap') +APPENDDEF(`conf_praliases_LIBS', `-llber') +APPENDDEF(`conf_rmail_LIBS', `-lldap') +APPENDDEF(`conf_rmail_LIBS', `-llber') +APPENDDEF(`conf_smrsh_LIBS', `-lldap') +APPENDDEF(`conf_smrsh_LIBS', `-llber') +APPENDDEF(`conf_vacation_LIBS', `-lldap') +APPENDDEF(`conf_vacation_LIBS', `-llber') diff --git a/mail/sendmail-devel/files/site.config.m4.milter b/mail/sendmail-devel/files/site.config.m4.milter new file mode 100644 index 000000000000..de11295aa6f3 --- /dev/null +++ b/mail/sendmail-devel/files/site.config.m4.milter @@ -0,0 +1,2 @@ +APPENDDEF(`conf_libmilter_ENVDEF', `-DMILTER') +APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER') diff --git a/mail/sendmail-devel/files/site.config.m4.pre4 b/mail/sendmail-devel/files/site.config.m4.pre4 new file mode 100644 index 000000000000..99835cc669c5 --- /dev/null +++ b/mail/sendmail-devel/files/site.config.m4.pre4 @@ -0,0 +1,2 @@ +APPENDDEF(`conf_smrsh_ENVDEF', `-DCMDDIR="\"%%PREFIX%%/libexec/sm.bin\""') +APPENDDEF(`conf_smrsh_ENVDEF', `-DPATH="\"/bin:/usr/bin\""') diff --git a/mail/sendmail-devel/files/site.config.m4.sasl2 b/mail/sendmail-devel/files/site.config.m4.sasl2 new file mode 100644 index 000000000000..bf1d85f38035 --- /dev/null +++ b/mail/sendmail-devel/files/site.config.m4.sasl2 @@ -0,0 +1,4 @@ +APPENDDEF(`conf_sendmail_ENVDEF', `-I%%LOCALBASE%%/include') +APPENDDEF(`conf_sendmail_ENVDEF', `-DSASL=2') +APPENDDEF(`confLIBDIRS', `-L%%LOCALBASE%%/lib') +APPENDDEF(`conf_sendmail_LIBS', `-lsasl2') diff --git a/mail/sendmail-devel/files/site.config.m4.smtputf8 b/mail/sendmail-devel/files/site.config.m4.smtputf8 new file mode 100644 index 000000000000..0668f6dfb941 --- /dev/null +++ b/mail/sendmail-devel/files/site.config.m4.smtputf8 @@ -0,0 +1,2 @@ +APPENDDEF(`confLIBS', `-licui18n -licuuc -licudata') +APPENDDEF(`conf_sendmail_ENVDEF', `-D_FFR_EAI') diff --git a/mail/sendmail-devel/files/site.config.m4.ssl b/mail/sendmail-devel/files/site.config.m4.ssl new file mode 100644 index 000000000000..6ccb80597c4e --- /dev/null +++ b/mail/sendmail-devel/files/site.config.m4.ssl @@ -0,0 +1,4 @@ +APPENDDEF(`confLIBDIRS', `-L%%LOCALBASE%%/lib') +APPENDDEF(`confLDOPTS', ``-Wl,-rpath=%%LOCALBASE%%/lib'') +APPENDDEF(`confINCDIRS', `-I%%LOCALBASE%%/include') +APPENDDEF(`conf_sendmail_ENVDEF', `-DHASSRANDOMDEV') diff --git a/mail/sendmail-devel/files/site.config.m4.tls b/mail/sendmail-devel/files/site.config.m4.tls new file mode 100644 index 000000000000..ec8a57bdbee1 --- /dev/null +++ b/mail/sendmail-devel/files/site.config.m4.tls @@ -0,0 +1,2 @@ +APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS -DTLS_EC') +APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto') diff --git a/mail/sendmail-devel/files/smtputf8.patch b/mail/sendmail-devel/files/smtputf8.patch new file mode 100644 index 000000000000..b6eeccdc643e --- /dev/null +++ b/mail/sendmail-devel/files/smtputf8.patch @@ -0,0 +1,600 @@ +diff --git a/sendmail/conf.c b/sendmail/conf.c +index c73334e..28328e6 100644 +--- sendmail/conf.c.orig ++++ sendmail/conf.c +@@ -314,6 +314,9 @@ setdefaults(e) + e->e_xfqgrp = NOQGRP; + e->e_xfqdir = NOQDIR; + e->e_ctime = curtime(); ++#if _FFR_EAI ++ e->e_smtputf8 = false; ++#endif + SevenBitInput = false; /* option 7 */ + MaxMciCache = 1; /* option k */ + MciCacheTimeout = 5 MINUTES; /* option K */ +@@ -5746,6 +5749,9 @@ char *CompileOptions[] = + "DNSMAP", + # endif + #endif ++#if _FFR_EAI ++ "EAI", ++#endif + #if EGD + "EGD", + #endif +@@ -6590,3 +6596,6 @@ char *FFRCompileOptions[] = + NULL + }; + ++#if _FFR_EAI && _FFR_EIGHT_BIT_ADDR_OK ++#error "Cannot enable both of these FFRs" ++#endif +diff --git a/sendmail/domain.c b/sendmail/domain.c +index 4d1b92d..adaa6ac 100644 +--- sendmail/domain.c.orig ++++ sendmail/domain.c +@@ -13,6 +13,9 @@ + + #include <sendmail.h> + #include "map.h" ++#if _FFR_EAI ++#include <unicode/uidna.h> ++#endif + + #if NAMED_BIND + SM_RCSID("@(#)$Id: domain.c,v 8.205 2013-11-22 20:51:55 ca Exp $ (with name server)") +@@ -236,6 +239,26 @@ getmxrr(host, mxhosts, mxprefs, droplocalhost, rcode, tryfallback, pttl) + if (host[0] == '[') + goto punt; + ++#if _FFR_EAI ++ if (!addr_is_ascii(host)) ++ { ++ char buf[1024]; ++ UErrorCode error = U_ZERO_ERROR; ++ UIDNAInfo info = UIDNA_INFO_INITIALIZER; ++ UIDNA *idna; ++ int anl; ++ ++ idna = uidna_openUTS46(UIDNA_NONTRANSITIONAL_TO_ASCII, &error); ++ anl = uidna_nameToASCII_UTF8(idna, ++ host, strlen(host), ++ buf, sizeof(buf) - 1, ++ &info, ++ &error); ++ uidna_close(idna); ++ host = sm_rpool_strdup_x(CurEnv->e_rpool, buf); ++ } ++#endif /* _FFR_EAI */ ++ + /* + ** If we don't have MX records in our host switch, don't + ** try for MX records. Note that this really isn't "right", +diff --git a/sendmail/err.c b/sendmail/err.c +index 0594eb9..67d0d09 100644 +--- sendmail/err.c.orig ++++ sendmail/err.c +@@ -1010,15 +1010,23 @@ fmtmsg(eb, to, num, enhsc, eno, fmt, ap) + (void) sm_strlcpyn(eb, spaceleft, 2, + shortenstring(to, MAXSHORTSTR), "... "); + spaceleft -= strlen(eb); ++#if _FFR_EAI ++ eb += strlen(eb); ++#else + while (*eb != '\0') + *eb++ &= 0177; ++#endif + } + + /* output the message */ + (void) sm_vsnprintf(eb, spaceleft, fmt, ap); + spaceleft -= strlen(eb); ++#if _FFR_EAI ++ eb += strlen(eb); ++#else + while (*eb != '\0') + *eb++ &= 0177; ++#endif + + /* output the error code, if any */ + if (eno != 0) +diff --git a/sendmail/main.c b/sendmail/main.c +index 38eebbf..43e17a5 100644 +--- sendmail/main.c.orig ++++ sendmail/main.c +@@ -1854,6 +1854,9 @@ main(argc, argv, envp) + + /* MIME message/xxx subtypes that can be treated as messages */ + setclass('s', "rfc822"); ++#ifdef _FFR_EAI ++ setclass('s', "global"); ++#endif + + /* MIME Content-Transfer-Encodings that can be encoded */ + setclass('e', "7bit"); +diff --git a/sendmail/parseaddr.c b/sendmail/parseaddr.c +index 2adb39c..9ab0729 100644 +--- sendmail/parseaddr.c.orig ++++ sendmail/parseaddr.c +@@ -273,12 +273,14 @@ invalidaddr(addr, delimptr, isrcpt) + } + for (; *addr != '\0'; addr++) + { ++#ifndef _FFR_EAI + if (!EightBitAddrOK && (*addr & 0340) == 0200) + { + setstat(EX_USAGE); + result = true; + *addr = BAD_CHAR_REPLACEMENT; + } ++#endif + if (++len > MAXNAME - 1) + { + char saved = *addr; +@@ -350,7 +352,7 @@ hasctrlchar(addr, isrcpt, complain) + } + result = "too long"; + } +- if (!EightBitAddrOK && !quoted && (*addr < 32 || *addr == 127)) ++ if (!quoted && ((unsigned char)*addr < 32 || *addr == 127)) + { + result = "non-printable character"; + *addr = BAD_CHAR_REPLACEMENT; +@@ -368,6 +370,7 @@ hasctrlchar(addr, isrcpt, complain) + break; + } + } ++#ifndef _FFR_EAI + if (!EightBitAddrOK && (*addr & 0340) == 0200) + { + setstat(EX_USAGE); +@@ -375,6 +378,7 @@ hasctrlchar(addr, isrcpt, complain) + *addr = BAD_CHAR_REPLACEMENT; + continue; + } ++#endif + } + if (quoted) + result = "unbalanced quote"; /* unbalanced quote */ +diff --git a/sendmail/queue.c b/sendmail/queue.c +index a323301..95344d3 100644 +--- sendmail/queue.c.orig ++++ sendmail/queue.c +@@ -665,6 +665,10 @@ queueup(e, announce, msync) + *p++ = 'n'; + if (bitset(EF_SPLIT, e->e_flags)) + *p++ = 's'; ++#if _FFR_EAI ++ if (e->e_smtputf8) ++ *p++ = 'e'; ++#endif + *p++ = '\0'; + if (buf[0] != '\0') + (void) sm_io_fprintf(tfp, SM_TIME_DEFAULT, "F%s\n", buf); +@@ -4285,6 +4289,12 @@ readqf(e, openonly) + case 'w': /* warning sent */ + e->e_flags |= EF_WARNING; + break; ++ ++#if _FFR_EAI ++ case 'e': /* message requires EAI */ ++ e->e_smtputf8 = true; ++ break; ++#endif /* _FFR_EAI */ + } + } + break; +@@ -4550,6 +4560,23 @@ readqf(e, openonly) + /* other checks? */ + #endif /* _FFR_QF_PARANOIA */ + ++#if _FFR_EAI ++ /* ++ ** If this message originates from something other than ++ ** srvrsmtp.c, then it might use UTF8 addresses but not be ++ ** marked. We'll just add the mark so we're sure that it ++ ** either can be delivered or will be returned. ++ */ ++ if (!e->e_smtputf8) { ++ ADDRESS *q; ++ for (q = e->e_sendqueue; q != NULL; q = q->q_next) ++ if (!addr_is_ascii(q->q_paddr) && !e->e_smtputf8) ++ e->e_smtputf8 = true; ++ if (!addr_is_ascii(e->e_from.q_paddr) && !e->e_smtputf8) ++ e->e_smtputf8 = true; ++ } ++#endif /* _FFR_EAI */ ++ + /* possibly set ${dsn_ret} macro */ + if (bitset(EF_RET_PARAM, e->e_flags)) + { +diff --git a/sendmail/recipient.c b/sendmail/recipient.c +index 3fad957..09eac64 100644 +--- sendmail/recipient.c.orig ++++ sendmail/recipient.c +@@ -508,6 +508,11 @@ recipient(new, sendq, aliaslevel, e) + p = e->e_from.q_mailer->m_addrtype; + if (p == NULL) + p = "rfc822"; ++#ifdef _FFR_EAI ++ if (sm_strcasecmp(p, "rfc822") == 0 && ++ !addr_is_ascii(q->q_user)) ++ p = "utf-8"; ++#endif + if (sm_strcasecmp(p, "rfc822") != 0) + { + (void) sm_snprintf(frbuf, sizeof(frbuf), "%s; %.800s", +diff --git a/sendmail/savemail.c b/sendmail/savemail.c +index 6de8f2f..8a9df36 100644 +--- sendmail/savemail.c.orig ++++ sendmail/savemail.c +@@ -744,6 +744,34 @@ returntosender(msg, returnq, flags, e) + return ret; + } + ++ ++/* ++** DSNTYPENAME -- Returns the DSN name of the addrtype for this address ++** ++** Sendmail's addrtypes are largely in different universes, and ++** 'fred' may be a valid address in different addrtype ++** universes. ++** ++** EAI extends the rfc822 universe rather than introduce a new ++** universe. Because of that, sendmail uses the rfc822 addrtype, ++** but names it utf-8 when the EAI DSN extension requires that. ++*/ ++ ++const char * ++dsntypename(addrtype, addr) ++ const char * addrtype; ++ const char * addr; ++{ ++ if (sm_strcasecmp(addrtype, "rfc822") != 0) ++ return addrtype; ++#ifdef _FFR_EAI ++ if (!addr_is_ascii(addr)) ++ return "utf-8"; ++#endif ++ return "rfc822"; ++} ++ ++ + /* + ** ERRBODY -- output the body of an error message. + ** +@@ -1082,7 +1110,13 @@ errbody(mci, e, separator) + (void) sm_strlcpyn(buf, sizeof(buf), 2, "--", e->e_msgboundary); + if (!putline("", mci) || + !putline(buf, mci) || ++#ifdef _FFR_EAI ++ !putline(e->e_parent->e_smtputf8 ++ ? "Content-Type: message/global-delivery-status" ++ : "Content-Type: message/delivery-status", mci) || ++#else + !putline("Content-Type: message/delivery-status", mci) || ++#endif + !putline("", mci)) + goto writeerr; + +@@ -1223,7 +1257,8 @@ errbody(mci, e, separator) + (void) sm_snprintf(actual, + sizeof(actual), + "%s; %.700s@%.100s", +- p, q->q_user, ++ dsntypename(p, q->q_user), ++ q->q_user, + MyHostName); + } + else +@@ -1231,7 +1266,8 @@ errbody(mci, e, separator) + (void) sm_snprintf(actual, + sizeof(actual), + "%s; %.800s", +- p, q->q_user); ++ dsntypename(p, q->q_user), ++ q->q_user); + } + } + +@@ -1248,6 +1284,21 @@ errbody(mci, e, separator) + actual); + } + ++#ifdef _FFR_EAI ++ if (sm_strncasecmp("rfc822;", q->q_finalrcpt, 7) == 0 && ++ !addr_is_ascii(q->q_user)) { ++ char utf8rcpt[1024]; ++ char * a; ++ a = strchr(q->q_finalrcpt, ';'); ++ while(*a == ';' || *a == ' ') ++ a++; ++ sm_snprintf(utf8rcpt, 1023, ++ "utf-8; %.800s", a); ++ q->q_finalrcpt = sm_rpool_strdup_x(e->e_rpool, ++ utf8rcpt); ++ } ++#endif ++ + if (q->q_finalrcpt != NULL) + { + (void) sm_snprintf(buf, sizeof(buf), +@@ -1373,9 +1424,21 @@ errbody(mci, e, separator) + + if (!putline(buf, mci)) + goto writeerr; ++#ifdef _FFR_EAI ++ if (e->e_parent->e_smtputf8) ++ (void) sm_strlcpyn(buf, sizeof(buf), 2, ++ "Content-Type: message/global", ++ sendbody ? "" : "-headers"); ++ else ++ (void) sm_strlcpyn(buf, sizeof(buf), 2, ++ "Content-Type: ", ++ sendbody ? "message/rfc822" ++ : "text/rfc822-headers"); ++#else + (void) sm_strlcpyn(buf, sizeof(buf), 2, "Content-Type: ", + sendbody ? "message/rfc822" + : "text/rfc822-headers"); ++#endif + if (!putline(buf, mci)) + goto writeerr; + +diff --git a/sendmail/sendmail.h b/sendmail/sendmail.h +index b2d0211..63a2378 100644 +--- sendmail/sendmail.h.orig ++++ sendmail/sendmail.h +@@ -781,8 +781,13 @@ MCI + #else + # define MCIF_NOTSTICKY 0 + #endif ++#if _FFR_EAI ++#define MCIF_EAI 0x40000000 /* SMTPUTF8 supported */ ++#else ++#define MCIF_EAI 0x00000000 /* for MCIF_EXTENS */ ++#endif /* _FFR_EAI */ + +-#define MCIF_EXTENS (MCIF_EXPN|MCIF_SIZE|MCIF_8BITMIME|MCIF_DSN|MCIF_8BITOK|MCIF_AUTH|MCIF_ENHSTAT|MCIF_PIPELINED|MCIF_VERB|MCIF_TLS|MCIF_DLVR_BY|MCIF_AUTH2) ++#define MCIF_EXTENS (MCIF_EXPN|MCIF_SIZE|MCIF_8BITMIME|MCIF_DSN|MCIF_8BITOK|MCIF_AUTH|MCIF_ENHSTAT|MCIF_PIPELINED|MCIF_VERB|MCIF_TLS|MCIF_DLVR_BY|MCIF_AUTH2|MCIF_EAI) + + /* states */ + #define MCIS_CLOSED 0 /* no traffic on this connection */ +@@ -921,6 +926,9 @@ struct envelope + ADDRESS e_from; /* the person it is from */ + char *e_sender; /* e_from.q_paddr w comments stripped */ + char **e_fromdomain; /* the domain part of the sender */ ++#if _FFR_EAI ++ bool e_smtputf8; /* whether the sender demanded SMTPUTF8 */ ++#endif + ADDRESS *e_sendqueue; /* list of message recipients */ + ADDRESS *e_errorqueue; /* the queue for error responses */ + +@@ -1928,6 +1936,9 @@ struct termescape + #define D_CANONREQ 'c' /* canonification required (cf) */ + #define D_IFNHELO 'h' /* use if name for HELO */ + #define D_FQMAIL 'f' /* fq sender address required (cf) */ ++#if _FFR_EAI ++#define D_EAI 'I' /* EAI supported */ ++#endif + #define D_FQRCPT 'r' /* fq recipient address required (cf) */ + #define D_SMTPS 's' /* SMTP over SSL (smtps) */ + #define D_UNQUALOK 'u' /* unqualified address is ok (cf) */ +@@ -2355,7 +2366,7 @@ EXTERN bool ForkQueueRuns; /* fork for each job when running the queue */ + EXTERN bool FromFlag; /* if set, "From" person is explicit */ + EXTERN bool FipsMode; + EXTERN bool GrabTo; /* if set, get recipients from msg */ +-EXTERN bool EightBitAddrOK; /* we'll let 8-bit addresses through */ ++EXTERN bool EightBitAddrOK; /* we'll let 8-bit addresses through */ + EXTERN bool HasEightBits; /* has at least one eight bit input byte */ + EXTERN bool HasWildcardMX; /* don't use MX records when canonifying */ + EXTERN bool HoldErrs; /* only output errors to transcript */ +@@ -2855,6 +2866,10 @@ extern bool xtextok __P((char *)); + extern int xunlink __P((char *)); + extern char *xuntextify __P((char *)); + ++#if _FFR_EAI ++extern bool addr_is_ascii __P((const char *)); ++#endif ++ + #if _FFR_RCPTFLAGS + extern bool newmodmailer __P((ADDRESS *, int)); + #endif +diff --git a/sendmail/srvrsmtp.c b/sendmail/srvrsmtp.c +index b05348d..91e6956 100644 +--- sendmail/srvrsmtp.c.orig ++++ sendmail/srvrsmtp.c +@@ -65,6 +65,9 @@ static bool NotFirstDelivery = false; + #define SRV_REQ_AUTH 0x0400 /* require AUTH */ + #define SRV_REQ_SEC 0x0800 /* require security - equiv to AuthOptions=p */ + #define SRV_TMP_FAIL 0x1000 /* ruleset caused a temporary failure */ ++#if _FFR_EAI ++# define SRV_OFFER_EAI 0x2000 /* offer SMTPUTF* */ ++#endif + + static unsigned int srvfeatures __P((ENVELOPE *, char *, unsigned int)); + +@@ -122,6 +125,29 @@ extern ENVELOPE BlankEnvelope; + #define SKIP_SPACE(s) while (isascii(*s) && isspace(*s)) \ + (s)++ + ++#if _FFR_EAI ++/* ++** ADDR_IS_ASCII -- check whether an address is 100% printable ASCII ++** ++** Parameters: ++** a -- an address (or other string) ++** ++** Returns: ++** TRUE if a is non-NULL and points to only printable ASCII ++** FALSE if a is NULL and points to printable ASCII ++** FALSE if a is non-NULL and points to something containing 8-bittery ++*/ ++ ++bool ++addr_is_ascii(a) ++ const char * a; ++{ ++ while (a != NULL && *a != '\0' && *a >= ' ' && (unsigned char)*a < 127) ++ a++; ++ return (a != NULL && *a == '\0'); ++} ++#endif ++ + /* + ** PARSE_ESMTP_ARGS -- parse EMSTP arguments (for MAIL, RCPT) + ** +@@ -722,10 +748,21 @@ do \ + #else + # define auth_active false + #endif ++#ifdef _FFR_EAI ++#define GET_PROTOCOL() \ ++ (e->e_smtputf8 \ ++ ? (auth_active \ ++ ? (tls_active ? "UTF8SMTPSA" : "UTF8SMTPA") \ ++ : (tls_active ? "UTF8SMTPS" : "UTF8SMTP")) \ ++ : (auth_active \ ++ ? (tls_active ? "ESMTPSA" : "ESMTPA") \ ++ : (tls_active ? "ESMTPS" : "ESMTP"))) ++#else + #define GET_PROTOCOL() \ + (auth_active \ + ? (tls_active ? "ESMTPSA" : "ESMTPA") \ + : (tls_active ? "ESMTPS" : "ESMTP")) ++#endif + + static bool SevenBitInput_Saved; /* saved version of SevenBitInput */ + +@@ -898,6 +935,9 @@ smtp(nullserver, d_flags, e) + | (bitset(TLS_I_NO_VRFY, TLS_Srv_Opts) ? SRV_NONE + : SRV_VRFY_CLT) + #endif /* STARTTLS */ ++#if _FFR_EAI ++ | SRV_OFFER_EAI ++#endif /* _FFR_EAI */ + ; + if (nullserver == NULL) + { +@@ -2523,6 +2563,10 @@ smtp(nullserver, d_flags, e) + if (SendMIMEErrors && bitset(SRV_OFFER_DSN, features)) + message("250-DSN"); + #endif ++#if _FFR_EAI ++ if (bitset(SRV_OFFER_EAI, features)) ++ message("250-SMTPUTF8"); ++#endif /* _FFR_EAI */ + if (bitset(SRV_OFFER_ETRN, features)) + message("250-ETRN"); + #if SASL +@@ -2696,6 +2740,18 @@ smtp(nullserver, d_flags, e) + if (Errors > 0) + sm_exc_raisenew_x(&EtypeQuickAbort, 1); + ++#if _FFR_EAI ++ if (e->e_smtputf8) { ++ protocol = GET_PROTOCOL(); ++ macdefine(&e->e_macro, A_PERM, 'r', protocol); ++ } ++ /* UTF8 addresses are only legal with SMTPUTF8 */ ++ if (!e->e_smtputf8 && !addr_is_ascii(e->e_from.q_paddr)) { ++ usrerr("553 5.6.7 That address requires SMTPUTF8"); ++ sm_exc_raisenew_x(&EtypeQuickAbort, 1); ++ } ++#endif ++ + #if SASL + # if _FFR_AUTH_PASSING + /* set the default AUTH= if the sender didn't */ +@@ -2933,6 +2989,13 @@ smtp(nullserver, d_flags, e) + usrerr("501 5.0.0 Missing recipient"); + goto rcpt_done; + } ++#if _FFR_EAI ++ if (!e->e_smtputf8 && !addr_is_ascii(a->q_paddr)) ++ { ++ usrerr("553 5.6.7 Address requires SMTPUTF8"); ++ goto rcpt_done; ++ } ++#endif + + if (delimptr != NULL && *delimptr != '\0') + *delimptr++ = '\0'; +@@ -4820,6 +4883,17 @@ mail_esmtp_args(a, kp, vp, e) + + /* XXX: check whether more characters follow? */ + } ++#if _FFR_EAI ++ else if (sm_strcasecmp(kp, "smtputf8") == 0) ++ { ++ if (!bitset(SRV_OFFER_EAI, e->e_features)) ++ { ++ usrerr("504 5.7.0 Sorry, SMTPUTF8 not supported/enabled"); ++ /* NOTREACHED */ ++ } ++ e->e_smtputf8 = true; ++ } ++#endif + else + { + usrerr("555 5.5.4 %s parameter unrecognized", kp); +@@ -5174,6 +5248,9 @@ static struct + { 'C', SRV_REQ_SEC }, + { 'D', SRV_OFFER_DSN }, + { 'E', SRV_OFFER_ETRN }, ++#if _FFR_EAI ++ { 'I', SRV_OFFER_EAI }, ++#endif + { 'L', SRV_REQ_AUTH }, + #if PIPELINING + # if _FFR_NO_PIPE +diff --git a/sendmail/usersmtp.c b/sendmail/usersmtp.c +index 24d38ee..cbc6bb7 100644 +--- sendmail/usersmtp.c.orig ++++ sendmail/usersmtp.c +@@ -465,6 +465,10 @@ helo_options(line, firstline, m, mci, e) + mci->mci_flags |= MCIF_PIPELINED; + else if (sm_strcasecmp(line, "verb") == 0) + mci->mci_flags |= MCIF_VERB; ++#if _FFR_EAI ++ else if (sm_strcasecmp(line, "smtputf8") == 0) ++ mci->mci_flags |= MCIF_EAI; ++#endif /* _FFR_EAI */ + #if STARTTLS + else if (sm_strcasecmp(line, "starttls") == 0) + mci->mci_flags |= MCIF_TLS; +@@ -2027,6 +2031,19 @@ smtpmailfrom(m, mci, e) + return EX_TEMPFAIL; + } + ++#if _FFR_EAI ++ /* ++ ** Abort right away if the message needs SMTPUTF8 and the ++ ** server does not advertise SMTPUTF8. ++ */ ++ ++ if (e->e_smtputf8 && !bitset(MCIF_EAI, mci->mci_flags)) { ++ usrerrenh("5.6.7", "%s does not support SMTPUTF8", CurHostName); ++ mci_setstat(mci, EX_NOTSTICKY, "5.6.7", NULL); ++ return EX_DATAERR; ++ } ++#endif /* _FFR_EAI */ ++ + /* set up appropriate options to include */ + if (bitset(MCIF_SIZE, mci->mci_flags) && e->e_msgsize > 0) + { +@@ -2040,6 +2057,14 @@ smtpmailfrom(m, mci, e) + bufp = optbuf; + } + ++#if _FFR_EAI ++ if (e->e_smtputf8) { ++ (void) sm_snprintf(bufp, SPACELEFT(optbuf, bufp), ++ " SMTPUTF8"); ++ bufp += strlen(bufp); ++ } ++#endif /* _FFR_EAI */ ++ + bodytype = e->e_bodytype; + if (bitset(MCIF_8BITMIME, mci->mci_flags)) + { diff --git a/mail/sendmail-devel/files/tls-install.sh b/mail/sendmail-devel/files/tls-install.sh new file mode 100644 index 000000000000..4e93182246d0 --- /dev/null +++ b/mail/sendmail-devel/files/tls-install.sh @@ -0,0 +1,93 @@ +#!/bin/sh +# +CADIR="${CADIR-${DESTDIR}/etc/mail/certs/CA}" +FILSEDIR="${FILESDIR-/usr/ports/mail/sendmail/files}" +REALM=`hostname` + +echo "creating: ${CADIR} on ${REALM}" +for i in certs crl newcerts private ../private +do + if test ! -d "${CADIR}/${i}" + then + mkdir -p "${CADIR}/${i}" + fi +done +chmod 0700 "${CADIR}/private" "${CADIR}/../private" +cd "${CADIR}" || exit 65 + +if test ! -f openssl.cnf +then + echo "generating: openssl.cnf" + sed -e "s=./demoCA=${CADIR}=" /etc/ssl/openssl.cnf > "openssl.cnf" +fi + +if test ! -f "serial" +then + echo "generating: serial" + umask 0022 + echo "01" > "serial" +fi + +if test ! -f "index.txt" +then + echo "generating: index.txt" + umask 0022 + cp /dev/null "index.txt" +fi + +if test ! -f "cacert.pem" +then + echo "generating CA" + umask 0077 + openssl req -new -x509 -config openssl.cnf \ + -keyout private/cakey.pem \ + -out cacert.pem +fi + +if test ! -f "../sendmailcert.pem" +then + if test ! -f "../private/sendmailkey.pem" + then + echo "creating cert signing request" + umask 0066 + openssl req -nodes -new -x509 -config openssl.cnf \ + -keyout ../private/sendmailkey.pem \ + -out ../private/sendmailkey.pem + fi + if test ! -f "newcsr.pem" + then + echo "self signing cert" + umask 0066 + openssl x509 -x509toreq \ + -in ../private/sendmailkey.pem \ + -signkey ../private/sendmailkey.pem \ + -out newcsr.pem + fi + if test ! -f "sendmailcert.pem" + then + echo "signing cert" + openssl ca -config openssl.cnf -policy policy_anything \ + -out ../sendmailcert.pem \ + -infiles newcsr.pem + rm -f newcsr.pem + fi +fi + +sed 's/^X//' << 'END-of-files/tls.m4' +X# links: +X# http://www.sendmail.org/~gshapiro/ +X# http://www.sendmail.org/~ca/email/starttls.html +X# http://www.ofb.net/~jheiss/sendmail/tlsandrelay.shtml +X# +X# You may need to add this to your sendmail.mc file: +X +Xdefine(`confCACERT_PATH', `MAIL_SETTINGS_DIR`'certs/verify')dnl +Xdefine(`confCACERT', `MAIL_SETTINGS_DIR`'certs/chain.pem')dnl +Xdefine(`confSERVER_CERT', `MAIL_SETTINGS_DIR`'certs/sendmailcert.pem')dnl +Xdefine(`confSERVER_KEY', `MAIL_SETTINGS_DIR`'certs/private/sendmailkey.pem')dnl +Xdefine(`confCLIENT_CERT', `MAIL_SETTINGS_DIR`'certs/sendmailcert.pem')dnl +Xdefine(`confCLIENT_KEY', `MAIL_SETTINGS_DIR`'certs/private/sendmailkey.pem')dnl +Xdefine(`confDH_PARAMETERS', `MAIL_SETTINGS_DIR`'certs/dhparam')dnl +X +END-of-files/tls.m4 +exit diff --git a/mail/sendmail-devel/pkg-descr b/mail/sendmail-devel/pkg-descr new file mode 100644 index 000000000000..21e2ecf498f9 --- /dev/null +++ b/mail/sendmail-devel/pkg-descr @@ -0,0 +1,11 @@ +Sendmail implements a general purpose internetwork mail routing facility +under the UNIX operating system. It is not tied to any one transport +protocol - its function may be likened to a crossbar switch, relaying +messages from one domain into another. In the process, it can do a limited +amount of message header editing to put the message into a format that is +appropriate for the receiving domain. All of this is done under the +control of a configuration file. + +Sendmail is a trademark of Sendmail, Inc. + +WWW: http://www.sendmail.org/ diff --git a/mail/sendmail-devel/pkg-message b/mail/sendmail-devel/pkg-message new file mode 100644 index 000000000000..02cf98c6d1d9 --- /dev/null +++ b/mail/sendmail-devel/pkg-message @@ -0,0 +1,33 @@ +--------------------------------------------------- + +you should add in /etc/make.conf: +SENDMAIL_CF_DIR= %%PREFIX%%/share/sendmail/cf + +To deliver all local mail to your mailhub, edit the last line of submit.mc: +FEATURE(`msp','[mailhub.do.main]`)dnl + +To update your configuration look at %%PREFIX%%/share/sendmail/cf/README. +--------------------------------------------------- +To use the binaries supplied by the port you should add the following lines +to your sendmail.mc file before any mailer or feature definition: + +define(`confEBINDIR', `%%PREFIX%%/libexec')dnl +define(`UUCP_MAILER_PATH', `%%LOCALBASE%%/bin/uux')dnl + +--------------------------------------------------- +To activate sendmail as your default mailer, call the target 'mailer.conf': +$ cd %%PORTSDIR%%/mail/sendmail && make mailer.conf + +Your '%%PREFIX%%/etc/mail/mailer.conf' should look like this: +# +# Execute the "real" sendmail program, named /usr/libexec/sendmail/sendmail +# +sendmail %%PREFIX%%/sbin/sendmail +send-mail %%PREFIX%%/sbin/sendmail +mailq %%PREFIX%%/sbin/sendmail +newaliases %%PREFIX%%/sbin/sendmail +hoststat %%PREFIX%%/sbin/sendmail +purgestat %%PREFIX%%/sbin/sendmail + +You may also need to update /etc/rc.conf. +--------------------------------------------------- diff --git a/mail/sendmail-devel/pkg-plist b/mail/sendmail-devel/pkg-plist new file mode 100644 index 000000000000..aab34346deca --- /dev/null +++ b/mail/sendmail-devel/pkg-plist @@ -0,0 +1,35 @@ +@comment cannot use @dir because this is home directory of smmsp +@postexec chmod 770 /var/spool/clientmqueue +bin/hoststat +bin/mailq +bin/newaliases +bin/purgestat +bin/rmail +bin/vacation +etc/mail/mailer.conf.sendmail +libexec/mail.local +libexec/smrsh +%%MANPREFIX%%man/man1/mailq.1.gz +%%MANPREFIX%%man/man1/newaliases.1.gz +%%MANPREFIX%%man/man1/vacation.1.gz +%%MANPREFIX%%man/man5/aliases.5.gz +%%MANPREFIX%%man/man8/sendmail.8.gz +%%MANPREFIX%%man/man8/mailstats.8.gz +%%MANPREFIX%%man/man8/makemap.8.gz +%%MANPREFIX%%man/man8/praliases.8.gz +%%MANPREFIX%%man/man8/smrsh.8.gz +%%MANPREFIX%%man/man8/mail.local.8.gz +%%MANPREFIX%%man/man8/rmail.8.gz +%%MANPREFIX%%man/man8/editmap.8.gz +sbin/editmap +sbin/mailstats +sbin/makemap +sbin/praliases +@(root,smmsp,2555) sbin/sendmail +share/sendmail/helpfile +%%PORTDOCS%%%%DOCSDIR%%/op.ps +%%PORTDOCS%%%%DOCSDIR%%/op.txt +%%PORTDOCS%%%%DOCSDIR%%/DEVTOOLS +%%PORTDOCS%%%%DOCSDIR%%/SENDMAIL +%%PORTDOCS%%%%DOCSDIR%%/MAIL.LOCAL +%%PORTDOCS%%%%DOCSDIR%%/SMRSH |