310 lines
10 KiB
Plaintext
310 lines
10 KiB
Plaintext
# Maintainer: David Runge <dvzrv@archlinux.org>
|
|
# Contributor: Gaetan Bisson <bisson@archlinux.org>
|
|
# Contributor: Jeff Brodnax <tullyarcher@bellsouth.net>
|
|
# Contributor: Paul Mattal <paul@archlinux.org>
|
|
|
|
pkgbase=postfix
|
|
pkgname=(
|
|
postfix
|
|
postfix-{cdb,ldap,lmdb,mongodb,mysql,pcre,pgsql,sqlite}
|
|
)
|
|
pkgver=3.9.0
|
|
pkgrel=2
|
|
pkgdesc="Fast, easy to administer, secure mail server"
|
|
arch=(x86_64)
|
|
url="https://www.postfix.org/"
|
|
license=(
|
|
'EPL-2.0 OR IPL-1.0'
|
|
BSD-4-Clause-UC
|
|
)
|
|
depends=(glibc)
|
|
makedepends=(
|
|
icu
|
|
libldap
|
|
libnsl
|
|
libsasl
|
|
lmdb
|
|
mariadb-libs
|
|
mongo-c-driver
|
|
openssl
|
|
pcre2
|
|
postgresql-libs
|
|
sqlite
|
|
tinycdb
|
|
)
|
|
source=(
|
|
https://de.postfix.org/ftpmirror/official/$pkgbase-$pkgver.tar.gz
|
|
$pkgbase-$pkgver.tar.gz.sig::https://de.postfix.org/ftpmirror/official/$pkgbase-$pkgver.tar.gz.gpg2
|
|
$pkgbase-3.5.8-main_defaults.patch
|
|
$pkgbase-3.9.0-mail_params.patch
|
|
$pkgbase.service
|
|
$pkgbase.sysusers
|
|
$pkgbase.tmpfiles
|
|
)
|
|
sha512sums=('46faaf529a6d2edc5ea747ee0d73a028f7061a923da0ea4b1e1828d935b15f5782d83f7a8472e7c74b45ea0e96666c871efd352934bead28a88ddd3561ade324'
|
|
'SKIP'
|
|
'4630bb84206e0534723f50e4fb0e6f83a47cfd33187801eede052962d332b2754af8761a8d2b81f52cba9d07a7a0335eef06e22347ec7bc69b86f561685bd575'
|
|
'6ff26a9e2330c6a930b15953c1dd7cc730318e80bef47667c0271ddb8132e64005e0d075e84d9d7a970eed789694093626ebd9053b9499333c6d526b57b0ea4c'
|
|
'27f54747ad480d65b560c9dbc97e12c6353e4bceca0ffe3e358e31de56db0ad79928164c9f8790c73a9f791daa378253d2ee29b5a766661778553ec889b2cf97'
|
|
'a7f15970f613ae7b98ce1b84ca0a6034ce3cc7b2b9ce7160dad9731f740fb762f4a54f44acceb5f06f8744fa9e952b088086af8a69da388a600b742a3cda37f2'
|
|
'd08574a6acd595fc146513c92dc1bb341c3432d67de1e93ab73a7ce60e385dd34f3a55e3d3d7aec5f358ac4aae260f028599ac47650ebc663cea3043a760a7bc')
|
|
b2sums=('e07a525d9cbea43d3ed11f3d672452cf94f88ca7bbaf3c3254bf5be4ef675a1797a5fff2444c0db60c6eb53e43734a388a91faed72bb2fb4e3e5a353535602b0'
|
|
'SKIP'
|
|
'e101c31ff9b68ec025183cbb199109d5bc94135d247c06fa903b97ccea6d3255b39b2780f3d1e3848ea68109ba91cdde5886d0a18d547b2f41d9643d2ac5bf5f'
|
|
'e41d07edb0d2098deda9bf5c5e3a9c3f34f858579b7aedb72a3488828e1def993c8557fa477eab6df59bb9c6175984e1bac1213d29cef710c5a46b3b3faff015'
|
|
'02dd441cf6e4a7c2bc0de876f020b0784d811f77a5c6102dd075d67b07158dbc53c8b4d62bc8035283d4f349008574b1c3fac03f4519d56ffd809cb5bcfb7bea'
|
|
'db58b7deb24cea16fb84f56680f0000683f72e11a95039969878e3819607aad5e65af9d9f50007e7710609065c0e3ebb9b30c1d929162b74eca5e74434d82cf1'
|
|
'de31693cea5f452a9c8c0d1cf5210a6e67c0176f8b1a4d74106f2e803911569e9fdbb2301b3b5dc7ad6a6da285026b1a3ed3de52117d216b030cf0d92348909d')
|
|
validpgpkeys=('622C7C012254C186677469C50C0B590E80CA15A7') # Wietse Venema <wietse@porcupine.org>
|
|
|
|
_pick() {
|
|
local p="$1" f d; shift
|
|
for f; do
|
|
d="$srcdir/$p/${f#$pkgdir/}"
|
|
mkdir -p "$(dirname "$d")"
|
|
mv "$f" "$d"
|
|
rmdir -p --ignore-fail-on-non-empty "$(dirname "$f")"
|
|
done
|
|
}
|
|
|
|
prepare() {
|
|
# add distribution defaults to main.cf (alias_maps and alias_database)
|
|
patch -Np1 -d $pkgbase-$pkgver -i ../$pkgbase-3.5.8-main_defaults.patch
|
|
patch -Np1 -d $pkgbase-$pkgver -i ../$pkgbase-3.9.0-mail_params.patch
|
|
}
|
|
|
|
build() {
|
|
local ccargs=(
|
|
'-fPIC' '-fcommon'
|
|
'-DUSE_SASL_AUTH'
|
|
'-DUSE_CYRUS_SASL' '-I/usr/include/sasl'
|
|
'-DHAS_LDAP'
|
|
'-DUSE_LDAP_SASL'
|
|
'-DHAS_LMDB'
|
|
'-DUSE_TLS'
|
|
'-DHAS_MONGODB' '-I/usr/include/libmongoc-1.0' '-I/usr/include/libbson-1.0'
|
|
'-DHAS_MYSQL' '-I/usr/include/mysql'
|
|
'-DHAS_PCRE=2'
|
|
'-DHAS_PGSQL' '-I/usr/include/postgresql'
|
|
'-DHAS_SQLITE'
|
|
'-DHAS_CDB'
|
|
'-DNO_DB'
|
|
'-DDEF_DB_TYPE=\"lmdb\"'
|
|
'-DDEF_COMMAND_DIR=\"/usr/bin\"'
|
|
'-DDEF_DAEMON_DIR=\"/usr/lib/postfix/bin\"'
|
|
'-DDEF_SENDMAIL_PATH=\"/usr/bin/sendmail\"'
|
|
'-DDEF_README_DIR=\"/usr/share/doc/postfix\"'
|
|
'-DDEF_MANPAGE_DIR=\"/usr/share/man\"'
|
|
)
|
|
# NOTE: descriptions of options in makedefs
|
|
local make_options=(
|
|
DEBUG=''
|
|
pie=yes
|
|
shared=yes
|
|
dynamicmaps=yes
|
|
CCARGS="${ccargs[*]}"
|
|
AUXLIBS="$(pkgconf --libs openssl libsasl2) -lnsl"
|
|
AUXLIBS_LDAP='-lldap -llber'
|
|
AUXLIBS_LMDB="$(pkgconf --libs lmdb)"
|
|
AUXLIBS_PCRE="$(pcre2-config --libs8)"
|
|
AUXLIBS_MONGODB="$(pkgconf --libs libmongoc-1.0)"
|
|
AUXLIBS_MYSQL="$(pkgconf --libs mariadb)"
|
|
AUXLIBS_PGSQL="$(pkgconf --libs libpq)"
|
|
AUXLIBS_SQLITE="$(pkgconf --libs sqlite3)"
|
|
AUXLIBS_CDB='-lcdb'
|
|
SHLIB_RPATH="-Wl,-rpath,/usr/lib/postfix $LDFLAGS"
|
|
OPT="$CFLAGS $CPPFLAGS $LDFLAGS"
|
|
)
|
|
|
|
make makefiles "${make_options[@]}" -C $pkgbase-$pkgver
|
|
make -C $pkgbase-$pkgver
|
|
}
|
|
|
|
package_postfix() {
|
|
local _name _feature
|
|
|
|
local _dynamicmaps_file="$pkgdir/etc/$pkgbase/dynamicmaps.cf"
|
|
local _dynamicmaps_dir="$pkgdir/etc/$pkgbase/dynamicmaps.cf.d"
|
|
local _files_file="$pkgdir/etc/$pkgbase/$pkgbase-files"
|
|
local _files_dir="$pkgdir/etc/$pkgbase/$pkgbase-files.d"
|
|
|
|
depends+=(
|
|
icu libicuuc.so
|
|
libnsl libnsl.so
|
|
libsasl libsasl2.so
|
|
openssl libcrypto.so libssl.so
|
|
postfix-lmdb
|
|
sh
|
|
)
|
|
optdepends=(
|
|
'perl: for postfix-collate.pl, postfix-tlstype.pl and qshape'
|
|
'postfix-cdb: for CDB integration'
|
|
'postfix-ldap: for LDAP integration'
|
|
'postfix-lmdb: for LMDB integration'
|
|
'postfix-mongodb: for MongoDB integration'
|
|
'postfix-mysql: for MySQL integration'
|
|
'postfix-pcre: for PCRE integration'
|
|
'postfix-pgsql: for PostgreSQL integration'
|
|
'postfix-sqlite: for SQLite integration'
|
|
)
|
|
conflicts=(smtp-server smtp-forwarder)
|
|
provides=(smtp-server smtp-forwarder)
|
|
backup=(etc/postfix/{access,aliases,canonical,generic,header_checks,main.cf,master.cf,relocated,transport,virtual})
|
|
install=$pkgbase.install
|
|
|
|
cd $pkgname-$pkgver
|
|
LD_LIBRARY_PATH="lib:$LD_LIBRARY_PATH" \
|
|
sh postfix-install -non-interactive install_root="$pkgdir"
|
|
|
|
# additional man pages and scripts
|
|
for _name in posttls-finger {smtp,qmqp}-{sink,source}; do
|
|
install -vDm 644 man/man1/$_name.1 -t "$pkgdir/usr/share/man/man1/"
|
|
install -vDm 755 bin/$_name -t "$pkgdir/usr/bin/"
|
|
done
|
|
install -vDm 644 man/man1/qshape.1 -t "$pkgdir/usr/share/man/man1/"
|
|
install -vDm 755 auxiliary/qshape/qshape.pl "$pkgdir/usr/bin/qshape"
|
|
install -vDm 755 auxiliary/collate/collate.pl "$pkgdir/usr/bin/postfix-collate.pl"
|
|
install -vDm 755 auxiliary/collate/tlstype.pl "$pkgdir/usr/bin/postfix-tlstype.pl"
|
|
install -vDm 644 auxiliary/collate/README* -t "$pkgdir/usr/share/doc/$pkgname/collate/"
|
|
# licenses
|
|
install -vDm 644 LICENSE COPYRIGHT -t "$pkgdir/usr/share/licenses/$pkgname/"
|
|
# systemd service
|
|
install -vDm 644 ../$pkgname.service -t "$pkgdir/usr/lib/systemd/system/"
|
|
# sysusers.d
|
|
install -vDm 644 ../$pkgname.sysusers "$pkgdir/usr/lib/sysusers.d/$pkgname.conf"
|
|
# tmpfiles.d
|
|
# NOTE: follows setup in conf/postfix-files
|
|
install -vDm 644 ../$pkgname.tmpfiles "$pkgdir/usr/lib/tmpfiles.d/$pkgname.conf"
|
|
|
|
# create dynamicmaps.cf.d and postfix-files.d entries for split packages
|
|
# remove targetted files from main configuration files
|
|
for _feature in {cdb,ldap,lmdb,mongodb,mysql,pcre,pgsql,sqlite}; do
|
|
printf "Split out dynamicmaps file for %s\n" $pkgbase-$_feature
|
|
grep "$pkgbase-$_feature" "$_dynamicmaps_file" > "$_dynamicmaps_dir/$pkgbase-$_feature.cf"
|
|
sed -e "/$pkgbase-$_feature/d" -i "$_dynamicmaps_file"
|
|
(
|
|
cd "$pkgdir"
|
|
_pick $pkgbase-$_feature etc/$pkgbase/dynamicmaps.cf.d/$pkgbase-$_feature.cf
|
|
)
|
|
|
|
printf "Split out %s from %s-files.d\n" $pkgbase-$_feature $pkgbase
|
|
grep "$pkgbase-$_feature" "$_files_file" > "$_files_dir/$pkgbase-$_feature.cf"
|
|
sed -e "/$pkgbase-$_feature/d" -i "$_files_file"
|
|
|
|
printf "Split %s from %s-files\n" ${_feature^^}_README $pkgbase
|
|
grep "${_feature^^}_README:" "$_files_file" >> "$_files_dir/$pkgbase-$_feature.cf"
|
|
sed -e "/${_feature^^}_README:/d" -i "$_files_file"
|
|
|
|
if [[ "$_feature" != cdb ]]; then
|
|
printf "Split %s from %s-files\n" ${_feature}_table.5 $pkgbase
|
|
grep "${_feature}_table.5:" "$_files_file" >> "$_files_dir/$pkgbase-$_feature.cf"
|
|
sed -e "/${_feature}_table.5:/d" -i "$_files_file"
|
|
(
|
|
cd "$pkgdir"
|
|
_pick $pkgbase-$_feature usr/share/man/man5/${_feature}_table.5
|
|
)
|
|
fi
|
|
(
|
|
cd "$pkgdir"
|
|
_pick $pkgbase-$_feature etc/$pkgbase/$pkgbase-files.d/$pkgbase-$_feature.cf
|
|
_pick $pkgbase-$_feature usr/lib/$pkgbase/$pkgbase-$_feature.so
|
|
_pick $pkgbase-$_feature usr/share/doc/$pkgbase/${_feature^^}_README
|
|
)
|
|
# install directories that are otherwise cleared by calls to _pick()
|
|
install -vdm 755 "$_dynamicmaps_dir"
|
|
install -vdm 755 "$_files_dir"
|
|
done
|
|
|
|
# remove non-reproducible file, that only lists what the build circumstances were
|
|
rm -v "$pkgdir/etc/$pkgname/makedefs.out"
|
|
sed -e '/makedefs/d' -i "$pkgdir/etc/$pkgname/$pkgname-files"
|
|
}
|
|
|
|
package_postfix-cdb() {
|
|
depends+=(
|
|
postfix
|
|
tinycdb libcdb.so
|
|
)
|
|
pkgdesc+=' (CDB integration)'
|
|
|
|
mv -v $pkgname/* "$pkgdir"
|
|
install -vDm 644 $pkgbase-$pkgver/{LICENSE,COPYRIGHT} -t "$pkgdir/usr/share/licenses/$pkgname/"
|
|
}
|
|
|
|
package_postfix-ldap() {
|
|
depends+=(
|
|
libldap
|
|
postfix
|
|
)
|
|
pkgdesc+=' (LDAP integration)'
|
|
|
|
mv -v $pkgname/* "$pkgdir"
|
|
install -vDm 644 $pkgbase-$pkgver/{LICENSE,COPYRIGHT} -t "$pkgdir/usr/share/licenses/$pkgname/"
|
|
}
|
|
|
|
package_postfix-lmdb() {
|
|
depends+=(
|
|
lmdb
|
|
postfix
|
|
)
|
|
pkgdesc+=' (LMDB integration)'
|
|
|
|
mv -v $pkgname/* "$pkgdir"
|
|
install -vDm 644 $pkgbase-$pkgver/{LICENSE,COPYRIGHT} -t "$pkgdir/usr/share/licenses/$pkgname/"
|
|
}
|
|
|
|
package_postfix-mongodb() {
|
|
depends+=(
|
|
mongo-c-driver
|
|
postfix
|
|
)
|
|
pkgdesc+=' (MongoDB integration)'
|
|
|
|
mv -v $pkgname/* "$pkgdir"
|
|
install -vDm 644 $pkgbase-$pkgver/{LICENSE,COPYRIGHT} -t "$pkgdir/usr/share/licenses/$pkgname/"
|
|
}
|
|
|
|
package_postfix-mysql() {
|
|
depends+=(
|
|
mariadb-libs libmariadb.so
|
|
postfix
|
|
)
|
|
pkgdesc+=' (MySQL integration)'
|
|
|
|
mv -v $pkgname/* "$pkgdir"
|
|
install -vDm 644 $pkgbase-$pkgver/{LICENSE,COPYRIGHT} -t "$pkgdir/usr/share/licenses/$pkgname/"
|
|
}
|
|
|
|
package_postfix-pcre() {
|
|
depends+=(
|
|
pcre2 libpcre2-8.so
|
|
postfix
|
|
)
|
|
pkgdesc+=' (PCRE integration)'
|
|
|
|
mv -v $pkgname/* "$pkgdir"
|
|
install -vDm 644 $pkgbase-$pkgver/{LICENSE,COPYRIGHT} -t "$pkgdir/usr/share/licenses/$pkgname/"
|
|
}
|
|
|
|
package_postfix-pgsql() {
|
|
depends+=(
|
|
postfix
|
|
postgresql-libs libpq.so
|
|
)
|
|
pkgdesc+=' (PostgreSQL integration)'
|
|
|
|
mv -v $pkgname/* "$pkgdir"
|
|
install -vDm 644 $pkgbase-$pkgver/{LICENSE,COPYRIGHT} -t "$pkgdir/usr/share/licenses/$pkgname/"
|
|
}
|
|
|
|
package_postfix-sqlite() {
|
|
depends+=(
|
|
postfix
|
|
sqlite libsqlite3.so
|
|
)
|
|
pkgdesc+=' (SQLite integration)'
|
|
|
|
mv -v $pkgname/* "$pkgdir"
|
|
install -vDm 644 $pkgbase-$pkgver/{LICENSE,COPYRIGHT} -t "$pkgdir/usr/share/licenses/$pkgname/"
|
|
}
|