Initial work to update to 3.0.1.

This commit is contained in:
Jason Tibbitts 2017-05-22 11:59:16 -05:00
parent 597d10c50b
commit f98fbbdac0

View File

@ -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 <<END
# These three files will automatically be generated by the systemd unit when
# the service starts for the first time.
tls_cert_file: /etc/pki/cyrus-imapd/cyrus-imapd.pem
tls_key_file: /etc/pki/cyrus-imapd/cyrus-imapd-key.pem
tls_ca_file: /etc/pki/cyrus-imapd/cyrus-imapd-ca.pem
END
install -p -D -m 644 %SOURCE22 %buildroot/%_unitdir/cyrus-imapd.service
install -p -D -m 644 %SOURCE23 %buildroot/%_unitdir/cyrus-imapd-init.service
install -p -D -m 755 %SOURCE24 %buildroot/%cyrexecdir/cyr_systemd_helper
# Cleanup of doc dir
find doc perl -name CVS -type d -prune -exec rm -rf {} \;
@ -239,11 +286,11 @@ 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 {} \;
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
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
@ -367,6 +414,10 @@ getent passwd cyrus >/dev/null || /usr/sbin/useradd -c "Cyrus IMAP Server" -d /v
%{_mandir}/man1/*
%changelog
* Thu Apr 20 2017 Jason L Tibbitts III <tibbs@math.uh.edu> - 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 <releng@fedoraproject.org> - 2.5.10-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild