+# TODO: zephyr notification?
+
#
# Conditional build:
-%bcond_without perl # build with perl
-%bcond_without shared # build with shared patch (not updated)
-
-%{?with_perl:%include /usr/lib/rpm/macros.perl}
+%bcond_without doc # don't regenerate docs
+%bcond_without http # build without http support
+%bcond_without ldap # build without ldap support
+%bcond_without lmdb # build without lmdb backend support
+%bcond_without mysql # build without mysql backend support
+%bcond_without perl # build without perl support
+%bcond_without pgsql # build without postgresql backend support
+%bcond_with sphinx # build with sphinx search engine support (broken)
+%bcond_without xapian # build without xapian search engine support
+#
+#
Summary: High-performance mail store with IMAP and POP3
Summary(pl.UTF-8): Wysoko wydajny serwer IMAP i POP3
Summary(pt_BR.UTF-8): Um servidor de mail de alto desempenho que suporta IMAP e POP3
Name: cyrus-imapd
-Version: 2.4.18
-Release: 4
+Version: 3.0.16
+Release: 2
License: BSD-like
Group: Networking/Daemons/POP3
-Source0: ftp://ftp.cyrusimap.org/cyrus-imapd/%{name}-%{version}.tar.gz
-# Source0-md5: 6b5151fbb1619cf1a133f65f55cda619
+Source0: https://github.com/cyrusimap/cyrus-imapd/releases/download/%{name}-%{version}/%{name}-%{version}.tar.gz
+# Source0-md5: f93394d3bf981d558a8d7e2cb989b568
Source1: cyrus-README
Source2: cyrus-procmailrc
Source3: cyrus-deliver-wrapper.c
Source12: cyrus.conf
Source13: cyrus-sync.init
Patch0: %{name}-et.patch
-# http://bugzilla.cyrusimap.org/bugzilla3/show_bug.cgi?id=3095
-Patch1: %{name}-shared.patch
-# http://bugzilla.cyrusimap.org/bugzilla3/show_bug.cgi?id=3094
-Patch2: %{name}-verifydbver.patch
-Patch3: gcc44.patch
-Patch4: glibc.patch
-Patch6: makeopt.patch
+Patch1: link.patch
+Patch2: %{name}-clamav-0.101.patch
+Patch3: %{name}-sphinx3.patch
+Patch4: openssl3.patch
URL: http://www.cyrusimap.org/
-BuildRequires: autoconf >= 2.54
+BuildRequires: autoconf >= 2.63
BuildRequires: automake
-BuildRequires: cyrus-sasl-devel >= 1.5.27
+BuildRequires: cyrus-sasl-devel >= 2.1.7
BuildRequires: db-devel >= 4.1.25
BuildRequires: flex
+BuildRequires: jansson-devel >= 2.3
+%{?with_http:BuildRequires: libbrotli-devel}
+BuildRequires: libcap-devel
BuildRequires: libcom_err-devel >= 1.21
-BuildRequires: libtool
+%{?with_http:BuildRequires: libical-devel >= 2.0}
+BuildRequires: libicu-devel
+BuildRequires: libtool >= 2:2.2.6
+%{?with_http:BuildRequires: libxml2-devel >= 1:2.7.3}
+%{?with_lmdb:BuildRequires: lmdb-devel}
+%{?with_mysql:BuildRequires: mysql-devel}
BuildRequires: net-snmp-devel
+%{?with_http:BuildRequires: nghttp2-devel >= 1.5}
+%{?with_ldap:BuildRequires: openldap-devel}
BuildRequires: openssl-devel >= 0.9.7d
BuildRequires: patchutils
+%{?with_doc:BuildRequires: perl-Pod-POM-View-Restructured}
%{?with_perl:BuildRequires: perl-devel >= 1:5.8.0}
+%{?with_pgsql:BuildRequires: postgresql-devel}
%{?with_perl:BuildRequires: rpm-perlprov}
-BuildRequires: rpmbuild(macros) >= 1.268
+BuildRequires: rpmbuild(macros) >= 1.527
+%{?with_http:BuildRequires: shapelib-devel >= 1.4.1}
+%{?with_http:BuildRequires: sqlite3-devel >= 3}
+%{?with_doc:BuildRequires: sphinx-pdg-3}
+%{?with_xapian:BuildRequires: xapian-core-devel}
+BuildRequires: zlib-devel
Requires(post,preun): /sbin/chkconfig
Requires(postun): /usr/sbin/userdel
Requires(pre): /bin/id
Requires(pre): /usr/sbin/useradd
-%{?with_shared:Requires: %{name}-libs = %{version}-%{release}}
+Requires: %{name}-libs = %{version}-%{release}
Requires: rc-scripts >= 0.4.0.18
-%{!?with_shared:Obsoletes: %{name}-libs}
# needed by scripts from %{_bindir}
Requires: pam >= 0.79.0
%{?with_perl:Requires: perl-%{name} = %{version}-%{release}}
Provides: imapdaemon
Provides: pop3daemon
Provides: user(cyrus)
+Obsoletes: cyrus-imapd-doc < 3
Obsoletes: imap
Obsoletes: imapd
Obsoletes: imapdaemon
Conflicts: tpop3d
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
-%define _libexecdir %{_libdir}/cyrus
+%define pkglibexecdir %{_libexecdir}/cyrus
+
+%define skip_post_check_so libcyrus(|_min|_imap|_sieve).so.*
%description
The Cyrus IMAP server is a scalable enterprise mail system designed
Summary: Shared cyrus-imapd libraries
Summary(pl.UTF-8): Współdzielone biblioteki cyrus-imapd
Group: Libraries
+Requires: cyrus-sasl-libs >= 2.1.7
+Requires: jansson >= 2.3
%description libs
Shared cyrus-imapd libraries.
Summary(pl.UTF-8): Pliki nagłówkowe do programowania z użyciem bibliotek cyrus-imapd
Group: Development/Libraries
Requires: %{name}-libs = %{version}-%{release}
+Requires: cyrus-sasl-devel >= 2.1.7
+Requires: jansson-devel >= 2.3
%description devel
This package provides the necessary header files files to allow you to
%description -n perl-%{name} -l pl.UTF-8
Perlowy interfejs do biblioteki cyrus-imapd.
-%package doc
-Summary: Cyrus-IMAP documentation
-Group: Documentation
-%if "%{_rpmversion}" >= "5"
-BuildArch: noarch
-%endif
-
-%description doc
-Cyrus-IMAP HTML documentation.
-
%prep
%setup -q
-%patch6 -p1
%patch0 -p1
-%if %{with shared}
-lsdiff --strip 1 %{PATCH1} |grep -E '(configure.in|Makefile.in)'| xargs %{__sed} -i -e '
- s/\.o/.lo/g
- s/\.a/.la/g
-'
%patch1 -p1
-%endif
%patch2 -p1
%patch3 -p1
%patch4 -p1
-rm -rf autom4te.cache
-
cp -p %{SOURCE1} %{SOURCE2} %{SOURCE4} %{SOURCE5} .
+find docsrc/ -name '*.pyc' -print0 | xargs --null %{__rm}
+
%build
-cd makedepend
-%{__libtoolize}
-%{__aclocal}
-%{__autoconf}
-cp -f %{_datadir}/automake/config.* .
-%configure
-%{__make}
-PATH=$PATH:$(pwd); export PATH
-cd ..
%{__libtoolize}
%{__aclocal} -I cmulocal
-%{__autoheader}
%{__autoconf}
-cp -f %{_datadir}/automake/config.* .
-cp -f %{_datadir}/automake/install-sh .
+%{__autoheader}
+%{__automake}
%configure \
- --with-cyrus-prefix=%{_libexecdir} \
- --with-service-path=%{_libexecdir} \
+ --libexecdir=%{pkglibexecdir} \
+ --enable-autocreate \
+ --enable-backup \
+ --enable-calalarmd \
+ %{__enable_disable http} \
+ --enable-idled \
+ --enable-murder \
+ --enable-nntp \
+ --enable-replication \
+ %{__enable_disable sphinx} \
+ --enable-static \
+ %{__enable_disable xapian} \
--with-com_err=/usr \
- --%{!?with_perl:without-perl}%{?with_perl:with-perl=%{__perl}} \
+ %{__with_without ldap} \
+ --with-libcap \
--without-libwrap \
- --enable-nntp \
- --enable-replication
+ %{__with_without lmdb} \
+ %{__with_without mysql} \
+ %{__with_without perl perl %{__perl}} \
+ %{__with_without pgsql} \
+ %{__with_without doc sphinx-build}
+
%{__make} -j1 \
INSTALLDIRS=vendor \
VERSION=%{version}
%{__cc} %{rpmcflags} \
- -DLIBEXECDIR="\"%{_libexecdir}\"" %{rpmldflags} -Wall -o deliver-wrapper %{SOURCE3}
+ -DLIBEXECDIR="\"%{pkglibexecdir}\"" %{rpmldflags} -Wall -o deliver-wrapper %{SOURCE3}
%install
rm -rf $RPM_BUILD_ROOT
install -d \
- $RPM_BUILD_ROOT{%{_sbindir},%{_libexecdir},%{_mandir}} \
+ $RPM_BUILD_ROOT{%{_sbindir},%{pkglibexecdir},%{_mandir}} \
$RPM_BUILD_ROOT%{_sysconfdir}/{logrotate.d,sysconfig/rc-inetd} \
$RPM_BUILD_ROOT/var/spool/imap/stage. \
$RPM_BUILD_ROOT/var/lib/imap/{user,quota,proc,log,msg,deliverdb/db,sieve,db,socket} \
# ensure +x bit for rpm autodeps
chmod +x $RPM_BUILD_ROOT%{_libdir}/*.so*
-install -p deliver-wrapper $RPM_BUILD_ROOT%{_libexecdir}/deliver-wrapper
+install -p deliver-wrapper $RPM_BUILD_ROOT%{pkglibexecdir}/deliver-wrapper
cp -p %{SOURCE6} $RPM_BUILD_ROOT/etc/logrotate.d/cyrus-imapd
cp -p %{SOURCE7} $RPM_BUILD_ROOT%{_sysconfdir}/imapd.conf
cp -p %{SOURCE9} $RPM_BUILD_ROOT/etc/pam.d/imap
cp -p %{SOURCE10} $RPM_BUILD_ROOT/etc/pam.d/pop
-sed -e 's,/''usr/lib/cyrus,%{_libexecdir},' %{SOURCE11} > $RPM_BUILD_ROOT/etc/rc.d/init.d/cyrus-imapd
-sed -e 's,/''usr/lib/cyrus,%{_libexecdir},' %{SOURCE13} > $RPM_BUILD_ROOT/etc/rc.d/init.d/cyrus-sync
+sed -e 's,/''usr/lib/cyrus,%{pkglibexecdir},' %{SOURCE11} > $RPM_BUILD_ROOT/etc/rc.d/init.d/cyrus-imapd
+sed -e 's,/''usr/lib/cyrus,%{pkglibexecdir},' %{SOURCE13} > $RPM_BUILD_ROOT/etc/rc.d/init.d/cyrus-sync
cp -p %{SOURCE12} $RPM_BUILD_ROOT%{_sysconfdir}/cyrus.conf
-# move lots of admin-only/system-only stuff to sbin and lib
-# but keep compat links as they are used in configs
-for i in master reconstruct quota deliver; do
- mv $RPM_BUILD_ROOT{%{_libexecdir}/$i,%{_sbindir}/cyr$i}
- ln -s %{_sbindir}/cyr$i $RPM_BUILD_ROOT%{_libexecdir}/$i
-done
-for i in mbpath ctl_mboxlist ctl_deliver ctl_cyrusdb squatter \
- tls_prune ipurge cyrdump cvt_cyrusdb chk_cyrus arbitron \
- cyr_expire; do
- mv $RPM_BUILD_ROOT{%{_libexecdir},%{_sbindir}}/$i
- ln -s %{_sbindir}/$i $RPM_BUILD_ROOT%{_libexecdir}
-done
# We rename some utils, so we need to sort out the manpages
for i in master reconstruct quota deliver; do
mv $RPM_BUILD_ROOT%{_mandir}/man8/{,cyr}$i.8
%files
%defattr(644,root,root,755)
%doc cyrus-README cyrus-procmailrc cyrus-user-procmailrc.template
-%doc cyrus-imapd-procmail+cyrus.mc COPYRIGHT tools
+%doc cyrus-imapd-procmail+cyrus.mc COPYING tools
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/*.conf
%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/logrotate.d/cyrus-imapd
%attr(440,cyrus,root) %config(noreplace) %verify(not md5 mtime size) /etc/pam.d/*
%attr(754,root,root) /etc/rc.d/init.d/cyrus-sync
%attr(640,cyrus,mail) %ghost /var/lib/imap/faillog
%attr(755,root,root) %{_bindir}/cyradm
+%attr(755,root,root) %{_bindir}/httptest
%attr(755,root,root) %{_bindir}/imtest
%attr(755,root,root) %{_bindir}/installsieve
%attr(755,root,root) %{_bindir}/lmtptest
%attr(755,root,root) %{_bindir}/smtptest
%attr(755,root,root) %{_bindir}/synctest
-%attr(4754,cyrus,mail) %{_sbindir}/cyrdeliver
+%dir %{pkglibexecdir}
+%attr(2755,cyrus,mail) %{pkglibexecdir}/deliver-wrapper
+%attr(755,root,root) %{pkglibexecdir}/backupd
+%attr(755,root,root) %{pkglibexecdir}/calalarmd
+%attr(755,root,root) %{pkglibexecdir}/fud
+%{?with_http:%attr(755,root,root) %{pkglibexecdir}/httpd}
+%attr(755,root,root) %{pkglibexecdir}/idled
+%attr(755,root,root) %{pkglibexecdir}/imapd
+%attr(755,root,root) %{pkglibexecdir}/lmtpd
+%attr(755,root,root) %{pkglibexecdir}/lmtpproxyd
+%attr(755,root,root) %{pkglibexecdir}/master
+%attr(755,root,root) %{pkglibexecdir}/mupdate
+%attr(755,root,root) %{pkglibexecdir}/nntpd
+%attr(755,root,root) %{pkglibexecdir}/notifyd
+%attr(755,root,root) %{pkglibexecdir}/ptloader
+%attr(755,root,root) %{pkglibexecdir}/pop3d
+%attr(755,root,root) %{pkglibexecdir}/pop3proxyd
+%attr(755,root,root) %{pkglibexecdir}/proxyd
+%attr(755,root,root) %{pkglibexecdir}/smmapd
+%attr(755,root,root) %{pkglibexecdir}/sync_server
+%attr(755,root,root) %{pkglibexecdir}/timsieved
%attr(755,root,root) %{_sbindir}/arbitron
%attr(755,root,root) %{_sbindir}/chk_cyrus
+%attr(755,root,root) %{_sbindir}/ctl_backups
+%attr(755,root,root) %{_sbindir}/ctl_conversationsdb
%attr(755,root,root) %{_sbindir}/ctl_cyrusdb
%attr(755,root,root) %{_sbindir}/ctl_deliver
%attr(755,root,root) %{_sbindir}/ctl_mboxlist
+%{?with_http:%attr(755,root,root) %{_sbindir}/ctl_zoneinfo}
%attr(755,root,root) %{_sbindir}/cvt_cyrusdb
-%attr(755,root,root) %{_sbindir}/cyr_expire
+%attr(755,root,root) %{_sbindir}/cvt_xlist_specialuse
+%attr(755,root,root) %{_sbindir}/cyr_buildinfo
+%attr(755,root,root) %{_sbindir}/cyr_dbtool
+%attr(755,root,root) %{_sbindir}/cyr_deny
+%attr(755,root,root) %{_sbindir}/cyr_df
%attr(755,root,root) %{_sbindir}/cyrdump
-%attr(755,root,root) %{_sbindir}/cyrmaster
-%attr(755,root,root) %{_sbindir}/cyrquota
-%attr(755,root,root) %{_sbindir}/cyrreconstruct
+%attr(755,root,root) %{_sbindir}/cyr_backup
+%attr(755,root,root) %{_sbindir}/cyr_expire
+%attr(755,root,root) %{_sbindir}/cyr_info
+%attr(755,root,root) %{_sbindir}/cyr_sequence
+%attr(755,root,root) %{_sbindir}/cyr_synclog
+%attr(755,root,root) %{_sbindir}/cyr_userseen
+%attr(755,root,root) %{_sbindir}/cyr_virusscan
+%{?with_http:%attr(755,root,root) %{_sbindir}/dav_reconstruct}
+%attr(755,root,root) %{_sbindir}/deliver
+%attr(755,root,root) %{_sbindir}/fetchnews
%attr(755,root,root) %{_sbindir}/ipurge
+%attr(755,root,root) %{_sbindir}/mbexamine
%attr(755,root,root) %{_sbindir}/mbpath
+%attr(755,root,root) %{_sbindir}/mbtool
+%attr(755,root,root) %{_sbindir}/quota
+%attr(755,root,root) %{_sbindir}/ptdump
+%attr(755,root,root) %{_sbindir}/ptexpire
+%attr(755,root,root) %{_sbindir}/reconstruct
+%attr(755,root,root) %{_sbindir}/restore
+%attr(755,root,root) %{_sbindir}/sievec
+%attr(755,root,root) %{_sbindir}/sieved
%attr(755,root,root) %{_sbindir}/squatter
+%attr(755,root,root) %{_sbindir}/sync_client
+%attr(755,root,root) %{_sbindir}/sync_reset
%attr(755,root,root) %{_sbindir}/tls_prune
-
-%dir %{_libexecdir}
-%attr(2755,cyrus,mail) %{_libexecdir}/deliver-wrapper
-%attr(755,root,root) %{_libexecdir}/cyr_dbtool
-%attr(755,root,root) %{_libexecdir}/cyr_df
-%attr(755,root,root) %{_libexecdir}/cyr_sequence
-%attr(755,root,root) %{_libexecdir}/cyr_synclog
-%attr(755,root,root) %{_libexecdir}/cyr_userseen
-%attr(755,root,root) %{_libexecdir}/fetchnews
-%attr(755,root,root) %{_libexecdir}/fud
-%attr(755,root,root) %{_libexecdir}/imapd
-%attr(755,root,root) %{_libexecdir}/lmtpd
-%attr(755,root,root) %{_libexecdir}/lmtpproxyd
-%attr(755,root,root) %{_libexecdir}/mbexamine
-%attr(755,root,root) %{_libexecdir}/nntpd
-%attr(755,root,root) %{_libexecdir}/notifyd
-%attr(755,root,root) %{_libexecdir}/pop3d
-%attr(755,root,root) %{_libexecdir}/pop3proxyd
-%attr(755,root,root) %{_libexecdir}/proxyd
-%attr(755,root,root) %{_libexecdir}/sievec
-%attr(755,root,root) %{_libexecdir}/sieved
-%attr(755,root,root) %{_libexecdir}/smmapd
-%attr(755,root,root) %{_libexecdir}/sync_client
-%attr(755,root,root) %{_libexecdir}/sync_reset
-%attr(755,root,root) %{_libexecdir}/sync_server
-%attr(755,root,root) %{_libexecdir}/timsieved
-%attr(755,root,root) %{_libexecdir}/unexpunge
-
-# symlinks
-%attr(755,root,root) %{_libexecdir}/arbitron
-%attr(755,root,root) %{_libexecdir}/chk_cyrus
-%attr(755,root,root) %{_libexecdir}/ctl_cyrusdb
-%attr(755,root,root) %{_libexecdir}/ctl_deliver
-%attr(755,root,root) %{_libexecdir}/ctl_mboxlist
-%attr(755,root,root) %{_libexecdir}/cvt_cyrusdb
-%attr(755,root,root) %{_libexecdir}/cyr_expire
-%attr(755,root,root) %{_libexecdir}/cyrdump
-%attr(755,root,root) %{_libexecdir}/deliver
-%attr(755,root,root) %{_libexecdir}/ipurge
-%attr(755,root,root) %{_libexecdir}/master
-%attr(755,root,root) %{_libexecdir}/mbpath
-%attr(755,root,root) %{_libexecdir}/quota
-%attr(755,root,root) %{_libexecdir}/reconstruct
-%attr(755,root,root) %{_libexecdir}/squatter
-%attr(755,root,root) %{_libexecdir}/tls_prune
+%attr(755,root,root) %{_sbindir}/unexpunge
%attr(750,cyrus,mail) /var/spool/imap
%attr(750,cyrus,mail) %dir /var/lib/imap
%{_mandir}/man*/*
-%if %{with shared}
%files libs
%defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/libcyrus-%{version}.so
-%attr(755,root,root) %{_libdir}/libcyrus_min-%{version}.so
-%endif
+%attr(755,root,root) %{_libdir}/libcyrus.so.0
+%attr(755,root,root) %ghost %{_libdir}/libcyrus.so.*.*
+%attr(755,root,root) %{_libdir}/libcyrus_min.so.0
+%attr(755,root,root) %ghost %{_libdir}/libcyrus_min.so.*.*
+%attr(755,root,root) %{_libdir}/libcyrus_imap.so.0
+%attr(755,root,root) %ghost %{_libdir}/libcyrus_imap.so.*.*
+%attr(755,root,root) %{_libdir}/libcyrus_sieve.so.0
+%attr(755,root,root) %ghost %{_libdir}/libcyrus_sieve.so.*.*
%files devel
%defattr(644,root,root,755)
%{_includedir}/cyrus
-%if %{with shared}
%attr(755,root,root) %{_libdir}/libcyrus.so
%attr(755,root,root) %{_libdir}/libcyrus_min.so
+%attr(755,root,root) %{_libdir}/libcyrus_imap.so
+%attr(755,root,root) %{_libdir}/libcyrus_sieve.so
%{_libdir}/libcyrus.la
%{_libdir}/libcyrus_min.la
+%{_libdir}/libcyrus_imap.la
+%{_libdir}/libcyrus_sieve.la
+%{_pkgconfigdir}/libcyrus.pc
+%{_pkgconfigdir}/libcyrus_imap.pc
+%{_pkgconfigdir}/libcyrus_min.pc
+%{_pkgconfigdir}/libcyrus_sieve.pc
%files static
%defattr(644,root,root,755)
-%endif
%{_libdir}/libcyrus.a
+%{_libdir}/libcyrus_imap.a
%{_libdir}/libcyrus_min.a
+%{_libdir}/libcyrus_sieve.a
%if %{with perl}
%files -n perl-%{name}
%dir %{perl_vendorarch}/auto/Cyrus/SIEVE
%dir %{perl_vendorarch}/auto/Cyrus/SIEVE/managesieve
%attr(755,root,root) %{perl_vendorarch}/auto/Cyrus/SIEVE/managesieve/managesieve.so
+%dir %{perl_vendorlib}/Cyrus
+%dir %{perl_vendorlib}/Cyrus/Annotator
+%{perl_vendorlib}/Cyrus/Annotator/AnnotateInlinedCIDs.pm
+%{perl_vendorlib}/Cyrus/Annotator/Daemon.pm
+%{perl_vendorlib}/Cyrus/Annotator/Message.pm
%endif
-
-%files doc
-%defattr(644,root,root,755)
-%doc doc/*.html