#!/bin/bash # # postfix.SlackBuild is free software; you can redistribute it and/or modify it under the # terms of the GNU General Public License as published by the Free Software # Foundation; either version 2 of the License, or any later version. # # postfix.SlackBuild is distributed in the hope that it will be useful, but WITHOUT ANY # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR # A PARTICULAR PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along with # this program; if not, write to the Free Software Foundation, Inc., 59 Temple # Place - Suite 330, Boston, MA 02111-1307, USA # # default settings PACKAGE="postfix" PACKAGE_EXT="gz" VERSION=${VERSION:=3.4.8} BUILD=${BUILD:=1} if [ -f ~/.slackbuildrc ]; then . ~/.slackbuildrc elif [ -f ../../runtime/slackbuildrc ]; then . ../../runtime/slackbuildrc fi check_required SRC="$PACKAGE-$VERSION.tar.$PACKAGE_EXT" URL="http://cdn.postfix.johnriley.me/mirrors/postfix-release/official/$SRC" get_source $SRC $URL unpack_source $SRC $PACKAGE-$VERSION # Fix postfix-script so that it won't think a symlink in /etc/postfix is # group writable. Only warn about regular files there. zcat $CWD/postfix.only.warn.regular.files.diff.gz | patch -p1 --verbose || exit 1 # Make the postfix startup message look more like the other boot notices: zcat $CWD/postfix.script.starting.message.diff.gz | patch -p1 --verbose || exit 1 # Extra CCARGS can be: -DHAS_LDAP -DHAS_MYSQL -I/usr/include/mysql # Extra AUXLIBS can be: -lldap -llber -lmysqlclient -lz # Build with SASL support SASLARGS="-DUSE_SASL_AUTH -I/usr/include/sasl -DUSE_CYRUS_SASL" SASLLIBS="-L/usr/lib${LIBDIRSUFFIX}/sasl2 -lsasl2" # Note: this enables both server SASL types (Cyrus and Dovecot) as well as # client SASL with Cyrus. See SASL_README if you wish to customize this. # For example, you might not wish to link against Cyrus SASL if not using # client SASL. For Dovecot (server) SASL only, comment SASLLIBS, and set: # SASLARGS="-DUSE_SASL_AUTH" # Build with TLS support, see TLS_README TLSARGS="-DUSE_TLS" TLSLIBS="-lssl -lcrypto" # Build with LDAP client support, see LDAP_README LDAPARGS="-DHAS_LDAP" # MySQL database support, see MYSQL_README MYSQLARGS="-I/usr/include/mysql -DHAS_MYSQL" # PCRE (perl-compatible regular expressions) support, see PCRE_README PCREARGS="-DHAS_PCRE $( pcre-config --cflags )" # SQLite3 database support, see SQLITE_README SQLITEARGS="-DHAS_SQLITE" # Finally, DBARGS lumps it all together: DBARGS="$LDAPARGS $MYSQLARGS $PCREARGS $SQLITEARGS" ### ADDITIONAL MAP TYPE PLUGINS # # Those who have installed other map types not included in Slackware could # add support as follows: # # * AUXLIBS_CDB for CDB support, see /usr/doc/postfix/readme/CDB_README # * AUXLIBS_LMDB for LMDB support, see /usr/doc/postfix/readme/LMDB_README # * AUXLIBS_PGSQL for PostgreSQL support, see /usr/doc/postfix/readme/PGSQL_README # * AUXLIBS_SDBM for SDBM support, see /usr/doc/postfix/readme/SDBM_README # # Note that each of these additional map types will require additions to # the CCARGS variable. Typically this would be done by adding what is # needed to $DBARGS. ### CHANGING BUILT-IN DOCUMENTATION PATH SETTINGS # # If we try to use postfix-$VERSION in any of these paths, we'll get a compile # failure: "error: too many decimal points in number" # So we're pretty much forced to leave things as postfix expects them. PATHARGS="'-DDEF_HTML_DIR=\"/usr/doc/postfix/html\"' \ '-DDEF_MANPAGE_DIR=\"/usr/man\"' \ '-DDEF_README_DIR=\"/usr/doc/postfix/readme\"'" make $NUMJOBS makefiles dynamicmaps=yes pie=yes shared=yes \ shlib_directory=/usr/lib${LIBDIRSUFFIX}/postfix/MAIL_VERSION \ CCARGS="$TLSARGS $SASLARGS $DBARGS $PATHARGS" \ AUXLIBS="$TLSLIBS $SASLLIBS" \ AUXLIBS_LDAP="-lldap -llber" \ AUXLIBS_MYSQL="-L/usr/lib${LIBDIRSUFFIX}/mysql -lmysqlclient -lz -lm" \ AUXLIBS_PCRE="$( pcre-config --libs )" \ AUXLIBS_SQLITE="-lsqlite3 -lpthread" \ OPT="$SLKCFLAGS" DEBUG="" || exit 1 # We put our documentation files in version-specific directories, but we'll # use a symlink to provide the compiled-in path in /usr/doc/postfix/. mkdir -p $PKG/usr/doc/$PACKAGE-$VERSION ln -s $PACKAGE-$VERSION $PKG/usr/doc/$PACKAGE make non-interactive-package \ install_root=$PKG \ tempdir=$TMP/$PACKAGE-temp \ sample_directory=no || exit 1 rm -f $PKG/etc/postfix/{TLS_,}LICENSE # Add greylist.pl per postfix documentation: cp -a examples/smtpd-policy/greylist.pl $PKG/usr/libexec/postfix chown root:root $PKG/usr/libexec/postfix/greylist.pl chmod 755 $PKG/usr/libexec/postfix/greylist.pl # Move configuration files to filename.new: find $PKG/etc/postfix -type f ! -name "*.default" ! -name "*.proto" ! -name "*.out" \ ! -name "postfix-files" -exec mv {} {}.new \; # The aliases file is expected to be in /etc, so let's put it there: mv $PKG/etc/postfix/aliases.new $PKG/etc/aliases.new # Leave a symlink in /etc/postfix to point out this location: ( cd $PKG/etc/postfix ; ln -sf ../aliases . ) sed -i $PKG/etc/postfix/postfix-files \ -e 's#\($manpage_directory/man[158]/.\+\.[158]\)\(:.*\)#\1.gz\2#' \ -e '/$config_directory\/LICENSE:f:root:-:644:1/ d' \ -e '/$config_directory\/TLS_LICENSE:f:root:-:644:1/ d' mkdir -p $DOCS cp -a AAAREADME COMPATIBILITY COPYRIGHT HISTORY IPv6-ChangeLog LICENSE examples \ PORTING RELEASE_NOTES* TLS_* US_PATENT_6321267 implementation-notes \ $DOCS cd $PKG/var/spool/postfix chown 91 active bounce corrupt defer deferred flush hold incoming private public maildrop trace saved chgrp 92 public maildrop cd - chgrp 92 $PKG/usr/sbin/postqueue $PKG/usr/sbin/postdrop chmod g+s $PKG/usr/sbin/postqueue $PKG/usr/sbin/postdrop chown 91:91 $PKG/var/lib/postfix mkdir -p $PKG/etc/rc.d cp $CWD/rc.sendmail $PKG/etc/rc.d/rc.sendmail.new chmod 755 $PKG/etc/rc.d/rc.sendmail.new # Some programs are hardcoded to use /usr/lib/sendmail ( mkdir $PKG/usr/lib cd $PKG/usr/lib ln -s /usr/sbin/sendmail sendmail ) fixup_package $PKG set +u # Clean up the extra stuff: if [ "$1" = "--cleanup" ]; then rm -rf $TMP/$PACKAGE-$VERSION rm -rf $PKG fi