aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOlli Hauer <ohauer@FreeBSD.org>2021-05-06 17:09:50 +0000
committerOlli Hauer <ohauer@FreeBSD.org>2021-05-06 17:09:50 +0000
commitefa868ac9533de8e3f73b9cc6c938af81bc9caaf (patch)
treecd2b51bab57ff64d6c0811ce23a8768cce6f599d
parentfbbe09a0485cffb4f12932c672d7bce7fac3aa2a (diff)
downloadports-efa868ac9533de8e3f73b9cc6c938af81bc9caaf.tar.gz
ports-efa868ac9533de8e3f73b9cc6c938af81bc9caaf.zip
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
-rw-r--r--UPDATING14
-rw-r--r--mail/Makefile1
-rw-r--r--mail/postfix35/Makefile378
-rw-r--r--mail/postfix35/distinfo3
-rw-r--r--mail/postfix35/files/extra-patch-blacklistd69
-rw-r--r--mail/postfix35/files/mailer.conf.postfix.in7
-rw-r--r--mail/postfix35/files/patch-makedefs45
-rw-r--r--mail/postfix35/files/patch-src_posttls-finger_posttls-finger.c22
-rw-r--r--mail/postfix35/files/patch-src_tls_tls__certkey.c11
-rw-r--r--mail/postfix35/files/patch-src_tls_tls__server.c12
-rw-r--r--mail/postfix35/files/patch-src_util_sys__defs.h12
-rw-r--r--mail/postfix35/files/pkg-install.in189
-rw-r--r--mail/postfix35/files/pkg-message.in44
-rw-r--r--mail/postfix35/files/postfix.in50
-rw-r--r--mail/postfix35/pkg-descr15
-rw-r--r--mail/postfix35/pkg-help15
-rw-r--r--mail/postfix35/pkg-plist190
17 files changed, 1077 insertions, 0 deletions
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 <torstenb@FreeBSD.org>
+
+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 <bsd.port.options.mk>
+
+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} '<HTML><BODY>See <A HREF="header_checks.5.html">header_checks.5.html</A></BODY></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 <bsd.port.mk>
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 <stdio.h> /* for NULL */
++#include <blacklist.h>
++
++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: <<EOM
+To use postfix instead of sendmail:
+ - clear sendmail queue and stop the sendmail daemons
+
+Run the following commands to enable postfix during startup:
+ - sysrc postfix_enable="YES"
+ - sysrc sendmail_enable="NONE"
+
+If postfix is *not* already activated in %%MC_PREFIX%%/etc/mail/mailer.conf
+ - mv %%MC_PREFIX%%/etc/mail/mailer.conf %%MC_PREFIX%%/etc/mail/mailer.conf.old
+ - install -m 0644 %%DATADIR%%/mailer.conf.postfix %%MC_PREFIX%%/etc/mail/mailer.conf
+
+Disable sendmail(8) specific tasks,
+add the following lines to /etc/periodic.conf(.local):
+ daily_clean_hoststat_enable="NO"
+ daily_status_mail_rejects_enable="NO"
+ daily_status_include_submit_mailq="NO"
+ daily_submit_queuerun="NO"
+
+If you are using SASL, you need to make sure that postfix has access to read
+the sasldb file. This is accomplished by adding postfix to group mail and
+making the %%PREFIX%%/etc/sasldb* file(s) readable by group mail (this should
+be the default for new installs).
+EOM
+}
+{
+ type: upgrade
+ message: <<EOM
+If you are upgrading from prior postfix version, please see the README
+files for recommended changes to your configuration and additional
+http://www.postfix.org/COMPATIBILITY_README.html
+EOM
+}
+{
+ type: remove
+ message: <<EOM
+If you remove postfix permanent, adjust / remove the the following file:
+ - %%MC_PREFIX%%/etc/mail/mailer.conf
+EOM
+}
+]
diff --git a/mail/postfix35/files/postfix.in b/mail/postfix35/files/postfix.in
new file mode 100644
index 000000000000..597da191fd16
--- /dev/null
+++ b/mail/postfix35/files/postfix.in
@@ -0,0 +1,50 @@
+#!/bin/sh
+
+# PROVIDE: postfix mail
+# REQUIRE: %%REQUIRE%%
+# KEYWORD: shutdown
+#
+# Add the following lines to /etc/rc.conf to enable postfix:
+# postfix_enable (bool): Set it to "YES" to enable postfix.
+# Default is "NO".
+# postfix_pidfile (path): Set full path to master.pid.
+# Default is "/var/spool/postfix/pid/master.pid".
+# postfix_procname (command): Set command that start master. Used to verify if
+# postfix is running.
+# Default is "%%PREFIX%%/libexec/postfix/master".
+# postfix_flags (str): Flags passed to postfix-script on startup.
+# Default is "".
+#
+
+. /etc/rc.subr
+
+name="postfix"
+rcvar=postfix_enable
+
+load_rc_config $name
+
+: ${postfix_enable:="NO"}
+: ${postfix_pidfile:="/var/spool/postfix/pid/master.pid"}
+: ${postfix_procname:="%%PREFIX%%/libexec/postfix/master"}
+
+start_cmd=${name}_start
+stop_cmd=${name}_stop
+extra_commands="reload"
+reload_cmd="${name}_reload"
+
+pidfile=${postfix_pidfile}
+procname=${postfix_procname}
+
+postfix_start() {
+ %%PREFIX%%/sbin/postfix ${postfix_flags} start
+}
+
+postfix_stop() {
+ %%PREFIX%%/sbin/postfix ${postfix_flags} stop
+}
+
+postfix_reload() {
+ %%PREFIX%%/sbin/postfix ${postfix_flags} reload
+}
+
+run_rc_command "$1"
diff --git a/mail/postfix35/pkg-descr b/mail/postfix35/pkg-descr
new file mode 100644
index 000000000000..c4bc19eff3ae
--- /dev/null
+++ b/mail/postfix35/pkg-descr
@@ -0,0 +1,15 @@
+Postfix attempts to be fast, easy to administer, and secure, while at the same
+time being sendmail compatible enough to not upset existing users. Thus, the
+outside has a sendmail-ish flavor, but the inside is completely different.
+
+Some features:
+
+Connection cache for SMTP, DSN status notifications, IP version 6, Plug-in
+support for multiple SASL implementations (Cyrus, Dovecot), TLS encryption and
+authentication, Configurable status notification message text, Access control
+per client/sender/recipient/etc, Content filter (built-in, external before
+queue, external after queue), Berkeley DB database, LDAP database, MySQL
+database, PostgreSQL database, Maildir and mailbox format, Virtual domains,
+VERP envelope return addresses and others.
+
+WWW: http://www.postfix.org/
diff --git a/mail/postfix35/pkg-help b/mail/postfix35/pkg-help
new file mode 100644
index 000000000000..f28015a0b496
--- /dev/null
+++ b/mail/postfix35/pkg-help
@@ -0,0 +1,15 @@
+Readme SASL:
+
+Dovecot uses its own daemon process for authentication. Because there is no
+need to link extra libraries into Postfix, Dovecot SASL will be build into
+Postfix by default.
+
+Cyrus SASL is optional and will be the default if build with SASL=on
+
+To find out what SASL implementations are compiled into Postfix, use the
+following commands:
+
+ % postconf -a (SASL support in the SMTP server)
+ % postconf -A (SASL support in the SMTP+LMTP client)
+ % postconf smtpd_sasl_type (show default SASL)
+
diff --git a/mail/postfix35/pkg-plist b/mail/postfix35/pkg-plist
new file mode 100644
index 000000000000..09e304898f33
--- /dev/null
+++ b/mail/postfix35/pkg-plist
@@ -0,0 +1,190 @@
+bin/mailq
+bin/newaliases
+%%TEST%%bin/qmqp-sink
+%%TEST%%bin/qmqp-source
+bin/qshape
+bin/rmail
+%%TEST%%bin/smtp-sink
+%%TEST%%bin/smtp-source
+%%PFETC%%/LICENSE
+%%PFETC%%/TLS_LICENSE
+%%PFETC%%/bounce.cf.default
+%%PFETC%%/main.cf.default
+@sample %%PFETC%%/main.cf.sample
+@sample %%PFETC%%/master.cf.sample
+lib/postfix/libpostfix-dns.so
+lib/postfix/libpostfix-global.so
+lib/postfix/libpostfix-master.so
+lib/postfix/libpostfix-tls.so
+lib/postfix/libpostfix-util.so
+%%CDB%%lib/postfix/postfix-cdb.so
+%%LDAP%%lib/postfix/postfix-ldap.so
+%%LMDB%%lib/postfix/postfix-lmdb.so
+%%MYSQL%%lib/postfix/postfix-mysql.so
+%%PCRE%%lib/postfix/postfix-pcre.so
+%%PGSQL%%lib/postfix/postfix-pgsql.so
+%%SQLITE%%lib/postfix/postfix-sqlite.so
+libexec/postfix/anvil
+libexec/postfix/bounce
+libexec/postfix/cleanup
+libexec/postfix/discard
+libexec/postfix/dnsblog
+libexec/postfix/dynamicmaps.cf
+%%CDB%%libexec/postfix/dynamicmaps.cf.d/cdb.cf
+%%LDAP%%libexec/postfix/dynamicmaps.cf.d/ldap.cf
+%%LMDB%%libexec/postfix/dynamicmaps.cf.d/lmdb.cf
+%%MYSQL%%libexec/postfix/dynamicmaps.cf.d/mysql.cf
+%%PCRE%%libexec/postfix/dynamicmaps.cf.d/pcre.cf
+%%PGSQL%%libexec/postfix/dynamicmaps.cf.d/pgsql.cf
+%%SQLITE%%libexec/postfix/dynamicmaps.cf.d/sqlite.cf
+libexec/postfix/error
+libexec/postfix/flush
+libexec/postfix/lmtp
+libexec/postfix/local
+libexec/postfix/main.cf.proto
+libexec/postfix/makedefs.out
+libexec/postfix/master
+libexec/postfix/master.cf.proto
+libexec/postfix/nqmgr
+libexec/postfix/oqmgr
+libexec/postfix/pickup
+libexec/postfix/pipe
+libexec/postfix/post-install
+libexec/postfix/postfix-files
+%%CDB%%libexec/postfix/postfix-files.d/cdb-files
+%%LDAP%%libexec/postfix/postfix-files.d/ldap-files
+%%LMDB%%libexec/postfix/postfix-files.d/lmdb-files
+%%MYSQL%%libexec/postfix/postfix-files.d/mysql-files
+%%PCRE%%libexec/postfix/postfix-files.d/pcre-files
+%%PGSQL%%libexec/postfix/postfix-files.d/pgsql-files
+%%SQLITE%%libexec/postfix/postfix-files.d/sqlite-files
+libexec/postfix/postfix-script
+libexec/postfix/postfix-tls-script
+libexec/postfix/postfix-wrapper
+libexec/postfix/postlogd
+libexec/postfix/postmulti-script
+libexec/postfix/postscreen
+libexec/postfix/proxymap
+libexec/postfix/qmgr
+libexec/postfix/qmqpd
+libexec/postfix/scache
+libexec/postfix/showq
+libexec/postfix/smtp
+libexec/postfix/smtpd
+libexec/postfix/spawn
+libexec/postfix/tlsmgr
+libexec/postfix/tlsproxy
+libexec/postfix/trivial-rewrite
+libexec/postfix/verify
+libexec/postfix/virtual
+%%BMAN%%man/man1/mailq.1.gz
+%%BMAN%%man/man1/newaliases.1.gz
+%%BMAN%%man/man1/postalias.1.gz
+%%BMAN%%man/man1/postcat.1.gz
+%%BMAN%%man/man1/postconf.1.gz
+%%BMAN%%man/man1/postdrop.1.gz
+%%BMAN%%man/man1/postfix-tls.1.gz
+%%BMAN%%man/man1/postfix.1.gz
+%%BMAN%%man/man1/postkick.1.gz
+%%BMAN%%man/man1/postlock.1.gz
+%%BMAN%%man/man1/postlog.1.gz
+%%BMAN%%man/man1/postmap.1.gz
+%%BMAN%%man/man1/postmulti.1.gz
+%%BMAN%%man/man1/postqueue.1.gz
+%%BMAN%%man/man1/postsuper.1.gz
+%%BMAN%%man/man1/posttls-finger.1.gz
+%%TEST%%%%BMAN%%man/man1/qmqp-sink.1.gz
+%%TEST%%%%BMAN%%man/man1/qmqp-source.1.gz
+%%BMAN%%man/man1/qshape.1.gz
+%%BMAN%%man/man1/sendmail.1.gz
+%%TEST%%%%BMAN%%man/man1/smtp-sink.1.gz
+%%TEST%%%%BMAN%%man/man1/smtp-source.1.gz
+%%BMAN%%man/man5/access.5.gz
+%%BMAN%%man/man5/aliases.5.gz
+%%BMAN%%man/man5/body_checks.5.gz
+%%BMAN%%man/man5/bounce.5.gz
+%%BMAN%%man/man5/canonical.5.gz
+%%BMAN%%man/man5/cidr_table.5.gz
+%%BMAN%%man/man5/generic.5.gz
+%%BMAN%%man/man5/header_checks.5.gz
+%%BMAN%%man/man5/ldap_table.5.gz
+%%BMAN%%man/man5/lmdb_table.5.gz
+%%BMAN%%man/man5/master.5.gz
+%%BMAN%%man/man5/memcache_table.5.gz
+%%BMAN%%man/man5/mysql_table.5.gz
+%%BMAN%%man/man5/nisplus_table.5.gz
+%%BMAN%%man/man5/pcre_table.5.gz
+%%BMAN%%man/man5/pgsql_table.5.gz
+%%BMAN%%man/man5/postconf.5.gz
+%%BMAN%%man/man5/postfix-wrapper.5.gz
+%%BMAN%%man/man5/regexp_table.5.gz
+%%BMAN%%man/man5/relocated.5.gz
+%%BMAN%%man/man5/socketmap_table.5.gz
+%%BMAN%%man/man5/sqlite_table.5.gz
+%%BMAN%%man/man5/tcp_table.5.gz
+%%BMAN%%man/man5/transport.5.gz
+%%BMAN%%man/man5/virtual.5.gz
+%%BMAN%%man/man8/anvil.8.gz
+%%BMAN%%man/man8/bounce.8.gz
+%%BMAN%%man/man8/cleanup.8.gz
+%%BMAN%%man/man8/defer.8.gz
+%%BMAN%%man/man8/discard.8.gz
+%%BMAN%%man/man8/dnsblog.8.gz
+%%BMAN%%man/man8/error.8.gz
+%%BMAN%%man/man8/flush.8.gz
+%%BMAN%%man/man8/lmtp.8.gz
+%%BMAN%%man/man8/local.8.gz
+%%BMAN%%man/man8/master.8.gz
+%%BMAN%%man/man8/oqmgr.8.gz
+%%BMAN%%man/man8/pickup.8.gz
+%%BMAN%%man/man8/pipe.8.gz
+%%BMAN%%man/man8/postlogd.8.gz
+%%BMAN%%man/man8/postscreen.8.gz
+%%BMAN%%man/man8/proxymap.8.gz
+%%BMAN%%man/man8/qmgr.8.gz
+%%BMAN%%man/man8/qmqpd.8.gz
+%%BMAN%%man/man8/scache.8.gz
+%%BMAN%%man/man8/showq.8.gz
+%%BMAN%%man/man8/smtp.8.gz
+%%BMAN%%man/man8/smtpd.8.gz
+%%BMAN%%man/man8/spawn.8.gz
+%%BMAN%%man/man8/tlsmgr.8.gz
+%%BMAN%%man/man8/tlsproxy.8.gz
+%%BMAN%%man/man8/trace.8.gz
+%%BMAN%%man/man8/trivial-rewrite.8.gz
+%%BMAN%%man/man8/verify.8.gz
+%%BMAN%%man/man8/virtual.8.gz
+sbin/postalias
+sbin/postcat
+sbin/postconf
+@(,maildrop,2755) sbin/postdrop
+sbin/postfix
+sbin/postkick
+sbin/postlock
+sbin/postlog
+sbin/postmap
+sbin/postmulti
+@(,maildrop,2755) sbin/postqueue
+sbin/postsuper
+sbin/posttls-finger
+sbin/sendmail
+%%DATADIR%%/mailer.conf.postfix
+@dir libexec/postfix/dynamicmaps.cf.d
+@dir libexec/postfix/postfix-files.d
+@dir %%PFETC%%
+@dir(postfix,,700) /var/db/postfix
+@dir(postfix,,700) /var/spool/postfix/active
+@dir(postfix,,700) /var/spool/postfix/bounce
+@dir(postfix,,700) /var/spool/postfix/corrupt
+@dir(postfix,,700) /var/spool/postfix/defer
+@dir(postfix,,700) /var/spool/postfix/deferred
+@dir(postfix,,700) /var/spool/postfix/flush
+@dir(postfix,,700) /var/spool/postfix/hold
+@dir(postfix,,700) /var/spool/postfix/incoming
+@dir(postfix,maildrop,730) /var/spool/postfix/maildrop
+@dir(,postfix,755) /var/spool/postfix/pid
+@dir(postfix,,700) /var/spool/postfix/private
+@dir(postfix,maildrop,710) /var/spool/postfix/public
+@dir(postfix,,700) /var/spool/postfix/saved
+@dir(postfix,,700) /var/spool/postfix/trace
+@dir(,,755) /var/spool/postfix