network/postfix: Initial import

This commit is contained in:
Alan_Hicks 2010-05-11 15:01:34 +02:00 committed by Alan Hicks
parent 2f53017ebc
commit ef5869aea5
6 changed files with 395 additions and 0 deletions

37
network/postfix/README Normal file
View File

@ -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 <alan@lizella.net>. Thanks!

35
network/postfix/doinst.sh Normal file
View File

@ -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

View File

@ -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

View File

@ -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"

View File

@ -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

View File

@ -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 <alan@lizella.net>
postfix: and the SlackBuilds.org Team http://www.slackbuilds.org
postfix: