From e8742fac72237e98c50465c7025734ef5dd30fb4 Mon Sep 17 00:00:00 2001 From: "A. Wilcox" Date: Tue, 22 Jan 2019 05:59:20 +0000 Subject: user/postfix: new package --- user/postfix/APKBUILD | 92 ++++++++++++++++++++++++++++++ user/postfix/honour-config-directory.patch | 11 ++++ user/postfix/postfix.initd | 85 +++++++++++++++++++++++++++ user/postfix/postfix.pre-install | 5 ++ 4 files changed, 193 insertions(+) create mode 100644 user/postfix/APKBUILD create mode 100644 user/postfix/honour-config-directory.patch create mode 100644 user/postfix/postfix.initd create mode 100644 user/postfix/postfix.pre-install diff --git a/user/postfix/APKBUILD b/user/postfix/APKBUILD new file mode 100644 index 000000000..a48fcc7bd --- /dev/null +++ b/user/postfix/APKBUILD @@ -0,0 +1,92 @@ +# Contributor: A. Wilcox +# Maintainer: Dan Theisen +pkgname=postfix +pkgver=3.3.2 +pkgrel=0 +pkgdesc="Mail server (MTA) that is Sendmail outside and Qmail inside" +url="http://www.postfix.org/" +arch="all" +options="!check suid" # No test suite. +license="EPL-2.0 AND IPL-1.0" +depends="" +makedepends="cyrus-sasl-dev db-dev icu-dev linux-pam-dev lmdb-dev openldap-dev + openssl-dev pcre-dev perl postgresql-dev sqlite-dev" +install="$pkgname.pre-install" +subpackages="$pkgname-doc $pkgname-ldap $pkgname-lmdb $pkgname-pgsql + $pkgname-sqlite" +pkgusers="postfix" +pkggroups="postfix postdrop" +source="http://www.namesdir.com/mirrors/postfix-release/official/postfix-$pkgver.tar.gz + honour-config-directory.patch + postfix.initd + " + +build() { + cd "$builddir" + local CCARGS="-DHAS_LDAP -DHAS_LMDB -DHAS_PCRE -DHAS_PGSQL -I$(pg_config --includedir) -DHAS_SQLITE -DNO_NIS -DUSE_CYRUS_SASL -DUSE_SASL_AUTH -I/usr/include/sasl -DUSE_LDAP_SASL -DUSE_TLS -Wno-comment" + local AUXLIBS="-lpam $(pcre-config --libs) -lsasl2 -lssl -lcrypto" + make DEBUG="" shared=yes dynamicmaps=yes pie=yes \ + config_directory="/etc/postfix" \ + daemon_directory="/usr/libexec/postfix" \ + meta_directory="/etc/postfix" \ + shlib_directory="/usr/lib/postfix" \ + CC="gcc" OPT="$CFLAGS" CCARGS="$CCARGS" AUXLIBS="$AUXLIBS" \ + AUXLIBS_LDAP="-lldap -llber" AUXLIBS_LMDB="-llmdb" \ + AUXLIBS_PCRE="$(pcre-config --libs)" \ + AUXLIBS_PGSQL="-L$(pg_config --libdir) -lpq" \ + AUXLIBS_SQLITE="$(pkgconf --libs sqlite3)" \ + makefiles +} + +package() { + cd "$builddir" + make install_root="$pkgdir" manpage_directory="/usr/share/man" \ + command_directory="/usr/sbin" mailq_path="/usr/bin/mailq" \ + newaliases_path="/usr/bin/newaliases" \ + sendmail_path="/usr/sbin/sendmail" \ + non-interactive-package + + mkdir -p "$pkgdir"/etc/apk/protected_paths.d + cat > "$pkgdir"/etc/apk/protected_paths.d/postfix.list <<-EOF + !var/lib/postfix + !var/spool/postfix + EOF + + chown -R postfix:postfix \ + "$pkgdir"/var/lib/postfix \ + "$pkgdir"/var/spool/postfix + chmod 0750 "$pkgdir"/var/lib/postfix + chgrp postdrop "$pkgdir"/usr/sbin/postdrop "$pkgdir"/usr/sbin/postqueue + chmod 2755 "$pkgdir"/usr/sbin/postdrop "$pkgdir"/usr/sbin/postqueue +} + +_database() { + pkgdesc="Postfix mapping plugin for storing users in $2" + + install -d "$subpkgdir"/etc/postfix/dynamicmaps.cf.d + grep $1 "$pkgdir"/etc/postfix/dynamicmaps.cf > \ + "$subpkgdir"/etc/postfix/dynamicmaps.cf.d/$1 + sed -i "/$1/d" "$pkgdir"/etc/postfix/dynamicmaps.cf + install -d "$subpkgdir"/usr/lib/postfix + mv "$pkgdir"/usr/lib/postfix/postfix-$1.so "$subpkgdir"/usr/lib/postfix/ +} + +ldap() { + _database "ldap" "LDAP" +} + +lmdb() { + _database "lmdb" "LMDB" +} + +pgsql() { + _database "pgsql" "PostgreSQL" +} + +sqlite() { + _database "sqlite" "SQLite 3" +} + +sha512sums="df67eb978751900d357597def16f744dae990f5cc4e48af8dca57f84b0140e05416712727c1760b8f557ed3564cd593620756561b0a6f31db4b54d928e15293f postfix-3.3.2.tar.gz +63ea7fe461fca1306088e9984acfab6ab3e919dafa2b606d43fbca472969e6ec232800071f939f5a4482c01c6d7b53a86de9e7e893ab94f4cb135d16ff5763cc honour-config-directory.patch +2ad1b053bbb51d4f480dbf5a01252e8e99a82ec14a75ff49336b2b190ea55bc02400542b109fa0cc4ebfe6b42eaabbc45f70f2ea581f1eb9c4189c439b825592 postfix.initd" diff --git a/user/postfix/honour-config-directory.patch b/user/postfix/honour-config-directory.patch new file mode 100644 index 000000000..a32c588ee --- /dev/null +++ b/user/postfix/honour-config-directory.patch @@ -0,0 +1,11 @@ +--- postfix-3.3.2/postfix-install ++++ postfix-3.3.2/postfix-install +@@ -832,7 +832,7 @@ + # the wrong place when Postfix is being upgraded. + + case "$mail_version" in +-"") mail_version="`bin/postconf -dhx mail_version`" || exit 1 ++"") mail_version="`bin/postconf -c $CONFIG_DIRECTORY -dhx mail_version`" || exit 1 + esac + + # Undo MAIL_VERSION expansion at the end of a parameter value. If diff --git a/user/postfix/postfix.initd b/user/postfix/postfix.initd new file mode 100644 index 000000000..9a1c1e21d --- /dev/null +++ b/user/postfix/postfix.initd @@ -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/user/postfix/postfix.pre-install b/user/postfix/postfix.pre-install new file mode 100644 index 000000000..73ebdba3f --- /dev/null +++ b/user/postfix/postfix.pre-install @@ -0,0 +1,5 @@ +#!/bin/sh + +groupadd -g 207 -r postfix +groupadd -g 208 -r postdrop +useradd -u 207 -c "Postfix Mail Server" -M -N -G postfix,mail -r -s /sbin/nologin postfix -- cgit v1.2.3-60-g2f50