From owner-dev-commits-ports-main@freebsd.org Thu May 6 17:13:15 2021 Return-Path: Delivered-To: dev-commits-ports-main@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 765FF6287B8; Thu, 6 May 2021 17:13:15 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4FbgBz2xxPz4sxv; Thu, 6 May 2021 17:13:15 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 581A21C138; Thu, 6 May 2021 17:13:15 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 146HDFsc054398; Thu, 6 May 2021 17:13:15 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 146HDFtL054397; Thu, 6 May 2021 17:13:15 GMT (envelope-from git) Date: Thu, 6 May 2021 17:13:15 GMT Message-Id: <202105061713.146HDFtL054397@gitrepo.freebsd.org> To: ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org From: Olli Hauer Subject: git: efa868ac9533 - main - mail/postfix35 add new port MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: ohauer X-Git-Repository: ports X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: efa868ac9533de8e3f73b9cc6c938af81bc9caaf Auto-Submitted: auto-generated X-BeenThere: dev-commits-ports-main@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commits to the main branch of the FreeBSD ports repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 06 May 2021 17:13:15 -0000 The branch main has been updated by ohauer: URL: https://cgit.FreeBSD.org/ports/commit/?id=efa868ac9533de8e3f73b9cc6c938af81bc9caaf commit efa868ac9533de8e3f73b9cc6c938af81bc9caaf Author: Olli Hauer AuthorDate: 2021-05-06 17:09:50 +0000 Commit: Olli Hauer CommitDate: 2021-05-06 17:09:50 +0000 mail/postfix35 add new port Postfix 3.6 requires minimum OpenSSL 1.1.1, this port is an alternative for FreeBSD 11 users using 'OpenSSL base' and will be removed if FreeBSD 11 is EoL --- UPDATING | 14 + mail/Makefile | 1 + mail/postfix35/Makefile | 378 +++++++++++++++++++++ mail/postfix35/distinfo | 3 + mail/postfix35/files/extra-patch-blacklistd | 69 ++++ mail/postfix35/files/mailer.conf.postfix.in | 7 + mail/postfix35/files/patch-makedefs | 45 +++ .../patch-src_posttls-finger_posttls-finger.c | 22 ++ mail/postfix35/files/patch-src_tls_tls__certkey.c | 11 + mail/postfix35/files/patch-src_tls_tls__server.c | 12 + mail/postfix35/files/patch-src_util_sys__defs.h | 12 + mail/postfix35/files/pkg-install.in | 189 +++++++++++ mail/postfix35/files/pkg-message.in | 44 +++ mail/postfix35/files/postfix.in | 50 +++ mail/postfix35/pkg-descr | 15 + mail/postfix35/pkg-help | 15 + mail/postfix35/pkg-plist | 190 +++++++++++ 17 files changed, 1077 insertions(+) diff --git a/UPDATING b/UPDATING index f9519a2c4276..056498e6b87f 100644 --- a/UPDATING +++ b/UPDATING @@ -5,6 +5,20 @@ they are unavoidable. You should get into the habit of checking this file for changes each time you update your ports collection, before attempting any port upgrades. +20210506: + AFFECTS: users of mail/postfix + AUTHOR: ohauer@FreeBSD.org + + Postfix 3.6 and higher requires minimum OpenSSL 1.1.1 + FreeBSD 11 users using base OpenSSL can switch to + mail/postfix35 + + If you whish to use postfix35 until FreeBSD 11 EoL you might run the + following command: + + # pkg set -o mail/postfix:mail/postfix35 + # pkg upgrade + 20210505: AFFECTS: users of sysutils/terraform AUTHOR: 0mp@FreeBSD.org diff --git a/mail/Makefile b/mail/Makefile index 8388b9df8147..9866ab62f506 100644 --- a/mail/Makefile +++ b/mail/Makefile @@ -476,6 +476,7 @@ SUBDIR += postfix-policyd-weight SUBDIR += postfix-postfwd SUBDIR += postfix-sasl + SUBDIR += postfix35 SUBDIR += postfixadmin SUBDIR += postgrey SUBDIR += postsrsd diff --git a/mail/postfix35/Makefile b/mail/postfix35/Makefile new file mode 100644 index 000000000000..4b8b206844ea --- /dev/null +++ b/mail/postfix35/Makefile @@ -0,0 +1,378 @@ +# Created by: Torsten Blum + +PORTNAME= postfix +DISTVERSION= 3.5.10 +PORTREVISION?= 0 +PORTEPOCH= 1 +CATEGORIES= mail +MASTER_SITES= http://ftp.porcupine.org/mirrors/postfix-release/ \ + http://de.postfix.org/ftpmirror/ \ + http://cdn.postfix.johnriley.me/mirrors/postfix-release/ \ + http://www.artfiles.org/postfix.org/postfix-release/ \ + http://mirror.lhsolutions.nl/postfix-release/ \ + ftp://postfix.mirrors.pair.com/ +MASTER_SITES:= ${MASTER_SITES:S|$|official/|} +DIST_SUBDIR= ${PORTNAME} + +MAINTAINER= ohauer@FreeBSD.org +COMMENT= Secure alternative to widely-used Sendmail + +LICENSE= EPL IPL10 +LICENSE_COMB= multi +LICENSE_FILE= ${WRKSRC}/LICENSE +LICENSE_NAME_IPL10= IBM PUBLIC LICENSE VERSION 1.0 +LICENSE_PERMS_IPL10= dist-mirror dist-sell pkg-mirror pkg-sell auto-accept + +DEPRECATED= It is only here until FreeBSD 11 is EoL (Postfix >= 3.6 requires OpenSSL >= 1.1.x) +EXPIRATION_DATE=2021-09-30 + +PORTSCOUT= limit:^3\.5\. + +CONFLICTS_INSTALL?= courier-0.* opensmtpd-[0-9]* sendmail-8.* sendmail+*-8.* \ + postfix-* postfix-current-* + +USERS= postfix +GROUPS= mail maildrop postfix +USES= shebangfix cpe +SHEBANG_FILES= auxiliary/qshape/qshape.pl + +USE_RC_SUBR= postfix +USE_SUBMAKE= yes +SCRIPTS_ENV+= POSTFIX_DEFAULT_MTA="${POSTFIX_DEFAULT_MTA}" + +OPTIONS_SUB= yes +OPTIONS_DEFINE= BDB BLACKLISTD CDB DOCS EAI INST_BASE LDAP LDAP_SASL \ + LMDB MYSQL NIS PCRE PGSQL SASL SQLITE TEST TLS + +OPTIONS_RADIO= RG1 +OPTIONS_RADIO_RG1= SASLKRB5 SASLKMIT +OPTIONS_DEFAULT?= BLACKLISTD EAI PCRE TLS + +BDB_USES= bdb +BLACKLISTD_EXTRA_PATCHES= ${FILESDIR}/extra-patch-blacklistd +CDB_LIB_DEPENDS= libcdb.so:databases/tinycdb +EAI_LIB_DEPENDS= libicuuc.so:devel/icu +LDAP_USE= OPENLDAP=yes +LMDB_LIB_DEPENDS= liblmdb.so:databases/lmdb +MYSQL_USES?= mysql +PCRE_LIB_DEPENDS= libpcre.so:devel/pcre +PGSQL_USES= pgsql +SASLKMIT_LIB_DEPENDS= libkrb5.so:security/krb5 +SASL_LIB_DEPENDS= libsasl2.so:security/cyrus-sasl2 +SQLITE_USES= sqlite +TLS_USES= ssl + +BLACKLISTD_DESC= Enable blacklistd support (FreeBSD 11.0 and later only) +CDB_DESC= CDB maps lookups +EAI_DESC= Email Address Internationalization (SMTPUTF8) support +INST_BASE_DESC= Install into /usr and /etc/postfix +LDAP_DESC= LDAP maps (uses WITH_OPENLDAP_VER) +LDAP_SASL_DESC= LDAP client-to-server SASL auth +LMDB_DESC= LMDB maps +TEST_DESC= SMTP/LMTP test server and generator + +SASL_DESC= Cyrus SASL support (Dovecot SASL is always built in) +RG1_DESC= Kerberos network authentication protocol type +SASLKRB5_DESC= If your SASL req. Kerberos5, select this +SASLKMIT_DESC= If your SASL req. MIT Kerberos5, select this + +.include + +HTML1= body_checks.5.html bounce.5.html postfix-power.png \ + scache.8.html tlsmgr.8.html + +STRIP_LIBEXEC= anvil bounce cleanup discard dnsblog error flush lmtp local \ + master nqmgr oqmgr pickup pipe postlogd postscreen proxymap \ + qmgr qmqpd scache showq smtp smtpd spawn tlsmgr tlsproxy \ + trivial-rewrite verify virtual + +.if !defined(DEBUG) +MAKEFILEFLAGS+= DEBUG= +.endif + +MAKEFILEFLAGS+= pie=yes CC="${CC}" OPT="${CFLAGS}" + +.if ${PORT_OPTIONS:MINST_BASE} +PKGNAMESUFFIX= 35-base +PREFIX= /usr +ETCDIR= /etc/postfix +PLIST_SUB+= BMAN="share/" +.else +PKGNAMESUFFIX= 35 +PLIST_SUB+= BMAN="" +.endif + +PLIST_SUB+= PFETC=${ETCDIR} + +# check if mailwrapper supports $LOCALBASE +.if ${OPSYS} == FreeBSD +SUB_LIST+= USE_LOCALBASE_MAILER_CONF="yes" MC_PREFIX="${LOCALBASE}" +.else +SUB_LIST+= USE_LOCALBASE_MAILER_CONF="no" MC_PREFIX="" +.endif + +.if ${PORT_OPTIONS:MDOCS} +PORTDOCS= * +READMEDIR= ${DOCSDIR} +.else +READMEDIR= no +.endif + +# dynamic direcory location +DAEMONDIR= ${PREFIX}/libexec/postfix +SHLIB_DIRECTORY=${PREFIX}/lib/postfix +# new proposed location is ETCDIR (see README_FILES/INSTALL) +# keep compatiblity with Postfix 2.6 .. 2.11 and use DAEMOMDIR +META_DIRECTORY= ${DAEMONDIR} + +SUB_LIST+= REQUIRE="${_REQUIRE}" READMEDIR="${READMEDIR}" \ + DAEMONDIR="${DAEMONDIR}" META_DIRECTORY="${META_DIRECTORY}" +SUB_FILES+= pkg-install pkg-message mailer.conf.postfix + +POSTFIX_CCARGS+= -DDEF_CONFIG_DIR=\\\"${ETCDIR}\\\" \ + -DDEF_DAEMON_DIR=\\\"${DAEMONDIR}\\\" \ + -DDEF_META_DIR=\\\"${META_DIRECTORY}\\\" \ + -DDEF_COMMAND_DIR=\\\"${PREFIX}/sbin\\\" \ + -DDEF_SENDMAIL_PATH=\\\"${PREFIX}/sbin/sendmail\\\" \ + -DDEF_NEWALIAS_PATH=\\\"${PREFIX}/bin/newaliases\\\" \ + -DDEF_MAILQ_PATH=\\\"${PREFIX}/bin/mailq\\\" \ + -DDEF_MANPAGE_DIR=\\\"${MANPREFIX}/man\\\" \ + -DDEF_README_DIR=\\\"${READMEDIR}\\\" \ + -DDEF_HTML_DIR=\\\"${READMEDIR}\\\" \ + -DDEF_QUEUE_DIR=\\\"/var/spool/postfix\\\" \ + -DDEF_DATA_DIR=\\\"/var/db/postfix\\\" \ + -DDEF_MAIL_OWNER=\\\"postfix\\\" \ + -DDEF_SGID_GROUP=\\\"maildrop\\\" \ + -Wmissing-prototypes -Wformat -Wno-comment + +# Default requirement for postfix rc script +_REQUIRE= LOGIN cleanvar dovecot + +# always build with Dovecot SASL support, Cyrus is optional +# see Postfix HISTORY 20051222 +POSTFIX_CCARGS+= -DUSE_SASL_AUTH + +# Email Address Internationalization (EAI, RFC 6531..6533) +.if ${PORT_OPTIONS:MEAI} +POSTFIX_CCARGS+= -DHAS_EAI -I${LOCALBASE}/include +POSTFIX_AUXLIBS+= -L${LOCALBASE}/lib -licuuc +.else +POSTFIX_CCARGS+= -DNO_EAI +.endif + +.if ${PORT_OPTIONS:MPCRE} +DYN_EXT+= pcre +POSTFIX_CCARGS+= -DHAS_PCRE -I${LOCALBASE}/include +POSTFIX_DYN_AUXLIBS+= "AUXLIBS_PCRE=`${LOCALBASE}/bin/pcre-config --libs`" +.else +POSTFIX_CCARGS+= -DNO_PCRE +.endif + +.if ${PORT_OPTIONS:MSASL} +POSTFIX_CCARGS+= -DUSE_CYRUS_SASL -I${LOCALBASE}/include -I${LOCALBASE}/include/sasl +POSTFIX_AUXLIBS+= -L${LOCALBASE}/lib -lsasl2 -lpam -lcrypt +.else +POSTFIX_CCARGS+= -DDEF_SERVER_SASL_TYPE=\\\"dovecot\\\" +.endif + +.if ${PORT_OPTIONS:MSASLKRB5} +POSTFIX_AUXLIBS+= -lkrb5 -lhx509 -lcrypto -lcrypt -lcom_err -lasn1 -lroken +.endif + +.if ${PORT_OPTIONS:MSASLKMIT} +POSTFIX_AUXLIBS+= -Wl,--rpath,$${KRB5_HOME:-${LOCALBASE}}/lib -lkrb5 -lcrypto -lcrypt -lcom_err +.endif + +.if ${PORT_OPTIONS:MTLS} +POSTFIX_CCARGS+= -DUSE_TLS -I${OPENSSLINC} +# XXX LDFLAGS possible breaks dynamic building +POSTFIX_AUXLIBS+= -L${OPENSSLLIB} ${LDFLAGS} -lssl -lcrypto +.else +POSTFIX_CCARGS+= -DNO_TLS +.endif + +.if ${PORT_OPTIONS:MBDB} +POSTFIX_CCARGS+= -I${BDB_INCLUDE_DIR} +POSTFIX_AUXLIBS+= -L${BDB_LIB_DIR} -l${BDB_LIB_NAME} +.endif + +.if ${PORT_OPTIONS:MBLACKLISTD} +. if ${OPSYS} == FreeBSD +POSTFIX_AUXLIBS+= -lblacklist +. else +IGNORE= blacklistd is only supported on FreeBSD >= 11.0 +. endif +.endif + +.if ${PORT_OPTIONS:MMYSQL} +DYN_EXT+= mysql +POSTFIX_CCARGS+= -DHAS_MYSQL -I${LOCALBASE}/include/mysql +POSTFIX_DYN_AUXLIBS+= "AUXLIBS_MYSQL=-L${LOCALBASE}/lib/mysql -lmysqlclient -lz -lm" +_REQUIRE+= mysql +.endif + +.if ${PORT_OPTIONS:MPGSQL} +DYN_EXT+= pgsql +POSTFIX_CCARGS+= -DHAS_PGSQL -I${LOCALBASE}/include +POSTFIX_DYN_AUXLIBS+= "AUXLIBS_PGSQL=-L${LOCALBASE}/lib -lpq" +_REQUIRE+= postgresql +.endif + +.if ${PORT_OPTIONS:MSQLITE} +DYN_EXT+= sqlite +POSTFIX_CCARGS+= -DHAS_SQLITE -I${LOCALBASE}/include +POSTFIX_DYN_AUXLIBS+= "AUXLIBS_SQLITE=-L${LOCALBASE}/lib -lsqlite3 -lpthread" +.endif + +.if ${PORT_OPTIONS:MLDAP} +DYN_EXT+= ldap +. if defined(WITH_OPENLDAP_VER) +WANT_OPENLDAP_VER= ${WITH_OPENLDAP_VER} +. endif +POSTFIX_CCARGS+= -DHAS_LDAP -I${LOCALBASE}/include +POSTFIX_DYN_AUXLIBS+= "AUXLIBS_LDAP=-L${LOCALBASE}/lib -lldap -L${LOCALBASE}/lib -llber" +_REQUIRE+= slapd +. if ${PORT_OPTIONS:MLDAP_SASL} +. if ! ${PORT_OPTIONS:MSASL} +LIB_DEPENDS+= libsasl2.so:security/cyrus-sasl2 +. endif +WANT_OPENLDAP_SASL= yes +POSTFIX_CCARGS+= -I${LOCALBASE}/include/sasl -DUSE_LDAP_SASL +. endif +.endif + +.if ${PORT_OPTIONS:MCDB} +DYN_EXT+= cdb +POSTFIX_CCARGS+= -DHAS_CDB -I${LOCALBASE}/include +POSTFIX_DYN_AUXLIBS+= "AUXLIBS_CDB=-L${LOCALBASE}/lib -lcdb" +.endif + +.if ${PORT_OPTIONS:MNIS} +POSTFIX_CCARGS+= -DHAS_NIS +_REQUIRE+= ypserv +.endif + +.if ${PORT_OPTIONS:MTEST} +BINTEST= qmqp-sink qmqp-source smtp-sink smtp-source +MANTEST= qmqp-sink.1 qmqp-source.1 smtp-sink.1 smtp-source.1 +.endif + +.if ${PORT_OPTIONS:MLMDB} +DYN_EXT+= lmdb +POSTFIX_CCARGS+= -DHAS_LMDB -I${LOCALBASE}/include +POSTFIX_DYN_AUXLIBS+= "AUXLIBS_LMDB=-L${LOCALBASE}/lib -llmdb" +.endif + +# sed script for files in ${WRKSRC}/README_FILES ${WRKSRC}/conf ${WRKSRC}/man +REINPLACE= s!^PATH=.*!PATH=/bin:/sbin:/usr/bin:/usr/sbin:${PREFIX}/bin:${PREFIX}/sbin!;\ + s!(_directory = )/usr/!\1${PREFIX}/!g;\ + s!^(data_directory = /var/)lib/!\1db/!g;\ + s!^\#(mynetworks_style = host)!\1!g;\ + s!^(sendmail_path =)!\1 ${PREFIX}/sbin/sendmail!g;\ + s!^(newaliases_path =)!\1 ${PREFIX}/bin/newaliases!g;\ + s!^(mailq_path =)!\1 ${PREFIX}/bin/mailq!g;\ + s!^(setgid_group =)!\1 maildrop!g;\ + s!^(manpage_directory =)!\1 ${MANPREFIX}/man!g;\ + s!^((html|readme)_directory =)!\1 ${READMEDIR}!g;\ + \!^\#alias_database = dbm:/etc/mail/aliases$$!d;\ + s!(:|= )/etc/postfix!\1$$config_directory!g;\ + s!/etc/postfix!${ETCDIR}!g;\ + s!^(sample_directory =)!\1 ${ETCDIR}!g;\ + s!($config_directory/(access|aliases|canonical|generic|header_checks|relocated|transport|virtual):f:root:-:644:)p1!\1o!; + +pre-patch: +.if ${PORT_OPTIONS:MSASL} && ! ${PORT_OPTIONS:MMYSQL} && exists(${LOCALBASE}/lib/libsasl2.a) + @if /usr/bin/nm ${LOCALBASE}/lib/libsasl2.a | ${GREP} -wq "mysql_init"; then \ + ${ECHO_MSG}; \ + ${ECHO_MSG} "Your SASL library it's compiled with MYSQL"; \ + ${ECHO_MSG} "If you use MYSQL in ${PORTNAME} consider CTRL+C and"; \ + ${ECHO_MSG} "select MYSQL OPTION in config menu."; \ + ${ECHO_MSG} "# make clean config"; \ + ${ECHO_MSG}; \ + sleep 5; \ + fi +.endif + + @${ECHO_CMD} 'See header_checks.5.html' \ + > ${WRKSRC}/html/body_checks.5.html + @${REINPLACE_CMD} -E -e 's!^(#define DEF_SGID_GROUP[^"]+)"postdrop"$$!\1"maildrop"!' \ + ${WRKSRC}/src/global/mail_params.h + @${FIND} -X ${WRKSRC}/README_FILES ${WRKSRC}/conf ${WRKSRC}/man \ + -type f -a ! \( -name INSTALL -o -name aliases \) | ${XARGS} \ + ${REINPLACE_CMD} -i '' -E -e '${REINPLACE}' + +post-patch: +.for f in ${HTML1} + @${ECHO_CMD} '$$html_directory/$f:f:root:-:644' \ + >> ${WRKSRC}/conf/postfix-files +.endfor + @${ECHO_CMD} '$$manpage_directory/man1/posttls-finger.1:f:root:-:644' \ + >> ${WRKSRC}/conf/postfix-files + @${ECHO_CMD} '$$command_directory/posttls-finger:f:root:-:755' \ + >> ${WRKSRC}/conf/postfix-files + +do-configure: + (cd ${WRKSRC} && ${MAKE} -f Makefile.init makefiles \ + ${MAKEFILEFLAGS} CCARGS="${POSTFIX_CCARGS}" \ + shared=yes shlib_directory=${SHLIB_DIRECTORY} \ + dynamicmaps=yes \ + ${POSTFIX_DYN_AUXLIBS} \ + AUXLIBS="${POSTFIX_AUXLIBS}" && \ + ${ECHO_CMD} "all: default" >> Makefile) + +pre-install-INST_BASE-on: + ${MKDIR} ${STAGEDIR}/etc/rc.d + +do-install: + @(cd ${WRKSRC} && ${MAKE} non-interactive-package \ + install_root=${STAGEDIR} tempdir=${WRKDIR} \ + shlib_directory=${SHLIB_DIRECTORY} \ + config_directory=${ETCDIR} \ + command_directory=${PREFIX}/sbin \ + daemon_directory=${DAEMONDIR} \ + meta_directory=${META_DIRECTORY} \ + html_directory=${READMEDIR} \ + mailq_path=${PREFIX}/bin/mailq \ + manpage_directory=${MANPREFIX}/man \ + newaliases_path=${PREFIX}/bin/newaliases \ + readme_directory=${READMEDIR} \ + sendmail_path=${PREFIX}/sbin/sendmail ) + + ${INSTALL_SCRIPT} ${WRKSRC}/auxiliary/rmail/rmail ${STAGEDIR}${PREFIX}/bin/rmail + ${INSTALL_SCRIPT} ${WRKSRC}/auxiliary/qshape/qshape.pl ${STAGEDIR}${PREFIX}/bin/qshape + ${INSTALL_MAN} ${WRKSRC}/man/man1/qshape.1 ${STAGEDIR}${MANPREFIX}/man/man1 + +# == do not overwrite existing config + ${MV} ${STAGEDIR}${ETCDIR}/main.cf ${STAGEDIR}${ETCDIR}/main.cf.sample + ${MV} ${STAGEDIR}${ETCDIR}/master.cf ${STAGEDIR}${ETCDIR}/master.cf.sample + ${MKDIR} ${STAGEDIR}${DATADIR} + ${INSTALL_DATA} ${WRKDIR}/mailer.conf.postfix ${STAGEDIR}${DATADIR} + +# == chop dynamicmaps.cf entries into dedicated .cf files +# for future sub-packages support +.for f in ${DYN_EXT} +# adjust dynamicmaps.cf + ${GREP} -e "^#" -e "^${f}" ${STAGEDIR}${META_DIRECTORY}/dynamicmaps.cf \ + > ${STAGEDIR}${META_DIRECTORY}/dynamicmaps.cf.d/${f}.cf && \ + ${SED} -i '' -e '/${f}/d' ${STAGEDIR}${META_DIRECTORY}/dynamicmaps.cf + +# adjust / generate postfix-files for dynamic modules + ${SED} -i '' -e '/postfix-${f}.so/d' ${STAGEDIR}${META_DIRECTORY}/postfix-files && \ + ${PRINTF} '# Do not edit this file.\ + \n$$shlib_directory/postfix-${f}.so:f:root:-:755\ + \n$$meta_directory/postfix-files.d/${f}-files:f:root:-:644\ + \n$$meta_directory/dynamicmaps.cf.d/${f}.cf:f:root:-:644\n' \ + > ${STAGEDIR}${META_DIRECTORY}/postfix-files.d/${f}-files +.endfor + +# Fix compressed man pages and strip executables + ${SED} -i '' -E -e "s|(man[158]/.*.[158]):|\1.gz:|g" ${STAGEDIR}${META_DIRECTORY}/postfix-files + -@${STRIP_CMD} ${STRIP_LIBEXEC:S|^|${STAGEDIR}${DAEMONDIR}/|} + -@${STRIP_CMD} ${STAGEDIR}${PREFIX}/sbin/* + -@${STRIP_CMD} ${STAGEDIR}${SHLIB_DIRECTORY}/*.so + +do-install-TEST-on: + ${INSTALL_PROGRAM} ${BINTEST:S|^|${WRKSRC}/bin/|} ${STAGEDIR}${PREFIX}/bin + ${INSTALL_MAN} ${MANTEST:S|^|${WRKSRC}/man/man1/|} ${STAGEDIR}${MANPREFIX}/man/man1 + +.include diff --git a/mail/postfix35/distinfo b/mail/postfix35/distinfo new file mode 100644 index 000000000000..4169fdd0d92e --- /dev/null +++ b/mail/postfix35/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1618155540 +SHA256 (postfix/postfix-3.5.10.tar.gz) = 5bb4d7d72d7512b58f3a31426dcbd394fd354e0a43de21da89466b057a0228f8 +SIZE (postfix/postfix-3.5.10.tar.gz) = 4621130 diff --git a/mail/postfix35/files/extra-patch-blacklistd b/mail/postfix35/files/extra-patch-blacklistd new file mode 100644 index 000000000000..a9448d978c7d --- /dev/null +++ b/mail/postfix35/files/extra-patch-blacklistd @@ -0,0 +1,69 @@ +# PR 225664: support blacklistd on FreeBSD >= 11.0 +# +--- src/smtpd/Makefile.in.orig 2017-02-05 23:36:32 UTC ++++ src/smtpd/Makefile.in +@@ -2,14 +2,14 @@ SHELL = /bin/sh + SRCS = smtpd.c smtpd_token.c smtpd_check.c smtpd_chat.c smtpd_state.c \ + smtpd_peer.c smtpd_sasl_proto.c smtpd_sasl_glue.c smtpd_proxy.c \ + smtpd_xforward.c smtpd_dsn_fix.c smtpd_milter.c smtpd_resolve.c \ +- smtpd_expand.c smtpd_haproxy.c ++ smtpd_expand.c smtpd_haproxy.c pfilter.c + OBJS = smtpd.o smtpd_token.o smtpd_check.o smtpd_chat.o smtpd_state.o \ + smtpd_peer.o smtpd_sasl_proto.o smtpd_sasl_glue.o smtpd_proxy.o \ + smtpd_xforward.o smtpd_dsn_fix.o smtpd_milter.o smtpd_resolve.o \ +- smtpd_expand.o smtpd_haproxy.o ++ smtpd_expand.o smtpd_haproxy.o pfilter.o + HDRS = smtpd_token.h smtpd_check.h smtpd_chat.h smtpd_sasl_proto.h \ + smtpd_sasl_glue.h smtpd_proxy.h smtpd_dsn_fix.h smtpd_milter.h \ +- smtpd_resolve.h smtpd_expand.h ++ smtpd_resolve.h smtpd_expand.h pfilter.h + TESTSRC = smtpd_token_test.c + DEFS = -I. -I$(INC_DIR) -D$(SYSTYPE) + CFLAGS = $(DEBUG) $(OPT) $(DEFS) +--- src/smtpd/smtpd_sasl_glue.c.orig 2017-02-19 01:58:21 UTC ++++ src/smtpd/smtpd_sasl_glue.c +@@ -147,6 +147,7 @@ + #include "smtpd.h" + #include "smtpd_sasl_glue.h" + #include "smtpd_chat.h" ++#include "pfilter.h" /* for blacklistd(8) */ + + #ifdef USE_SASL_AUTH + +@@ -332,6 +333,10 @@ int smtpd_sasl_authenticate(SMTPD_ST + else + smtpd_chat_reply(state, "535 5.7.8 Error: authentication failed: %s", + STR(state->sasl_reply)); ++ ++ ++ /* notify blacklistd of SASL authentication failure */ ++ pfilter_notify(1, vstream_fileno(state->client)); + return (-1); + } + /* RFC 4954 Section 6. */ +--- src/smtpd/pfilter.h.orig 2018-02-04 15:36:49 UTC ++++ src/smtpd/pfilter.h +@@ -0,0 +1 @@ ++void pfilter_notify(int, int); +--- src/smtpd/pfilter.c.orig 2018-02-04 15:36:49 UTC ++++ src/smtpd/pfilter.c +@@ -0,0 +1,19 @@ ++#include "pfilter.h" ++#include /* for NULL */ ++#include ++ ++static struct blacklist *blstate; ++ ++void ++pfilter_notify(int a, int fd) ++{ ++ if (blstate == NULL) ++ blstate = blacklist_open(); ++ if (blstate == NULL) ++ return; ++ (void)blacklist_r(blstate, a, fd, "smtpd"); ++ if (a == 0) { ++ blacklist_close(blstate); ++ blstate = NULL; ++ } ++} diff --git a/mail/postfix35/files/mailer.conf.postfix.in b/mail/postfix35/files/mailer.conf.postfix.in new file mode 100644 index 000000000000..08f2b2c00f35 --- /dev/null +++ b/mail/postfix35/files/mailer.conf.postfix.in @@ -0,0 +1,7 @@ +# +# Execute the Postfix sendmail program, named %%PREFIX%%/sbin/sendmail +# +sendmail %%PREFIX%%/sbin/sendmail +send-mail %%PREFIX%%/sbin/sendmail +mailq %%PREFIX%%/sbin/sendmail +newaliases %%PREFIX%%/sbin/sendmail diff --git a/mail/postfix35/files/patch-makedefs b/mail/postfix35/files/patch-makedefs new file mode 100644 index 000000000000..f688b8ab7338 --- /dev/null +++ b/mail/postfix35/files/patch-makedefs @@ -0,0 +1,45 @@ +--- makedefs.orig 2021-01-16 15:10:00 UTC ++++ makedefs +@@ -298,6 +298,42 @@ case "$SYSTEM.$RELEASE" in + : ${SHLIB_ENV="LD_LIBRARY_PATH=`pwd`/lib"} + : ${PLUGIN_LD="${CC} -shared"} + ;; ++ FreeBSD.11*) SYSTYPE=FREEBSD11 ++ : ${CC=cc} ++ : ${SHLIB_SUFFIX=.so} ++ : ${SHLIB_CFLAGS=-fPIC} ++ : ${SHLIB_LD="${CC} -shared"' -Wl,-soname,${LIB}'} ++ : ${SHLIB_RPATH='-Wl,-rpath,${SHLIB_DIR}'} ++ : ${SHLIB_ENV="LD_LIBRARY_PATH=`pwd`/lib"} ++ : ${PLUGIN_LD="${CC} -shared"} ++ ;; ++ FreeBSD.12*) SYSTYPE=FREEBSD12 ++ : ${CC=cc} ++ : ${SHLIB_SUFFIX=.so} ++ : ${SHLIB_CFLAGS=-fPIC} ++ : ${SHLIB_LD="${CC} -shared"' -Wl,-soname,${LIB}'} ++ : ${SHLIB_RPATH='-Wl,-rpath,${SHLIB_DIR}'} ++ : ${SHLIB_ENV="LD_LIBRARY_PATH=`pwd`/lib"} ++ : ${PLUGIN_LD="${CC} -shared"} ++ ;; ++ FreeBSD.13*) SYSTYPE=FREEBSD13 ++ : ${CC=cc} ++ : ${SHLIB_SUFFIX=.so} ++ : ${SHLIB_CFLAGS=-fPIC} ++ : ${SHLIB_LD="${CC} -shared"' -Wl,-soname,${LIB}'} ++ : ${SHLIB_RPATH='-Wl,-rpath,${SHLIB_DIR}'} ++ : ${SHLIB_ENV="LD_LIBRARY_PATH=`pwd`/lib"} ++ : ${PLUGIN_LD="${CC} -shared"} ++ ;; ++ FreeBSD.14*) SYSTYPE=FREEBSD14 ++ : ${CC=cc} ++ : ${SHLIB_SUFFIX=.so} ++ : ${SHLIB_CFLAGS=-fPIC} ++ : ${SHLIB_LD="${CC} -shared"' -Wl,-soname,${LIB}'} ++ : ${SHLIB_RPATH='-Wl,-rpath,${SHLIB_DIR}'} ++ : ${SHLIB_ENV="LD_LIBRARY_PATH=`pwd`/lib"} ++ : ${PLUGIN_LD="${CC} -shared"} ++ ;; + DragonFly.*) SYSTYPE=DRAGONFLY + ;; + OpenBSD.2*) SYSTYPE=OPENBSD2 diff --git a/mail/postfix35/files/patch-src_posttls-finger_posttls-finger.c b/mail/postfix35/files/patch-src_posttls-finger_posttls-finger.c new file mode 100644 index 000000000000..fdece6346ca5 --- /dev/null +++ b/mail/postfix35/files/patch-src_posttls-finger_posttls-finger.c @@ -0,0 +1,22 @@ +--- src/posttls-finger/posttls-finger.c.orig 2019-02-12 13:17:45 UTC ++++ src/posttls-finger/posttls-finger.c +@@ -1673,7 +1673,8 @@ static int finger(STATE *state) + return (0); + } + +-#if defined(USE_TLS) && OPENSSL_VERSION_NUMBER < 0x10100000L ++#if defined(USE_TLS) && \ ++ ( OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) ) + + /* ssl_cleanup - free memory allocated in the OpenSSL library */ + +@@ -2156,7 +2157,8 @@ int main(int argc, char *argv[]) + cleanup(&state); + + /* OpenSSL 1.1.0 and later (de)initialization is implicit */ +-#if defined(USE_TLS) && OPENSSL_VERSION_NUMBER < 0x10100000L ++#if defined(USE_TLS) && \ ++ ( OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) ) + ssl_cleanup(); + #endif + diff --git a/mail/postfix35/files/patch-src_tls_tls__certkey.c b/mail/postfix35/files/patch-src_tls_tls__certkey.c new file mode 100644 index 000000000000..b34b8efd2be6 --- /dev/null +++ b/mail/postfix35/files/patch-src_tls_tls__certkey.c @@ -0,0 +1,11 @@ +--- src/tls/tls_certkey.c.orig 2019-03-07 23:57:10 UTC ++++ src/tls/tls_certkey.c +@@ -144,7 +144,7 @@ static void init_pem_load_state(pem_load + + /* use_chain - load cert, key and chain into ctx or ssl */ + +-#if OPENSSL_VERSION_NUMBER >= 0x1010100fUL ++#if OPENSSL_VERSION_NUMBER >= 0x1010100fUL && !defined(LIBRESSL_VERSION_NUMBER) + static int use_chain(pem_load_state_t *st) + { + int ret; diff --git a/mail/postfix35/files/patch-src_tls_tls__server.c b/mail/postfix35/files/patch-src_tls_tls__server.c new file mode 100644 index 000000000000..92115aa16679 --- /dev/null +++ b/mail/postfix35/files/patch-src_tls_tls__server.c @@ -0,0 +1,12 @@ +--- src/tls/tls_server.c.orig 2019-02-18 23:03:54 UTC ++++ src/tls/tls_server.c +@@ -518,7 +518,9 @@ TLS_APPL_STATE *tls_server_init(const TL + * ticket decryption callback already (since 2.11) asks OpenSSL to + * avoid issuing new tickets when the presented ticket is re-usable. + */ ++#ifndef LIBRESSL_VERSION_NUMBER + SSL_CTX_set_num_tickets(server_ctx, 1); ++#endif + } + #endif + if (!ticketable) diff --git a/mail/postfix35/files/patch-src_util_sys__defs.h b/mail/postfix35/files/patch-src_util_sys__defs.h new file mode 100644 index 000000000000..a31dfd4c24d5 --- /dev/null +++ b/mail/postfix35/files/patch-src_util_sys__defs.h @@ -0,0 +1,12 @@ +--- src/util/sys_defs.h.orig 2019-10-13 15:32:18 UTC ++++ src/util/sys_defs.h +@@ -30,7 +30,8 @@ + #if defined(FREEBSD2) || defined(FREEBSD3) || defined(FREEBSD4) \ + || defined(FREEBSD5) || defined(FREEBSD6) || defined(FREEBSD7) \ + || defined(FREEBSD8) || defined(FREEBSD9) || defined(FREEBSD10) \ +- || defined(FREEBSD11) \ ++ || defined(FREEBSD11) || defined(FREEBSD12) || defined(FREEBSD13) \ ++ || defined(FREEBSD14) \ + || defined(BSDI2) || defined(BSDI3) || defined(BSDI4) \ + || defined(OPENBSD2) || defined(OPENBSD3) || defined(OPENBSD4) \ + || defined(OPENBSD5) || defined(OPENBSD6) \ diff --git a/mail/postfix35/files/pkg-install.in b/mail/postfix35/files/pkg-install.in new file mode 100644 index 000000000000..0b7e47cfe011 --- /dev/null +++ b/mail/postfix35/files/pkg-install.in @@ -0,0 +1,189 @@ +#!/bin/sh + +# If the POSTFIX_DEFAULT_MTA environment variable is set to YES, it +# will make the port/package use defaults which make postfix replace +# sendmail as much as possible. + +# allowed vars during package installation +BATCH=${BATCH:=no} +POSTFIX_DEFAULT_MTA=${POSTFIX_DEFAULT_MTA:=no} + +# fixed vars +PREFIX="%%PREFIX%%" +ETCDIR="%%ETCDIR%%" +DAEMONDIR="%%DAEMONDIR%%" +META_DIRECTORY="%%META_DIRECTORY%%" +READMEDIR="%%READMEDIR%%" +MC_TEMPLATE="%%DATADIR%%/mailer.conf.postfix" + +# FreeBSD <= 10.3 +MC_BASE="/etc/mail/mailer.conf" +# FreeBSD >= 10.3 (and current) +MC_LOCALBASE="%%LOCALBASE%%/etc/mail/mailer.conf" +USE_LOCALBASE_MAILER_CONF="%%USE_LOCALBASE_MAILER_CONF%%" + +if [ "${POSTFIX_DEFAULT_MTA}" = "no" ]; then + DEFAULT_REPLACE_MAILERCONF=n +else + DEFAULT_REPLACE_MAILERCONF=y +fi + +ask() { + local question default answer + + question=$1 + default=$2 + if [ -z "${PACKAGE_BUILDING}" -a "${BATCH}" = "no" ]; then + read -p "${question} [${default}]? " answer + fi + if [ -z "${answer}" ]; then + answer=${default} + fi + echo ${answer} +} + +yesno() { + local question default answer + + question=$1 + default=$2 + while :; do + answer=$(ask "${question}" "${default}") + case "${answer}" in + [Yy]*) return 0;; + [Nn]*) return 1;; + esac + echo "Please answer yes or no." + done +} + +# ============================================================================== +# Respect POSTFIX_DEFAULT_MTA, do not ask for confirmation! +# (This helps tools like salt, ansible or puppet on new installations) +# ============================================================================== +install_choise(){ + local mailerconf + mailerconf=$1 + + if [ "${DEFAULT_REPLACE_MAILERCONF}" = "y" ]; then + install_mailer_conf ${mailerconf} + elif [ "${DEFAULT_REPLACE_MAILERCONF}" = "n" -a -t 0 ]; then + if yesno "Would you like to activate Postfix in ${mailerconf}" ${DEFAULT_REPLACE_MAILERCONF:="n"}; then + install_mailer_conf ${mailerconf} + else + show_not_activated_msg ${mailerconf} + fi + else + show_not_activated_msg ${mailerconf} + fi +} + +show_not_activated_msg() { + local mailerconf + + mailerconf=$1 + echo + echo "===============================================================" + echo "Postfix was *not* activated in ${mailerconf}! " + echo + echo "To finish installation run the following commands:" + echo + if [ "${USE_LOCALBASE_MAILER_CONF}" = "yes" ]; then + echo " mkdir -p %%LOCALBASE%%/etc/mail" + else + echo " mv -f ${mailerconf} ${mailerconf}.old" + fi + echo " install -m 0644 ${MC_TEMPLATE} ${mailerconf}" + echo "===============================================================" + echo +} + +show_activated_msg() { + local mailerconf + + mailerconf=$1 + echo "===============================================================" + echo "Postfix already activated in ${mailerconf}" + echo "===============================================================" +} + +cmp_mailer() { + local mailerconf + + mailerconf=$1 + cmp -s ${mailerconf} ${MC_TEMPLATE} + return $? +} + +install_mailer_conf() { + local mailerconf + + mailerconf=$1 + echo "Activate Postfix in ${mailerconf}" + if [ "${USE_LOCALBASE_MAILER_CONF}" = "yes" ]; then + [ -d %%LOCALBASE%%/etc/mail ] || mkdir -p %%LOCALBASE%%/etc/mail + fi + [ -f ${mailerconf} ] && mv -f ${mailerconf} ${mailerconf}.old + install -m 644 ${MC_TEMPLATE} ${mailerconf} +} + +# ============================================================================== +# Run postfix reload +# This is a candidate for a dedicated pkg-post-upgrade script, but it seems +# this not fully implemented in pkg :(see upstream PR 941) +# ============================================================================== +try_reload(){ + ${PREFIX}/sbin/postfix status 2>/dev/null +if [ $? -eq 0 ]; then + ${PREFIX}/sbin/postfix reload +else + echo "postfix not running" +fi +} + +# ============================================================================== +# Run postfix post-install to fix permissions and new config values +# ============================================================================== +if [ "$2" = "POST-INSTALL" ]; then + /bin/sh ${DAEMONDIR}/post-install tempdir=/tmp \ + daemon_directory=${DAEMONDIR} \ + meta_directory=${META_DIRECTORY} \ + html_directory=${READMEDIR} \ + readme_directory=${READMEDIR} \ + upgrade-package +fi + +# ============================================================================== +# If FreeBSD <= 10.2 is deprecated check only LOCALBASE and remove BASE checks, +# regardless if installed in BASE or LOCALBASE +# Iff postfix is activated in BASE, also activate postfix in LOCALBASE! +# ============================================================================== +if [ "$2" = "POST-INSTALL" -a -z "${PACKAGE_BUILDING}" ]; then +if [ -f "${MC_BASE}" ]; then + if [ "${USE_LOCALBASE_MAILER_CONF}" = "yes" ]; then + cmp_mailer ${MC_BASE} + if [ $? -eq 0 ]; then + show_activated_msg ${MC_BASE} + cmp_mailer ${MC_LOCALBASE} || install_mailer_conf ${MC_LOCALBASE} + try_reload + else + cmp_mailer ${MC_LOCALBASE} || install_choise ${MC_LOCALBASE} + fi + else + cmp_mailer ${MC_BASE} + if [ $? -ne 0 ]; then + install_choise ${MC_BASE} + else + show_activated_msg ${MC_BASE} + try_reload + fi + fi + +else + if [ "${USE_LOCALBASE_MAILER_CONF}" = "yes" ]; then + show_not_activated_msg ${MC_LOCALBASE} + else + show_not_activated_msg ${MC_BASE} + fi +fi # -f "${MC_BASE}" +fi # "$2" = "POST-INSTALL" -a -z "${PACKAGE_BUILDING}" diff --git a/mail/postfix35/files/pkg-message.in b/mail/postfix35/files/pkg-message.in new file mode 100644 index 000000000000..44a62a9e6f4e --- /dev/null +++ b/mail/postfix35/files/pkg-message.in @@ -0,0 +1,44 @@ +[ +{ + type: install + message: <