#
# Conditional build:
-# --without sasl - build without SMTP AUTH support
-# --without ssl - build without SSL/TLS support
-# --without ipv6 - build without IPv6 support
-# --with polish - build with polish messages support
-# _without_psql - no Postgres support
-# _without_mysql - no MySQL support
-# _without_ldap - no LDAP support
-#
-%define tls_ver 0.8.11a-1.1.11-0.9.6d
+%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
+%bcond_without lmdb # without lmdb map support
+%bcond_with vda # with VDA patch
+%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 v13-2.10.0
Summary: Postfix Mail Transport Agent
-Summary(cs): Postfix - program pro pøepravu po¹ty (MTA)
-Summary(es): Postfix - Un MTA (Mail Transport Agent) de alto desempeño
-Summary(fr): Agent de transport de courrier Postfix
-Summary(pl): Serwer SMTP Postfix
-Summary(pt_BR): Postfix - Um MTA (Mail Transport Agent) de alto desempenho
-Summary(sk): Agent prenosu po¹ty Postfix
+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(fr.UTF-8): Agent de transport de courrier Postfix
+Summary(pl.UTF-8): Serwer SMTP Postfix
+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: 1.1.11
-Release: 9
+Version: 3.5.0
+Release: 2
Epoch: 2
-Group: Networking/Daemons
License: distributable
+Group: Networking/Daemons/SMTP
Source0: ftp://ftp.porcupine.org/mirrors/postfix-release/official/%{name}-%{version}.tar.gz
+# Source0-md5: f6a48f369cf8d693d7b0f8ab51f0fc9b
Source1: %{name}.aliases
Source2: %{name}.cron
Source3: %{name}.init
-Source5: %{name}.sysconfig
-Source6: ftp://ftp.aet.tu-cottbus.de/pub/pfixtls/pfixtls-%{tls_ver}.tar.gz
-Source7: %{name}.sasl
+Source4: %{name}.sysconfig
+Source5: %{name}.sasl
+Source6: %{name}.pamd
+Source7: %{name}-vda.patch
+#Source7: http://vda.sourceforge.net/VDA/%{name}-vda-%{vda_ver}.patch
+# -ource7-md5: 01e1b031d79b85f3cb67d98ceddd775d
+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
+Source12: %{name}.service
Patch0: %{name}-config.patch
-Patch1: %{name}-conf_msg.patch
-Patch2: %{name}-dynamicmaps.patch
-Patch3: %{name}-pgsql.patch
-Patch4: %{name}-master.cf_cyrus.patch
-Patch5: %{name}-ipv6.patch
-Patch6: %{name}-pl.patch
-Patch7: %{name}-db.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
+
+Patch7: %{name}-conf.patch
+Patch8: %{name}-dictname.patch
+
+Patch11: %{name}-scache_clnt.patch
+Patch12: format-security.patch
URL: http://www.postfix.org/
-BuildRequires: awk
-%{!?_without_sasl:BuildRequires: cyrus-sasl-devel}
+%{?with_sasl:BuildRequires: cyrus-sasl-devel}
BuildRequires: db-devel
-BuildRequires: grep
-%{!?_without_ipv6:BuildRequires: libinet6 >= 0.20010420-3}
-%{!?_without_mysql:BuildRequires: mysql-devel}
-%{!?_without_ldap:BuildRequires: openldap-devel >= 2.0.0}
-%{!?_without_ssl:BuildRequires: openssl-devel >= 0.9.6a}
+# getifaddrs() with IPv6 support
+BuildRequires: glibc-devel >= 6:2.3.4
+BuildRequires: libicu-devel
+%{?with_lmbd:BuildRequires: lmdb-devel}
+%{?with_mysql:BuildRequires: mysql-devel}
+%{?with_ldap:BuildRequires: openldap-devel >= 2.0.12}
+%{?with_ssl:BuildRequires: openssl-devel >= 0.9.7l}
BuildRequires: pcre-devel
-%{!?_without_psql:BuildRequires: postgresql-devel}
-PreReq: rc-scripts
-PreReq: sed
-Requires(pre): /usr/sbin/useradd
-Requires(pre): /usr/sbin/groupadd
-Requires(pre): /usr/bin/getgid
-Requires(pre): /bin/id
+BuildRequires: perl-base
+%{?with_pgsql:BuildRequires: postgresql-devel}
+BuildRequires: rpm >= 4.4.9-56
+BuildRequires: rpmbuild(macros) >= 1.644
+BuildRequires: sed >= 4.0
+%{?with_sqlite:BuildRequires: sqlite3-devel}
+%{?with_cdb:BuildRequires: tinycdb-devel}
+%{?with_mysql:BuildRequires: zlib-devel}
Requires(post): /bin/hostname
-Requires(post,postun):/sbin/ldconfig
-Requires(post,preun):/sbin/chkconfig
-Requires(postun): /usr/sbin/userdel
+Requires(post,postun): /sbin/ldconfig
+Requires(post,preun): /sbin/chkconfig
Requires(postun): /usr/sbin/groupdel
-BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
-Provides: smtpdaemon
-Obsoletes: smtpdaemon
-Obsoletes: exim
-Obsoletes: masqmail
-Obsoletes: omta
-Obsoletes: qmail
-Obsoletes: sendmail
-Obsoletes: sendmail-cf
-Obsoletes: sendmail-doc
-Obsoletes: smail
-Obsoletes: zmailer
+Requires(postun): /usr/sbin/userdel
+Requires(pre): /bin/id
+Requires(pre): /usr/bin/getgid
+Requires(pre): /usr/sbin/groupadd
+Requires(pre): /usr/sbin/useradd
+Requires: /sbin/chkconfig
Requires: diffutils
Requires: findutils
+Requires: rc-scripts
+Requires: sed
+%{?with_cdb:Requires:tinycdb}
+Requires: systemd-units >= 38
+Suggests: cyrus-sasl-saslauthd
+Provides: group(postfix)
+Provides: smtpdaemon
+Provides: user(postfix)
+Obsoletes: smtpdaemon
+BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%description
Postfix is attempt to provide an alternative to the widely-used
hopefully secure, while at the same time being sendmail compatible
enough to not upset your users. This version has IPv6 support.
-%description -l pt_BR
-O Postfix é uma alternativa para o mundialmente utilizado sendmail. Se
-você deseja um servidor SMTP *rápido*, instale este pacote.
-
-%description -l es
+%description -l es.UTF-8
Postfix es una alternativa para el mundialmente utilizado sendmail. Si
-desea tener un servidor SMTP *rápido*, debe instalar este paquete.
+desea tener un servidor SMTP *rápido*, debe instalar este paquete.
-%description -l fr
-Postfix (voir http://www.postfix.org/) se veut une alternative à
+%description -l fr.UTF-8
+Postfix (voir http://www.postfix.org/) se veut une alternative à
sendmail, responsable de l'acheminement de 70% des courriers
-électroniques sur Internet. IBM en a suppotré le développement, mais
-ne contrôle pas son évolution. Le but est d'installer Postfix sur le
-plus grand nombre de systèmes possible. Dans cette optique, il a été
-écrit pour être totalement sous le contrôle de l'utilisateur.
+électroniques sur Internet. IBM en a suppotré le développement, mais
+ne contrôle pas son évolution. Le but est d'installer Postfix sur le
+plus grand nombre de systèmes possible. Dans cette optique, il a été
+écrit pour être totalement sous le contrôle de l'utilisateur.
-%description -l it
+%description -l it.UTF-8
Postfix (http://www.postfix.org/) e' un'alternativa al programma
sendmail utilizzato per la gestione del 70 per cento della posta
Internet.
quale troverete le indicazioni per una corretta installazione e
configurazione di questo programma.
-%description -l pl
-Postfix jest prób± dostarczenia alternatywnego MTA w stosunku do
-szeroko u¿ywanego sendmaila. Postfix w zamierzeniu ma byæ szybki,
-³atwy w administrowaniu, bezpieczny oraz ma byæ na tyle kompatybilny z
-sendmailem by nie denerwowaæ Twoich u¿ytkowników. Ta wersja wspiera
-IPv6.
+%description -l pl.UTF-8
+Postfix jest próbą dostarczenia alternatywnego MTA w stosunku do
+szeroko używanego sendmaila. Postfix w zamierzeniu ma być szybki,
+łatwy w administrowaniu, bezpieczny oraz ma być na tyle kompatybilny z
+sendmailem by nie denerwować użytkowników. Ta wersja obsługuje IPv6.
-%description -l pt_BR
-O Postfix é uma alternativa para o mundialmente utilizado sendmail. Se
-você deseja um servidor SMTP *rápido*, instale este pacote.
+%description -l pt_BR.UTF-8
+O Postfix é uma alternativa para o mundialmente utilizado sendmail. Se
+você deseja um servidor SMTP *rápido*, instale este pacote.
-%description -l sk
-Postfix (pozri http://www.postfix.org/) má za cieµ by» alternatívou k
-¹iroko roz¹írenému programu sendmail, zodpovednému za 70% v¹etkej
-elektronickej po¹ty doruèenej na Internete.
+%description -l sk.UTF-8
+Postfix (pozri http://www.postfix.org/) má za cieľ byť alternatívou k
+široko rozšírenému programu sendmail, zodpovednému za 70% všetkej
+elektronickej pošty doručenej na Internete.
-Aj keï IBM podporovala vývoj Postfixu, zdr¾iava sa vplyvu na jeho
-vývoj. Cieµom je in¹talácia Postfixu na èo najväè¹om poète systémov.
-Do tohoto momentu je softvér poskytovaný bez ovplyvòovania, tak¾e sa
-mô¾e vyvíja» podµa jeho pou¾ívateµov.
+Aj keÄ\8f IBM podporovala vývoj Postfixu, zdržiava sa vplyvu na jeho
+vývoj. Cieľom je inštalácia Postfixu na čo najväčšom počte systémov.
+Do tohoto momentu je softvér poskytovaný bez ovplyvÅ\88ovania, takže sa
+môže vyvíjať podľa jeho používateľov.
-Urèite si preèítajte http://www.moongroup.com/how-to.phtml, kde sú
-popísané kroky potrebné pred a po in¹talácii Postfixu.
+Určite si prečítajte http://www.moongroup.com/how-to.phtml, kde sú
+popísané kroky potrebné pred a po inštalácii Postfixu.
%package devel
Summary: Postfix loadable modules development package
-Summary(pl): Pakiet dla programistów ³adowanych modu³ów do postfiksa
+Summary(pl.UTF-8): Pakiet dla programistów ładowanych modułów do postfiksa
Group: Development/Libraries
-Requires: %{name} = %{version}
+Requires: %{name} = %{epoch}:%{version}-%{release}
%description devel
Header files to build additional map types for Postfix.
-%description devel -l pl
-Pliki nag³ówkowe do tworzenia dodatkowych typów map dla Postfiksa.
+%description devel -l pl.UTF-8
+Pliki nagłówkowe do tworzenia dodatkowych typów map dla Postfiksa.
%package dict-ldap
Summary: LDAP map support for Postfix
-Summary(pl): Obs³uga map LDAP dla Postfiksa
-Group: Networking/Daemons
-Requires: %{name} = %{version}
-Requires: openldap >= 2.0.0
+Summary(pl.UTF-8): Obsługa map LDAP dla Postfiksa
+Group: Networking/Daemons/SMTP
+Requires: %{name} = %{epoch}:%{version}-%{release}
+Requires: openldap >= 2.3.6
%description dict-ldap
This package provides support for LDAP maps in Postfix.
-%description dict-ldap -l pl
-Ten pakiet dodaje obs³ugê map LDAP do Postfiksa.
+%description dict-ldap -l pl.UTF-8
+Ten pakiet dodaje obsługę map LDAP do Postfiksa.
%package dict-mysql
Summary: MySQL map support for Postfix
-Summary(pl): Obs³uga map MySQL dla Postfiksa
-Group: Networking/Daemons
-Requires: %{name} = %{version}
+Summary(pl.UTF-8): Obsługa map MySQL dla Postfiksa
+Group: Networking/Daemons/SMTP
+Requires: %{name} = %{epoch}:%{version}-%{release}
%description dict-mysql
This package provides support for MySQL maps in Postfix.
-%description dict-mysql -l pl
-Ten pakiet dodaje obs³ugê map MySQL do Postfiksa.
+%description dict-mysql -l pl.UTF-8
+Ten pakiet dodaje obsługę map MySQL do Postfiksa.
%package dict-pcre
Summary: PCRE map support for Postfix
-Summary(pl): Obs³uga map PCRE dla Postfiksa
-Group: Networking/Daemons
-Requires: %{name} = %{version}
+Summary(pl.UTF-8): Obsługa map PCRE dla Postfiksa
+Group: Networking/Daemons/SMTP
+Requires: %{name} = %{epoch}:%{version}-%{release}
%description dict-pcre
This package provides support for PCRE maps in Postfix.
-%description dict-pcre -l pl
-Ten pakiet dodaje obs³ugê map PCRE do Postfiksa.
+%description dict-pcre -l pl.UTF-8
+Ten pakiet dodaje obsługę map PCRE do Postfiksa.
%package dict-pgsql
Summary: PostgreSQL map support for Postfix
-Summary(pl): Obs³uga map PostgreSQL dla Postfiksa
-Group: Networking/Daemons
-Requires: %{name} = %{version}
+Summary(pl.UTF-8): Obsługa map PostgreSQL dla Postfiksa
+Group: Networking/Daemons/SMTP
+Requires: %{name} = %{epoch}:%{version}-%{release}
%description dict-pgsql
This package provides support for PostgreSQL maps in Postfix.
-%description dict-pgsql -l pl
-Ten pakiet dodaje obs³ugê map PostgreSQL do Postfiksa.
+%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 dict-lmdb
+Summary: LMDB map support for Postfix
+Summary(pl.UTF-8): Obsługa map LMDB dla Postfiksa
+Group: Networking/Daemons/SMTP
+Requires: %{name} = %{epoch}:%{version}-%{release}
+
+%description dict-lmdb
+This package provides support for LMDB maps in Postfix.
+
+%description dict-lmdb -l pl.UTF-8
+Ten pakiet dodaje obsługę map LMDB do Postfiksa.
+
+%package dict-cdb
+Summary: CDB map support for Postfix
+Summary(pl.UTF-8): Obsługa map CDB dla Postfiksa
+Group: Networking/Daemons/SMTP
+Requires: %{name} = %{epoch}:%{version}-%{release}
+
+%description dict-cdb
+This package provides support for CDB maps in Postfix.
+
+%description dict-cdb -l pl.UTF-8
+Ten pakiet dodaje obsługę map CDB 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/SMTP
+Requires: %{name} = %{epoch}:%{version}-%{release}
+
+%description qshape
+The qshape program helps the administrator understand the Postfix
+queue message distribution in time and by sender domain or recipient
+domain. The program needs read access to the queue directories and
+queue files, so it must run as the superuser or the mail_owner
+specified in main.cf (typically postfix).
+
+%description qshape -l pl.UTF-8
+Program qshape pomaga administratorowi zrozumieć rozkład kolejki
+wiadomości Postfiksa w czasie i w zależności od domeny nadawcy lub
+adresata. Program wymaga prawa odczytu do katalogów kolejki i plików
+kolejki, więc musi być uruchamiany przez superużytkownika lub
+użytkownika mail_owner podanego w main.cf (zwykle nazywającego się
+postfix).
+
+%package -n monit-rc-%{name}
+Summary: monit support for Postfix
+Summary(pl.UTF-8): Wsparcie monita dla Postfiksa
+Group: Applications/System
+Requires: %{name} = %{epoch}:%{version}-%{release}
+Requires: monit
+
+%description -n monit-rc-%{name}
+monitrc file for monitoring Postfix.
+
+%description -n monit-rc-%{name} -l pl.UTF-8
+Plik monitrc do monitorowania serwera Postfix.
%prep
-%setup -q -a6
+%setup -q
+%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'
+
%patch0 -p1
-patch -p1 -s <pfixtls-%{tls_ver}/pfixtls.diff
-%patch1 -p1
-%patch2 -p1
+
%patch3 -p1
-%patch4 -p1
-%{!?_without_ipv6:%patch5 -p1}
-%{?_with_polish:%patch6 -p1}
+%{?with_hir:%patch4 -p0}
+
+sed -i '/scache_clnt_create/s/server/var_scache_service/' src/global/scache_clnt.c
%patch7 -p1
+%patch8 -p1
+
+%patch11 -p1
+%if %{with vda}
+%patch12 -p1
+%endif
+
+%if %{with tcp}
+sed -i 's/ifdef SNAPSHOT/if 1/' src/util/dict_open.c
+%endif
%build
-%{__make} -f Makefile.init makefiles
-%{__make} tidy
-%{__make} DEBUG="" OPT="%{rpmcflags}" \
- CCARGS="%{!?_without_ldap:-DHAS_LDAP} -DHAS_PCRE %{!?_without_sasl:-DUSE_SASL_AUTH} %{!?_without_mysql:-DHAS_MYSQL} %{!?_without_psql:-DHAS_PGSQL} %{!?_without_mysql:-I%{_includedir}/mysql} %{!?_without_psql:-I%{_includedir}/postgresql} %{!?_without_ssl:-DHAS_SSL -I%{_includedir}/openssl} -DMAX_DYNAMIC_MAPS" \
- AUXLIBS="-ldb -lresolv %{!?_without_sasl:-lsasl} %{!?_without_ssl:-lssl -lcrypto}"
+# export, as the same variables must be passed both to 'make makefiles' and 'make'
+export 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} %{?with_sqlite:-DHAS_SQLITE} %{?with_lmdb:-DHAS_LMDB} -LHAS_SDBM"
+export AUXLIBS="%{rpmldflags} -lsasl -lssl -lcrypto -ldb -lresolv"
+export AUXLIBS_CDB="%{?with_cdb:-lcdb}"
+export AUXLIBS_LDAP="%{?with_ldap:-lldap -llber}"
+export AUXLIBS_LMDB="%{?with_lmdb:-llmdb}"
+export AUXLIBS_MYSQL="%{?with_mysql:-lmysqlclient}"
+export AUXLIBS_PCRE="-lpcre"
+export AUXLIBS_PGSQL="%{?with_pgsql:-lpq}"
+export AUXLIBS_SQLITE="%{?with_sqlite:-lsqlite3}"
+
+export CC="%{__cc}"
+%{__make} makefiles \
+ shared=yes dynamicmaps=yes \
+ daemon_directory="%{_libdir}/postfix" \
+ shlib_directory="%{_libdir}/postfix" \
+ manpage_directory="%{_mandir}"
+
+%{__make} -j1 \
+ DEBUG="" \
+ OPT="%{rpmcflags} %{rpmcppflags} -D_FILE_OFFSET_BITS=64"
%install
rm -rf $RPM_BUILD_ROOT
-install -d $RPM_BUILD_ROOT%{_sysconfdir}/{mail,cron.daily,rc.d/init.d,sasl,sysconfig} \
- $RPM_BUILD_ROOT{%{_bindir},%{_sbindir},%{_libdir}/postfix,%{_includedir}/postfix,%{_mandir}/man{1,5,8}} \
+install -d $RPM_BUILD_ROOT/etc/{cron.daily,rc.d/init.d,sysconfig,pam.d,security,monit} \
+ $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} \
- pfixtls
+ $RPM_BUILD_ROOT%{_var}/lib/postfix \
+ $RPM_BUILD_ROOT%{systemdunitdir}
-rm -f {html,man}/Makefile.in conf/{LICENSE,main.cf.default}
+%{__make} non-interactive-package \
+ install_root=$RPM_BUILD_ROOT
-install -d sample-conf; mv -f conf/sample* sample-conf/ || :
+#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
-install bin/* $RPM_BUILD_ROOT%{_sbindir}
-install libexec/* $RPM_BUILD_ROOT%{_libdir}/postfix
-install conf/* $RPM_BUILD_ROOT%{_sysconfdir}/mail
+cp -a include/*.h $RPM_BUILD_ROOT%{_includedir}/postfix
-for f in dns global master util ; do
- install 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
-
-(cd man; tar cf - .) | (cd $RPM_BUILD_ROOT%{_mandir}; tar xf -)
-
-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 %{SOURCE5} $RPM_BUILD_ROOT/etc/sysconfig/postfix
-install %{SOURCE7} $RPM_BUILD_ROOT%{_sysconfdir}/sasl/smtpd.conf
-install auxiliary/rmail/rmail $RPM_BUILD_ROOT%{_bindir}/rmail
-
-ln -sf /usr/sbin/sendmail $RPM_BUILD_ROOT%{_bindir}/mailq
-ln -sf /usr/sbin/sendmail $RPM_BUILD_ROOT%{_bindir}/newaliases
-ln -sf /usr/sbin/sendmail $RPM_BUILD_ROOT%{_libdir}/sendmail
+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
+cp -a %{SOURCE12} $RPM_BUILD_ROOT%{systemdunitdir}/%{name}.service
+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
+ln -sf %{_sbindir}/sendmail $RPM_BUILD_ROOT/usr/lib/sendmail
touch $RPM_BUILD_ROOT%{_sysconfdir}/mail/\
{aliases,access,canonical,relocated,transport,virtual}{,.db}
+touch $RPM_BUILD_ROOT/etc/security/blacklist.smtp
+
> $RPM_BUILD_ROOT/var/spool/postfix/.nofinger
+%{__rm} -r $RPM_BUILD_ROOT%{_sysconfdir}/mail/makedefs.out
+%{__rm} $RPM_BUILD_ROOT%{_sysconfdir}/mail/{,TLS_}LICENSE
+
%clean
rm -rf $RPM_BUILD_ROOT
%pre
-if [ -n "`/usr/bin/getgid postfix`" ]; then
- if [ "`getgid postfix`" != "62" ]; then
- echo "Error: group postfix doesn't have gid=62. Correct this before installing postfix." 1>&2
- exit 1
- fi
-else
- /usr/sbin/groupadd -g 62 -r -f postfix
-fi
-if [ -n "`/usr/bin/getgid maildrop`" ]; then
- if [ "`/usr/bin/getgid maildrop`" != "63" ]; then
- echo "Error: group maildrop doesn't have gid=63. Correct this before installing postfix." 1>&2
- exit 1
- fi
-else
- /usr/sbin/groupadd -g 63 -r -f maildrop
-fi
-if [ -n "`/bin/id -u postfix 2>/dev/null`" ]; then
- if [ "`/bin/id -u postfix`" != "62" ]; then
- echo "Error: user postfix doesn't have uid=62. Correct this before installing postfix." 1>&2
- exit 1
- fi
-else
- /usr/sbin/useradd -u 62 -r -d /var/spool/postfix -s /bin/false -c "Postfix User" -g postfix postfix 1>&2
-fi
+%groupadd -g 62 postfix
+%groupadd -g 63 maildrop
+%useradd -u 62 -d /var/spool/postfix -s /bin/false -c "Postfix User" -g postfix postfix
%post
/sbin/ldconfig
-if ! grep -q "^postmaster:" /etc/mail/aliases; then
- echo "Adding Entry for postmaster in /etc/mail/aliases" >&2
- echo "postmaster: root" >>/etc/mail/aliases
+if ! grep -q "^postmaster:" %{_sysconfdir}/mail/aliases; then
+ echo "Adding Entry for postmaster in %{_sysconfdir}/mail/aliases" >&2
+ echo "postmaster: root" >>%{_sysconfdir}/mail/aliases
fi
-if ! grep -q "^myhostname" /etc/mail/main.cf; then
- postconf -e myhostname=`/bin/hostname -f`
+if [ "$1" = "1" ]; then
+ # 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
+ %{_sbindir}/postfix upgrade-configuration
fi
-newaliases
+%{_bindir}/newaliases
/sbin/chkconfig --add postfix
-if [ -f /var/lock/subsys/postfix ]; then
- /etc/rc.d/init.d/postfix restart >&2
-else
- echo "Run \"/etc/rc.d/init.d/postfix start\" to start postfix daemon." >&2
-fi
+%service postfix restart "Postfix Daemon"
+%systemd_post postfix.service
%preun
if [ "$1" = "0" ]; then
- if [ -f /var/lock/subsys/postfix ]; then
- /etc/rc.d/init.d/postfix stop >&2
- fi
+ %service postfix stop
/sbin/chkconfig --del postfix
fi
+%systemd_preun postfix.service
%postun
/sbin/ldconfig
if [ "$1" = "0" ]; then
- /usr/sbin/groupdel maildrop 2> /dev/null
- /usr/sbin/userdel postfix 2> /dev/null
- /usr/sbin/groupdel postfix 2> /dev/null
+ %groupremove maildrop
+ %userremove postfix
+ %groupremove postfix
fi
+%systemd_reload
-%triggerpostun -- postfix < 1:1.1.2
-sed -e 's/^\(pickup[ ]\+fifo[ ]\+[^ ]\+[ ]\+\)[^ ]\+\([ ]\)/\1-\2/;
-s/^\(cleanup[ ]\+unix[ ]\+\)[^ ]\+\([ ]\)/\1n\2/' /etc/mail/master.cf \
- > /etc/mail/master.cf.rpmtmp
-mv -f /etc/mail/master.cf.rpmtmp /etc/mail/master.cf
+%triggerpostun -- postfix < 2:2.9.4-4
+%systemd_trigger postfix.service
%files
%defattr(644,root,root,755)
-%doc html *README COMPATIBILITY HISTORY LICENSE RELEASE_NOTES
+%doc html COMPATIBILITY HISTORY LICENSE RELEASE_NOTES* TLS_*
%doc README_FILES/*README
-%doc sample-conf
-%config(noreplace) %verify(not size mtime md5) %{_sysconfdir}/mail/access
-%config(noreplace) %verify(not size mtime md5) %{_sysconfdir}/mail/aliases
-%config(noreplace) %verify(not size mtime md5) %{_sysconfdir}/mail/canonical
-%config(noreplace) %verify(not size mtime md5) %{_sysconfdir}/mail/relocated
-%config(noreplace) %verify(not size mtime md5) %{_sysconfdir}/mail/transport
-%config(noreplace) %verify(not size mtime md5) %{_sysconfdir}/mail/virtual
-#%ghost %{_sysconfdir}/mail/*.db
+%doc examples/smtpd-policy
%dir %{_sysconfdir}/mail
-%config(noreplace) %verify(not size mtime md5) %{_sysconfdir}/mail/dynamicmaps.cf
-%config(noreplace) %verify(not size mtime md5) %{_sysconfdir}/mail/main.cf
-%config(noreplace) %verify(not size mtime md5) %{_sysconfdir}/mail/master.cf
-%attr(755,root,root) %config(noreplace) %verify(not size mtime md5) %{_sysconfdir}/mail/postfix-script
-%attr(755,root,root) %{_sysconfdir}/mail/post-install
-%{_sysconfdir}/mail/postfix-files
+%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
+%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/relocated
+%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/mail/transport
+%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/mail/virtual
+%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/mail/header_checks
+#%ghost %{_sysconfdir}/mail/*.db
+%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/main.cf.default
+%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/mail/main.cf.proto
+%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/mail/master.cf
+%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/mail/master.cf.proto
+%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/mail/postfix-files
%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 size mtime md5) /etc/sysconfig/postfix
-%{!?_without_sasl:%config(noreplace) %verify(not size mtime md5) /etc/sasl/smtpd.conf}
-%attr(755,root,root) %{_libdir}/libpostfix-*.so.*
-%attr(755,root,root) %{_bindir}/*
+%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/postfix
+%config(noreplace) %verify(not md5 mtime size) /etc/pam.d/smtp
+%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/security/blacklist.smtp
+%{?with_sasl:%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/sasl/smtpd.conf}
+%attr(755,root,root) %{_bindir}/mailq
+%attr(755,root,root) %{_bindir}/newaliases
+%attr(755,root,root) %{_bindir}/rmail
%attr(755,root,root) %{_sbindir}/s*
%attr(755,root,root) %{_sbindir}/postfix
%attr(755,root,root) %{_sbindir}/postalias
%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
-%attr(755,root,root) %{_sbindir}/qmqp-source
-%attr(755,root,root) %{_libdir}/sendmail
+%attr(755,root,root) /usr/lib/sendmail
%dir %{_libdir}/postfix
-%attr(755,root,root) %{_libdir}/postfix/[^d]*
+%attr(755,root,root) %{_libdir}/postfix/anvil
+%attr(755,root,root) %{_libdir}/postfix/bounce
+%attr(755,root,root) %{_libdir}/postfix/cleanup
+%attr(755,root,root) %{_libdir}/postfix/discard
+%attr(755,root,root) %{_libdir}/postfix/dnsblog
+%attr(755,root,root) %{_libdir}/postfix/error
+%attr(755,root,root) %{_libdir}/postfix/flush
+%attr(755,root,root) %{_libdir}/postfix/libpostfix-dns.so
+%attr(755,root,root) %{_libdir}/postfix/libpostfix-global.so
+%attr(755,root,root) %{_libdir}/postfix/libpostfix-master.so
+%attr(755,root,root) %{_libdir}/postfix/libpostfix-tls.so
+%attr(755,root,root) %{_libdir}/postfix/libpostfix-util.so
+%attr(755,root,root) %{_libdir}/postfix/lmtp
+%attr(755,root,root) %{_libdir}/postfix/local
+%attr(755,root,root) %{_libdir}/postfix/master
+%attr(755,root,root) %{_libdir}/postfix/nqmgr
+%attr(755,root,root) %{_libdir}/postfix/oqmgr
+%attr(755,root,root) %{_libdir}/postfix/pickup
+%attr(755,root,root) %{_libdir}/postfix/pipe
+%attr(755,root,root) %{_libdir}/postfix/postfix-script
+%attr(755,root,root) %{_libdir}/postfix/postfix-tls-script
+%attr(755,root,root) %{_libdir}/postfix/postlogd
+%attr(755,root,root) %{_libdir}/postfix/postfix-wrapper
+%attr(755,root,root) %{_libdir}/postfix/post-install
+%attr(755,root,root) %{_libdir}/postfix/postmulti-script
+%attr(755,root,root) %{_libdir}/postfix/postscreen
+%attr(755,root,root) %{_libdir}/postfix/proxymap
+%attr(755,root,root) %{_libdir}/postfix/qmgr
+%attr(755,root,root) %{_libdir}/postfix/qmqpd
+%attr(755,root,root) %{_libdir}/postfix/scache
+%attr(755,root,root) %{_libdir}/postfix/showq
+%attr(755,root,root) %{_libdir}/postfix/smtp
+%attr(755,root,root) %{_libdir}/postfix/smtpd
+%attr(755,root,root) %{_libdir}/postfix/spawn
+%attr(755,root,root) %{_libdir}/postfix/tlsmgr
+%attr(755,root,root) %{_libdir}/postfix/tlsproxy
+%attr(755,root,root) %{_libdir}/postfix/trivial-rewrite
+%attr(755,root,root) %{_libdir}/postfix/verify
+%attr(755,root,root) %{_libdir}/postfix/virtual
%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(700, postfix,root) %dir %{_var}/spool/postfix/corrupt
-%attr(700, postfix,root) %dir %{_var}/spool/postfix/defer
-%attr(700, postfix,root) %dir %{_var}/spool/postfix/deferred
-%attr(700, postfix,root) %dir %{_var}/spool/postfix/incoming
+%attr(700,postfix,root) %dir %{_var}/spool/postfix/active
+%attr(700,postfix,root) %dir %{_var}/spool/postfix/bounce
+%attr(700,postfix,root) %dir %{_var}/spool/postfix/corrupt
+%attr(700,postfix,root) %dir %{_var}/spool/postfix/defer
+%attr(700,postfix,root) %dir %{_var}/spool/postfix/deferred
+%attr(700,postfix,root) %dir %{_var}/spool/postfix/incoming
%attr(1730,postfix,maildrop) %dir %{_var}/spool/postfix/maildrop
-%attr(755, postfix,root) %dir %{_var}/spool/postfix/pid
-%attr(700, postfix,root) %dir %{_var}/spool/postfix/private
-%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
-%{_mandir}/man*/*
+%attr(755,root,root) %dir %{_var}/spool/postfix/pid
+%attr(700,postfix,root) %dir %{_var}/spool/postfix/private
+%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}/man1/sendmail.1*
+%{_mandir}/man5/access.5*
+%{_mandir}/man5/aliases.5*
+%{_mandir}/man5/body_checks.5*
+%{_mandir}/man5/bounce.5*
+%{_mandir}/man5/canonical.5*
+%{_mandir}/man5/cidr_table.5*
+%{_mandir}/man5/generic.5*
+%{_mandir}/man5/header_checks.5*
+%{_mandir}/man5/master.5*
+%{_mandir}/man5/memcache_table.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/socketmap_table.5*
+%{_mandir}/man5/tcp_table.5*
+%{_mandir}/man5/transport.5*
+%{_mandir}/man5/virtual.5*
+%{_mandir}/man8/*.8*
+%{systemdunitdir}/%{name}.service
%files devel
%defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/libpostfix-*.so
%{_includedir}/postfix
-%if %{!?_without_ldap:1}%{?_without_ldap:0}
+%if %{with ldap}
%files dict-ldap
%defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/postfix/dict_ldap.so
+%attr(755,root,root) %{_libdir}/postfix/postfix-ldap.so
+%{_mandir}/man5/ldap_table.5*
%endif
-%if %{!?_without_mysql:1}%{?_without_mysql:0}
+%if %{with mysql}
%files dict-mysql
%defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/postfix/dict_mysql.so
+%attr(755,root,root) %{_libdir}/postfix/postfix-mysql.so
+%{_mandir}/man5/mysql_table.5*
%endif
%files dict-pcre
%defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/postfix/dict_pcre.so
+%attr(755,root,root) %{_libdir}/postfix/postfix-pcre.so
+#%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/mail/pcre_table
+%{_mandir}/man5/pcre_table.5*
-%if %{!?_without_psql:1}%{?_without_psql:0}
+%if %{with pgsql}
%files dict-pgsql
%defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/postfix/dict_pgsql.so
+%attr(755,root,root) %{_libdir}/postfix/postfix-pgsql.so
+%{_mandir}/man5/pgsql_table.5*
+%endif
+
+%if %{with sqlite}
+%files dict-sqlite
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/postfix/postfix-sqlite.so
+%{_mandir}/man5/sqlite_table.5*
+%endif
+
+%if %{with lmdb}
+%files dict-lmdb
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/postfix/postfix-lmdb.so
+%{_mandir}/man5/lmdb_table.5*
+%endif
+
+%if %{with cdb}
+%files dict-cdb
+%attr(755,root,root) %{_libdir}/postfix/postfix-cdb.so
%endif
+
+%files qshape
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_bindir}/qshape
+
+%files -n monit-rc-%{name}
+%defattr(644,root,root,755)
+%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/monit/%{name}.monitrc