From ef5869aea56485b4abbb7315162e900493b138fd Mon Sep 17 00:00:00 2001 From: Alan_Hicks Date: Tue, 11 May 2010 15:01:34 +0200 Subject: network/postfix: Initial import --- network/postfix/README | 37 ++++++ network/postfix/doinst.sh | 35 ++++++ network/postfix/postfix.SlackBuild | 245 +++++++++++++++++++++++++++++++++++++ network/postfix/postfix.info | 8 ++ network/postfix/rc.postfix | 59 +++++++++ network/postfix/slack-desc | 11 ++ 6 files changed, 395 insertions(+) create mode 100644 network/postfix/README create mode 100644 network/postfix/doinst.sh create mode 100644 network/postfix/postfix.SlackBuild create mode 100644 network/postfix/postfix.info create mode 100644 network/postfix/rc.postfix create mode 100644 network/postfix/slack-desc diff --git a/network/postfix/README b/network/postfix/README new file mode 100644 index 000000000000..4ff3c1a399f8 --- /dev/null +++ b/network/postfix/README @@ -0,0 +1,37 @@ +What is Postfix? It is Wietse Venema's mailer that started life as an +alternative to the widely-used Sendmail program. + +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. + +This script builds postfix with support for Dovecot SASL but does not +include any support for Cyrus-SASL. If you need to enable support for +Cyrus see SASL_README in the source code. You can also enable support +for MySQL and Postgres. This script should find support for BerkleyDB +and PCRE automagically, so no special options are required. Further, +this script builds postfix with TLS support and requires that openssl +be installed. openssl-solibs is not enough. You can find a SlackBuild +script for Dovecot at http://www.slackbuilds.org/ but you do not need +to install it to use this package without SASL. + +A couple things to remember about postfix: + - this script doesn't add the necessary postfix user and postdrop + group, but exits if they do not exist. Add these before running + this script. They should have no special permission and postfix + should NOT be a member of the postdrop group. The script *WILL* + offer some sane defaults that won't conflict with the canonical + users and groups, and shouldn't conflict with any other scripts + downloaded from slackbuilds.org that require their own uids and + gids + - many of the utilities in postfix have multiple manpages such as + postconf(5) and postconf(8). Use man -k to find them. + - subscribe to the postfix-users mailing list + +If you are upgrading a previous release of postfix, be sure to update +all references to earlier versions main.cf. + +If you have any questions or comments about this script, you are free +to contact me via e-mail at . Thanks! + diff --git a/network/postfix/doinst.sh b/network/postfix/doinst.sh new file mode 100644 index 000000000000..b1b16d9f02e6 --- /dev/null +++ b/network/postfix/doinst.sh @@ -0,0 +1,35 @@ +#!/bin/sh + +config() { + NEW="$1" + OLD="`dirname $NEW`/`basename $NEW .new`" + # If there's no config file by that name, mv it over: + if [ ! -r $OLD ]; then + mv $NEW $OLD + elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then # toss the redundant copy + rm $NEW + fi + # Otherwise, we leave the .new copy for the admin to consider... +} + +config etc/postfix/access.new +config etc/postfix/aliases.new +config etc/postfix/canonical.new +config etc/postfix/generic.new +config etc/postfix/header_checks.new +config etc/postfix/main.cf.default.new +config etc/postfix/main.cf.new +config etc/postfix/makedefs.out.new +config etc/postfix/master.cf.new +config etc/postfix/postfix-files.new +config etc/postfix/relocated.new +config etc/postfix/transport.new +config etc/postfix/virtual.new +config etc/rc.d/rc.postfix.new + +# This is an incompatability with the sendmail package +( cd usr/lib; rm -f sendmail ) +( cd usr/lib; ln -s /usr/sbin/sendmail sendmail) + +# This will set the permissions on all postfix files correctly +postfix set-permissions diff --git a/network/postfix/postfix.SlackBuild b/network/postfix/postfix.SlackBuild new file mode 100644 index 000000000000..1202678173bb --- /dev/null +++ b/network/postfix/postfix.SlackBuild @@ -0,0 +1,245 @@ +#!/bin/bash +# Copyright 2006, Alan Hicks, Lizella, GA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +set -e + +PRGNAM="postfix" +VERSION="2.4.1" +ARCH=${ARCH:-i486} +BUILD=${BUILD:-1} +TAG=${TAG:-_SBo} +CWD=$(pwd) +TMP=${TMP:-/tmp/SBo} +PKG="$TMP/pkg-$PRGNAM" +OUTPUT=${OUTPUT:-/tmp} + +if [ "$ARCH" = "i486" ]; then + SLKCFLAGS="-O2 -march=i486 -mtune=i686" +elif [ "$ARCH" = "i686" ]; then + SLKCFLAGS="-O2 -march=i686 -mtune=i686" +fi + +CFLAGS=${CFLAGS:-$SLKCFLAGS} + +config_directory=/etc/postfix +daemon_directory=/usr/libexec/postfix +command_directory=/usr/sbin +queue_directory=/var/spool/postfix +sendmail_path=/usr/sbin/sendmail +newaliases_path=/usr/bin/newaliases +mailq_path=/usr/bin/mailq +html_directory=/usr/doc/$PRGNAM-$VERSION/html +manpage_directory=/usr/man +readme_directory=/usr/doc/$PRGNAM-$VERSION/README_FILES +mail_owner=postfix +setgid_group=postdrop + +# Bail if user or group isn't valid on your system +if ! grep ^postfix: /etc/passwd 2>&1 > /dev/null; then + +cat << EOF + + Must have a postfix user to run this script + Otherwise your permissions will be FUBAR + + # groupadd -g 200 postfix + # useradd -u 200 -d /dev/null -s /bin/false -g postfix postfix + +EOF + + exit +elif ! grep ^postdrop: /etc/group 2>&1 > /dev/null; then + +cat << EOF + + Must have a postdrop group to run this script + Otherwise your permissions will be FUBAR + + # groupadd -g 201 postdrop + +EOF + + exit +fi + +# Alan Hicks, 2006.11.10 +# Phase this out. Replace with chroot postfix set-permissions +# in doinst.sh. +fix_perms() { + +config_directory=$PKG/etc/postfix +daemon_directory=$PKG/usr/libexec/postfix +command_directory=$PKG/usr/sbin +queue_directory=$PKG/var/spool/postfix +sendmail_path=$PKG/usr/sbin/sendmail +newaliases_path=$PKG/usr/bin/newaliases +mailq_path=$PKG/usr/bin/mailq +html_directory=$PKG/usr/doc/$PRGNAM-$VERSION/html +manpage_directory=$PKG/usr/man +readme_directory=$PKG/usr/doc/$PRGNAM-$VERSION/README_FILES +mail_owner=postfix +setgid_group=postdrop + +# Any line beginning with # is a comment. +if echo $line | grep -v "^#" 2>&1 > /dev/null; then + + FILE="$(echo $line | awk -F: '{ print $1 }')" + FILE_PREFIX="$(echo $FILE | cut -f 1 -d '/')" + FILE_SUFFIX="$(echo $FILE | cut -f 2- -d '/')" + TYPE="$(echo $line | awk -F: '{ print $2 }')" + OWNER="$(echo $line | awk -F: '{ print $3 }')" + GROUP="$(echo $line | awk -F: '{ print $4 }')" + PERMS="$(echo $line | awk -F: '{ print $5 }')" + + # skip this iteration if the line we're fed is no good + if [ "$TYPE" = "h" ]; then + continue + elif [ "$TYPE" = "l" ]; then + continue + elif [ "$FILE_PREFIX" = "\$sample_directory" ]; then + continue + fi + + # Tag the actual groups + if [ "$GROUP" = "-" ]; then + GROUP=root + elif [ "$GROUP" = "\$setgid_group" ]; then + GROUP="$setgid_group" + fi + + # Tag the postfix owner + if [ "$OWNER" = "\$mail_owner" ]; then + OWNER="$mail_owner" + fi + + if [ "$FILE_SUFFIX" = "$FILE_PREFIX" ]; then + FILE_SUFFIX="" + fi + + if [ "$FILE_PREFIX" = "\$config_directory" ]; then + chown $OWNER:$GROUP $config_directory/$FILE_SUFFIX + chmod $PERMS $config_directory/$FILE_SUFFIX + elif [ "$FILE_PREFIX" = "\$daemon_directory" ]; then + chown $OWNER:$GROUP $daemon_directory/$FILE_SUFFIX + chmod $PERMS $daemon_directory/$FILE_SUFFIX + elif [ "$FILE_PREFIX" = "\$command_directory" ]; then + chown $OWNER:$GROUP $command_directory/$FILE_SUFFIX + chmod $PERMS $command_directory/$FILE_SUFFIX + elif [ "$FILE_PREFIX" = "\$queue_directory" ]; then + chown $OWNER:$GROUP $queue_directory/$FILE_SUFFIX + chmod $PERMS $queue_directory/$FILE_SUFFIX + elif [ "$FILE_PREFIX" = "\$html_directory" ]; then + chown $OWNER:$GROUP $html_directory/$FILE_SUFFIX + chmod $PERMS $html_directory/$FILE_SUFFIX + elif [ "$FILE_PREFIX" = "\$manpage_directory" ]; then + chown $OWNER:$GROUP $manpage_directory/$FILE_SUFFIX + chmod $PERMS $manpage_directory/$FILE_SUFFIX + elif [ "$FILE_PREFIX" = "\$readme_directory" ]; then + chown $OWNER:$GROUP $readme_directory/$FILE_SUFFIX + chmod $PERMS $readme_directory/$FILE_SUFFIX + elif [ "$FILE_PREFIX" = "\$sendmail_path" ]; then + chown $OWNER:$GROUP $sendmail_path + chmod $PERMS $sendmail_path + else + echo "NOT FOUND!!! : $FILE_PREFIX" + fi + +fi + +} + + +rm -fr $PKG $TMP/$PRGNAM-$VERSION +mkdir -p $TMP $PKG $OUTPUT +cd $TMP +tar xvzf $CWD/$PRGNAM-$VERSION.tar.gz +cd $PRGNAM-$VERSION + +# TLS, and SASL support +# Postfix unfortunately does not use a handy ./configure script so you +# must generate the makefiles using (what else?) "make makefiles". The +# following includes support for TLS and SASL. It should automatically +# find PCRE and DB3 support. The docs have information for adding +# additional support such as MySQL or LDAP. + +make makefiles \ + CCARGS='-DUSE_SASL_AUTH -DDEF_SERVER_SASL_TYPE=\"dovecot\" -DUSE_TLS' \ + AUXLIBS="-lssl -lcrypto" + +make + +make non-interactive-package \ + install_root=$PKG \ + tempdir=$TMP/$PRGNAM-temp \ + config_directory=$config_directory \ + daemon_directory=$daemon_directory \ + command_directory=$command_directory \ + queue_directory=$queue_directory \ + sendmail_path=$sendmail_path \ + newaliases_path=$newaliases \ + mailq_path=$mailq_path \ + mail_owner=$mail_owner \ + setgid_group=$setgid_group \ + html_directory=$html_directory \ + manpage_directory=$manpage_directory \ + readme_directory=$readme_directory + +mkdir -p $PKG/install $PKG/etc/rc.d $PKG/usr/doc/$PRGNAM-$VERSION + +# Documentation mangling. :^) +cp -a AAAREADME COMPATIBILITY COPYRIGHT HISTORY IPv6-ChangeLog LICENSE \ + PORTING RELEASE_NOTES TLS_ACKNOWLEDGEMENTS TLS_CHANGES TLS_LICENSE \ + TLS_TODO US_PATENT_6321267 \ + $PKG/usr/doc/$PRGNAM-$VERSION +cat $CWD/postfix.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/postfix.SlackBuild + +install -m 0755 $CWD/rc.postfix $PKG/etc/rc.d/rc.postfix.new +cat $CWD/slack-desc > $PKG/install/slack-desc +cat $CWD/doinst.sh > $PKG/install/doinst.sh + +# Strip binaries and libraries +find $PKG -type f | (while read LINE; do +if file $LINE | egrep "ELF.*(executable|shared object).*not stripped" &> /dev/null; then + strip $LINE +fi +done) + +gzip -9 $PKG/usr/man/*/* + +cd $PKG/etc/postfix +# Since we gzip the manpages, let's fix the postfix-files to reflect that +# so it won't throw errors during post-install +grep manpage postfix-files | while read line; +do MANPAGE="$(echo "$line" | cut -d: -f1)" + sed -i s#"$MANPAGE"#"$MANPAGE.gz"# postfix-files ; +done + +# Create .new files +for i in \ + access aliases canonical generic header_checks main.cf main.cf.default \ + makedefs.out master.cf postfix-files relocated transport virtual ; +do \ + mv $i $i.new ; +done + +# Alright, let's make it. +cd $PKG +/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.tgz diff --git a/network/postfix/postfix.info b/network/postfix/postfix.info new file mode 100644 index 000000000000..536d73983b57 --- /dev/null +++ b/network/postfix/postfix.info @@ -0,0 +1,8 @@ +PRGNAM="postfix" +VERSION="2.4.1" +HOMEPAGE="http://www.postfix.org/" +DOWNLOAD="http://www.subneural.net/postfix-release/official/postfix-2.4.1.tar.gz" +MD5SUM="dbe8af1e7c7a7755352218cba7a5ba11" +MAINTAINER="Alan_Hicks" +EMAIL="alan@lizella.net" +APPROVED="Alan_Hicks,rworkman" diff --git a/network/postfix/rc.postfix b/network/postfix/rc.postfix new file mode 100644 index 000000000000..4aa3a6c35dcc --- /dev/null +++ b/network/postfix/rc.postfix @@ -0,0 +1,59 @@ +#!/bin/bash +# Copyright 2006, Alan Hicks, Lizella, GA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +postfix_start() +{ + postfix start +} + +postfix_stop() +{ + postfix stop +} + +postfix_restart() +{ + postfix_stop + postfix_start +} + +postfix_reload() +{ + postfix reload +} + +case $1 in +'start') + postfix_start + ;; +'stop') + postfix_stop + ;; +'restart') + postfix_restart + ;; +'reload') + postfix_reload + ;; +*) + echo "usage $0 start|stop|restart|reload" +esac diff --git a/network/postfix/slack-desc b/network/postfix/slack-desc new file mode 100644 index 000000000000..16c8f075c5b2 --- /dev/null +++ b/network/postfix/slack-desc @@ -0,0 +1,11 @@ +postfix: What is Postfix? It is Wietse Venema's mailer that started life as an +postfix: alternative to the widely-used Sendmail program. +postfix: +postfix: Postfix attempts to be fast, easy to administer, and secure, while at +postfix: the same time being sendmail compatible enough to not upset existing +postfix: users. Thus, the outside has a sendmail-ish flavor, but the inside is +postfix: completely different. +postfix: +postfix: Packaging script written by Alan Hicks +postfix: and the SlackBuilds.org Team http://www.slackbuilds.org +postfix: -- cgit v1.2.3