Summary: high-performance mail store with imap and pop3
Name: cyrus-imapd
-Version: 1.5.19
-Release: 2
+Version: 1.6.22
+Release: 0.1
Copyright: academic/research
Group: Networking/Daemons
-Source0: ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/%{name}-v%{version}.tar.gz
+Source0: ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/%{name}-%{version}.tar.gz
Source1: cyrus-README
Source2: cyrus-procmailrc
Source3: cyrus-deliver-wrapper.c
Source4: cyrus-user-procmailrc.template
-Source5: cyrus-redhat-procmail+cyrus.mc
+Source5: cyrus-imapd-procmail+cyrus.mc
Source6: cyrus-imapd.logrotate
+Source7: cyrus-imapd.conf
+Source8: cyrus-imapd.cron
+Source9: cyrus-imapd.inetd
+Source10: cyrus-imapd-pop3.inetd
URL: http://andrew2.andrew.cmu.edu/cyrus/imapd/
-Icon: cyrus.gif
+#Icon: cyrus.gif
+BuildRequires: cyrus-sasl-devel
+BuildRequires: tcl-devel >= 8.0
+BuildRequires: openssl-devel
Buildroot: /tmp/%{name}-%{version}-root
+%define _libexecdir %{_prefix}/lib/cyrus
+
%description
The Cyrus IMAP server is a scaleable enterprise mail system
designed for use from small to large enterprise environments using
%prep
rm -rf $RPM_BUILD_ROOT
-%setup -n cyrus-imapd-v%{version}
+%setup -q
%build
-if [ ! -d %{_libdir}/sendmail-cf/cf ] ; then
- echo Need full sendmail-cf installation
- exit -1
-fi
# prepare a makedepend
cd makedepend
+autoconf
%configure
make
export PATH=$PATH:`pwd`
cd ..
-# now go ahead
-# I hope one day there is --with-login=pam :-)
-./configure %{_target_platform} \
- --with-tcl=/usr \
- --prefix=/usr \
- --with-login=unix
+autoconf
+%configure \
+ --with-auth=unix
make
-gcc -Wall -o deliver-wrapper $RPM_SOURCE_DIR/cyrus-deliver-wrapper.c
+gcc $RPM_OPT_FLAGS -DLIBEXECDIR=\"%{_libexecdir}\" -s -Wall -o deliver-wrapper %{SOURCE3}
%install
-# First create the 'cyrus' user if it doesn't exist
-grep ^cyrus: /etc/passwd >/dev/null || {
- echo 'cyrus:*:76:12:cyrus:/var/imap:/bin/bash' >>/etc/passwd
-}
-
-cp -p $RPM_SOURCE_DIR/cyrus-README $RPM_BUILD_DIR/cyrus-imapd-v%{version}/README.RPM
-
-make install DESTDIR=$RPM_BUILD_ROOT
-
-mkdir -p $RPM_BUILD_ROOT/usr/cyrus/bin
-install -g mail -m 2755 -s deliver-wrapper $RPM_BUILD_ROOT/usr/cyrus/bin/deliver-wrapper
-
-mkdir -p $RPM_BUILD_ROOT/etc
-cat <<END >$RPM_BUILD_ROOT/etc/imapd.conf
-configdirectory: /var/imap
-partition-default: /var/spool/imap
-admins: root
-allowanonymouslogin: no
-END
-
-cp -p $RPM_SOURCE_DIR/cyrus-procmailrc $RPM_BUILD_ROOT/etc/procmailrc.cyrus
-mkdir -p $RPM_BUILD_ROOT/usr/cyrus/etc
-cp -p $RPM_SOURCE_DIR/cyrus-user-procmailrc.template $RPM_BUILD_ROOT/usr/cyrus/etc/user-procmailrc.template
-
-mkdir $RPM_BUILD_ROOT/etc/logrotate.d
+rm -rf $RPM_BUILD_ROOT
+#install -d $RPM_BUILD_ROOT/usr/cyrus/etc
+install -d \
+ $RPM_BUILD_ROOT{%{_sbindir},%{_libexecdir},%{_mandir}} \
+ $RPM_BUILD_ROOT/etc/{logrotate.d,cron.daily,sysconfig/rc-inetd} \
+ $RPM_BUILD_ROOT/var/spool/imap/stage. \
+ $RPM_BUILD_ROOT/var/state/imap/{user,quota,proc,log,msg,deliverdb,sieve} \
+ $RPM_BUILD_ROOT%{_libdir}/sendmail-cf/cf
+touch $RPM_BUILD_ROOT/var/state/imap/mailboxes
+
+
+make install DESTDIR=$RPM_BUILD_ROOT CYRUS_USER="`id -u`" CYRUS_GROUP="`id -g`"
+
+#mkdir -p $RPM_BUILD_ROOT/usr/cyrus/bin
+#install -g mail -m 2755 -s deliver-wrapper $RPM_BUILD_ROOT/usr/cyrus/bin/deliver-wrapper
+install deliver-wrapper $RPM_BUILD_ROOT/usr/cyrus/bin/deliver-wrapper
+
+install %{SOURCE1} .
+install %{SOURCE2} $RPM_BUILD_ROOT/etc/procmailrc.cyrus
+#install %{SOURCE4} $RPM_BUILD_ROOT/usr/cyrus/etc/user-procmailrc.template
+install %{SOURCE5} $RPM_BUILD_ROOT%{_libdir}/sendmail-cf/cf/procmail+cyrus.mc
install %{SOURCE6} $RPM_BUILD_ROOT/etc/logrotate.d/cyrus-imapd
+install %{SOURCE7} $RPM_BUILD_ROOT/etc/imapd.conf
+install %{SOURCE8} $RPM_BUILD_ROOT/etc/cron.daily/cyrus-imapd
+install %{SOURCE9} $RPM_BUILD_ROOT/etc/sysconfig/rc-inetd/imapd
+install %{SOURCE10} $RPM_BUILD_ROOT/etc/sysconfig/rc-inetd/pop3d
-mkdir $RPM_BUILD_ROOT/etc/cron.daily
-cat <<END >$RPM_BUILD_ROOT/etc/cron.daily/cyrus-imapd
-#!/bin/bash
-su cyrus -s /bin/bash -c '/usr/cyrus/bin/deliver -E 3'
-END
-chmod +x $RPM_BUILD_ROOT/etc/cron.daily/cyrus-imapd
+mv $RPM_BUILD_ROOT/usr/cyrus/bin/* $RPM_BUILD_ROOT%{_libexecdir}
+mv $RPM_BUILD_ROOT/usr/man/* $RPM_BUILD_ROOT%{_mandir}
-mkdir -p $RPM_BUILD_ROOT/var
-cd $RPM_BUILD_ROOT/var
-mkdir -p imap
-chown cyrus:mail imap
-chmod 750 imap
-
-cd imap
-true >> mailboxes
-mkdir user quota proc log msg deliverdb
-chown cyrus:mail *
-
-mkdir -p $RPM_BUILD_ROOT/var/spool
-cd $RPM_BUILD_ROOT/var/spool
-mkdir -p imap
-chown cyrus:mail imap
-chmod 750 imap
-
-mkdir -p $RPM_BUILD_ROOT%{_sbindir}
-ln -s ../cyrus/bin/imapd $RPM_BUILD_ROOT%{_sbindir}/imapd
-ln -s ../cyrus/bin/pop3d $RPM_BUILD_ROOT%{_sbindir}/ipop3d
-
-mkdir -p $RPM_BUILD_ROOT%{_libdir}/sendmail-cf/cf
-cp -p $RPM_SOURCE_DIR/cyrus-redhat-procmail+cyrus.mc $RPM_BUILD_ROOT%{_libdir}/sendmail-cf/cf/redhat-procmail+cyrus.mc
-cd %{_libdir}/sendmail-cf/cf
-mkdir -p $RPM_BUILD_ROOT/usr/cyrus/etc
-m4 < $RPM_SOURCE_DIR/cyrus-redhat-procmail+cyrus.mc > $RPM_BUILD_ROOT%{_libdir}/sendmail-cf/cf/redhat-procmail+cyrus.cf
+gzip -9fn $RPM_BUILD_ROOT%{_mandir}/man*/* \
+ cyrus-README
-%clean
-rm -rf $RPM_BUILD_ROOT
+# make hashed dirs
+cd $RPM_BUILD_ROOT/var
+/usr/bin/perl <<EOF
+foreach \$i ("a".."z")
+{
+ mkdir "state/imap/user/\$i", 0755;
+ mkdir "state/imap/quota/\$i", 0755;
+ mkdir "state/imap/sieve/\$i", 0755;
+ mkdir "spool/imap/\$i", 0755;
+}
+EOF
%pre
-# create the 'cyrus' user if it doesn't exist
-grep ^cyrus: /etc/passwd >/dev/null || {
- echo 'cyrus:*:76:12:cyrus:/var/imap:/bin/bash' >>/etc/passwd
-}
+if [ -z "`id -u cyrus 2>/dev/null`" ]; then
+ /usr/sbin/useradd -u 76 -r -d /var/spool/imap -s /bin/false -c "Cyrus User" -g mail cyrus 1>&2
+ if [ -f /var/db/passwd.db ]; then
+ /usr/bin/update-db 1>&2
+ fi
+fi
%post
-# update syslog
-grep ^local6 /etc/syslog.conf >/dev/null || {
- echo "local6.debug /var/log/imapd.log" >>/etc/syslog.conf
- killall -1 syslogd 2>/dev/null
-}
-touch /var/log/imapd.log
-chmod 640 /var/log/imapd.log
+if [ -f /var/lock/subsys/rc-inetd ]; then
+ /etc/rc.d/init.d/rc-inetd reload 1>&2
+else
+ echo "Type \"/etc/rc.d/init.d/rc-inetd start\" to start inet sever" 1>&2
+fi
-# update inetd to run as user 'cyrus'
-sed '/^imap/s/root/cyrus/;/^pop-3/s/root/cyrus/' </etc/inetd.conf >/etc/inetd.conf.tmp &&
-mv /etc/inetd.conf.tmp /etc/inetd.conf &&
-killall -1 inetd 2>/dev/null
# force synchronous updates
-cd /var/imap
+cd /var/state/imap
chattr +S . user quota 2>/dev/null
chattr +S /var/spool/imap 2>/dev/null
-cd /etc
-# make backup copy of sendmail.cf if we've got a pre-cyrus cf file
-if grep -q cyrus /etc/sendmail.cf ; then
- echo not updating cyrus-aware sendmail.cf
-else
- cp sendmail.cf mail/sendmail-pre-cyrus-backup.cf
- echo made backup of sendmail.cf in mail/sendmail-pre-cyrus-backup.cf
- cp %{_libdir}/sendmail-cf/cf/redhat-procmail+cyrus.cf /etc/sendmail.cf
- echo installed cyrus-aware sendmail.cf
- # signal sendmail
- if [ -f /var/run/sendmail.pid ]; then
- /etc/rc.d/init.d/sendmail restart
- fi
+%postun
+if [ -f /var/lock/subsys/rc-inetd ]; then
+ /etc/rc.d/init.d/rc-inetd reload 1>&2
fi
-
-%preun
-# try to revert to pre-cyrus sendmail.cf
-if [ -f /etc/mail/sendmail-pre-cyrus-backup.cf ] ; then
- cd /etc
- cp sendmail.cf mail/sendmail-post-cyrus-backup.cf
- echo made backup of sendmail.cf in mail/sendmail-post-cyrus-backup.cf
- mv mail/sendmail-pre-cyrus-backup.cf sendmail.cf
- echo reverted to pre-cyrus sendmail.cf
- grep -q ^cyrus: /etc/passwd >/dev/null && \
- grep -v ^cyrus: /etc/passwd >/etc/passwd.tmp && \
- mv /etc/passwd.tmp /etc/passwd
- # signal sendmail
- if [ -f /var/run/sendmail.pid ]; then
- /etc/rc.d/init.d/sendmail restart
- fi
-else
- echo No pre-cyrus sendmail.cf backup available.
- echo You will have to install a new sendmail.cf and
- echo remove the cyrus-user manually.
+if [ "$1" = "0" ]; then
+ if [ -n "`id -u cyrus 2>/dev/null`" ]; then
+ /usr/sbin/userdel cyrus 1>&2
+ fi
fi
-# put the inetd config file back to normal
-sed '/^imap/s/cyrus/root/;/^pop-3/s/cyrus/root/' </etc/inetd.conf >/etc/inetd.conf.tmp &&
-mv /etc/inetd.conf.tmp /etc/inetd.conf &&
-killall -1 inetd 2>/dev/null
-%files
-%doc README README.RPM doc
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%files
+%defattr(644,root,root,755)
+#doc README README.RPM doc
+%doc doc/html/*.html
-# build roots are your friend - if only they would exclude /usr/doc!
%config /etc/imapd.conf
%config /etc/procmailrc.cyrus
-/etc/logrotate.d
-/etc/cron.daily/*
-%{_bindir}/*
-/usr/cyrus
-%{_includedir}
-%{_libdir}
+%config(noreplace) %verify(not size md5 mtime) /etc/logrotate.d/cyrus-imapd
+%attr( 640, root,root) %config(noreplace) %verify(not size md5 mtime) /etc/sysconfig/rc-inetd/*
+%attr( 755, root,root) /etc/cron.daily/cyrus-imapd
+%attr( 755, root,root) %{_bindir}/*
+%attr(4750,cyrus,mail) %{_libexecdir}/deliver
+%attr(2755,cyrus,mail) %{_libexecdir}/deliver-wrapper
+%attr( 755, root,root) %{_libexecdir}/arbitron
+%attr( 755, root,root) %{_libexecdir}/collectnews
+%attr( 755, root,root) %{_libexecdir}/dump_deliverdb
+%attr( 755, root,root) %{_libexecdir}/feedcyrus
+%attr( 755, root,root) %{_libexecdir}/fud
+%attr( 755, root,root) %{_libexecdir}/mbpath
+%attr( 755, root,root) %{_libexecdir}/quota
+%attr( 755, root,root) %{_libexecdir}/reconstruct
+%attr( 755, root,root) %{_libexecdir}/syncnews
+%attr( 755, root,root) %{_libexecdir}/timsieved
+%attr( 755, root,root) %{_libexecdir}/pop3d
+%attr( 755, root,root) %{_libexecdir}/imapd
+
+#%attr(0755,root,root) %{_sbindir}/imapd
+#%attr(0755,root,root) %{_sbindir}/ipop3d
+
+%defattr(640,cyrus,mail,750)
+/var/spool/imap
+%dir /var/state/imap
+/var/state/imap/deliverdb
+/var/state/imap/quota
+/var/state/imap/user
+/var/state/imap/sieve
+/var/state/imap/log
+/var/state/imap/msg
+/var/state/imap/proc
+%config(noreplace) %verify(not size md5 mtime) /var/state/imap/mailboxes
+%defattr(644,root,root,755)
+
%{_mandir}/man*/*
-%{_sbindir}/*
-/var
+
+%{_includedir}/cyrus
+%{_libdir}/lib*.a