exim/exim.spec

445 lines
12 KiB
RPMSpec
Raw Normal View History

#
# spec file for package exim
#
# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
Name: exim
BuildRequires: cyrus-sasl-devel
BuildRequires: db-devel
BuildRequires: openldap2-devel
BuildRequires: pcre-devel
%if %{?suse_version:1}%{?!suse_version:0}
BuildRequires: libopenssl-devel
BuildRequires: tcpd-devel
BuildRequires: xorg-x11-devel
%else
BuildRequires: libXaw-devel
BuildRequires: libXext-devel
BuildRequires: libXt-devel
BuildRequires: openssl-devel
BuildRequires: tcp_wrappers
BuildRequires: xorg-x11-server-sdk
%endif
Url: http://www.exim.org/
Conflicts: sendmail sendmail-tls postfix
Provides: smtp_daemon
%if %{?suse_version:%suse_version}%{?!suse_version:0} > 800
Requires: logrotate
%if 0%{?suse_version} > 1220
BuildRequires: pkgconfig(systemd)
%{?systemd_requires}
%else
Requires(pre): %insserv_prereq
%endif
Requires(pre): %fillup_prereq
Requires(pre): /usr/sbin/useradd
Requires(pre): fileutils textutils
%endif
Version: 4.82
Release: 0
%if %{?build_with_mysql:1}0
BuildRequires: mysql-devel
Provides: exim = %version
%endif
%if %{?build_with_pgsql:1}0
BuildRequires: postgresql-devel
Provides: exim = %version
%endif
Summary: The Exim Mail Transfer Agent, a Replacement for sendmail
License: GPL-2.0+
Group: Productivity/Networking/Email/Servers
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Source: exim-%{version}.tar.bz2
Source1: sysconfig.exim
Source2: exim.logrotate
Source11: exim.rc
Source12: permissions.exim
Source13: apparmor.usr.sbin.exim
Source20: http://www.logic.univie.ac.at/~ametzler/debian/exim4manpages/exim4-manpages.tar.bz2
Source30: eximstats-html-update.py
Source31: eximstats.conf
Source32: exim.service
- update to 4.80 - Bugzilla 949 - Documentation tweak. - Bugzilla 1093 - eximstats DATA reject detection regexps improved. - Bugzilla 1169 - primary_hostname spelling was incorrect in docs. - Implemented gsasl authenticator. - Implemented heimdal_gssapi authenticator with "server_keytab" option. - Local/Makefile support for (AUTH|LOOKUP)_*_PC=foo to use `pkg-config foo` for cflags/libs. - Swapped $auth1/$auth2 for gsasl GSSAPI mechanism, to be more consistent with rest of GSASL and with heimdal_gssapi. - Local/Makefile support for USE_(GNUTLS|OPENSSL)_PC=foo to use `pkg-config foo` for cflags/libs for the TLS implementation. - New expansion variable $tls_bits; Cyrus SASL server connection properties get this fed in as external SSF. A number of robustness and debugging improvements to the cyrus_sasl authenticator. - cyrus_sasl server now expands the server_realm option. - Bugzilla 1214 - Log authentication information in reject log. - Added dbmjz lookup type. - Let heimdal_gssapi authenticator take a SASL message without an authzid. - MAIL args handles TAB as well as SP, for better interop with non-compliant senders. - Bugzilla 1237 - fix cases where printf format usage not indicated. - tls_peerdn now print-escaped for spool files. Observed some $tls_peerdn in wild which contained \n, which resulted in spool file corruption. - TLS fixes for OpenSSL: support TLS 1.1 & 1.2; new "openssl_options" values; set SSL_MODE_AUTO_RETRY so that OpenSSL will retry a read or write after TLS renegotiation, which otherwise led to messages "Got SSL error 2". - Bugzilla 1239 - fix DKIM verification when signature was not inserted as a tracking header (ie: a signed header comes before the signature). - Bugzilla 660 - Multi-valued attributes from ldap now parseable as a comma-sep list; embedded commas doubled. - Refactored ACL "verify =" logic to table-driven dispatch. - LDAP: Check for errors of TLS initialisation, to give correct diagnostics. - Removed "dont_insert_empty_fragments" fron "openssl_options". Removed SSL_clear() after SSL_new() which led to protocol negotiation failures. We appear to now support TLS1.1+ with Exim. - OpenSSL: new expansion var $tls_sni, which if used in tls_certificate lets Exim select keys and certificates based upon TLS SNI from client. Also option tls_sni on SMTP Transports. Also clear $tls_bits correctly before an outbound SMTP session. New log_selector, +tls_sni. - Bugzilla 1122 - check localhost_number expansion for failure, avoid NULL dereference. - Revert part of NM/04, it broke log_path containing %D expansions. Left warnings. Added "eximon gdb" invocation mode. - Defaulting "accept_8bitmime" to true, not false. - Added -bw for inetd wait mode support. - Added PCRE_CONFIG=yes support to Makefile for using pcre-config to locate the relevant includes and libraries. Made this the default. - Fixed headers_only on smtp transports (was not sending trailing dot). Bugzilla 1246, report and most of solution from Tomasz Kusy. - ${eval } now uses 64-bit and supports a "g" suffix (like to "k" and "m"). This may cause build issues on older platforms. - Revamped GnuTLS support, passing tls_require_ciphers to gnutls_priority_init, ignoring Exim options gnutls_require_kx, gnutls_require_mac & gnutls_require_protocols (no longer supported). Added SNI support via GnuTLS too. Made ${randint:..} supplier available, if using not-too-old GnuTLS. - Added EXPERIMENTAL_OCSP for OpenSSL. - Applied dnsdb SPF support patch from Janne Snabb. Applied second patch from Janne, implementing suggestion to default multiple-strings-in-record handling to match SPF spec. - Added expansion variable $tod_epoch_l for a higher-precision time. - Fix DCC dcc_header content corruption (stack memory referenced, read-only, out of scope). Patch from Wolfgang Breyha, report from Stuart Northfield. - Fix three issues highlighted by clang analyser static analysis. Only crash-plausible issue would require the Cambridge-specific iplookup router and a misconfiguration. Report from Marcin Mirosław. - Another attempt to deal with PCRE_PRERELEASE, this one less buggy. - %D in printf continues to cause issues (-Wformat=security), so for now guard some of the printf checks behind WANT_DEEPER_PRINTF_CHECKS. As part of this, removing so much warning spew let me fix some minor real issues in debug logging. - GnuTLS was always using default tls_require_ciphers, due to a missing assignment on my part. Fixed. - Added tls_dh_max_bits option, defaulting to current hard-coded limit of NSS, for GnuTLS/NSS interop. - Validate tls_require_ciphers on startup, since debugging an invalid string otherwise requires a connection and a bunch more work and it's relatively easy to get wrong. Should also expose TLS library linkage problems. - Pull in <features.h> on Linux, for some portability edge-cases of 64-bit ${eval} (JH/03). - Define _GNU_SOURCE in exim.h; it's needed for some releases of protection layer was required, which is not implemented. Bugzilla 1254 - Overhaul DH prime handling, supply RFC-specified DH primes as built into Exim, default to IKE id 23 from RFC 5114 (2048 bit). Make tls_dhparam take prime identifiers. Also unbreak combination of OpenSSL+DH_params+TLSSNI. - Disable SSLv2 by default in OpenSSL support. OBS-URL: https://build.opensuse.org/package/show/server:mail/exim?expand=0&rev=122
2012-08-19 14:12:43 +00:00
Patch: exim-tail.patch
%if !%{?build_with_mysql:1}0 && !%{?build_with_pgsql:1}0
%package -n eximon
Summary: Eximon, an graphical frontend to administer Exim's mail queue
Group: Productivity/Networking/Email/Servers
%package -n eximstats-html
Summary: Create HTML reports of exim logs
Group: Productivity/Networking/Email/Servers
Requires: perl-GD
Requires: perl-GDGraph
Requires: perl-GDTextUtil
%endif
%description
Exim is a mail transport agent (MTA) developed at the University of
Cambridge for use on Unix systems connected to the Internet. It is
freely available under the terms of the GNU General Public Licence. In
style, it is similar to Smail 3, but its facilities are more extensive.
In particular, it has options for verifying incoming sender and
recipient addresses, for refusing mail from specified hosts, networks,
or senders, and for controlling mail relaying.
%if !%{?build_with_mysql:1}0 && !%{?build_with_pgsql:1}0
%description -n eximon
This allows administrators to view the exim agent's mail queue and
logs, and perform a variety of actions on queued messages, such as
freezing, bouncing and thawing messages, and even editing body and
header of mails.
%description -n eximstats-html
If this package is installed alongside the exim MTA, and you enable
EXIM_REPORT_WEEKLY_HTML in /etc/sysconfig/exim, logrotate/cron will
create HTML reports in /srv/www/eximstats.
You can edit /etc/apache2/conf.d/eximstats.conf to configure your
webserver for the reports.
The script /usr/sbin/eximstats-html-update.py can create the reports
for log files that were rotated in the past. (You would only run this
once, if at all. The rest is done by logrotate / cron.)
%endif
%prep
%setup -q -n exim-%{version}
%patch
# build with fPIE/pie on SUSE 10.0 or newer, or on any other platform
%if %{?suse_version:%suse_version}%{?!suse_version:99999} > 930
fPIE="-fPIE"
pie="-pie"
%endif
%if %{?suse_version:%suse_version}%{?!suse_version:99999} > 1100
CFLAGS_OPT_WERROR="-Werror=format-security -Werror=missing-format-attribute"
%endif
cat <<-EOF > Local/Makefile
# see src/EDITME for comments.
BIN_DIRECTORY=/usr/sbin
CONFIGURE_FILE=/etc/exim/exim.conf
EXIM_USER=mail
EXIM_GROUP=mail
SPOOL_DIRECTORY=/var/spool/exim
ROUTER_ACCEPT=yes
ROUTER_DNSLOOKUP=yes
ROUTER_IPLITERAL=yes
ROUTER_MANUALROUTE=yes
ROUTER_QUERYPROGRAM=yes
ROUTER_REDIRECT=yes
# ROUTER_IPLOOKUP=yes
TRANSPORT_APPENDFILE=yes
TRANSPORT_AUTOREPLY=yes
TRANSPORT_PIPE=yes
TRANSPORT_SMTP=yes
TRANSPORT_LMTP=yes
SUPPORT_MAILDIR=yes
SUPPORT_MAILSTORE=yes
SUPPORT_MBX=yes
LOOKUP_DBM=yes
LOOKUP_LSEARCH=yes
LOOKUP_CDB=yes
LOOKUP_DNSDB=yes
LOOKUP_DSEARCH=yes
LOOKUP_LDAP=yes
%if %{?build_with_mysql:1}0
LOOKUP_MYSQL=yes
%endif
%if %{?build_with_pgsql:1}0
LOOKUP_PGSQL=yes
%endif
LOOKUP_NIS=yes
# LOOKUP_NISPLUS=yes
# LOOKUP_ORACLE=yes
LOOKUP_PASSWD=yes
# LOOKUP_PGSQL=yes
# LOOKUP_WHOSON=yes
CYRUS_SASLAUTHD_SOCKET=/var/run/sasl2/mux
LDAP_LIB_TYPE=OPENLDAP2
# LOOKUP_INCLUDE=-I /usr/local/ldap/include -I /usr/local/mysql/include -I /usr/local/pgsql/include
# LOOKUP_LIBS=-L/usr/local/lib -lldap -llber -lmysqlclient -lpq
LOOKUP_LIBS=-lldap -llber
%if %{?build_with_mysql:1}0
LOOKUP_INCLUDE=-I /usr/include/mysql
LOOKUP_LIBS=-lldap -llber -lmysqlclient
%endif
%if %{?build_with_pgsql:1}0
LOOKUP_INCLUDE=-I /usr/include/pgsql
LOOKUP_LIBS=-lldap -llber -lpq
%endif
EXIM_MONITOR=eximon.bin
WITH_CONTENT_SCAN=yes
WITH_OLD_DEMIME=yes
AUTH_CRAM_MD5=yes
AUTH_PLAINTEXT=yes
# AUTH_SPA=yes
AUTH_DOVECOT=yes
SUPPORT_TLS=yes
TLS_LIBS=-lssl -lcrypto
INFO_DIRECTORY=%{_infodir}
LOG_FILE_PATH=/var/log/exim/%%s.log
EXICYCLOG_MAX=10
SYSLOG_LOG_PID=yes
COMPRESS_COMMAND=/bin/gzip
COMPRESS_SUFFIX=gz
ZCAT_COMMAND=/usr/bin/zcat
# SUPPORT_PAM=yes
# You probably need to add -lpam to EXTRALIBS
# RADIUS_CONFIG_FILE=/etc/radiusclient/radiusclient.conf
# CYRUS_PWCHECK_SOCKET=/var/pwcheck/pwcheck
# USE_TCP_WRAPPERS=yes
NO_SYMLINK=yes
CHOWN_COMMAND=/bin/chown
CHGRP_COMMAND=/bin/chgrp
MV_COMMAND=/bin/mv
RM_COMMAND=/bin/rm
PERL_COMMAND=/usr/bin/perl
# APPENDFILE_MODE=0600
# APPENDFILE_DIRECTORY_MODE=0700
# APPENDFILE_LOCKFILE_MODE=0600
# CONFIGURE_FILE_USE_NODE=yes
# CONFIGURE_FILE_USE_EUID=yes
# DELIVER_BUFFER_SIZE=8192
# EXIMDB_DIRECTORY_MODE=0750
# EXIMDB_MODE=0640
# EXIMDB_LOCKFILE_MODE=0640
# HEADER_MAXSIZE="(1024*1024)"
# INPUT_DIRECTORY_MODE=0750
# LOG_DIRECTORY_MODE=0750
# LOG_MODE=0640
# LOOKUP_TESTDB=yes
MAKE_SHELL=/bin/bash
# MAX_NAMED_LIST=16
# MAXINTERFACES=250
# MSGLOG_DIRECTORY_MODE=0750
# PERL_CC=
# PERL_CCOPTS=
# PERL_LIBS=
PID_FILE_PATH=/var/run/exim.pid
# SPOOL_DIRECTORY_MODE=0750
# SPOOL_MODE=0640
SUPPORT_MOVE_FROZEN_MESSAGES=yes
HAVE_IPV6=YES
CFLAGS=$RPM_OPT_FLAGS -Wall $CFLAGS_OPT_WERROR -fno-strict-aliasing -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DLDAP_DEPRECATED $fPIE
EXTRALIBS=-ldl -L/usr/X11R6/%{_lib} $pie
EOF
touch Local/eximon.conf
rm -f doc/*.{orig,txt~}
%build
make
%install
%if 0%{?suse_version} > 1220
mkdir -p $RPM_BUILD_ROOT/%{_unitdir}
%else
mkdir -p $RPM_BUILD_ROOT/etc/init.d
%endif
mkdir -p $RPM_BUILD_ROOT/etc/logrotate.d
mkdir -p $RPM_BUILD_ROOT/usr/{bin,sbin,lib}
mkdir -p $RPM_BUILD_ROOT/var/log/exim
mkdir -p $RPM_BUILD_ROOT/var/spool/mail/
mkdir -p $RPM_BUILD_ROOT/var/adm/fillup-templates
mkdir -p $RPM_BUILD_ROOT%{_mandir}/man8
mkdir -p $RPM_BUILD_ROOT/usr/bin
make inst_dest=$RPM_BUILD_ROOT/usr/sbin \
inst_conf=$RPM_BUILD_ROOT/etc/exim/exim.conf \
inst_info=$RPM_BUILD_ROOT/%{_infodir} \
INSTALL_ARG=-no_chown install
mv $RPM_BUILD_ROOT/usr/sbin/exim-%{version}* $RPM_BUILD_ROOT/usr/sbin/exim
mv $RPM_BUILD_ROOT/etc/exim/exim.conf src/configure.default # with all substitutions done
%if 0%{?suse_version} > 1220
install -m 755 %{S:32} $RPM_BUILD_ROOT/%{_unitdir}/exim.service
%else
install -m 755 %{S:11} $RPM_BUILD_ROOT/etc/init.d/exim
%endif
# aka...
for i in \
/usr/lib/sendmail \
/usr/bin/runq \
/usr/bin/rsmtp \
/usr/bin/mailq \
/usr/bin/newaliases
do
ln -sf ../sbin/exim $RPM_BUILD_ROOT$i
done
ln -sf exim $RPM_BUILD_ROOT/usr/sbin/sendmail
%if 0%{?suse_version} > 1220
ln -sv ../../%{_unitdir}/exim.service $RPM_BUILD_ROOT/usr/sbin/rcexim
%else
ln -sv ../../etc/init.d/exim $RPM_BUILD_ROOT/usr/sbin/rcexim
%endif
%if !%{?build_with_mysql:1}0 && !%{?build_with_pgsql:1}0
mv $RPM_BUILD_ROOT/usr/sbin/eximon* $RPM_BUILD_ROOT/usr/bin/
%else
rm $RPM_BUILD_ROOT/usr/sbin/eximon*
%endif
cp -p %{S:1} $RPM_BUILD_ROOT/var/adm/fillup-templates/sysconfig.exim
install -m 644 %{S:2} $RPM_BUILD_ROOT/etc/logrotate.d/exim
# man pages
mv doc/exim.8 $RPM_BUILD_ROOT/%{_mandir}/man8/
pod2man --center=EXIM --section=8 $RPM_BUILD_ROOT/usr/sbin/eximstats > $RPM_BUILD_ROOT/%{_mandir}/man8/eximstats.8
tar xvjf %{S:20}
cp -p exim4-manpages/* $RPM_BUILD_ROOT/%{_mandir}/man8/
for i in \
sendmail \
runq \
rsmtp \
mailq \
newaliases
do
ln -sf exim.8.gz $RPM_BUILD_ROOT/%{_mandir}/man8/$i.8.gz
done
for i in \
exim_dumpdb \
exim_fixdb \
exim_tidydb
do
ln -sf exim_db.8.gz $RPM_BUILD_ROOT/%{_mandir}/man8/$i.8.gz
done
perl -pi -e 's%/usr/share/doc/exim4%/usr/share/doc/packages/exim%g' `find $RPM_BUILD_ROOT/%{_mandir}/man8 -name "*.8"`
gzip -9 doc/*.txt
#
# package the utilities without executable permissions, to silence rpmlint warnings
chmod 644 util/*.{pl,sh} src/convert4r*
#
# eximstats-html files
%if !%{?build_with_mysql:1}0 && !%{?build_with_pgsql:1}0
mkdir -p $RPM_BUILD_ROOT/srv/www/eximstats
mkdir -p $RPM_BUILD_ROOT/etc/apache2/conf.d/
cp -p $RPM_SOURCE_DIR/eximstats.conf $RPM_BUILD_ROOT/etc/apache2/conf.d/
install -m 0755 $RPM_SOURCE_DIR/eximstats-html-update.py $RPM_BUILD_ROOT/%{_sbindir}
%endif
# apparmor profile
install -D -m 0644 $RPM_SOURCE_DIR/apparmor.usr.sbin.exim $RPM_BUILD_ROOT/etc/apparmor/profiles/extras/usr.sbin.exim
%pre
%if 0%{?suse_version} > 1220
%service_add_pre exim.service
%endif
%post
%if 0%{?suse_version} < 1131
%run_permissions
%else
%set_permissions /usr/sbin/exim
%endif
if ! test -s etc/exim/exim.conf; then
if test -s etc/exim.conf; then
mv etc/exim.conf etc/exim/
echo moving exim.conf to /etc/exim/
else
cp -p usr/share/doc/packages/%{name}/configure.default etc/exim/exim.conf
echo copying default config file to /etc/exim/exim.conf
fi
fi
# create logfiles if missing
for i in var/log/exim/main.log var/log/exim/panic.log var/log/exim/reject.log; do
if ! test -e $i; then touch $i; chown mail:mail $i; chmod 640 $i ; fi
done
%if 0%{?suse_version} > 1220
%{fillup_only}
%service_add_post exim.service
%else
%{fillup_and_insserv exim}
%endif
exit 0
%if %{?suse_version:1}%{?!suse_version:0}
%preun
%if 0%{?suse_version} > 1220
%service_del_preun exim.service
%else
%stop_on_removal exim
%endif
%endif
%postun
%if %{?suse_version:1}%{?!suse_version:0}
%if 0%{?suse_version} > 1220
%service_del_postun exim.service
%else
%restart_on_update exim
%endif
%endif
%insserv_cleanup
%verifyscript
%verify_permissions -e /usr/sbin/exim
%files
%defattr(-,root,root)
%doc ACKNOWLEDGMENTS CHANGES LICENCE NOTICE README.UPDATING README
%doc doc
%doc src/configure.default
%doc build-Linux-*/convert4r{3,4}
%doc util
%doc %{_mandir}/man8/*
/usr/sbin/exicyclog
/usr/sbin/exigrep
/usr/sbin/exiqgrep
%verify(not mode) %attr(4755,root,root) /usr/sbin/exim
/usr/sbin/exim_*
/usr/sbin/eximstats
/usr/sbin/exinext
/usr/sbin/exipick
/usr/sbin/exiqsumm
/usr/sbin/exiwhat
%dir /etc/exim
%if 0%{?suse_version} > 1220
%{_unitdir}/exim.service
%else
%config /etc/init.d/exim
%endif
%config(noreplace) /etc/logrotate.d/exim
%if %{?suse_version:%suse_version}%{?!suse_version:99999} < 1000
%config(noreplace) /etc/permissions.d/exim
%endif
%dir /etc/apparmor
%dir /etc/apparmor/profiles
%dir /etc/apparmor/profiles/extras
%config(noreplace) /etc/apparmor/profiles/extras/usr.sbin.exim
/usr/sbin/rcexim
/usr/bin/mailq
/usr/bin/runq
/usr/bin/rsmtp
/usr/bin/newaliases
/usr/sbin/sendmail
/usr/lib/sendmail
/var/adm/fillup-templates/sysconfig.exim
%dir %attr(750,mail,mail) /var/log/exim
%if !%{?build_with_mysql:1}0 && !%{?build_with_pgsql:1}0
%files -n eximon
%defattr(-,root,root)
/usr/bin/eximon
/usr/bin/eximon.bin
%files -n eximstats-html
%defattr(-,root,root)
%attr(0750,root,www) /srv/www/eximstats
/etc/apache2
/etc/apache2/conf.d
/etc/apache2/conf.d/eximstats.conf
%{_sbindir}/eximstats-html-update.py
%endif
%changelog