diff options
Diffstat (limited to 'network/postfix/postfix.SlackBuild')
-rw-r--r-- | network/postfix/postfix.SlackBuild | 245 |
1 files changed, 245 insertions, 0 deletions
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 |