network/postfix: Initial import
This commit is contained in:
parent
2f53017ebc
commit
ef5869aea5
|
@ -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!
|
||||
|
|
@ -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
|
|
@ -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
|
|
@ -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"
|
|
@ -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
|
|
@ -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:
|
Loading…
Reference in New Issue