Name: cyrus-imapd Version: 2.5.10 Release: 2%{?dist} %define ssl_pem_file /etc/pki/%name/%name.pem # uid/gid reserved, see setup:/usr/share/doc/setup*/uidgid %define uid 76 %define gid 76 %define cyrususer cyrus %define cyrusgroup mail %define cyrexecdir %_prefix/lib/%name Summary: A high-performance mail server with IMAP, POP3, NNTP and SIEVE support License: BSD URL: http://www.cyrusimap.org/ Source0: http://www.cyrusimap.org/releases/%name-%version.tar.gz Source1: cyrus-imapd.logrotate Source2: cyrus-imapd.imap-2.5.x-conf Source3: cyrus-imapd.pam-config Source7: cyrus-imapd.sysconfig Source8: cyrus-imapd.cvt_cyrusdb_all Source9: cyrus-imapd.magic Source10: cyrus-imapd.cron-daily Source11: README.rpm Source12: cyrus-imapd.service Source13: cyrus-imapd-init.service Source14: cyr_systemd_helper # There is a conflict between the sched_param structure defined in the source # and one defined by a system header. Fixed upstream as # https://github.com/cyrusimap/cyrus-imapd/commit/a288b4fea15f843e309dcdf7039a1ebcc3d19616 # but was not fixed on the 2.5 branch Patch0: fix-sched_param.patch BuildRequires: autoconf automake bison flex groff libtool BuildRequires: pkgconfig systemd tcp_wrappers transfig BuildRequires: perl-devel perl-generators perl(ExtUtils::MakeMaker) perl(Pod::Html) BuildRequires: cyrus-sasl-devel glib2-devel jansson-devel krb5-devel BuildRequires: libical-devel libxml2-devel net-snmp-devel openldap-devel BuildRequires: openssl-devel sqlite-devel Requires(pre): shadow-utils Requires(post): /sbin/ldconfig Requires(postun): /sbin/ldconfig %{?systemd_requires} Requires: %name-utils = %version-%release Recommends: %name-vzic = %version-%release Requires: file libdb-utils sscg Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) %{?perl_default_filter} %description The cyrus-imapd package contains the core of the Cyrus IMAP server. It is a scaleable enterprise mail system designed for use from small to large enterprise environments using standards-based internet mail technologies. A full Cyrus IMAP implementation allows a seamless mail and bulletin board environment to be set up across multiple servers. It differs from other IMAP server implementations in that it is run on "sealed" servers, where users are not normally permitted to log in and have no system account on the server. The mailbox database is stored in parts of the file system that are private to the Cyrus IMAP server. All user access to mail is through software using the IMAP, POP3 or KPOP protocols. It also includes support for virtual domains, NNTP, mailbox annotations, and much more. The private mailbox database design gives the server large advantages in efficiency, scalability and administratability. Multiple concurrent read/write connections to the same mailbox are permitted. The server supports access control lists on mailboxes and storage quotas on mailbox hierarchies. The Cyrus IMAP server supports the IMAP4rev1 protocol described in RFC 3501. IMAP4rev1 has been approved as a proposed standard. It supports any authentication mechanism available from the SASL library, imaps/pop3s/nntps (IMAP/POP3/NNTP encrypted using SSL and TLSv1) can be used for security. The server supports single instance store where possible when an email message is addressed to multiple recipients, SIEVE provides server side email filtering. %package vzic Summary: Utilities to convert timezone database files License: GPLv2+ Requires: %name = %version-%release # Contains a lightly forked version of vzic. This seems to have been bundled # into various other things and it's old, so I'm not sure where the upstream # is. Here are a couple of possible upstreams: # https://github.com/libical/vzic # https://sourceforge.net/projects/vzic/ # It is probably a good idea to split it out and package it separately, but the # code here definitely differs from that at the second link above. Provides: bundled(vzic) = 1.3 %description vzic vzic is a program to convert the Olson timezone database files into VTIMEZONE files compatible with the iCalendar specification (RFC2445). This package contains a forked version of vzic for internal use by the Cyrus IMAP server. %package devel Summary: Cyrus IMAP server development files Requires: %{name}%{?_isa} = %{version}-%{release} Requires: pkgconfig %description devel The %{name}-devel package contains header files and libraries necessary for developing applications which use the imclient library. %package utils Summary: Cyrus IMAP server administration utilities %description utils The cyrus-imapd-utils package contains administrative tools for the Cyrus IMAP server. It can be installed on systems other than the one running the server. %prep %autosetup -p1 install -m 644 %SOURCE11 doc/ # Modify the documentation to change master --> cyrus-master sed -i -e "s/master(8)/cyrus-master(8)/" man/*5 man/*8 lib/imapoptions sed -i -e 's|\([^-]\)master|\1cyrus-master|g' \ -e 's|^master|cyrus-master|g' \ -e 's|Master|Cyrus-master|g' \ -e 's|MASTER|CYRUS-MASTER|g' \ man/master.8 doc/man.html # modify lmtp socket path in .conf files sed -i -e "s@/var/imap/@/var/lib/imap/@" master/conf/*.conf doc/cyrusv2.mc # enable idled in .conf files to prevent error messages sed -i -e "s/# idled/ idled/" master/conf/*.conf # Fix permissions on perl programs find . -type f -name "*.pl" -exec chmod 755 {} \; %build autoreconf -vi %{configure} \ --with-bdb-incdir=%_includedir/libdb \ --with-cyrus-prefix=%cyrexecdir \ --with-extraident="Fedora-RPM-%version-%release" \ --with-krbimpl=mit \ --with-ldap=/usr \ --with-perl=%__perl \ --with-service-path=%cyrexecdir \ --with-snmp \ --with-syslogfacility=MAIL \ --enable-autocreate \ --enable-http \ --enable-idled \ --enable-murder \ --enable-netscapehack \ --enable-nntp \ --enable-replication \ --enable-unit-tests \ # The configure script will set up the Perl makefiles, but not in the way # Fedora needs them. So regenerate them manually. for i in perl/annotator perl/imap perl/sieve/managesieve; do pushd $i perl Makefile.PL INSTALLDIRS=vendor # NO_PERLOCAL=1 NO_PACKLIST=1 popd done %make_build # This isn't built by default, but this package has always installed it. make notifyd/notifytest # Also not built by default, but the tools are needed for serving timezone info make -C tools/vzic #make -C man -f Makefile.dist #make -C doc -f Makefile.dist %install make install DESTDIR=%buildroot # Install some additional binaries # Create directories install -d \ %buildroot/etc/{rc.d/init.d,logrotate.d,pam.d,sysconfig,cron.daily} \ %buildroot/%_libdir/sasl \ %buildroot/var/spool/imap \ %buildroot/var/lib/imap/{user,quota,proc,log,msg,socket,db,sieve,sync,md5,rpm,backup,meta} \ %buildroot/var/lib/imap/ptclient \ %buildroot/%_datadir/%name/rpm \ %buildroot/etc/pki/%name # Some tools which aren't installed by the makefile which we want install -m 755 notifyd/notifytest %buildroot%_bindir/ install -m 755 perl/imap/cyradm %buildroot%_bindir/ for i in arbitronsort.pl convert-sieve.pl dohash masssievec \ migrate-metadata mkimap mknewsgroups mupdate-loadgen.pl \ rehash translatesieve undohash upgradesieve; do install -m 755 tools/$i %buildroot/%cyrexecdir/ done for i in vzic vzic-test.pl vzic-merge.pl vzic-dump.pl; do install -m 755 tools/vzic/$i %buildroot/%cyrexecdir/ done # Install additional files install -m 755 %{SOURCE8} %{buildroot}%{cyrexecdir}/cvt_cyrusdb_all install -m 644 %{SOURCE9} %{buildroot}%{_datadir}/%{name}/rpm/magic install -p -m 644 master/conf/prefork.conf %{buildroot}/etc/cyrus.conf install -p -m 644 %{SOURCE2} %{buildroot}/etc/imapd.conf install -p -m 644 %{SOURCE3} %{buildroot}/etc/pam.d/pop install -p -m 644 %{SOURCE3} %{buildroot}/etc/pam.d/imap install -p -m 644 %{SOURCE3} %{buildroot}/etc/pam.d/sieve install -p -m 644 %{SOURCE3} %{buildroot}/etc/pam.d/mupdate install -p -m 644 %{SOURCE3} %{buildroot}/etc/pam.d/lmtp install -p -m 644 %{SOURCE3} %{buildroot}/etc/pam.d/nntp install -p -m 644 %{SOURCE3} %{buildroot}/etc/pam.d/csync install -p -m 644 %{SOURCE1} %{buildroot}/etc/logrotate.d/%{name} install -p -m 644 %{SOURCE7} %{buildroot}/etc/sysconfig/%{name} install -p -m 755 %{SOURCE10} %{buildroot}/etc/cron.daily/%{name} install -p -D -m 644 %{SOURCE12} %{buildroot}%{_unitdir}/cyrus-imapd.service install -p -D -m 644 %{SOURCE13} %{buildroot}%{_unitdir}/cyrus-imapd-init.service install -p -D -m 755 %{SOURCE14} %{buildroot}%{cyrexecdir}/cyr_systemd_helper # Cleanup of doc dir find doc perl -name CVS -type d -prune -exec rm -rf {} \; find doc perl -name .cvsignore -type f -exec rm -f {} \; rm -f doc/Makefile.dist* rm -f doc/text/htmlstrip.c rm -f doc/text/Makefile rm -rf doc/man # fix permissions on perl .so files find %{buildroot}%{_libdir}/perl5/ -type f -name "*.so" -exec chmod 755 {} \; # fix conflicts with uw-imap mv %{buildroot}%{_mandir}/man8/imapd.8 %{buildroot}%{_mandir}/man8/imapd.8cyrus mv %{buildroot}%{_mandir}/man8/pop3d.8 %{buildroot}%{_mandir}/man8/pop3d.8cyrus # Install templates install -m 755 -d doc/conf install -m 644 master/conf/*.conf doc/conf/ # Generate db config file ( grep '^{' lib/imapoptions | grep _db | cut -d'"' -f 2,4 | \ sed -e 's/^ *//' -e 's/-nosync//' -e 's/ *$//' -e 's/"/=/' echo sieve_version=2.2.3 ) | sort > %{buildroot}%{_datadir}/%{name}/rpm/db.cfg # create the ghost pem file touch %buildroot/%ssl_pem_file # Rename 'master' binary and manpage to avoid clash with postfix mv %buildroot/%cyrexecdir/master %buildroot/%cyrexecdir/cyrus-master mv %buildroot/%_mandir/man8/master.8 %buildroot/%_mandir/man8/cyrus-master.8 # Rename 'fetchnews' binary and manpage to avoid clash with leafnode mv %buildroot/%cyrexecdir/fetchnews %buildroot/%cyrexecdir/cyrfetchnews mv %buildroot/%_mandir/man8/fetchnews.8 %buildroot/%_mandir/man8/cyrfetchnews.8 perl -pi -e 's|fetchnews|cyrfetchnews|g;s|Fetchnews|Cyrfetchnews|g;s/FETCHNEWS/CYRFETCHNEWS/g' \ %{buildroot}%{_mandir}/man8/cyrfetchnews.8 # Rename 'httpd' manpage to avoid clash with Apache mv %buildroot/%_mandir/man8/httpd.8 %buildroot/%_mandir/man8/cyrhttpd.8 #remove executable bit from docs for ddir in doc perl/imap/examples do find $ddir -type f -exec chmod -x {} \; done # Remove pointless libtool archives rm %buildroot/%_libdir/*.la # Remove installed but not packaged files rm %buildroot/%cyrexecdir/pop3proxyd find %buildroot -name "perllocal.pod" -exec rm {} \; find %buildroot -name ".packlist" -exec rm {} \; %pre # Create 'cyrus' user on target host getent group saslauth >/dev/null || /usr/sbin/groupadd -g %gid -r saslauth getent passwd cyrus >/dev/null || /usr/sbin/useradd -c "Cyrus IMAP Server" -d /var/lib/imap -g %cyrusgroup \ -G saslauth -s /sbin/nologin -u %uid -r %cyrususer %post /sbin/ldconfig %systemd_post cyrus-imapd.service %preun %systemd_preun cyrus-imapd.service %postun /sbin/ldconfig %systemd_postun_with_restart cyrus-imapd.service %files %license COPYING %doc README doc/* %_datadir/cyrus-imapd %_libdir/libcyrus*.so.* %_mandir/man5/* %_mandir/man8/* %dir /etc/pki/cyrus-imapd %attr(0640,root,%cyrusgroup) %ghost %config(missingok,noreplace) %verify(not md5 size mtime) %ssl_pem_file %config(noreplace) /etc/cyrus.conf %config(noreplace) /etc/imapd.conf %config(noreplace) /etc/logrotate.d/cyrus-imapd %config(noreplace) /etc/sysconfig/cyrus-imapd %config(noreplace) /etc/pam.d/* /etc/cron.daily/cyrus-imapd %_unitdir/cyrus-imapd.service %_unitdir/cyrus-imapd-init.service %dir %cyrexecdir/ %cyrexecdir/[a-uw-z]* %attr(0750,%cyrususer,%cyrusgroup) %dir /var/lib/imap %attr(0700,%cyrususer,%cyrusgroup) /var/lib/imap/backup/ %attr(0700,%cyrususer,%cyrusgroup) /var/lib/imap/db/ %attr(0700,%cyrususer,%cyrusgroup) /var/lib/imap/log/ %attr(0700,%cyrususer,%cyrusgroup) /var/lib/imap/meta/ %attr(0700,%cyrususer,%cyrusgroup) /var/lib/imap/md5/ %attr(0700,%cyrususer,%cyrusgroup) /var/lib/imap/msg/ %attr(0700,%cyrususer,%cyrusgroup) /var/lib/imap/proc/ %attr(0700,%cyrususer,%cyrusgroup) /var/lib/imap/ptclient/ %attr(0700,%cyrususer,%cyrusgroup) /var/lib/imap/quota/ %attr(0700,%cyrususer,%cyrusgroup) /var/lib/imap/rpm/ %attr(0700,%cyrususer,%cyrusgroup) /var/lib/imap/sieve/ %attr(0750,%cyrususer,%cyrusgroup) /var/lib/imap/socket %attr(0700,%cyrususer,%cyrusgroup) /var/lib/imap/sync/ %attr(0700,%cyrususer,%cyrusgroup) /var/lib/imap/user/ %attr(0700,%cyrususer,%cyrusgroup) /var/spool/imap/ %files vzic %cyrexecdir/vzic* %files devel %_includedir/cyrus/ %_libdir/libcyrus*.so %_libdir/pkgconfig/*.pc %_mandir/man3/imclient.3* %files utils %license COPYING %doc perl/imap/README %doc perl/imap/Changes %doc perl/imap/examples %{_bindir}/* %{perl_vendorarch}/auto/Cyrus %{perl_vendorarch}/Cyrus %{perl_vendorlib}/Cyrus %{_mandir}/man3/*.3pm* %{_mandir}/man1/* %changelog * Mon Jan 09 2017 Jason L Tibbitts III - 2.5.10-2 - Rename httpd manpage to "cyrhttpd" to avoid conflict with the httpd package. * Wed Nov 23 2016 Jason L Tibbitts III - 2.5.10-1 - Initial update to the 2.5 series. - Significant spec cleanups. - Add sscg dep and follow https://fedoraproject.org/wiki/Packaging:Initial_Service_Setup for initial cert generation. - Change default conf to use the system crypto policy. * Tue May 17 2016 Jitka Plesnikova - 2.4.18-3 - Perl 5.24 rebuild * Wed Feb 03 2016 Fedora Release Engineering - 2.4.18-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild * Thu Oct 01 2015 Jason L Tibbitts III - 2.4.18-1 - Update to 2.4.18, rhbz#1267871 and rhbz#1267878 - Backport ff4e6c71d932b3e6bbfa67d76f095e27ff21bad0 to fix issues from http://seclists.org/oss-sec/2015/q3/651 * Wed Sep 09 2015 Jason L Tibbitts III - 2.4.17-14 - Use %%license tag - Have -devel require the base package - Minor cleanups * Sat Aug 08 2015 Jason L Tibbitts III - 2.4.17-13 - Remove invalid Patch0: URL. - Use HTTP for upstream source. - pod2html was split out of the main perl package, breaking cyrus. Add a build dep for it. * Wed Jul 29 2015 Kevin Fenzi 2.4.17-12 - Rebuild for new librpm * Wed Jun 17 2015 Fedora Release Engineering - 2.4.17-11 - Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild * Fri Jun 05 2015 Jitka Plesnikova - 2.4.17-10 - Perl 5.22 rebuild * Wed Aug 27 2014 Jitka Plesnikova - 2.4.17-9 - Perl 5.20 rebuild * Sat Aug 16 2014 Fedora Release Engineering - 2.4.17-8 - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild * Sat Jun 07 2014 Fedora Release Engineering - 2.4.17-7 - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild * Sat Aug 03 2013 Fedora Release Engineering - 2.4.17-6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild * Thu Jul 18 2013 Petr Pisar - 2.4.17-5 - Perl 5.18 rebuild * Fri Jul 12 2013 Michal Hlavinka - 2.4.17-4 - spec clean up * Thu Apr 18 2013 Michal Hlavinka - 2.4.17-3 - make sure binaries are hardened * Wed Feb 13 2013 Fedora Release Engineering - 2.4.17-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild * Sat Dec 1 2012 Jeroen van Meeuwen - 2.4.17-1 - New upstream version, fixes upstream bugs: - reconstruct doesn't retain internaldate correctly (#3733) - Race condition in maibox rename (#3696) - DBERROR db4: Transaction not specified for a transactional database (#3715) - performance degradation on huge indexes in 2.4 branch (#3717) - typo fix in imapd.conf man page (#3729) - quota does not find all quotaroots if quotalegacy, fulldirhash and prefix are used and virtdomains is off (#3735) - Mail delivered during XFER was lost (#3737) - replication does not work on RENAME (#3742) - Failed asserting during APPEND (#3754) * Fri Nov 30 2012 Michal Hlavinka - 2.4.16-5 - do not use strict aliasing * Tue Aug 21 2012 Michal Hlavinka - 2.4.16-4 - use new systemd rpm macros (#850079) * Wed Jul 18 2012 Fedora Release Engineering - 2.4.16-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild * Mon Jun 11 2012 Petr Pisar - 2.4.16-2 - Perl 5.16 rebuild * Thu Apr 19 2012 Jeroen van Meeuwen - 2.4.16-1 - New upstream release * Wed Apr 18 2012 Jeroen van Meeuwen - 2.4.15-1 - New upstream release * Wed Apr 11 2012 Michal Hlavinka - 2.4.14-2 - rebuilt because of new libdb * Wed Mar 14 2012 Michal Hlavinka - 2.4.14-1 - updated to 2.4.14 * Tue Feb 07 2012 Michal Hlavinka - 2.4.13-3 - use PraveTmp in systemd unit file * Fri Jan 13 2012 Fedora Release Engineering - 2.4.13-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild * Mon Jan 02 2012 Jeroen van Meeuwen - 2.4.13-1 - New upstream release * Wed Dec 07 2011 Michal Hlavinka - 2.4.12-5 - do not use digest-md5 as part of default auth mechanisms, it does not coop with pam * Tue Nov 22 2011 Michal Hlavinka - 2.4.12-4 - reduce noisy logging, add option to turn on LOG_DEBUG syslog messages again (thanks Philip Prindeville) (#754940) * Mon Oct 24 2011 Michal Hlavinka - 2.4.12-3 - add login and digest-md5 as part of default auth mechanisms (#748278) * Tue Oct 11 2011 Michal Hlavinka - 2.4.12-2 - do not hide errors if cyrus user can't be added * Wed Oct 05 2011 Michal Hlavinka - 2.4.12-1 - cyrus-imapd updated to 2.4.12 - fixes incomplete authentication checks in nntpd (Secunia SA46093) * Fri Sep 9 2011 Jeroen van Meeuwen - 2.4.11-1 - update to 2.4.11 - Fix CVE-2011-3208 (#734926, #736838) * Tue Aug 16 2011 Michal Hlavinka - 2.4.10-4 - rebuild with db5 * Thu Jul 21 2011 Petr Sabata - 2.4.10-3 - Perl mass rebuild * Wed Jul 20 2011 Petr Sabata - 2.4.10-2 - Perl mass rebuild * Wed Jul 6 2011 Jeroen van Meeuwen - 2.4.10-1 - New upstream release * Wed Jun 22 2011 Iain Arnell 2.4.8-5 - Patch to work with Perl 5.14 * Mon Jun 20 2011 Marcela Mašláňová - 2.4.8-4 - Perl mass rebuild * Fri Jun 10 2011 Marcela Mašláňová - 2.4.8-3 - Perl 5.14 mass rebuild * Mon May 09 2011 Michal Hlavinka - 2.4.8-2 - fixed: systemd commands in %%post (thanks Bill Nottingham) * Thu Apr 14 2011 Michal Hlavinka - 2.4.8-1 - cyrus-imapd updated to 2.4.8 - fixed: cannot set unlimited quota through proxy - fixed: reconstruct tries to set timestamps again and again - fixed: response for LIST "" user is wrong - fixed: THREAD command doesn't support quoted charset - fixed crashes in mupdatetest and cyr_expire when using -x * Mon Apr 04 2011 Michal Hlaivnka - 2.4.7-2 - now using systemd * Thu Mar 31 2011 Michal Hlavinka - 2.4.7-1 - updated to 2.4.7 * Fri Feb 11 2011 Michal Hlavinka - 2.4.6-1 - updated to 2.4.6 - "autocreate" and "autosieve" features were removed * Tue Feb 08 2011 Fedora Release Engineering - 2.3.16-8 - Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild * Fri Jan 21 2011 Michal Hlavinka - 2.3.16-7 - don't force sync io for all filesystems * Fri Jul 09 2010 Michal Hlavinka - 2.3.16-6 - follow licensing guideline update - devel sub-package has to have virtual static provides (#609604) * Mon Jun 07 2010 Michal Hlavinka - 2.3.16-5 - spec cleanup - simplified packaging (merge -perl in -utils) - remove obsoleted and/or unmaintained additional sources/patches - remove long time not used files from the cvs/srpm - update additional sources/patches from their upstream * Tue Jun 01 2010 Marcela Maslanova - 2.3.16-4 - Mass rebuild with perl-5.12.0 * Tue Apr 20 2010 Michal Hlavinka - 2.3.16-3 - add support for QoS marked traffic (#576652) * Thu Jan 14 2010 Michal Hlavinka - 2.3.16-2 - ignore user_denny.db if missing (#553011) - fix location of certificates in default imapd.conf