# # NOTE: This package *must* be built non-root!!! # %define name courier-imap %define version 1.4.2 %define release 1mdk %define _localstatedir /var/run %define authdaemondir %{_localstatedir}/authdaemon.courier-imap Name: %{name} Summary: Coutier-IMAP is an IMAP server that uses Maildirs Version: %{version} Release: %{release} License: GPL Group: System/Servers URL: http://www.courier-mta.org Source: %{name}-%{version}.tar.bz2 Source1: courier-imap.init.bz2 Source2: courier-imap.sh.bz2 Source3: courier-imap.csh.bz2 Source4: courier-imap-sysconftool-configlist.bz2 Source5: courier-imap-sysconftool-rpmupgrade.bz2 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot BuildPreReq: openssl-devel Requires: chkconfig, fileutils, textutils, sh-utils, sed, common-licenses Requires: libopenssl0, gdbm BuildRequires: sed, perl # ldap subpackage: BuildRequires: libdb3.3-devel, libldap2-devel # mysql subpackage: BuildRequires: MySQL-devel # pgsql subpackage: BuildRequires: postgresql-devel # uw-imapd and courier can't be installed at the same time Conflicts: uw-imap # Some packages require »imap« Provides: imap, imap-server %description Courier-IMAP is an IMAP server for Maildir mailboxes. This package contains the standalone version of the IMAP server that's included in the Courier mail server package. This package is a standalone version for use with other mail servers. Do not install this package if you intend to install the full Courier mail server. Install the Courier package instead. ------------------------------------------------------------------------------ IMPORTANT NOTE: Be SURE to have a Maildir directory in the users home directory containing a Maildir spool, or else you cannot login! ------------------------------------------------------------------------------ %package pop Summary: Courier-IMAP POP servers Group: System/Servers Requires: %{name} = %{version}-%{release} Provides: pop, pop-server Conflicts: uw-imap-pop, imap <= 2000c-7mdk %description pop This package contains the POP servers of the Courier-IMAP server suite. %package ldap Summary: Courier-IMAP LDAP authentication driver. Group: System/Servers Requires: %{name} = %{version}-%{release} Requires: libdb3.3, libldap2 Conflicts: %{name}-mysql %{name}-pgsql %description ldap This package contains the necessary files to allow Courier-IMAP to authenticate from an LDAP directory. Install this package if you need the ability to use an LDAP directory for authentication. %package mysql Summary: Courier-IMAP MySQL authentication driver. Group: System/Servers Requires: %{name} = %{version}-%{release} Requires: MySQL-shared Conflicts: %{name}-ldap %{name}-pgsql %description mysql This package contains the necessary files to allow Courier-IMAP to authenticate using a MySQL database table. Install this package if you need the ability to use a MySQL database table for authentication. %package pgsql Summary: Courier-IMAP PostgreSQL authentication driver. Group: System/Servers Requires: %{name} = %{version}-%{release} Requires: postgresql-libs Conflicts: %{name}-ldap %{name}-mysql %description pgsql This package contains the necessary files to allow Courier-IMAP to authenticate using a PostgreSQL database table. Install this package if you need the ability to use a PostgreSQL database table for authentication. %prep %setup -q %configure --localstatedir=%{_localstatedir} --with-authdaemonvar=%{authdaemondir} \ --enable-unicode %build if [ -d %{buildroot} ]; then rm -rf %{buildroot}; fi mkdir -p %{buildroot} %make %make check %install mkdir -p %{buildroot}%{_sysconfdir}/pam.d # Copy the pam files #for file in imap pop3 ; do # cp imap/${file}d.authpam %{buildroot}%{_sysconfdir}/pam.d/${file} #done %make install-strip DESTDIR=%{buildroot} mkdir -p %{buildroot}%{_initrddir} # Use provided init script instead #bzip2 -cd %{SOURCE1} | \ # sed "s|_sysconfdir_|%{_sysconfdir}|g" | \ # sed "s|_libexecdir_|%{_libexecdir}|g" > %{buildroot}%{_initrddir}/courier-imap cat courier-imap.sysvinit > %{buildroot}%{_initrddir}/courier-imap # Fix imapd.dist sed 's/^IMAPDSTART=.*/IMAPDSTART=YES/' \ <%{buildroot}%{_sysconfdir}/imapd.dist \ >%{buildroot}%{_sysconfdir}/imapd.dist.tmp mv %{buildroot}%{_sysconfdir}/imapd.dist.tmp \ %{buildroot}%{_sysconfdir}/imapd.dist sed 's/^IMAPDSSLSTART=.*/IMAPDSSLSTART=YES/' \ <%{buildroot}%{_sysconfdir}/imapd-ssl.dist \ >%{buildroot}%{_sysconfdir}/imapd-ssl.dist.tmp mv %{buildroot}%{_sysconfdir}/imapd-ssl.dist.tmp \ %{buildroot}%{_sysconfdir}/imapd-ssl.dist sed 's/^POP3DDSTART=.*/POP3DSTART=YES/' \ <%{buildroot}%{_sysconfdir}/pop3d.dist \ >%{buildroot}%{_sysconfdir}/pop3d.dist.tmp mv %{buildroot}%{_sysconfdir}/pop3d.dist.tmp \ %{buildroot}%{_sysconfdir}/pop3d.dist sed 's/^POP3DSSLSTART=.*/POP3DSSLSTART=YES/' \ <%{buildroot}%{_sysconfdir}/pop3d-ssl.dist \ >%{buildroot}%{_sysconfdir}/pop3d-ssl.dist.tmp mv %{buildroot}%{_sysconfdir}/pop3d-ssl.dist.tmp \ %{buildroot}%{_sysconfdir}/pop3d-ssl.dist # Red Hat /etc/profile.d scripts mkdir -p %{buildroot}%{_sysconfdir}/profile.d for file in %{SOURCE2} %{SOURCE3} ; do base="$(basename ${file} .bz2)" bzip2 -dc %{SOURCE2} | \ sed "s|_mandir_|%{_mandir}|g" | \ sed "s|_bindir_|%{_bindir}|g" | \ sed "s|_sbindir_|%{_sbindir}|g" > ${RPM_BUILD_ROOT}%{_sysconfdir}/profile.d/${base} done cp imap/README README.imap cp maildir/README.maildirquota.txt README.maildirquota cp maildir/README.sharedfolders.txt README.sharedfolders # Create config files for sysconftool-rpmupgrade (see below) mkdir -p %{buildroot}%{_datadir} cat sysconftool > %{buildroot}%{_datadir}/sysconftool bzip2 -cd %{SOURCE4} | sed "s|_sysconfdir_|%{_sysconfdir}|g" > %{buildroot}%{_datadir}/configlist touch %{buildroot}%{_datadir}/configlist.ldap touch %{buildroot}%{_datadir}/configlist.mysql touch %{buildroot}%{_datadir}/configlist.pgsql # Backwards compatability for older versions of courier-imap. Run the # sysconftool-rpmupgrade script if you are upgrading from an older # courier-imap RPM bzip2 -cd %{SOURCE5} > %{buildroot}%{_datadir}/sysconftool-rpmupgrade # Check if authdaemond was installed, make sure to include authdaemon # directory touch authdaemon.files . authlib/authdaemonrc if [ "x$authdaemonvar" != "x" ]; then echo "%{_sysconfdir}/authdaemonrc.dist" >> %{buildroot}%{_datadir}/configlist echo '%dir %attr(700, root, root) ' $authdaemonvar > authdaemon.files touch %{buildroot}/${authdaemonvar}/lock || exit 1 touch %{buildroot}/${authdaemonvar}/pid || exit 1 authlib/authmksock %{buildroot}/${authdaemonvar}/socket || exit 1 echo '%ghost %attr(600, root, root) ' ${authdaemonvar}/lock >> authdaemon.files echo '%ghost %attr(644, root, root) ' ${authdaemonvar}/pid >> authdaemon.files echo '%ghost %attr(777, root, root) ' ${authdaemonvar}/socket >> authdaemon.files fi (cd %{buildroot} ; find .%{_libexecdir} -type f ! -name authdaemond.ldap ! -name authdaemond.mysql ! -name authdaemond.pgsql -print ) | cut -c2- >> authdaemon.files touch authdaemon.files.ldap touch authdaemon.files.mysql touch authdaemon.files.pgsql test ! -f %{buildroot}%{_libexecdir}/authlib/authdaemond.mysql || echo %{_libexecdir}/authlib/authdaemond.mysql >>authdaemon.files.mysql test ! -f %{buildroot}%{_libexecdir}/authlib/authdaemond.pgsql || echo %{_libexecdir}/authlib/authdaemond.pgsql >>authdaemon.files.pgsql test ! -f %{buildroot}%{_libexecdir}/authlib/authdaemond.ldap || \ echo %{_libexecdir}/authlib/authdaemond.ldap >>authdaemon.files.ldap if test -f %{buildroot}%{_libexecdir}/authlib/authdaemond.mysql then echo '%config(noreplace) %{_sysconfdir}/authmysqlrc.dist' >>%{buildroot}%{_datadir}/configlist.mysql echo '%attr(-, root, root) %config(noreplace) %{_sysconfdir}/authmysqlrc.dist' >>authdaemon.files.mysql fi if test -f %{buildroot}%{_libexecdir}/authlib/authdaemond.pgsql then echo '%config(noreplace) %{_sysconfdir}/authpgsqlrc.dist' >>%{buildroot}%{_datadir}/configlist.pgsql echo '%attr(-, root, root) %config(noreplace) %{_sysconfdir}/authpgsqlrc.dist' >>authdaemon.files.pgsql fi if test -f %{buildroot}%{_libexecdir}/authlib/authdaemond.ldap then echo %{_sysconfdir}/authldaprc.dist >> %{buildroot}%{_datadir}/configlist.ldap echo '%attr(-, root, root) %config(noreplace) %{_sysconfdir}/authldaprc.dist' >> authdaemon.files.ldap if test -d /etc/openldap/schema then mkdir -p %{buildroot}/etc/openldap/schema cp authlib/authldap.schema %{buildroot}/etc/openldap/schema/courier.schema echo '%config(noreplace) %attr(444, root, root) /etc/openldap/schema/courier.schema' >>authdaemon.files.ldap fi fi mkdir -p %{buildroot}%{_localstatedir} touch %{buildroot}%{_localstatedir}/imapd.pid touch %{buildroot}%{_localstatedir}/imapd-ssl.pid touch %{buildroot}%{_localstatedir}/imapd.pid.lock touch %{buildroot}%{_localstatedir}/imapd-ssl.pid.lock touch %{buildroot}%{_localstatedir}/pop3d.pid touch %{buildroot}%{_localstatedir}/pop3d-ssl.pid touch %{buildroot}%{_localstatedir}/pop3d.pid.lock touch %{buildroot}%{_localstatedir}/pop3d-ssl.pid.lock find %{buildroot} -type f -print | sed "s@^%{buildroot}@@g" | grep -v perllocal.pod > $RPM_BUILD_DIR/tmp-filelist %post %{_datadir}/sysconftool `cat %{_datadir}/configlist` >/dev/null %_post_service courier-imap # Create the %ghost files n=imap for f in %{_localstatedir}/${n}d{,-ssl}.pid{,.lock}; do %create_ghostfile $f root root 0600 done $dir="%{_localstatedir}/authdaemon.courier-imap" mkdir -p "${dir}" %create_ghostfile ${dir}/lock root root 0600 %create_ghostfile ${dir}/pid root root 0644 %create_ghostfile ${dir}/socket root root 0777 echo "--------------------------------------------------------------------------------" echo "IMPORTANT NOTE: " echo "Be SURE to have a Maildir directory in the users home directory " echo "containing a Maildir spool, or else you cannot login! " echo "--------------------------------------------------------------------------------" %post pop # Create the %ghost files n=pop3 for f in %{_localstatedir}/${n}d{,-ssl}.pid{,.lock}; do %create_ghostfile $f root root 0600 done %post ldap %{_datadir}/sysconftool `cat %{_datadir}/configlist.ldap` >/dev/null %post mysql %{_datadir}/sysconftool `cat %{_datadir}/configlist.mysql` >/dev/null %post pgsql %{_datadir}/sysconftool `cat %{_datadir}/configlist.pgsql` >/dev/null %preun ldap for file in %{_libexecdir}/{imap,pop3d}{,-ssl}.rc ; do [ -x ${file} ] && ${file} stop done %preun mysql for file in %{_libexecdir}/{imap,pop3d}{,-ssl}.rc ; do [ -x ${file} ] && ${file} stop done %preun pgsql for file in %{_libexecdir}/{imap,pop3d}{,-ssl}.rc ; do [ -x ${file} ] && ${file} stop done %preun %_preun_service courier-imap for file in %{_libexecdir}/{imap,pop3d}{,-ssl}.rc ; do [ -x ${file} ] && ${file} stop done %triggerpostun -- courier-imap test ! -f %{_datadir}/configlist || %{_datadir}/sysconftool-rpmupgrade `cat %{_datadir}/configlist` >/dev/null %triggerpostun ldap -- courier-imap test ! -f %{_datadir}/configlist.ldap || %{_datadir}/sysconftool-rpmupgrade `cat %{_datadir}/configlist.ldap` >/dev/null %triggerpostun mysql -- courier-imap test ! -f %{_datadir}/configlist.mysql || %{_datadir}/sysconftool-rpmupgrade `cat %{_datadir}/configlist.mysql` >/dev/null %clean if [ -d %{buildroot} ]; then rm -rf %{buildroot}; fi rm -rf $RPM_BUILD_DIR/%{name}-%{version} %files -f authdaemon.files %defattr(-, root, root) %doc AUTHORS imap/BUGS README README.imap README.maildirquota %doc imap/FAQ imap/FAQ.html README.sharedfolders authlib/README.* %doc INSTALL NEWS %config(noreplace) %{_sysconfdir}/pam.d/imap %attr(600, root, root) %config(noreplace) %{_sysconfdir}/imapd.dist %attr(600, root, root) %config(noreplace) %{_sysconfdir}/imapd-ssl.dist %config(noreplace) %{_sysconfdir}/imapd.cnf %config(noreplace) %{_sysconfdir}/quotawarnmsg.example %attr(755, root, root) %config(noreplace) %{_sysconfdir}/profile.d/courier-imap.csh %attr(755, root, root) %config(noreplace) %{_sysconfdir}/profile.d/courier-imap.sh %attr(755, root, root) %config(noreplace) %{_initrddir}/courier-imap %attr(644, root, root) %config(noreplace) %{_sysconfdir}/authdaemonrc.dist %dir %{_libexecdir}/authlib %{_bindir}/imapd %{_bindir}/couriertls %{_bindir}/maildirmake %{_sbindir}/imaplogin %{_sbindir}/userdbpw %{_mandir}/man1/* %{_mandir}/man8/* %{_datadir}/pw2userdb %{_datadir}/makeuserdb %{_datadir}/mkimapdcert %{_datadir}/vchkpw2userdb %{_datadir}/userdb %attr(755, root, root) %{_datadir}/sysconftool %attr(755, root, root) %{_datadir}/sysconftool-rpmupgrade %attr(644, root, root) %{_datadir}/configlist %ghost %attr(600, root, root) %{_localstatedir}/imapd.pid %ghost %attr(600, root, root) %{_localstatedir}/imapd-ssl.pid %ghost %attr(600, root, root) %{_localstatedir}/imapd.pid.lock %ghost %attr(600, root, root) %{_localstatedir}/imapd-ssl.pid.lock %files pop %defattr(-, root, root) %config(noreplace) %{_sysconfdir}/pam.d/pop3 %attr(600, root, root) %config(noreplace) %{_sysconfdir}/pop3d.dist %attr(600, root, root) %config(noreplace) %{_sysconfdir}/pop3d-ssl.dist %config(noreplace) %{_sysconfdir}/pop3d.cnf %{_bindir}/pop3d %{_sbindir}/pop3login %{_datadir}/mkpop3dcert %ghost %attr(600, root, root) %{_localstatedir}/pop3d.pid %ghost %attr(600, root, root) %{_localstatedir}/pop3d-ssl.pid %ghost %attr(600, root, root) %{_localstatedir}/pop3d.pid.lock %ghost %attr(600, root, root) %{_localstatedir}/pop3d-ssl.pid.lock %files ldap -f authdaemon.files.ldap %defattr(-, root, root) %attr(644, root, root) %{_datadir}/configlist.ldap %files mysql -f authdaemon.files.mysql %defattr(-, root, root) %attr(644, root, root) %{_datadir}/configlist.mysql %files pgsql -f authdaemon.files.pgsql %defattr(-, root, root) %attr(644, root, root) %{_datadir}/configlist.pgsql %changelog * Thu Jan 24 2002 Alexander Skwar <ASkwar@DigitalProjects.com> 1.4.2-1mdk - 1.4.2 - Make rpmlint a little happier by creating the ghost files in postins and by trimming the length of the lines in the description * Thu Nov 29 2001 Alexander Skwar <ASkwar@Linux-Mandrake.com> 1.3.12.20011123-3md - Make it really conflict with uw-imap - Just like uw-imap, have it also Provides: imap-server - Split POP stuff into a -pop subpackage, which Provides: pop, pop-server - Add the warning shown when installing the RPM also to the description - FIXME: There are still some problems with the maildrop-man package; maybe a full blown courier package containg the IMAP server, maildrop and SqWebMail should be done to fix this * Wed Nov 28 2001 Alexander Skwar <ASkwar@Linux-Mandrake.com> 1.3.12.20011123-2mdk - Make it conflict with imap (uw-imapd). Todo: also have it conflict with cyrus - Add a Provides: imap, so that other packages like php-imap can still be installed Hmm, this won't work. uw-imapd needs to be renamed! - Fix perms of %{datadir}/sysconftool - Enable all unicode character sets - Include pam files - Make sure, that all (?) needed files are included - Add a big, fat warning during post that ~/Maildir needs to be present for courier to work * Tue Nov 27 2001 Alexander Skwar <ASkwar@Linux-Mandrake.com> 1.3.12.20011123-1mdk - Basically rewrote the complete SPEC - New release * Sun Jan 28 2001 Vincent Danen <vdanen@mandrakesoft.com> 1.3.2-1mdk - first Mandrake build