commit:     b6022183f33e511260a2e2fed5afed88ca5dd448
Author:     Wolfgang Mueller <vehk <AT> vehk <DOT> de>
AuthorDate: Sun Jun 18 18:05:11 2017 +0000
Commit:     Anthony G. Basile <blueness <AT> gentoo <DOT> org>
CommitDate: Sun Jun 18 20:37:45 2017 +0000
URL:        https://gitweb.gentoo.org/proj/musl.git/commit/?id=b6022183

mail-mta/postfix: file descriptor passing for musl

 mail-mta/postfix/Manifest                          |  11 +
 mail-mta/postfix/files/postfix-2.11.1-db6.patch    |  12 +
 .../postfix/files/postfix-libressl-runtime.patch   | 102 +++++++
 mail-mta/postfix/files/postfix-libressl.patch      |  17 ++
 mail-mta/postfix/files/postfix-musl-fd.patch       |  11 +
 mail-mta/postfix/files/postfix.rc6.2.7             |  85 ++++++
 mail-mta/postfix/files/postfix.service             |  26 ++
 mail-mta/postfix/files/smtp.pass                   |   2 +
 mail-mta/postfix/files/smtp.sasl                   |   2 +
 mail-mta/postfix/metadata.xml                      |  24 ++
 mail-mta/postfix/postfix-3.1.6.ebuild              | 309 +++++++++++++++++++++
 11 files changed, 601 insertions(+)

diff --git a/mail-mta/postfix/Manifest b/mail-mta/postfix/Manifest
new file mode 100644
index 0000000..c575d87
--- /dev/null
+++ b/mail-mta/postfix/Manifest
@@ -0,0 +1,11 @@
+AUX postfix-2.11.1-db6.patch 699 SHA256 
90356024954a624306f2f5c8859e6a2a69965f83ca5e0d3d1005c9205bf41181 SHA512 
9a6f00ae2d31b732be929ce647c222871704db02c09af659e260cf1a995bbde7f2045c59b9c33520070f427d4a2b377f6193bf6f9971087bf8df7f0c95d6d824
 WHIRLPOOL 
025a95e18942daf7d8a84a6ab9d17f14800aa34fc29bb5a8694f6667d1215553fe33375ef7e831937362b4b5129f6957ef3d8fd781508b554bfe841971524e15
+AUX postfix-libressl-runtime.patch 3603 SHA256 
7bcbb79f5ae01a02c1b438e27c7d982fcd198e77506b82041fd306f1025154c8 SHA512 
cdafeff6b47659a6c2ba242550cfe1733cfff2e9d2b03970695e68170d62b3b55b6846b59023f501a2c5b0bb5818b8c0fb8eda63953edcbf35d3bca010d6d88a
 WHIRLPOOL 
0abcdedde85cda3a400dcbca38038a389027f7d726d9fdb0eb67018f5c879b353537f67d53b6cee42bc53ab8757ddca783b6d369ef23750e4a3997e960e0556a
+AUX postfix-libressl.patch 659 SHA256 
4228bb29d3f07cabc2a10c72824cf83953e2e6b62aa504caafc6fcb5f0cf89d1 SHA512 
fe8aba872f557257c44d14be0eb624414d8dbe172c33e08d8edec5a06c52f0332d7384c9ce588faa49c6c766a1ffc1a6455dee8ef6ee6008f18fa2150407d15e
 WHIRLPOOL 
a48659134912bc675a6c6ab1087373d1255434b2e3e82d842ca1ce1722446b5c3f9a4a288433946994bede968f45660b17b4931e0ba729a1e5b7036cc30d522c
+AUX postfix-musl-fd.patch 394 SHA256 
c79880a8dcdb51c7454ca95fa9e3f4ffb14caeb1c08fdf2090fed7666dc3b3b7 SHA512 
5e76c4dedc4d322e20bf4e1cbfe3fd4d4074fbca5a1f317328d8f2bbff34a807ce0cc446c15793a491fdfc20f6b26fabfc3d626de310f63249453455981c087c
 WHIRLPOOL 
67e23567cfa174da066b4d581bc9724c16543e3292869db5220cd518371484462953e194071b144c488d66692047736396854dfba895feefaa901896d81f57e6
+AUX postfix.rc6.2.7 2107 SHA256 
34cb4ef8067b9001005931c30ab87be41f47c20ef1185a3afbc86d3d6f01996e SHA512 
2ad1b053bbb51d4f480dbf5a01252e8e99a82ec14a75ff49336b2b190ea55bc02400542b109fa0cc4ebfe6b42eaabbc45f70f2ea581f1eb9c4189c439b825592
 WHIRLPOOL 
8be6f87fa85bee404c0b6cc185773b60a1a8abb36ac6a30a9d73cd819f95e0b7af63cce6956f6d11e171c40e6dbdec30c00f55b5bd617b30fda2acd958d72cfe
+AUX postfix.service 662 SHA256 
60e79c0b189d48f341313af55e345014cd4ae5ddf3ed04b2881149f54d0c4e9b SHA512 
04b475040b153f488a9358567ff9ee2eb8f263c619dadc23c837d17c19106041296e3652bcaded2be0c7c8b9eee7fd5f2ad55bed3e7f9b3a4bf9655f4762d563
 WHIRLPOOL 
2861f2b0418c8b7598e8a24f5131fedb9e5d5b8cb280b5dd7f5f620834738cf5cd895aad7cb813ee3f0107a658a2e89edd6b8eade541b57897777157a5410464
+AUX smtp.pass 29 SHA256 
21e672c3c46410d713b359d79126961a12d54ceab309fd2c94c5b4f531206167 SHA512 
a8a940099a77ea0547004daf5392a6efc0cd643f10072803d65e37763012464ad25b1b925ae9e32bffb3c3e8a5d4b2d3bb5619a174d58fdc4ea5d4090db0d365
 WHIRLPOOL 
912d0d1b91a88d1e079f8efdab4cc231a0497907c83ad07f22bb90c5479fcf59bc28694a808c1f23dc67fec8fab5e03f28f0fa40106801dabd2da06e0210fb57
+AUX smtp.sasl 42 SHA256 
41637ac35a85827e193564b7dbcaa94eafd0206af8ebcd41bcfc48a314416376 SHA512 
a48e2bd173c4443dd2c389f6973a541dbcba4223b52b42b409a68d934a7fc82a98d4027267befcd5db6ec628cce6a9dffdf044e6fbd774b6e748f07f4106db47
 WHIRLPOOL 
0d3132798fbfaa047a3be5b8b1f0a99c2fa22514cdef4908ca7f670210789f432247b4668e063bfe581ad17a4f5ba180e31c5c1e5ed9a0a9ca6417dd14ebd067
+DIST postfix-3.1.6.tar.gz 4341308 SHA256 
e5eb005fd133c6a32ca03e796e0192945eb877be8eb727f30d25547c997c5aa6 SHA512 
646317393d33fcec99bef7f3dc142a847591927bc034c0c71e578baedad1875040cfeabdaa3436312f60485cb69bbdb31197aa9e7526a457946d7749b781099b
 WHIRLPOOL 
66a087da3b33353a22176b9162fe0679f8ff35e48ae693a3315d52232e662638d48b8827648c0b0368e018161e1ade6a671773c109208ded9659cca26b1b5ea1
+EBUILD postfix-3.1.6.ebuild 8715 SHA256 
a62b0608b640d0d55973499ad9d75d0e35f917f863b0cf3f485eca07fdf09a08 SHA512 
f20f82d88e8967221ef598c7550e118f4a4b7bd9e5f8bb2b3545cd3302fc7474c82790fe192884060fe8d3eefe7c41f2f33a3f99ce8f41c09aed543969b054a7
 WHIRLPOOL 
0fb71563fb592b33887963d8d77ce2fc000fe78d25dcc731d21c07dc63d501fd97db8e0ac59afc80a582e10341ab2a57a52e08a95df373f8bf0319f469674e87
+MISC metadata.xml 909 SHA256 
b9443044f47f7c0cfebe2bb4869b598ae59a54abec2f9f2b0326536283ed9315 SHA512 
e01265765b76f0c2e28fa8049912c6c2f65a1aa8cfcbceda79c5fd7336ebc2626703d19e964239b50ad9b62a106f7a8432bf3ead2562190b2f49487360bbc4d8
 WHIRLPOOL 
b49c42350b193b5fa2c67a5d7b0aacda999bca8b0bb9daac674c601682017f4196b651994f1fef4cc2a1fa0e4bb52a1329ac913ec2d1239404745c6faa0be0f5

diff --git a/mail-mta/postfix/files/postfix-2.11.1-db6.patch 
b/mail-mta/postfix/files/postfix-2.11.1-db6.patch
new file mode 100644
index 0000000..5f5cad4
--- /dev/null
+++ b/mail-mta/postfix/files/postfix-2.11.1-db6.patch
@@ -0,0 +1,12 @@
+--- src/util/dict_db.c 2012-01-25 00:41:08.000000000 +0000
++++ src/util/dict_db.c 2014-06-25 18:56:10.000000000 +0000
+@@ -693,7 +688,8 @@
+       msg_fatal("set DB cache size %d: %m", dict_db_cache_size);
+     if (type == DB_HASH && db->set_h_nelem(db, DICT_DB_NELM) != 0)
+       msg_fatal("set DB hash element count %d: %m", DICT_DB_NELM);
+-#if DB_VERSION_MAJOR == 5 || (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR > 0)
++#if DB_VERSION_MAJOR == 6 || DB_VERSION_MAJOR == 5 || \
++      (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR > 0)
+     if ((errno = db->open(db, 0, db_path, 0, type, db_flags, 0644)) != 0)
+       FREE_RETURN(dict_surrogate(class, path, open_flags, dict_flags,
+                                  "open database %s: %m", db_path));

diff --git a/mail-mta/postfix/files/postfix-libressl-runtime.patch 
b/mail-mta/postfix/files/postfix-libressl-runtime.patch
new file mode 100644
index 0000000..8140886
--- /dev/null
+++ b/mail-mta/postfix/files/postfix-libressl-runtime.patch
@@ -0,0 +1,102 @@
+--- src/posttls-finger/posttls-finger.c.orig   2016-08-27 20:27:50 UTC
++++ src/posttls-finger/posttls-finger.c
+@@ -1511,7 +1511,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 */
+ 
+@@ -1958,7 +1959,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
+ 
+--- src/tls/tls_client.c.orig  2016-08-27 20:27:50 UTC
++++ src/tls/tls_client.c
+@@ -299,7 +299,7 @@ TLS_APPL_STATE *tls_client_init(const TL
+      */
+     tls_check_version();
+ 
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
+ 
+     /*
+      * Initialize the OpenSSL library by the book! To start with, we must
+@@ -441,7 +441,7 @@ TLS_APPL_STATE *tls_client_init(const TL
+     /*
+      * 2015-12-05: Ephemeral RSA removed from OpenSSL 1.1.0-dev
+      */
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
+ 
+     /*
+      * According to the OpenSSL documentation, temporary RSA key is needed
+--- src/tls/tls_dane.c.orig    2016-08-27 20:27:50 UTC
++++ src/tls/tls_dane.c
+@@ -2163,7 +2163,7 @@ static SSL_CTX *ctx_init(const char *CAf
+     tls_param_init();
+     tls_check_version();
+ 
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
+     SSL_load_error_strings();
+     SSL_library_init();
+ #endif
+--- src/tls/tls_rsa.c.orig     2016-01-03 14:49:51 UTC
++++ src/tls/tls_rsa.c
+@@ -57,7 +57,7 @@
+  /*
+   * 2015-12-05: Ephemeral RSA removed from OpenSSL 1.1.0-dev
+   */
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
+ 
+ /* tls_tmp_rsa_cb - call-back to generate ephemeral RSA key */
+ 
+@@ -109,7 +109,7 @@ int     main(int unused_argc, char *cons
+     /*
+      * 2015-12-05: Ephemeral RSA removed from OpenSSL 1.1.0-dev
+      */
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
+     RSA    *rsa;
+ 
+     msg_vstream_init(argv[0], VSTREAM_ERR);
+--- src/tls/tls_server.c.orig  2016-08-27 20:27:50 UTC
++++ src/tls/tls_server.c
+@@ -174,7 +174,7 @@ static const char server_session_id_cont
+ #endif                                        /* OPENSSL_VERSION_NUMBER */
+ 
+  /* OpenSSL 1.1.0 bitrot */
+-#if OPENSSL_VERSION_NUMBER >= 0x10100000L
++#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER)
+ typedef const unsigned char *session_id_t;
+ 
+ #else
+@@ -377,7 +377,7 @@ TLS_APPL_STATE *tls_server_init(const TL
+      */
+     tls_check_version();
+ 
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
+ 
+     /*
+      * Initialize the OpenSSL library by the book! To start with, we must
+@@ -588,7 +588,7 @@ TLS_APPL_STATE *tls_server_init(const TL
+     /*
+      * 2015-12-05: Ephemeral RSA removed from OpenSSL 1.1.0-dev
+      */
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
+ 
+     /*
+      * According to OpenSSL documentation, a temporary RSA key is needed when

diff --git a/mail-mta/postfix/files/postfix-libressl.patch 
b/mail-mta/postfix/files/postfix-libressl.patch
new file mode 100644
index 0000000..ce047b7
--- /dev/null
+++ b/mail-mta/postfix/files/postfix-libressl.patch
@@ -0,0 +1,17 @@
+OpenBSD patch at:
+http://cvsweb.openbsd.org/cgi-bin/cvsweb/ports/mail/postfix/snapshot/patches/patch-src_tls_tls_h
+$OpenBSD: patch-src_tls_tls_h,v 1.2 2016/02/25 09:39:49 sthen Exp $
+
+Fix building with LibreSSL
+
+--- src/tls/tls.h.orig Sat Feb  6 15:09:41 2016
++++ src/tls/tls.h      Sun Feb 14 19:54:38 2016
+@@ -89,7 +89,7 @@ extern const char *str_tls_level(int);
+ #endif
+ 
+  /* Backwards compatibility with OpenSSL < 1.1.0 */
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
+ #define OpenSSL_version_num SSLeay
+ #define OpenSSL_version SSLeay_version
+ #define OPENSSL_VERSION SSLEAY_VERSION

diff --git a/mail-mta/postfix/files/postfix-musl-fd.patch 
b/mail-mta/postfix/files/postfix-musl-fd.patch
new file mode 100644
index 0000000..b48b16f
--- /dev/null
+++ b/mail-mta/postfix/files/postfix-musl-fd.patch
@@ -0,0 +1,11 @@
+--- src/util/sys_defs.h 2017-06-05 02:46:02.016419848 +0000
++++ src/util/sys_defs.h        2017-06-05 02:46:37.275600185 +0000
+@@ -813,7 +813,7 @@
+ #define KERNEL_VERSION(a,b,c) (LINUX_VERSION_CODE + 1)
+ #endif
+ #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,2,0)) \
+-      || (__GLIBC__ < 2)
++      || (defined(__GLIBC__) && (__GLIBC__ < 2))
+ #define CANT_USE_SEND_RECV_MSG
+ #define DEF_SMTP_CACHE_DEMAND 0
+ #else

diff --git a/mail-mta/postfix/files/postfix.rc6.2.7 
b/mail-mta/postfix/files/postfix.rc6.2.7
new file mode 100644
index 0000000..9a1c1e2
--- /dev/null
+++ b/mail-mta/postfix/files/postfix.rc6.2.7
@@ -0,0 +1,85 @@
+#!/sbin/openrc-run
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+extra_started_commands="reload abort flush"
+
+description_reload="Re-read configuration files. Running processes terminate 
at their earliest convenience."
+description_abort="Stop the Postfix mail system abruptly. Running processes 
are signaled to stop immediately."
+description_flush="Force delivery: attempt to deliver every message in the 
deferred mail queue."
+
+# Please read http://www.postfix.org/MULTI_INSTANCE_README.html for multi 
instance support
+CONF_DIR="/etc/postfix"
+CONF_OPT="${SVCNAME##*.}"
+if [ -n ${CONF_OPT} -a ${SVCNAME} != "postfix" ]; then
+       CONF_DIR="${CONF_DIR}.${CONF_OPT}"
+fi
+if [ "${CONF_DIR}" = "/etc/postfix" ]; then
+       CONF_PARAM=""
+       CONF_MESSAGE=""
+else
+       CONF_PARAM="-c ${CONF_DIR}"
+       CONF_MESSAGE="(${CONF_DIR})"
+fi
+
+depend() {
+       use logger dns ypbind amavisd antivirus postfix_greylist net saslauthd
+       if [ "${SVCNAME}" = "postfix" ]; then
+               provide mta
+       fi
+}
+
+start() {
+       if [ ! -z "${CONF_PARAM}" ]; then
+               einfo "Please consider updating your config for postmulti 
support."
+       fi
+       ebegin "Starting postfix ${CONF_MESSAGE}"
+       if [ ! -d ${CONF_DIR} ]; then
+               eend 1 "${CONF_DIR} does not exist"
+               return 1
+       fi
+       /usr/sbin/postfix ${CONF_PARAM} start >/dev/null 2>&1
+       eend $?
+}
+
+stop() {
+       ebegin "Stopping postfix ${CONF_MESSAGE}"
+       /usr/sbin/postfix ${CONF_PARAM} stop >/dev/null 2>&1
+       eend
+}
+
+status() {
+       local _retval
+       einfon ""
+       /usr/sbin/postfix ${CONF_PARAM} status
+       _retval=$?
+       if [ x${_retval} = 'x0' ]; then
+               mark_service_started "${SVCNAME}"
+               eend 0
+       else
+               mark_service_stopped "${SVCNAME}"
+               eend 3
+       fi
+}
+
+reload() {
+       ebegin "Reloading postfix ${CONF_MESSAGE}"
+       /usr/sbin/postfix ${CONF_PARAM} reload >/dev/null 2>&1
+       eend $?
+}
+
+abort() {
+       ebegin "Aborting postfix ${CONF_MESSAGE}"
+
+       if service_started "${SVCNAME}"; then
+               mark_service_stopped "${SVCNAME}"
+       fi
+       /usr/sbin/postfix ${CONF_PARAM} abort >/dev/null 2>&1
+       eend $?
+}
+
+flush() {
+       ebegin "Flushing postfix ${CONF_MESSAGE}"
+       /usr/sbin/postfix ${CONF_PARAM} flush >/dev/null 2>&1
+       eend $?
+}

diff --git a/mail-mta/postfix/files/postfix.service 
b/mail-mta/postfix/files/postfix.service
new file mode 100644
index 0000000..db585b3
--- /dev/null
+++ b/mail-mta/postfix/files/postfix.service
@@ -0,0 +1,26 @@
+[Unit]
+Description=Postfix Mail Transport Agent
+After=network.target
+
+[Service]
+Type=forking
+ExecStartPre=-/usr/bin/newaliases
+ExecStart=/usr/sbin/postfix start
+ExecStop=/usr/sbin/postfix stop
+ExecReload=/usr/sbin/postfix reload
+# Hardening
+PrivateTmp=yes
+PrivateDevices=yes
+ProtectSystem=full
+ReadWritePaths=-/etc/mail/aliases.db
+CapabilityBoundingSet=~ CAP_NET_ADMIN CAP_SYS_ADMIN CAP_SYS_BOOT CAP_SYS_MODULE
+MemoryDenyWriteExecute=true
+ProtectKernelModules=true
+ProtectKernelTunables=true
+ProtectControlGroups=true
+RestrictAddressFamilies=AF_INET AF_INET6 AF_NETLINK AF_UNIX
+RestrictNamespaces=true
+RestrictRealtime=true
+
+[Install]
+WantedBy=multi-user.target

diff --git a/mail-mta/postfix/files/smtp.pass b/mail-mta/postfix/files/smtp.pass
new file mode 100644
index 0000000..f9b5120
--- /dev/null
+++ b/mail-mta/postfix/files/smtp.pass
@@ -0,0 +1,2 @@
+#
+# remotehost user:password

diff --git a/mail-mta/postfix/files/smtp.sasl b/mail-mta/postfix/files/smtp.sasl
new file mode 100644
index 0000000..82f2945
--- /dev/null
+++ b/mail-mta/postfix/files/smtp.sasl
@@ -0,0 +1,2 @@
+pwcheck_method:saslauthd
+mech_list: PLAIN

diff --git a/mail-mta/postfix/metadata.xml b/mail-mta/postfix/metadata.xml
new file mode 100644
index 0000000..0842375
--- /dev/null
+++ b/mail-mta/postfix/metadata.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd";>
+<pkgmetadata>
+       <maintainer type="project">
+               <email>[email protected]</email>
+               <name>Net-Mail</name>
+       </maintainer>
+       <use>
+               <flag name="dovecot-sasl">Enable <pkg>net-mail/dovecot</pkg> 
protocol
+                       version 1 (server only) SASL implementation</flag>
+               <flag name="eai">Add support for SMTPUTF8</flag>
+               <flag name="ldap-bind">Add support for binding to LDAP backend
+                       using <pkg>dev-libs/cyrus-sasl</pkg></flag>
+               <flag name="memcached">Add support for using 
<pkg>net-misc/memcached</pkg>
+                   for lookup tables</flag>
+               <flag name="lmdb">Add support for using <pkg>dev-db/lmdb</pkg>
+                   for lookup tables</flag>
+               <flag name="vda">Add support for virtual delivery agent quota
+                       enforcing</flag>
+       </use>
+       <upstream>
+               <remote-id type="sourceforge">vda</remote-id>
+       </upstream>
+</pkgmetadata>

diff --git a/mail-mta/postfix/postfix-3.1.6.ebuild 
b/mail-mta/postfix/postfix-3.1.6.ebuild
new file mode 100644
index 0000000..10ed98a
--- /dev/null
+++ b/mail-mta/postfix/postfix-3.1.6.ebuild
@@ -0,0 +1,309 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+inherit flag-o-matic pam systemd toolchain-funcs user
+
+MY_PV="${PV/_rc/-RC}"
+MY_SRC="${PN}-${MY_PV}"
+MY_URI="ftp://ftp.porcupine.org/mirrors/postfix-release/official";
+RC_VER="2.7"
+
+DESCRIPTION="A fast and secure drop-in replacement for sendmail"
+HOMEPAGE="http://www.postfix.org/";
+SRC_URI="${MY_URI}/${MY_SRC}.tar.gz"
+
+LICENSE="IBM"
+SLOT="0"
+KEYWORDS="~alpha amd64 ~arm ~hppa ~ia64 ~ppc ~ppc64 ~sh ~sparc ~x86 ~x86-fbsd"
+IUSE="+berkdb cdb doc dovecot-sasl +eai hardened ldap ldap-bind libressl lmdb 
memcached mbox mysql nis pam postgres sasl selinux sqlite ssl"
+
+DEPEND=">=dev-libs/libpcre-3.4
+       dev-lang/perl
+       berkdb? ( >=sys-libs/db-3.2:* )
+       cdb? ( || ( >=dev-db/tinycdb-0.76 >=dev-db/cdb-0.75-r4 ) )
+       eai? ( dev-libs/icu:= )
+       ldap? ( net-nds/openldap )
+       ldap-bind? ( net-nds/openldap[sasl] )
+       lmdb? ( >=dev-db/lmdb-0.9.11 )
+       mysql? ( virtual/mysql )
+       pam? ( virtual/pam )
+       postgres? ( dev-db/postgresql:* )
+       sasl? (  >=dev-libs/cyrus-sasl-2 )
+       sqlite? ( dev-db/sqlite:3 )
+       ssl? (
+               !libressl? ( dev-libs/openssl:0 )
+               libressl? ( dev-libs/libressl )
+       )"
+
+RDEPEND="${DEPEND}
+       dovecot-sasl? ( net-mail/dovecot )
+       memcached? ( net-misc/memcached )
+       net-mail/mailbase
+       !mail-mta/courier
+       !mail-mta/esmtp
+       !mail-mta/exim
+       !mail-mta/mini-qmail
+       !mail-mta/msmtp[mta]
+       !mail-mta/netqmail
+       !mail-mta/nullmailer
+       !mail-mta/qmail-ldap
+       !mail-mta/sendmail
+       !mail-mta/opensmtpd
+       !<mail-mta/ssmtp-2.64-r2
+       !>=mail-mta/ssmtp-2.64-r2[mta]
+       !net-mail/fastforward
+       selinux? ( sec-policy/selinux-postfix )"
+
+REQUIRED_USE="ldap-bind? ( ldap sasl )"
+
+S="${WORKDIR}/${MY_SRC}"
+
+pkg_setup() {
+       # Add postfix, postdrop user/group (bug #77565)
+       enewgroup postfix 207
+       enewgroup postdrop 208
+       enewuser postfix 207 -1 /var/spool/postfix postfix,mail
+}
+
+src_prepare() {
+       default
+       sed -i -e "/^#define ALIAS_DB_MAP/s|:/etc/aliases|:/etc/mail/aliases|" \
+               src/util/sys_defs.h || die "sed failed"
+       # change default paths to better comply with portage standard paths
+       sed -i -e "s:/usr/local/:/usr/:g" conf/master.cf || die "sed failed"
+       eapply -p0 "${FILESDIR}/${PN}-musl-fd.patch"
+       eapply -p0 "${FILESDIR}/${PN}-libressl.patch"
+       eapply -p0 "${FILESDIR}/${PN}-libressl-runtime.patch"
+}
+
+src_configure() {
+       for name in CDB LDAP LMDB MYSQL PCRE PGSQL SDBM SQLITE
+       do
+               local AUXLIBS_${name}=""
+       done
+
+       # Make sure LDFLAGS get passed down to the executables.
+       local mycc="-DHAS_PCRE" mylibs="${LDFLAGS} -ldl"
+       AUXLIBS_PCRE="$(pcre-config --libs)"
+
+       use pam && mylibs="${mylibs} -lpam"
+
+       if use ldap; then
+               mycc="${mycc} -DHAS_LDAP"
+               AUXLIBS_LDAP="-lldap -llber"
+       fi
+
+       if use mysql; then
+               mycc="${mycc} -DHAS_MYSQL $(mysql_config --include)"
+               AUXLIBS_MYSQL="$(mysql_config --libs)"
+       fi
+
+       if use postgres; then
+               mycc="${mycc} -DHAS_PGSQL -I$(pg_config --includedir)"
+               AUXLIBS_PGSQL="-L$(pg_config --libdir) -lpq"
+       fi
+
+       if use sqlite; then
+               mycc="${mycc} -DHAS_SQLITE"
+               AUXLIBS_SQLITE="-lsqlite3 -lpthread"
+       fi
+
+       if use ssl; then
+               mycc="${mycc} -DUSE_TLS"
+               mylibs="${mylibs} -lssl -lcrypto"
+       fi
+
+       if use lmdb; then
+               mycc="${mycc} -DHAS_LMDB"
+               AUXLIBS_LMDB="-llmdb -lpthread"
+       fi
+
+       if ! use eai; then
+               mycc="${mycc} -DNO_EAI"
+       fi
+
+       # broken. and "in other words, not supported" by upstream.
+       # Use inet_protocols setting in main.cf
+       #if ! use ipv6; then
+       #       mycc="${mycc} -DNO_IPV6"
+       #fi
+
+       if use sasl; then
+               if use dovecot-sasl; then
+                       # Set dovecot as default.
+                       mycc="${mycc} -DDEF_SASL_SERVER=\\\"dovecot\\\""
+               fi
+               if use ldap-bind; then
+                       mycc="${mycc} -DUSE_LDAP_SASL"
+               fi
+               mycc="${mycc} -DUSE_SASL_AUTH -DUSE_CYRUS_SASL 
-I/usr/include/sasl"
+               mylibs="${mylibs} -lsasl2"
+       elif use dovecot-sasl; then
+               mycc="${mycc} -DUSE_SASL_AUTH 
-DDEF_SERVER_SASL_TYPE=\\\"dovecot\\\""
+       fi
+
+       if ! use nis; then
+               mycc="${mycc} -DNO_NIS"
+       fi
+
+       if ! use berkdb; then
+               mycc="${mycc} -DNO_DB"
+               if use cdb; then
+                       # change default hash format from Berkeley DB to cdb
+                       mycc="${mycc} -DDEF_DB_TYPE=\\\"cdb\\\""
+               fi
+       fi
+
+       if use cdb; then
+               mycc="${mycc} -DHAS_CDB -I/usr/include/cdb"
+               # Tinycdb is preferred.
+               if has_version dev-db/tinycdb ; then
+                       einfo "Building with dev-db/tinycdb"
+                       AUXLIBS_CDB="-lcdb"
+               else
+                       einfo "Building with dev-db/cdb"
+                       CDB_PATH="/usr/$(get_libdir)"
+                       for i in cdb.a alloc.a buffer.a unix.a byte.a ; do
+                               AUXLIBS_CDB="${AUXLIBS_CDB} ${CDB_PATH}/${i}"
+                       done
+               fi
+       fi
+
+       # Robin H. Johnson <[email protected]> 17/Nov/2006
+       # Fix because infra boxes hit 2Gb .db files that fail a 32-bit fstat 
signed check.
+       mycc="${mycc} -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE 
-D_LARGEFILE64_SOURCE"
+       filter-lfs-flags
+
+       # Workaround for bug #76512
+       if use hardened; then
+               [[ "$(gcc-version)" == "3.4" ]] && replace-flags -O? -Os
+       fi
+
+       # Remove annoying C++ comment style warnings - bug #378099
+       append-flags -Wno-comment
+
+       sed -i -e "/^RANLIB/s/ranlib/$(tc-getRANLIB)/g" "${S}"/makedefs
+       sed -i -e "/^AR/s/ar/$(tc-getAR)/g" "${S}"/makedefs
+
+       emake makefiles shared=yes dynamicmaps=no pie=yes \
+               shlib_directory="/usr/$(get_libdir)/postfix/MAIL_VERSION" \
+               DEBUG="" CC="$(tc-getCC)" OPT="${CFLAGS}" CCARGS="${mycc}" 
AUXLIBS="${mylibs}" \
+               AUXLIBS_CDB="${AUXLIBS_CDB}" AUXLIBS_LDAP="${AUXLIBS_LDAP}" \
+               AUXLIBS_LMDB="${AUXLIBS_LMDB}" AUXLIBS_MYSQL="${AUXLIBS_MYSQL}" 
\
+               AUXLIBS_PCRE="${AUXLIBS_PCRE}" AUXLIBS_PGSQL="${AUXLIBS_PGSQL}" 
\
+               AUXLIBS_SQLITE="${AUXLIBS_SQLITE}"
+}
+
+src_install () {
+       local myconf
+       use doc && myconf="readme_directory=\"/usr/share/doc/${PF}/readme\" \
+               html_directory=\"/usr/share/doc/${PF}/html\""
+
+       LD_LIBRARY_PATH="${S}/lib" \
+       /bin/sh postfix-install \
+               -non-interactive \
+               install_root="${D}" \
+               config_directory="/etc/postfix" \
+               manpage_directory="/usr/share/man" \
+               command_directory="/usr/sbin" \
+               mailq_path="/usr/bin/mailq" \
+               newaliases_path="/usr/bin/newaliases" \
+               sendmail_path="/usr/sbin/sendmail" \
+               ${myconf} \
+               || die "postfix-install failed"
+
+       # Fix spool removal on upgrade
+       rm -Rf "${D}"/var
+       keepdir /var/spool/postfix
+
+       # Install rmail for UUCP, closes bug #19127
+       dobin auxiliary/rmail/rmail
+
+       # Provide another link for legacy FSH
+       dosym /usr/sbin/sendmail /usr/$(get_libdir)/sendmail
+
+       # Install qshape and posttls-finger
+       dobin auxiliary/qshape/qshape.pl
+       doman man/man1/qshape.1
+       dobin bin/posttls-finger
+       doman man/man1/posttls-finger.1
+
+       # Performance tuning tools and their manuals
+       dosbin bin/smtp-{source,sink} bin/qmqp-{source,sink}
+       doman man/man1/smtp-{source,sink}.1 man/man1/qmqp-{source,sink}.1
+
+       # Set proper permissions on required files/directories
+       dodir /var/lib/postfix
+       keepdir /var/lib/postfix
+       fowners -R postfix:postfix /var/lib/postfix
+       fperms 0750 /var/lib/postfix
+       fowners root:postdrop /usr/sbin/post{drop,queue}
+       fperms 02711 /usr/sbin/post{drop,queue}
+
+       keepdir /etc/postfix
+       if use mbox; then
+               mypostconf="mail_spool_directory=/var/spool/mail"
+       else
+               mypostconf="home_mailbox=.maildir/"
+       fi
+       LD_LIBRARY_PATH="${S}/lib" \
+       "${D}"/usr/sbin/postconf -c "${D}"/etc/postfix \
+               -e ${mypostconf} || die "postconf failed"
+
+       insinto /etc/postfix
+       newins "${FILESDIR}"/smtp.pass saslpass
+       fperms 600 /etc/postfix/saslpass
+
+       newinitd "${FILESDIR}"/postfix.rc6.${RC_VER} postfix
+       # do not start mysql/postgres unnecessarily - bug #359913
+       use mysql || sed -i -e "s/mysql //" "${D}/etc/init.d/postfix"
+       use postgres || sed -i -e "s/postgresql //" "${D}/etc/init.d/postfix"
+
+       dodoc *README COMPATIBILITY HISTORY PORTING RELEASE_NOTES*
+       use doc && mv "${S}"/examples "${D}"/usr/share/doc/${PF}/
+
+       pamd_mimic_system smtp auth account
+
+       if use sasl; then
+               insinto /etc/sasl2
+               newins "${FILESDIR}"/smtp.sasl smtpd.conf
+       fi
+
+       # header files
+       insinto /usr/include/postfix
+       doins include/*.h
+
+       # Keep config_dir clean
+       rm -f "${D}"/etc/postfix/{*LICENSE,access,aliases,canonical,generic}
+       rm -f "${D}"/etc/postfix/{header_checks,relocated,transport,virtual}
+
+       if has_version mail-mta/postfix; then
+               # let the sysadmin decide when to change the compatibility_level
+               sed -i -e /^compatibility_level/"s/^/#/" 
"${D}"/etc/postfix/main.cf || die
+       fi
+
+       systemd_dounit "${FILESDIR}/${PN}.service"
+}
+
+pkg_postinst() {
+       if [[ ! -e /etc/mail/aliases.db ]] ; then
+               ewarn
+               ewarn "You must edit /etc/mail/aliases to suit your needs"
+               ewarn "and then run /usr/bin/newaliases. Postfix will not"
+               ewarn "work correctly without it."
+               ewarn
+       fi
+
+       # configure tls
+       if use ssl ; then
+               if "${EROOT}"/usr/sbin/postfix tls all-default-client; then
+                       elog "To configure client side TLS settings:"
+                       elog "${EROOT}"usr/sbin/postfix tls enable-client
+               fi
+               if "${EROOT}"/usr/sbin/postfix tls all-default-server; then
+                       elog "To configure server side TLS settings:"
+                       elog "${EROOT}"usr/sbin/postfix tls enable-server
+               fi
+       fi
+}

Reply via email to