summaryrefslogtreecommitdiff
path: root/exim.spec
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2025-10-11 03:24:48 +0000
committerCoprDistGit <infra@openeuler.org>2025-10-11 03:24:48 +0000
commit18d5addc64e6606c659fcf16ccfca578eae814b5 (patch)
tree1dd233e8d7003043fc19aad1e814792b21371e73 /exim.spec
parent7ac4d91ab9d703eb0d0dde081580514c9a7b3f3d (diff)
automatic import of eximopeneuler24.03_LTS_SP2
Diffstat (limited to 'exim.spec')
-rw-r--r--exim.spec505
1 files changed, 505 insertions, 0 deletions
diff --git a/exim.spec b/exim.spec
new file mode 100644
index 0000000..b8398d6
--- /dev/null
+++ b/exim.spec
@@ -0,0 +1,505 @@
+%bcond_without clamav
+%{!?_hardened_build:%global _hardened_build 1}
+
+Summary: The exim mail transfer agent
+Name: exim
+Version: 4.98.2
+Release: 1
+License: GPLv2+
+Url: https://www.exim.org/
+
+Provides: MTA smtpd smtpdaemon server(smtp)
+Requires(post): /sbin/restorecon %{_sbindir}/alternatives systemd
+Requires(preun): %{_sbindir}/alternatives systemd
+Requires(postun): %{_sbindir}/alternatives systemd
+Requires(pre): %{_sbindir}/groupadd, %{_sbindir}/useradd
+
+%if %{with clamav}
+BuildRequires: clamd
+%endif
+
+Source0: https://ftp.exim.org/pub/exim/exim4/%{name}-%{version}.tar.xz
+Source1: exim.sysconfig
+Source2: exim.logrotate
+# The exim-tidydb.sh is used to tidy up the contents of a hints database.
+Source3: exim-tidydb.sh
+Source4: exim.pam
+Source5: exim-clamav-tmpfiles.conf
+Source6: exim-greylist.conf.inc
+Source7: mk-greylist-db.sql
+# The greylist-tidy.sh is used to delete expired data in greylist
+Source8: greylist-tidy.sh
+Source9: trusted-configs
+Source10: exim.service
+# The exim-gen-cert is used to generate the certificate
+Source11: exim-gen-cert
+Source12: clamd.exim.service
+
+Patch0: exim-4.98.2-config.patch
+Patch1: exim-4.94-libdir.patch
+Patch2: exim-4.98.2-dlopen-localscan.patch
+Patch3: exim-4.96-pic.patch
+Patch4: exim-4.98.2-no-gsasl.patch
+
+
+Requires: /etc/pki/tls/certs /etc/pki/tls/private
+Requires: setup
+Requires: perl
+Recommends: publicsuffix-list
+BuildRequires: gcc
+BuildRequires: libdb-devel
+BuildRequires: openssl-devel
+BuildRequires: zlib-devel
+BuildRequires: openldap-devel
+BuildRequires: pam-devel
+BuildRequires: pcre2-devel
+BuildRequires: sqlite-devel
+BuildRequires: cyrus-sasl-devel
+BuildRequires: libspf2-devel
+BuildRequires: libopendmarc-devel
+BuildRequires: mariadb-connector-c-devel
+BuildRequires: libpq-devel
+BuildRequires: libXaw-devel
+BuildRequires: libXmu-devel
+BuildRequires: libXext-devel
+BuildRequires: libX11-devel
+BuildRequires: libSM-devel
+BuildRequires: perl-devel
+BuildRequires: perl-generators
+BuildRequires: perl-File-FcntlLock
+BuildRequires: libICE-devel
+BuildRequires: libXpm-devel
+BuildRequires: libXt-devel
+BuildRequires: perl(ExtUtils::Embed)
+BuildRequires: systemd-units
+BuildRequires: libgsasl-devel
+BuildRequires: mariadb-devel
+BuildRequires: libnsl2-devel
+BuildRequires: libtirpc-devel
+BuildRequires: gnupg2
+BuildRequires: grep
+BuildRequires: make
+
+%description
+Exim is a message transfer 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
+general. There is a great deal of flexibility in the way mail can be
+routed, and there are extensive facilities for checking incoming
+mail. Exim can be installed in place of sendmail, although the
+configuration of exim is quite different to that of sendmail.
+
+%package mysql
+Summary: MySQL lookup support for Exim
+Requires: exim = %{version}-%{release}
+
+%description mysql
+This package contains the MySQL lookup module for Exim
+
+%package pgsql
+Summary: PostgreSQL lookup support for Exim
+Requires: exim = %{version}-%{release}
+
+%description pgsql
+This package contains the PostgreSQL lookup module for Exim
+
+%package mon
+Summary: X11 monitor application for Exim
+
+%description mon
+The Exim Monitor is an optional supplement to the Exim package. It
+displays information about Exim's processing in an X window, and an
+administrator can perform a number of control actions from the window
+interface.
+
+%if %{with clamav}
+%package clamav
+Summary: Clam Antivirus scanner dæmon configuration for use with Exim
+Requires: clamd exim
+Obsoletes: clamav-exim <= 0.86.2
+
+%description clamav
+This package contains configuration files which invoke a copy of the
+clamav dæmon for use with Exim. It can be activated by adding (or
+uncommenting)
+
+ av_scanner = clamd:%{_var}/run/clamd.exim/clamd.sock
+
+in your exim.conf, and using the 'malware' condition in the DATA ACL,
+as follows:
+
+ deny message = This message contains malware ($malware_name)
+ malware = *
+
+For further details of Exim content scanning, see chapter 41 of the Exim
+specification:
+http://www.exim.org/exim-html-%{version}/doc/html/spec_html/ch41.html
+
+%endif
+
+%package greylist
+Summary: Example configuration for greylisting using Exim
+Requires: sqlite exim
+Requires: crontabs
+
+%description greylist
+This package contains a simple example of how to do greylisting in Exim's
+ACL configuration. It contains a cron job to remove old entries from the
+greylisting database, and an ACL subroutine which needs to be included
+from the main exim.conf file.
+
+To enable greylisting, install this package and then uncomment the lines
+in Exim's configuration /etc/exim.conf which enable it. You need to
+uncomment at least two lines -- the '.include' directive which includes
+the new ACL subroutine, and the line which invokes the new subroutine.
+
+By default, this implementation only greylists mails which appears
+'suspicious' in some way. During normal processing of the ACLs we collect
+a list of 'offended' which it's committed, which may include having
+SpamAssassin points, lacking a Message-ID: header, coming from a blacklisted
+host, etc. There are examples of these in the default configuration file,
+mostly commented out. These should be sufficient for you to you trigger
+greylisting for whatever 'offences' you can dream of, or even to make
+greylisting unconditional.
+
+%prep
+%autosetup -p1
+
+cp src/EDITME Local/Makefile
+sed -i 's@^# LOOKUP_MODULE_DIR=.*@LOOKUP_MODULE_DIR=%{_libdir}/exim/%{version}-%{release}/lookups@' Local/Makefile
+sed -i 's@^# AUTH_LIBS=-lsasl2@AUTH_LIBS=-lsasl2@' Local/Makefile
+cp exim_monitor/EDITME Local/eximon.conf
+
+# Workaround for rhbz#1791878
+pushd doc
+for f in $(ls -dp cve-* | grep -v '/\|\(\.txt\)$'); do
+ mv "$f" "$f.txt"
+done
+popd
+
+%build
+%ifnarch s390 s390x sparc sparcv9 sparcv9v sparc64 sparc64v
+ export PIE=-fpie
+ export PIC=-fpic
+%else
+ export PIE=-fPIE
+ export PIC=-fPIC
+%endif
+
+export LDFLAGS="%{?__global_ldflags} %{?_hardened_build:-pie -Wl,-z,relro,-z,now}"
+make _lib=%{_lib} FULLECHO=
+
+%install
+mkdir -p $RPM_BUILD_ROOT%{_sbindir}
+mkdir -p $RPM_BUILD_ROOT%{_bindir}
+mkdir -p $RPM_BUILD_ROOT%{_libdir}
+mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/pam.d
+mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/exim
+
+cd build-`scripts/os-type`-`scripts/arch-type`
+install -m 4775 exim $RPM_BUILD_ROOT%{_sbindir}
+
+for i in eximon eximon.bin exim_dumpdb exim_fixdb exim_tidydb \
+ exinext exiwhat exim_dbmbuild exicyclog exim_lock \
+ exigrep eximstats exipick exiqgrep exiqsumm \
+ exim_checkaccess convert4r4
+do
+ install -m 0755 $i $RPM_BUILD_ROOT%{_sbindir}
+done
+
+mkdir -p $RPM_BUILD_ROOT%{_libdir}/exim/%{version}-%{release}/lookups
+for i in mysql.so pgsql.so
+do
+ install -m755 lookups/$i \
+ $RPM_BUILD_ROOT%{_libdir}/exim/%{version}-%{release}/lookups
+done
+
+cd ..
+
+install -m 0644 src/configure.default $RPM_BUILD_ROOT%{_sysconfdir}/exim/exim.conf
+install -m 0644 %SOURCE4 $RPM_BUILD_ROOT%{_sysconfdir}/pam.d/exim
+
+mkdir -p $RPM_BUILD_ROOT/usr/lib
+pushd $RPM_BUILD_ROOT/usr/lib
+ln -sf ../sbin/exim sendmail.exim
+popd
+
+pushd $RPM_BUILD_ROOT%{_sbindir}/
+ln -sf exim sendmail.exim
+popd
+
+pushd $RPM_BUILD_ROOT%{_bindir}/
+ln -sf ../sbin/exim mailq.exim
+ln -sf ../sbin/exim runq.exim
+ln -sf ../sbin/exim rsmtp.exim
+ln -sf ../sbin/exim rmail.exim
+ln -sf ../sbin/exim newaliases.exim
+popd
+
+install -d -m 0750 $RPM_BUILD_ROOT%{_var}/spool/exim
+install -d -m 0750 $RPM_BUILD_ROOT%{_var}/spool/exim/db
+install -d -m 0750 $RPM_BUILD_ROOT%{_var}/spool/exim/input
+install -d -m 0750 $RPM_BUILD_ROOT%{_var}/spool/exim/msglog
+install -d -m 0750 $RPM_BUILD_ROOT%{_var}/log/exim
+
+mkdir -p $RPM_BUILD_ROOT%{_mandir}/man8
+install -m644 doc/exim.8 $RPM_BUILD_ROOT%{_mandir}/man8/exim.8
+pod2man --center=EXIM --section=8 \
+ $RPM_BUILD_ROOT/usr/sbin/eximstats \
+ $RPM_BUILD_ROOT%{_mandir}/man8/eximstats.8
+
+mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig
+install -m 644 %SOURCE1 $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/exim
+
+# Systemd
+mkdir -p %{buildroot}%{_unitdir}
+mkdir -p $RPM_BUILD_ROOT%{_libexecdir}
+install -m644 %{SOURCE10} %{buildroot}%{_unitdir}
+install -m755 %{SOURCE11} %{buildroot}%{_libexecdir}
+
+%if %{with clamav}
+install -m644 %{SOURCE12} %{buildroot}%{_unitdir}
+%endif
+
+mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d
+install -m 0644 %SOURCE2 $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/exim
+
+mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/cron.daily
+install -m 0755 %SOURCE3 $RPM_BUILD_ROOT%{_sysconfdir}/cron.daily/exim-tidydb
+
+# generate ghost .pem file
+mkdir -p $RPM_BUILD_ROOT/etc/pki/tls/{certs,private}
+touch $RPM_BUILD_ROOT/etc/pki/tls/{certs,private}/exim.pem
+chmod 600 $RPM_BUILD_ROOT/etc/pki/tls/{certs,private}/exim.pem
+
+# generate alternatives ghosts
+mkdir -p $RPM_BUILD_ROOT%{_mandir}/man1
+for i in %{_sbindir}/sendmail %{_bindir}/{mailq,runq,rsmtp,rmail,newaliases} \
+ /usr/lib/sendmail %{_sysconfdir}/pam.d/smtp
+do
+ touch $RPM_BUILD_ROOT$i
+done
+gzip < /dev/null > $RPM_BUILD_ROOT%{_mandir}/man1/mailq.1.gz
+
+%if %{with clamav}
+# Munge the clamav init and config files from clamav-devel. This really ought
+# to be a subpackage of clamav, but this hack will have to do for now.
+function clamsubst() {
+ sed -e "s!<SERVICE>!$3!g;s!<USER>!$4!g;""$5" %{_docdir}/clamd/"$1" >"$RPM_BUILD_ROOT$2"
+}
+
+mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/clamd.d
+clamsubst clamd.conf %{_sysconfdir}/clamd.d/exim.conf exim exim \
+ 's!^##*\(\(LogFile\|LocalSocket\|PidFile\|User\)\s\|\(StreamSaveToDisk\|ScanMail\|LogTime\|ScanArchive\)$\)!\1!;s!^Example!#Example!;'
+
+clamsubst clamd.logrotate %{_sysconfdir}/logrotate.d/clamd.exim exim exim ''
+cat <<EOF > $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/clamd.exim
+CLAMD_CONFIG='%_sysconfdir/clamd.d/exim.conf'
+CLAMD_SOCKET=%{_var}/run/clamd.exim/clamd.sock
+EOF
+ln -sf clamd $RPM_BUILD_ROOT/usr/sbin/clamd.exim
+
+mkdir -p %{buildroot}%{_tmpfilesdir}
+install -m 0644 %{SOURCE5} %{buildroot}%{_tmpfilesdir}/exim-clamav.conf
+mkdir -p $RPM_BUILD_ROOT%{_var}/run/clamd.exim
+mkdir -p $RPM_BUILD_ROOT%{_var}/log
+touch $RPM_BUILD_ROOT%{_var}/log/clamd.exim
+
+%endif
+
+# Set up the greylist subpackage
+install -m644 %{SOURCE6} $RPM_BUILD_ROOT/%_sysconfdir/exim/exim-greylist.conf.inc
+install -m644 %{SOURCE7} $RPM_BUILD_ROOT/%_sysconfdir/exim/mk-greylist-db.sql
+mkdir -p $RPM_BUILD_ROOT/%_sysconfdir/cron.daily
+install -m755 %{SOURCE8} $RPM_BUILD_ROOT/%_sysconfdir/cron.daily/greylist-tidy.sh
+install -m644 %{SOURCE9} $RPM_BUILD_ROOT/%_sysconfdir/exim/trusted-configs
+touch $RPM_BUILD_ROOT/%_var/spool/exim/db/greylist.db
+
+%check
+build-`scripts/os-type`-`scripts/arch-type`/exim -C src/configure.default -bV
+
+%pre
+%{_sbindir}/groupadd -g 93 exim 2>/dev/null
+%{_sbindir}/useradd -d %{_var}/spool/exim -s /sbin/nologin -G mail -M -r -u 93 -g exim exim 2>/dev/null
+# Copy TLS certs from old location to new -- don't move them, because the
+# config file may be modified and may be pointing to the old location.
+if [ ! -f /etc/pki/tls/certs/exim.pem -a -f %{_datadir}/ssl/certs/exim.pem ] ; then
+ cp %{_datadir}/ssl/certs/exim.pem /etc/pki/tls/certs/exim.pem
+ cp %{_datadir}/ssl/private/exim.pem /etc/pki/tls/private/exim.pem
+fi
+
+exit 0
+
+%post
+%systemd_post %{name}.service
+
+%{_sbindir}/alternatives --install %{_sbindir}/sendmail mta %{_sbindir}/sendmail.exim 10 \
+ --slave %{_bindir}/mailq mta-mailq %{_bindir}/mailq.exim \
+ --slave %{_bindir}/runq mta-runq %{_bindir}/runq.exim \
+ --slave %{_bindir}/rsmtp mta-rsmtp %{_bindir}/rsmtp.exim \
+ --slave %{_bindir}/rmail mta-rmail %{_bindir}/rmail.exim \
+ --slave /etc/pam.d/smtp mta-pam /etc/pam.d/exim \
+ --slave %{_bindir}/newaliases mta-newaliases %{_bindir}/newaliases.exim \
+ --slave /usr/lib/sendmail mta-sendmail /usr/lib/sendmail.exim \
+ --slave %{_mandir}/man1/mailq.1.gz mta-mailqman %{_mandir}/man8/exim.8.gz \
+ --initscript exim
+
+%preun
+%systemd_preun %{name}.service
+if [ $1 = 0 ]; then
+ %{_sbindir}/alternatives --remove mta %{_sbindir}/sendmail.exim
+fi
+
+%postun
+%systemd_postun_with_restart %{name}.service
+if [ $1 -ge 1 ]; then
+ mta=`readlink /etc/alternatives/mta`
+ if [ "$mta" == "%{_sbindir}/sendmail.exim" ]; then
+ /usr/sbin/alternatives --set mta %{_sbindir}/sendmail.exim
+ fi
+fi
+
+%post greylist
+if [ ! -r %{_var}/spool/exim/db/greylist.db ]; then
+ sqlite3 %{_var}/spool/exim/db/greylist.db < %{_sysconfdir}/exim/mk-greylist-db.sql
+ chown exim:exim %{_var}/spool/exim/db/greylist.db
+ chmod 0660 %{_var}/spool/exim/db/greylist.db
+fi
+
+%files
+%attr(4755,root,root) %{_sbindir}/exim
+%{_sbindir}/exim_dumpdb
+%{_sbindir}/exim_fixdb
+%{_sbindir}/exim_tidydb
+%{_sbindir}/exinext
+%{_sbindir}/exiwhat
+%{_sbindir}/exim_dbmbuild
+%{_sbindir}/exicyclog
+%{_sbindir}/exigrep
+%{_sbindir}/eximstats
+%{_sbindir}/exipick
+%{_sbindir}/exiqgrep
+%{_sbindir}/exiqsumm
+%{_sbindir}/exim_lock
+%{_sbindir}/exim_checkaccess
+%{_sbindir}/convert4r4
+%{_sbindir}/sendmail.exim
+%{_bindir}/mailq.exim
+%{_bindir}/runq.exim
+%{_bindir}/rsmtp.exim
+%{_bindir}/rmail.exim
+%{_bindir}/newaliases.exim
+/usr/lib/sendmail.exim
+%{_mandir}/man8/*
+%dir %{_libdir}/exim
+%dir %{_libdir}/exim/%{version}-%{release}
+%dir %{_libdir}/exim/%{version}-%{release}/lookups
+
+%defattr(-,exim,exim)
+%dir %{_var}/spool/exim
+%dir %{_var}/spool/exim/db
+%dir %{_var}/spool/exim/input
+%dir %{_var}/spool/exim/msglog
+%dir %{_var}/log/exim
+
+%defattr(-,root,root)
+%dir %{_sysconfdir}/exim
+%config(noreplace) %{_sysconfdir}/exim/exim.conf
+%config(noreplace) %{_sysconfdir}/exim/trusted-configs
+%config(noreplace) %{_sysconfdir}/sysconfig/exim
+%{_unitdir}/exim.service
+%{_libexecdir}/exim-gen-cert
+%config(noreplace) %{_sysconfdir}/logrotate.d/exim
+%config(noreplace) %{_sysconfdir}/pam.d/exim
+%{_sysconfdir}/cron.daily/exim-tidydb
+
+%license LICENCE NOTICE
+%doc ACKNOWLEDGMENTS README.UPDATING README
+%doc doc util/unknownuser.sh
+%attr(0600,root,root) %ghost %config(missingok,noreplace) %verify(not md5 size mtime) /etc/pki/tls/certs/exim.pem
+%attr(0600,root,root) %ghost %config(missingok,noreplace) %verify(not md5 size mtime) /etc/pki/tls/private/exim.pem
+%attr(0755,root,root) %ghost %{_sbindir}/sendmail
+%attr(0755,root,root) %ghost %{_bindir}/mailq
+%attr(0755,root,root) %ghost %{_bindir}/runq
+%attr(0755,root,root) %ghost %{_bindir}/rsmtp
+%attr(0755,root,root) %ghost %{_bindir}/rmail
+%attr(0755,root,root) %ghost %{_bindir}/newaliases
+%attr(0755,root,root) %ghost /usr/lib/sendmail
+%ghost %{_sysconfdir}/pam.d/smtp
+%ghost %{_mandir}/man1/mailq.1.gz
+
+%files mysql
+%{_libdir}/exim/%{version}-%{release}/lookups/mysql.so
+
+%files pgsql
+%{_libdir}/exim/%{version}-%{release}/lookups/pgsql.so
+
+%files mon
+%{_sbindir}/eximon
+%{_sbindir}/eximon.bin
+
+%if %{with clamav}
+%post clamav
+/bin/mkdir -pm 0750 %{_var}/run/clamd.exim
+/bin/chown exim:exim %{_var}/run/clamd.exim
+/bin/touch %{_var}/log/clamd.exim
+/bin/chown exim:exim %{_var}/log/clamd.exim
+/sbin/restorecon %{_var}/log/clamd.exim
+if [ $1 -eq 1 ] ; then
+ /bin/systemctl daemon-reload >/dev/null 2>&1 || :
+fi
+
+%preun clamav
+if [ $1 = 0 ]; then
+ /bin/systemctl --no-reload clamd.exim.service > /dev/null 2>&1 || :
+ /bin/systemctl stop clamd.exim.service > /dev/null 2>&1 || :
+fi
+
+%postun clamav
+/bin/systemctl daemon-reload >/dev/null 2>&1 || :
+if [ $1 -ge 1 ] ; then
+ /bin/systemctl try-restart clamd.exim.service >/dev/null 2>&1 || :
+fi
+
+%files clamav
+%{_sbindir}/clamd.exim
+%{_unitdir}/clamd.exim.service
+%config(noreplace) %verify(not mtime) %{_sysconfdir}/clamd.d/exim.conf
+%config(noreplace) %verify(not mtime) %{_sysconfdir}/sysconfig/clamd.exim
+%config(noreplace) %verify(not mtime) %{_sysconfdir}/logrotate.d/clamd.exim
+%{_tmpfilesdir}/exim-clamav.conf
+%ghost %attr(0750,exim,exim) %dir %{_var}/run/clamd.exim
+%ghost %attr(0644,exim,exim) %{_var}/log/clamd.exim
+%endif
+
+%files greylist
+%config %{_sysconfdir}/exim/exim-greylist.conf.inc
+%ghost %{_var}/spool/exim/db/greylist.db
+%{_sysconfdir}/exim/mk-greylist-db.sql
+%{_sysconfdir}/cron.daily/greylist-tidy.sh
+
+%changelog
+* Sun May 25 2025 zhuchao <tom_toworld@163.com> - 4.98.2-1
+- DESC: upgrade to 4.98.2 to resolve the to CVE-2025-26794 to CVE-2025-30232
+
+* Tue Jul 9 2024 zhangxianting <zhangxianting@uniontech.com> - 4.97.1-3
+- fix CVE-2024-39929
+
+* Tue Jul 9 2024 technology208 <technology@208suo.com> - 4.97-2
+- Fix CVE-2023-51766
+
+* Sun Feb 4 2024 zhuchao <tom_toworld@163.com> - 4.97.1-1
+- DESC:upgrade to 4.97.1 to resolve the CVE-2023-51766
+
+* Sat Dec 16 2023 zhuchao <tom_toworld@163.com> - 4.97-1
+- DESC:upgrade to 4.97 to resolve the CVE-2023-42114 to CVE-2023-42119
+
+* Tue Aug 29 2023 zhuchao <tom_toworld@163.com> - 4.96-3
+- DESC:fix bug about print error message in install exim-clamav and exim-greylist
+
+* Thu Feb 16 2023 zhuchao <tom_toworld@163.com> - 4.96-2
+- DESC:add build requirement init
+
+* Tue Oct 18 2022 zhuchao <tom_toworld@163.com> - 4.96-1
+- DESC:Package init