%bcond_without ldap # without LDAP map module
%bcond_without mysql # without MySQL map module
%bcond_without pgsql # without PostgreSQL map module
+%bcond_without sqlite # without SQLite map module
%bcond_without sasl # without SMTP AUTH support
%bcond_without ssl # without SSL/TLS support
%bcond_without cdb # without cdb map support
+%if "%{pld_release}" == "th"
%bcond_without vda # without VDA patch
+%else
+%bcond_with vda # with VDA patch
+%endif
%bcond_with hir # with Beeth's header_if_reject patch
%bcond_with tcp # with unofficial tcp: lookup table
-#
+%if "%{pld_release}" == "ac"
+%bcond_with epoll # enable epoll for 2.6 kernels
+# there didn't exist x86_64 2.4 kernel in PLD, so can safely enable epoll
+%ifarch %{x8664}
+%define with_epoll 1
+%endif
+%else
+%bcond_without epoll # disable epoll for 2.4 kernels
+%endif
+
+%define vda_ver v10-2.8.5
Summary: Postfix Mail Transport Agent
Summary(cs.UTF-8): Postfix - program pro přepravu pošty (MTA)
Summary(es.UTF-8): Postfix - Un MTA (Mail Transport Agent) de alto desempeño
Summary(pt_BR.UTF-8): Postfix - Um MTA (Mail Transport Agent) de alto desempenho
Summary(sk.UTF-8): Agent prenosu pošty Postfix
Name: postfix
-Version: 2.4.6
-%define vda_ver 2.4.5
+Version: 2.8.9
Release: 1
Epoch: 2
License: distributable
-Group: Networking/Daemons
+Group: Networking/Daemons/SMTP
Source0: ftp://ftp.porcupine.org/mirrors/postfix-release/official/%{name}-%{version}.tar.gz
-# Source0-md5: 303327f66c13ff9631734651ee184a88
+# Source0-md5: 512e2d13da6d25ba64fdf3a1c62190a1
Source1: %{name}.aliases
Source2: %{name}.cron
Source3: %{name}.init
Source4: %{name}.sysconfig
Source5: %{name}.sasl
Source6: %{name}.pamd
-Source7: http://vda.sourceforge.net/VDA/%{name}-%{vda_ver}-vda-ng.patch.gz
-# Source7-md5: 35fa62c93091d42ab02f67d0614d7086
+Source7: http://vda.sourceforge.net/VDA/%{name}-vda-%{vda_ver}.patch
+# Source7-md5: 3292f2ec7c9fb8957f88d8783252d1f8
Source8: %{name}-bounce.cf.pl
# http://postfix.state-of-mind.de/bounce-templates/bounce.de-DE.cf
Source9: %{name}-bounce.cf.de
Source10: %{name}.monitrc
+Source11: %{name}-vda-bigquota.patch
+#Source11: http://vda.sourceforge.net/VDA/%{name}-%{vda_ver}-vda-ng-bigquota.patch.gz
+# -ource11-md5: d46103195b43ec5784ea2c166b238f71
Patch0: %{name}-config.patch
Patch1: %{name}-conf_msg.patch
Patch2: %{name}-dynamicmaps.patch
Patch3: %{name}-master.cf_cyrus.patch
# from http://akson.sgh.waw.pl/~chopin/unix/postfix-2.1.5-header_if_reject.diff
Patch4: %{name}-header_if_reject.patch
-Patch5: %{name}-log-proxy-rejects.patch
-Patch6: %{name}-ident.patch
-Patch7: %{name}-lib64.patch
-Patch8: %{name}-conf.patch
-Patch9: %{name}-dictname.patch
+Patch5: %{name}-ident.patch
+Patch6: %{name}-lib64.patch
+Patch7: %{name}-conf.patch
+Patch8: %{name}-dictname.patch
+Patch9: %{name}-make-jN.patch
+Patch10: %{name}-link.patch
+Patch11: %{name}-scache_clnt.patch
URL: http://www.postfix.org/
%{?with_sasl:BuildRequires: cyrus-sasl-devel}
BuildRequires: db-devel
# getifaddrs() with IPv6 support
BuildRequires: glibc-devel >= 6:2.3.4
%{?with_mysql:BuildRequires: mysql-devel}
-%{?with_ldap:BuildRequires: openldap-devel >= 2.3.0}
-%{?with_ssl:BuildRequires: openssl-devel >= 0.9.8b}
+%{?with_ldap:BuildRequires: openldap-devel >= 2.0.12}
+%{?with_ssl:BuildRequires: openssl-devel >= 0.9.7l}
BuildRequires: pcre-devel
+BuildRequires: perl-base
%{?with_pgsql:BuildRequires: postgresql-devel}
+BuildRequires: rpm >= 4.4.9-56
BuildRequires: rpmbuild(macros) >= 1.268
BuildRequires: sed >= 4.0
+%{?with_sqlite:BuildRequires: sqlite3-devel}
%{?with_cdb:BuildRequires: tinycdb-devel}
%{?with_mysql:BuildRequires: zlib-devel}
Requires(post): /bin/hostname
%package dict-ldap
Summary: LDAP map support for Postfix
Summary(pl.UTF-8): Obsługa map LDAP dla Postfiksa
-Group: Networking/Daemons
+Group: Networking/Daemons/SMTP
Requires: %{name} = %{epoch}:%{version}-%{release}
-Requires: openldap >= 2.3.0
+Requires: openldap >= 2.3.6
%description dict-ldap
This package provides support for LDAP maps in Postfix.
%package dict-mysql
Summary: MySQL map support for Postfix
Summary(pl.UTF-8): Obsługa map MySQL dla Postfiksa
-Group: Networking/Daemons
+Group: Networking/Daemons/SMTP
Requires: %{name} = %{epoch}:%{version}-%{release}
%description dict-mysql
%package dict-pcre
Summary: PCRE map support for Postfix
Summary(pl.UTF-8): Obsługa map PCRE dla Postfiksa
-Group: Networking/Daemons
+Group: Networking/Daemons/SMTP
Requires: %{name} = %{epoch}:%{version}-%{release}
%description dict-pcre
%package dict-pgsql
Summary: PostgreSQL map support for Postfix
Summary(pl.UTF-8): Obsługa map PostgreSQL dla Postfiksa
-Group: Networking/Daemons
+Group: Networking/Daemons/SMTP
Requires: %{name} = %{epoch}:%{version}-%{release}
%description dict-pgsql
%description dict-pgsql -l pl.UTF-8
Ten pakiet dodaje obsługę map PostgreSQL do Postfiksa.
+%package dict-sqlite
+Summary: SQLite map support for Postfix
+Summary(pl.UTF-8): Obsługa map SQLite dla Postfiksa
+Group: Networking/Daemons/SMTP
+Requires: %{name} = %{epoch}:%{version}-%{release}
+
+%description dict-sqlite
+This package provides support for SQLite maps in Postfix.
+
+%description dict-sqlite -l pl.UTF-8
+Ten pakiet dodaje obsługę map SQLite do Postfiksa.
+
%package qshape
Summary: qshape - Print Postfix queue domain and age distribution
Summary(pl.UTF-8): qshape - wypisywanie rozkładu domen i wieku z kolejki Postfiksa
-Group: Networking/Daemons
+Group: Networking/Daemons/SMTP
Requires: %{name} = %{epoch}:%{version}-%{release}
%description qshape
Summary: monit support for Postfix
Summary(pl.UTF-8): Wsparcie monita dla Postfiksa
Group: Applications/System
-Requires: %{name} = %{version}-%{release}
+Requires: %{name} = %{epoch}:%{version}-%{release}
Requires: monit
%description -n monit-rc-%{name}
%prep
%setup -q
-%{?with_vda:zcat %{SOURCE7} | patch -p1 -s}
+%if %{with vda}
+cat %{SOURCE7} | %{__patch} -p1 -s
+cat %{SOURCE11} | %{__patch} -p1 -s
+%endif
find -type f | xargs sed -i -e 's|/etc/postfix|/etc/mail|g'
%patch3 -p1
%{?with_hir:%patch4 -p0}
%patch5 -p1
-%patch6 -p1
sed -i '/scache_clnt_create/s/server/var_scache_service/' src/global/scache_clnt.c
%if "%{_lib}" == "lib64"
-%patch7 -p1
+%patch6 -p1
%endif
+%patch7 -p1
%patch8 -p1
%patch9 -p1
+%patch10 -p1
+%patch11 -p1
%if %{with tcp}
sed -i 's/ifdef SNAPSHOT/if 1/' src/util/dict_open.c
export CC
%{__make} \
DEBUG="" \
- OPT="%{rpmcflags} -D_FILE_OFFSET_BITS=64" \
+ OPT="%{rpmcflags} %{rpmcppflags} -D_FILE_OFFSET_BITS=64" \
%{!?with_ldap:LDAPSO=""} \
%{!?with_mysql:MYSQLSO=""} \
%{!?with_pgsql:PGSQLSO=""} \
- CCARGS="%{?with_ldap:-DHAS_LDAP} -DHAS_PCRE %{?with_sasl:-DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl} %{?with_mysql:-DHAS_MYSQL -I/usr/include/mysql} %{?with_pgsql:-DHAS_PGSQL} %{?with_ssl:-DUSE_TLS} -DMAX_DYNAMIC_MAPS %{?with_cdb:-DHAS_CDB} -DHAVE_GETIFADDRS" \
+ CCARGS="%{!?with_epoll:-DNO_EPOLL} %{?with_ldap:-DHAS_LDAP} -DHAS_PCRE %{?with_sasl:-DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl} %{?with_mysql:-DHAS_MYSQL -I/usr/include/mysql} %{?with_pgsql:-DHAS_PGSQL} %{?with_ssl:-DUSE_TLS} -DMAX_DYNAMIC_MAPS %{?with_cdb:-DHAS_CDB}" \
AUXLIBS="-ldb -lresolv %{?with_sasl:-lsasl} %{?with_ssl:-lssl -lcrypto} %{?with_cdb:-lcdb} -lpcre"
%install
$RPM_BUILD_ROOT%{_sysconfdir}/{mail,sasl} \
$RPM_BUILD_ROOT{%{_bindir},%{_sbindir},%{_libdir}/postfix,/usr/lib}\
$RPM_BUILD_ROOT{%{_includedir}/postfix,%{_mandir}} \
- $RPM_BUILD_ROOT%{_var}/spool/postfix/{active,corrupt,deferred,maildrop,private,saved,bounce,defer,incoming,pid,public}
+ $RPM_BUILD_ROOT%{_var}/spool/postfix/{active,corrupt,deferred,maildrop,private,saved,bounce,defer,incoming,pid,public} \
+ $RPM_BUILD_ROOT%{_var}/lib/postfix
+%{__rm} html/Makefile.in conf/{LICENSE,main.cf.default}
-rm -f html/Makefile.in conf/{LICENSE,main.cf.default}
-
-install bin/* $RPM_BUILD_ROOT%{_sbindir}
-install libexec/* $RPM_BUILD_ROOT%{_libdir}/postfix
+install -p bin/* $RPM_BUILD_ROOT%{_sbindir}
+install -p libexec/* $RPM_BUILD_ROOT%{_libdir}/postfix
ln $RPM_BUILD_ROOT%{_libdir}/postfix/smtp $RPM_BUILD_ROOT%{_libdir}/postfix/lmtp
ln $RPM_BUILD_ROOT%{_libdir}/postfix/qmgr $RPM_BUILD_ROOT%{_libdir}/postfix/nqmgr
-install conf/* $RPM_BUILD_ROOT%{_sysconfdir}/mail
+cp -a conf/* $RPM_BUILD_ROOT%{_sysconfdir}/mail
sed -e's,^daemon_directory = .*,daemon_directory = %{_libdir}/postfix,' \
conf/main.cf > $RPM_BUILD_ROOT%{_sysconfdir}/mail/main.cf
for f in dns global master util ; do
- install lib/lib${f}.a $RPM_BUILD_ROOT%{_libdir}/libpostfix-${f}.so.1
+ cp -a lib/lib${f}.a $RPM_BUILD_ROOT%{_libdir}/libpostfix-${f}.so.1
ln -sf lib${f}.so.1 $RPM_BUILD_ROOT%{_libdir}/libpostfix-${f}.so
done
-install lib/dict*.so $RPM_BUILD_ROOT%{_libdir}/postfix
-install include/*.h $RPM_BUILD_ROOT%{_includedir}/postfix
+install -p lib/dict*.so $RPM_BUILD_ROOT%{_libdir}/postfix
+cp -a include/*.h $RPM_BUILD_ROOT%{_includedir}/postfix
cp -a man/man* $RPM_BUILD_ROOT%{_mandir}
-install %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/mail/aliases
-install %{SOURCE2} $RPM_BUILD_ROOT/etc/cron.daily/postfix
+cp -a %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/mail/aliases
+install -p %{SOURCE2} $RPM_BUILD_ROOT/etc/cron.daily/postfix
install %{SOURCE3} $RPM_BUILD_ROOT/etc/rc.d/init.d/postfix
-install %{SOURCE4} $RPM_BUILD_ROOT/etc/sysconfig/postfix
-install %{SOURCE5} $RPM_BUILD_ROOT%{_sysconfdir}/sasl/smtpd.conf
-install %{SOURCE6} $RPM_BUILD_ROOT/etc/pam.d/smtp
-install %{SOURCE8} $RPM_BUILD_ROOT%{_sysconfdir}/mail/bounce.cf.pl
-install %{SOURCE9} $RPM_BUILD_ROOT%{_sysconfdir}/mail/bounce.cf.de
-install %{SOURCE10} $RPM_BUILD_ROOT/etc/monit/%{name}.monitrc
-install auxiliary/rmail/rmail $RPM_BUILD_ROOT%{_bindir}/rmail
-install auxiliary/qshape/qshape.pl $RPM_BUILD_ROOT%{_bindir}/qshape
+cp -a %{SOURCE4} $RPM_BUILD_ROOT/etc/sysconfig/postfix
+cp -a %{SOURCE5} $RPM_BUILD_ROOT%{_sysconfdir}/sasl/smtpd.conf
+cp -a %{SOURCE6} $RPM_BUILD_ROOT/etc/pam.d/smtp
+cp -a %{SOURCE8} $RPM_BUILD_ROOT%{_sysconfdir}/mail/bounce.cf.pl
+cp -a %{SOURCE9} $RPM_BUILD_ROOT%{_sysconfdir}/mail/bounce.cf.de
+cp -a %{SOURCE10} $RPM_BUILD_ROOT/etc/monit/%{name}.monitrc
+install -p auxiliary/rmail/rmail $RPM_BUILD_ROOT%{_bindir}/rmail
+install -p auxiliary/qshape/qshape.pl $RPM_BUILD_ROOT%{_bindir}/qshape
ln -sf %{_sbindir}/sendmail $RPM_BUILD_ROOT%{_bindir}/mailq
ln -sf %{_sbindir}/sendmail $RPM_BUILD_ROOT%{_bindir}/newaliases
> $RPM_BUILD_ROOT/var/spool/postfix/.nofinger
-rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/mail/makedefs.out
+%{__rm} -r $RPM_BUILD_ROOT%{_sysconfdir}/mail/makedefs.out
+%{__rm} $RPM_BUILD_ROOT%{_sysconfdir}/mail/TLS_LICENSE
+
+%{__rm} $RPM_BUILD_ROOT%{_sysconfdir}/mail/{postfix-files,postfix-script,post-install}
%clean
rm -rf $RPM_BUILD_ROOT
%post
/sbin/ldconfig
if ! grep -q "^postmaster:" %{_sysconfdir}/mail/aliases; then
-echo "Adding Entry for postmaster in %{_sysconfdir}/mail/aliases" >&2
-echo "postmaster: root" >>%{_sysconfdir}/mail/aliases
+ echo "Adding Entry for postmaster in %{_sysconfdir}/mail/aliases" >&2
+ echo "postmaster: root" >>%{_sysconfdir}/mail/aliases
fi
if [ "$1" = "1" ]; then
- # only on installation, not upgrade
- if ! grep -q "^myhostname" %{_sysconfdir}/mail/main.cf; then
- postconf -e myhostname=`/bin/hostname -f`
+ # only on installation, not upgrade; set sane defaults
+ # postfix expects gethostname() to return FQDN, which is obviously wrong
+ if ! grep -qE "^my(domain|hostname)" %{_sysconfdir}/mail/main.cf; then
+ domain=$(/bin/hostname -d 2>/dev/null)
+ [ -n "$domain" -a "$domain" != 'localdomain' ] && \
+ postconf -e mydomain="$domain"
fi
else
- postfix upgrade-configuration
+ %{_sbindir}/postfix upgrade-configuration
fi
-newaliases
+%{_bindir}/newaliases
/sbin/chkconfig --add postfix
-%service postfix restart "postfix daemon"
+%service postfix restart "Postfix Daemon"
%preun
if [ "$1" = "0" ]; then
%files
%defattr(644,root,root,755)
-%doc html *README COMPATIBILITY HISTORY LICENSE RELEASE_NOTES TLS_*
+%doc html COMPATIBILITY HISTORY LICENSE RELEASE_NOTES* TLS_*
%doc README_FILES/*README
%doc examples/smtpd-policy
%dir %{_sysconfdir}/mail
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/mail/access
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/mail/aliases
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/mail/bounce.cf.default
-%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/mail/bounce.cf.de
-%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/mail/bounce.cf.pl
+%lang(de) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/mail/bounce.cf.de
+%lang(pl) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/mail/bounce.cf.pl
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/mail/canonical
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/mail/generic
#%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/mail/regexp_table
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/mail/dynamicmaps.cf
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/mail/main.cf
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/mail/master.cf
-%attr(755,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/mail/postfix-script
-%attr(755,root,root) %{_sysconfdir}/mail/post-install
-%{_sysconfdir}/mail/postfix-files
+%{_sysconfdir}/mail/postfix-wrapper
+%{_sysconfdir}/mail/postmulti-script
%attr(740,root,root) /etc/cron.daily/postfix
%attr(754,root,root) /etc/rc.d/init.d/postfix
%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/postfix
%attr(755,root,root) %{_sbindir}/postl*
%attr(755,root,root) %{_sbindir}/postc*
%attr(755,root,root) %{_sbindir}/postmap
+%attr(755,root,root) %{_sbindir}/postmulti
%attr(2755,root,maildrop) %{_sbindir}/postqueue
%attr(755,root,root) %{_sbindir}/postsuper
%attr(2755,root,maildrop) %{_sbindir}/postdrop
%dir %{_libdir}/postfix
%attr(755,root,root) %{_libdir}/postfix/[!d]*
%attr(755,root,root) %{_libdir}/postfix/discard
+%attr(755,root,root) %{_libdir}/postfix/dnsblog
%attr(755,root,root) %dir %{_var}/spool/postfix
%attr(700,postfix,root) %dir %{_var}/spool/postfix/active
%attr(700,postfix,root) %dir %{_var}/spool/postfix/bounce
%attr(710,postfix,maildrop) %dir %{_var}/spool/postfix/public
%attr(700,postfix,root) %dir %{_var}/spool/postfix/saved
%attr(644,postfix,root) %{_var}/spool/postfix/.nofinger
+%attr(700,postfix,root) %{_var}/lib/postfix
%{_mandir}/man1/mailq.1*
%{_mandir}/man1/newaliases.1*
%{_mandir}/man1/post*.1*
%{_mandir}/man5/master.5*
%{_mandir}/man5/nisplus_table.5*
%{_mandir}/man5/postconf.5*
+%{_mandir}/man5/postfix-wrapper.5*
%{_mandir}/man5/regexp_table.5*
%{_mandir}/man5/relocated.5*
%{_mandir}/man5/tcp_table.5*
%{_mandir}/man5/pgsql_table.5*
%endif
+%if %{with sqlite}
+%files dict-sqlite
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/postfix/dict_sqlite.so
+%{_mandir}/man5/sqlite_table.5*
+%endif
+
%files qshape
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/qshape