From f98fbbdac052729317782fc9d635ada2e32e663b Mon Sep 17 00:00:00 2001 From: Jason Tibbitts Date: Mon, 22 May 2017 11:59:16 -0500 Subject: [PATCH] Initial work to update to 3.0.1. --- cyrus-imapd.spec | 211 +++++++++++++++++++++++++++++------------------ 1 file changed, 131 insertions(+), 80 deletions(-) diff --git a/cyrus-imapd.spec b/cyrus-imapd.spec index 1b679ad..19fa146 100644 --- a/cyrus-imapd.spec +++ b/cyrus-imapd.spec @@ -1,6 +1,10 @@ +# Cassandane doesn't have releases often. This was fetched on 20170412. +%global cmt1 9fed6232e4bf202987b5b8a57bac018797fbb6c6 +%define scmt(l:) %(c=%1; echo ${c:0:%{-l:%{-l*}}%{!-l:7}}) + Name: cyrus-imapd -Version: 2.5.10 -Release: 3%{?dist} +Version: 3.0.1 +Release: 1%{?dist} %define ssl_pem_file /etc/pki/%name/%name.pem @@ -10,38 +14,46 @@ Release: 3%{?dist} %define cyrususer cyrus %define cyrusgroup mail +# RF hardcoded-library-path in %%_prefix/lib/%%name %define cyrexecdir %_prefix/lib/%name -Summary: A high-performance mail server with IMAP, POP3, NNTP and SIEVE support +Summary: A high-performance email, contacts and calendar server 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 +Source1: https://github.com/cyrusimap/cassandane/archive/%cmt1.tar.gz#/cassandane-%{scmt %cmt1}.tar.gz -# 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 +Source11: cyrus-imapd.logrotate +Source13: cyrus-imapd.pam-config +Source17: cyrus-imapd.sysconfig +Source18: cyrus-imapd.cvt_cyrusdb_all +Source19: cyrus-imapd.magic +Source20: cyrus-imapd.cron-daily +Source21: README.rpm +Source22: cyrus-imapd.service +Source23: cyrus-imapd-init.service +Source24: cyr_systemd_helper 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 +BuildRequires: clamav-devel CUnit-devel cyrus-sasl-devel glib2-devel + +BuildRequires: jansson-devel krb5-devel libical-devel libnghttp2-devel +BuildRequires: libxml2-devel mariadb-devel net-snmp-devel openldap-devel +BuildRequires: openssl-devel postgresql-devel shapelib-devel sqlite-devel +BuildRequires: xapian-core-devel + +# Perl modules required for cassandane to function +BuildRequires: perl(AnyEvent) perl(BSD::Resource) perl(Clone) +BuildRequires: perl(File::chdir) perl(IO::Socket::INET6) perl(Mail::IMAPTalk) +BuildRequires: perl(Config::IniFiles) perl(Mail::JMAPTalk) perl(Math::Int64) +BuildRequires: perl(Net::CalDAVTalk) perl(Net::CardDAVTalk) +BuildRequires: perl(News::NNTPClient) perl(String::CRC32) perl(Sys::Syslog) +BuildRequires: perl(Test::Unit::TestRunner) perl(Time::HiRes) perl(XML::DOM) +BuildRequires: perl(XML::Generator) Requires(pre): shadow-utils Requires(post): /sbin/ldconfig @@ -56,32 +68,27 @@ 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. +The Cyrus IMAP (Internet Message Access Protocol) server provides access to +personal mail, system-wide bulletin boards, news-feeds, calendar and contacts +through the IMAP, JMAP, NNTP, CalDAV and CardDAV protocols. The Cyrus IMAP +server is a scalable enterprise groupware system designed for use from small to +large enterprise environments using technologies based on well-established Open +Standards. -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. +A full Cyrus IMAP implementation allows a seamless mail and bulletin board +environment to be set up across one or more nodes. It differs from other IMAP +server implementations in that it is run on sealed nodes, where users are not +normally permitted to log in. The mailbox database is stored in parts of the +filesystem that are private to the Cyrus IMAP system. All user access to mail +is through software using the IMAP, IMAPS, JMAP, POP3, POP3S, KPOP, CalDAV +and/or CardDAV protocols. + +The private mailbox database design gives the Cyrus IMAP 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 @@ -123,45 +130,69 @@ one running the server. %prep %autosetup -p1 -install -m 644 %SOURCE11 doc/ +tar xf %SOURCE1 +ln -s cassandane-%cmt1 cassandane + +install -m 644 %SOURCE21 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 +#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 +#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 +#sed -i -e "s/# idled/ idled/" master/conf/*.conf # Fix permissions on perl programs -find . -type f -name "*.pl" -exec chmod 755 {} \; +#find . -type f -name "*.pl" -exec chmod 755 {} \; %build + +# This is the test suite, which doesn't build much but does verify its dependencies. +# If this is done after the configure call, the one thing it does build fails +# because the configure macro puts some hardening flags into the environment. +pushd cassandane +make +popd + +# Options not enabled: +# --enable-objectstore +# It's experimental, and it doesn't appear that either openio or caringo are +# in Fedora. + +# XXX --with-cyrus-prefix and --with-service-path went away. + autoreconf -vi %{configure} \ - --with-bdb-incdir=%_includedir/libdb \ - --with-cyrus-prefix=%cyrexecdir \ + --disable-silent-rules \ + \ --with-extraident="Fedora-RPM-%version-%release" \ --with-krbimpl=mit \ --with-ldap=/usr \ + --with-mysql \ + --with-pgsql \ --with-perl=%__perl \ - --with-service-path=%cyrexecdir \ --with-snmp \ --with-syslogfacility=MAIL \ + \ --enable-autocreate \ + --enable-backup \ + --enable-calalarmd \ --enable-http \ --enable-idled \ + --enable-jmap \ --enable-murder \ - --enable-netscapehack \ --enable-nntp \ --enable-replication \ --enable-unit-tests \ + --enable-xapian \ +# # The configure script will set up the Perl makefiles, but not in the way # Fedora needs them. So regenerate them manually. @@ -182,6 +213,7 @@ make -C tools/vzic #make -C man -f Makefile.dist #make -C doc -f Makefile.dist + %install make install DESTDIR=%buildroot @@ -195,8 +227,10 @@ install -d \ %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/%cyrexecdir \ %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/ @@ -211,24 +245,37 @@ for i in vzic vzic-test.pl vzic-merge.pl vzic-dump.pl; do 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 -m 755 %SOURCE18 %buildroot/%cyrexecdir/cvt_cyrusdb_all +install -m 644 %SOURCE19 %buildroot/%_datadir/%name/rpm/magic -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 + +install -p -m 644 %SOURCE13 %buildroot/etc/pam.d/pop +install -p -m 644 %SOURCE13 %buildroot/etc/pam.d/imap +install -p -m 644 %SOURCE13 %buildroot/etc/pam.d/sieve +install -p -m 644 %SOURCE13 %buildroot/etc/pam.d/mupdate +install -p -m 644 %SOURCE13 %buildroot/etc/pam.d/lmtp +install -p -m 644 %SOURCE13 %buildroot/etc/pam.d/nntp +install -p -m 644 %SOURCE13 %buildroot/etc/pam.d/csync + +install -p -m 644 %SOURCE11 %buildroot/etc/logrotate.d/%name +install -p -m 644 %SOURCE17 %buildroot/etc/sysconfig/%name +install -p -m 755 %SOURCE20 %buildroot/etc/cron.daily/%name + +install -p -m 644 doc/examples/cyrus_conf/prefork.conf %buildroot/etc/cyrus.conf +install -p -m 644 doc/examples/imapd_conf/normal.conf %buildroot/etc/imapd.conf + +cat >> %buildroot/etc/imapd.conf </dev/null || /usr/sbin/useradd -c "Cyrus IMAP Server" -d /v %{_mandir}/man1/* %changelog +* Thu Apr 20 2017 Jason L Tibbitts III - 3.0.1-1 +- Initial attempt at importing 3.0. Many new dependencies. +- Use a stock sample imapd.conf file instead of a Fedora-provided one. + * Fri Feb 10 2017 Fedora Release Engineering - 2.5.10-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild