%bcond_without ldap # without LDAP support
%bcond_without spf # without spf support
%bcond_without srs # without srs support
-#
+%bcond_without dynamic # dynamic modules
+%bcond_without hiredis # without redis
+# opendmarc.spec not ready, so off by default
+%bcond_with dmarc # DMARC support
+%bcond_without lmdb # LMDB support
+
+%if "%{pld_release}" == "ac"
+# hiredis build segfaults on ac-alpha
+%undefine with_hiredis
+%endif
+
Summary: University of Cambridge Mail Transfer Agent
Summary(pl.UTF-8): Agent Transferu Poczty Uniwersytetu w Cambridge
Summary(pt_BR.UTF-8): Servidor de correio eletrônico exim
Name: exim
-Version: 4.72
+Version: 4.89.1
Release: 1
Epoch: 2
License: GPL
Group: Networking/Daemons/SMTP
Source0: ftp://ftp.exim.org/pub/exim/exim4/%{name}-%{version}.tar.bz2
-# Source0-md5: ccc937b533568e5e8340f181a3b3d2ff
+# Source0-md5: 6e65d9fc17449dcde6254bd312c64822
Source1: ftp://ftp.exim.org/pub/exim/exim4/%{name}-html-%{version}.tar.bz2
-# Source1-md5: 8b39be84de74b94bd4b5c3e7aad3fcdf
+# Source1-md5: e633e855fa08855b4c0cae28eb7888bc
Source2: %{name}.init
Source3: %{name}.cron.db
Source4: %{name}4.conf
Source10: newaliases
Source11: %{name}.logrotate
Source12: %{name}.sysconfig
-Source13: ftp://ftp.csx.cam.ac.uk/pub/software/email/exim/exim4/FAQ.txt.bz2
-# Source13-md5: ff781bd31fb1d574c8b9d33f4bfd34a7
-Source14: ftp://ftp.csx.cam.ac.uk/pub/software/email/exim/exim4/config.samples.tar.bz2
+Source14: ftp://ftp.exim.org/pub/exim/exim4/old/config.samples.tar.bz2
# Source14-md5: 4b93321938a800caa6127c48ad60a42b
Source15: %{name}4-smtp.pamd
Source16: %{name}on.png
+# git log -p exim-4_87..exim-4_87+fixes --reverse -- . ":(exclude)doc/doc-*" ":(exclude)test" ":(exclude).*" > exim-git.patch
+Patch100: %{name}-git.patch
+# Patch100-md5: eccff092ef49b6e0f159d75c286abc4e
Patch0: %{name}4-EDITME.patch
Patch1: %{name}4-monitor-EDITME.patch
Patch2: %{name}4-cflags.patch
+Patch3: exim-defs.patch
Patch4: %{name}4-Makefile-Default.patch
# http://marc.merlins.org/linux/exim/files/sa-exim-cvs/localscan_dlopen_exim_4.20_or_better.patch
Patch5: localscan_dlopen_%{name}_4.20_or_better.patch
-Patch6: %{name}-noloadbalance.patch
-# http://sourceforge.net/projects/eximdsn/
-Patch7: %{name}_463_dsn_1_3.patch
+Patch6: exim-commandline_checks_require_admin.patch
+
Patch8: %{name}-spam-timeout.patch
-Patch9: %{name}-dkim.patch
+
Patch10: %{name}-force-sigalrm.patch
+
+Patch20: %{name}4-disableSSLv3.patch
URL: http://www.exim.org/
%{?with_sasl:BuildRequires: cyrus-sasl-devel >= 2.1.0}
BuildRequires: db-devel
+%{?with_dmarc:BuildRequires: opendmarc-devel}
+%{?with_hiredis:BuildRequires: hiredis-devel}
+BuildRequires: libidn-devel
+BuildRequires: libidn2-devel
%{?with_spf:BuildRequires: libspf2-devel >= 1.2.5-2}
%{?with_srs:BuildRequires: libsrs_alt-devel >= 1.0}
+%{?with_lmdb:BuildRequires: lmdb-devel}
%{?with_mysql:BuildRequires: mysql-devel}
-%{?with_ldap:BuildRequires: openldap-devel >= 2.4.6}
+%{?with_ldap:BuildRequires: openldap-devel >= 2.3.0}
BuildRequires: openssl-devel >= 0.9.7d
BuildRequires: pam-devel
BuildRequires: pcre-devel
BuildRequires: perl-devel >= 1:5.6.0
%{?with_pgsql:BuildRequires: postgresql-devel}
BuildRequires: readline-devel
+BuildRequires: rpm >= 4.4.9-56
BuildRequires: rpmbuild(macros) >= 1.268
%{?with_sqlite:BuildRequires: sqlite3-devel}
%{?with_whoson:BuildRequires: whoson-devel}
+%if "%{pld_release}" != "ac"
BuildRequires: xorg-lib-libX11-devel
BuildRequires: xorg-lib-libXaw-devel
+%else
+BuildRequires: XFree86-devel
+%endif
Requires(post): /bin/hostname
Requires(post): fileutils
Requires(post,preun): /sbin/chkconfig
Requires: findutils
Requires: pam >= 0.79.0
Requires: rc-scripts
+Requires: which
Provides: group(exim)
Provides: smtpdaemon
Provides: user(exim)
+Obsoletes: exipick
Obsoletes: smtpdaemon
-Conflicts: logrotate < 3.7-4
+Conflicts: logrotate < 3.8.3
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%description
%description devel -l pl.UTF-8
Pliki nagłówkowe dla Exima.
+%global dynamic_type yes
+%{?with_dynamic:%global dynamic_type 2}
+
%prep
%setup -q -a1 -a7
+#%patch100 -p2
+
%patch0 -p1
%patch1 -p1
%patch2 -p1
+%patch3 -p1
%patch4 -p1
%patch5 -p1
-%patch6 -p1
-%patch7 -p1
+%patch6 -p2
+
%patch8 -p1
-#%patch9 -p0
+
%patch10 -p1
-install %{SOURCE13} doc/FAQ.txt.bz2
+install %{SOURCE4} exim4.conf
install %{SOURCE14} doc/config.samples.tar.bz2
-
+%patch20 -p1
install -d Local
+cat << 'EOF' >> Local/Makefile-Linux
+CC=%{__cc}
+CUSTOM_CFLAGS=%{rpmcppflags} %{rpmcflags}
+CFLAGS_DYNAMIC=-shared -rdynamic -fPIC %{rpmldflags}
+LOOKUP_CDB=yes
+XLFLAGS=-L%{_prefix}/X11R6/%{_lib}
+X11_LD_LIB=%{_prefix}/X11R6/%{_lib}
+%{?with_dynamic:LOOKUP_MODULE_DIR=%{_libdir}/%{name}/modules}
+EXPERIMENTAL_DANE=yes
+EXPERIMENTAL_DCC=yes
+EXPERIMENTAL_PRDR=yes
+EXPERIMENTAL_DSN_INFO=yes
+EXPERIMENTAL_QUEUEFILE=yes
+SUPPORT_I18N=yes
+SUPPORT_I18N_2008=yes
+LDFLAGS+= -lidn -lidn2
+SUPPORT_PROXY=yes
+%if %{with dmarc}
+EXPERIMENTAL_DMARC=yes
+LOOKUP_LIBS+=-lopendmarc
+%endif
+%if %{with spf}
+EXPERIMENTAL_SPF=yes
+LOOKUP_LIBS+=-lspf2
+%endif
+%if %{with srs}
+EXPERIMENTAL_SRS=yes
+LOOKUP_LIBS+=-lsrs_alt
+%endif
+%if %{with hiredis}
+LOOKUP_REDIS=yes
+LOOKUP_LIBS+=-lhiredis
+%endif
+%if %{with mysql}
+LOOKUP_MYSQL=%{dynamic_type}
+# for dynamic
+LOOKUP_MYSQL_INCLUDE=-I%{_includedir}/mysql
+LOOKUP_MYSQL_LIBS=-lmysqlclient
+# for static
+LOOKUP_INCLUDE+=-I%{_includedir}/mysql
+LOOKUP_LIBS+=-lmysqlclient
+%endif
+%if %{with pgsql}
+LOOKUP_PGSQL=%{dynamic_type}
+# for dynamic
+LOOKUP_PGSQL_INCLUDE=-I%{_includedir}/pgsql
+LOOKUP_PGSQL_LIBS=-lpq
+# for static
+LOOKUP_INCLUDE+=-I%{_includedir}/pgsql
+LOOKUP_LIBS+=-lpq
+%endif
+%if %{with sqlite}
+LOOKUP_SQLITE=%{dynamic_type}
+# for dynamic
+LOOKUP_SQLITE_LIBS=-lsqlite3
+# for static
+LOOKUP_LIBS+=-lsqlite3
+%endif
+%if %{with whoson}
+LOOKUP_WHOSON=%{dynamic_type}
+# for dynamic
+LOOKUP_WHOSON_LIBS=-lwhoson
+# for static
+LOOKUP_LIBS+=-lwhoson
+%endif
+%if %{with sasl}
+AUTH_CYRUS_SASL=yes
+LOOKUP_LIBS+=-lsasl2
+%endif
+%if %{with ldap}
+LOOKUP_LDAP=%{dynamic_type}
+LDAP_LIB_TYPE=OPENLDAP2
+# for dynamic
+LOOKUP_LDAP_LIBS=-lldap -llber
+# for static
+LOOKUP_LIBS+=-lldap -llber
+%endif
+%if %{with lmdb}
+EXPERIMENTAL_LMDB=yes
+LOOKUP_LIBS+=-llmdb
+%endif
+EOF
+
+# have to be after Local/Makefile-Linux creation
cp -f src/EDITME Local/Makefile
cp -f exim_monitor/EDITME Local/eximon.conf
%build
-%{__make} -j1 \
- FULLECHO='' \
- CC="%{__cc}" \
- CUSTOM_CFLAGS="%{rpmcppflags} %{rpmcflags} -DSUPPORT_DSN=yes %{?with_spf:-DEXPERIMENTAL_SPF=yes} %{?with_srs:-DEXPERIMENTAL_SRS=yes}" \
- LOOKUP_CDB=yes \
- XLFLAGS=-L%{_prefix}/X11R6/%{_lib} \
- X11_LD_LIB=%{_prefix}/X11R6/%{_lib} \
- %{?with_mysql:LOOKUP_MYSQL=yes} \
- %{?with_pgsql:LOOKUP_PGSQL=yes} \
- %{?with_sqlite:LOOKUP_SQLITE=yes} \
- %{?with_whoson:LOOKUP_WHOSON=yes} \
- %{?with_sasl:AUTH_CYRUS_SASL=yes} \
- %{?with_ldap:LOOKUP_LDAP=yes LDAP_LIB_TYPE=OPENLDAP2} \
- LOOKUP_LIBS="%{?with_ldap:-lldap -llber} %{?with_mysql:-lmysqlclient} %{?with_pgsql:-lpq} %{?with_sqlite:-lsqlite3} %{?with_whoson:-lwhoson} %{?with_spf:-lspf2} %{?with_srs:-lsrs_alt} %{?with_sasl:-lsasl2}" \
- LOOKUP_INCLUDE="%{?with_mysql:-I%{_includedir}/mysql} %{?with_pgsql:-I%{_includedir}/pgsql}"
+%{__make} -e -j1 \
+ FULLECHO=''
%install
rm -rf $RPM_BUILD_ROOT
install -d $RPM_BUILD_ROOT%{_sysconfdir}/mail
-install -d $RPM_BUILD_ROOT/etc/{cron.{daily,weekly},logrotate.d,rc.d/init.d,sysconfig,pam.d,security}
-install -d $RPM_BUILD_ROOT{%{_bindir},%{_sbindir},%{_mandir}/man8,%{_prefix}/lib}
+install -d $RPM_BUILD_ROOT/etc/{cron.daily,logrotate.d,rc.d/init.d,sysconfig,pam.d,security}
+install -d $RPM_BUILD_ROOT{%{_bindir},%{_sbindir},%{_mandir}/man8,/usr/lib}
install -d $RPM_BUILD_ROOT%{_var}/{spool/exim/{db,input,msglog},log/{archive,}/exim,mail}
install -d $RPM_BUILD_ROOT{%{_desktopdir},%{_pixmapsdir}}
-install -d $RPM_BUILD_ROOT%{_libdir}/%{name}
+install -d $RPM_BUILD_ROOT%{_libdir}/%{name}/modules
install build-Linux-*/exim{,_fixdb,_tidydb,_dbmbuild,on.bin,_dumpdb,_lock} \
build-Linux-*/exi{cyclog,next,what} %{SOURCE10} \
- build-Linux-*/{exigrep,eximstats,exiqsumm,convert4r4} \
+ build-Linux-*/{exigrep,exiqgrep,exipick,eximstats,exiqsumm,convert4r4} \
util/unknownuser.sh \
$RPM_BUILD_ROOT%{_bindir}
install build-Linux-*/eximon.bin $RPM_BUILD_ROOT%{_bindir}
install build-Linux-*/eximon $RPM_BUILD_ROOT%{_bindir}
+%{?with_dynamic:install build-Linux-*/*/*.so $RPM_BUILD_ROOT%{_libdir}/%{name}/modules}
install %{SOURCE5} .
-install %{SOURCE3} $RPM_BUILD_ROOT/etc/cron.weekly
+install %{SOURCE3} $RPM_BUILD_ROOT/etc/cron.daily
install %{SOURCE12} $RPM_BUILD_ROOT/etc/sysconfig/%{name}
install %{SOURCE2} $RPM_BUILD_ROOT/etc/rc.d/init.d/%{name}
-install %{SOURCE11} $RPM_BUILD_ROOT/etc/logrotate.d/%{name}
-install %{SOURCE4} $RPM_BUILD_ROOT%{_sysconfdir}/mail/exim.conf
+install %{SOURCE11} $RPM_BUILD_ROOT/etc/logrotate.d/%{name}
+install exim4.conf $RPM_BUILD_ROOT%{_sysconfdir}/mail/exim.conf
install {doc,man}/*.8 $RPM_BUILD_ROOT%{_mandir}/man8
install %{SOURCE9} $RPM_BUILD_ROOT%{_sysconfdir}/mail/aliases
install %{SOURCE15} $RPM_BUILD_ROOT/etc/pam.d/smtp
ln -sf %{_bindir}/exim $RPM_BUILD_ROOT%{_sbindir}/sendmail
-ln -sf %{_bindir}/exim $RPM_BUILD_ROOT%{_prefix}/lib/sendmail
+ln -sf %{_bindir}/exim $RPM_BUILD_ROOT/usr/lib/sendmail
ln -sf %{_bindir}/exim $RPM_BUILD_ROOT%{_sbindir}/mailq
ln -sf %{_bindir}/exim $RPM_BUILD_ROOT%{_sbindir}/rsmtp
ln -sf %{_bindir}/exim $RPM_BUILD_ROOT%{_sbindir}/rmail
install %{SOURCE16} $RPM_BUILD_ROOT%{_pixmapsdir}
install -d $RPM_BUILD_ROOT%{_includedir}/%{name}
-install src/{local_scan.h,store.h,mytypes.h} $RPM_BUILD_ROOT%{_includedir}/%{name}
+install src/{local_scan,store,mytypes}.h $RPM_BUILD_ROOT%{_includedir}/%{name}
+install build-Linux-*/config.h $RPM_BUILD_ROOT%{_includedir}/%{name}
touch $RPM_BUILD_ROOT%{_var}/log/exim/{main,reject,panic,process}.log
%attr(755,root,root) %{_bindir}/exiwhat
%attr(755,root,root) %{_bindir}/exicyclog
%attr(755,root,root) %{_bindir}/exigrep
+%attr(755,root,root) %{_bindir}/exipick
+%attr(755,root,root) %{_bindir}/exiqgrep
%attr(755,root,root) %{_bindir}/eximstats
%attr(755,root,root) %{_bindir}/exiqsumm
%attr(755,root,root) %{_bindir}/unknownuser.sh
%attr(755,root,root) %{_sbindir}/rsmtp
%attr(755,root,root) %{_sbindir}/runq
%attr(755,root,root) %{_sbindir}/sendmail
-%attr(755,root,root) %{_prefix}/lib/sendmail
-%attr(754,root,root) /etc/cron.weekly/exim.cron.db
+%attr(755,root,root) /usr/lib/sendmail
+%attr(754,root,root) /etc/cron.daily/exim.cron.db
%attr(750,exim,root) %dir %{_var}/log/exim
%attr(750,exim,root) %dir %{_var}/log/archive/exim
%attr(640,exim,root) %ghost %{_var}/log/exim/*
%attr(640,root,root) %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
-%{_libdir}/%{name}
+%if %{with dynamic}
+%dir %{_libdir}/%{name}
+%dir %{_libdir}/%{name}/modules
+%{?with_mysql:%attr(755,root,root) %{_libdir}/%{name}/modules/mysql.so}
+%{?with_pgsql:%attr(755,root,root) %{_libdir}/%{name}/modules/pgsql.so}
+%{?with_sqlite:%attr(755,root,root) %{_libdir}/%{name}/modules/sqlite.so}
+%{?with_whoson:%attr(755,root,root) %{_libdir}/%{name}/modules/whoson.so}
+%endif
%{_mandir}/man8/*
%files X11