# # Copyright 2005 Double Precision, Inc. See COPYING for # distribution information. # # Need to version-upgrade RH builds due to different directory locations. # # --- Build behavior defines -------------------------------------------------- %{?_without_fax: %define with_fax 0} %{!?_without_fax: %define with_fax 1} %{?_without_fam: %define with_fam 0} %{!?_without_fam: %define with_fam 1} %define alternatives %(test -x /usr/sbin/alternatives && echo 1 || echo 0) # ----------------------------------------------------------------------------- Name: courier Version: @VERSION@ Release: 1 Source: http://download.sourceforge.net/courier/courier-@VERSION@.tar.bz2 Group: Applications/Mail/Courier Mail Server BuildRequires: courier-authlib-devel >= 0.55 BuildRequires: fileutils BuildRequires: binutils BuildRequires: sed BuildRequires: gawk BuildRequires: perl BuildRequires: make BuildRequires: %(which gpg >/dev/null 2>/dev/null && echo 'gnupg >= 1.0.5' && exit 0; echo gnupg2) BuildRequires: expect BuildRequires: gdbm-devel BuildRequires: pam-devel BuildRequires: libidn-devel %if %with_fam BuildRequires: /usr/include/fam.h %endif BuildRequires: perl(ExtUtils::Embed) BuildRequires: /etc/mime.types %if %use_openssl BuildRequires: openssl BuildRequires: openssl-devel %if %is_not_mandrake BuildRequires: openssl-perl %endif %else BuildRequires: gnutls-devel /usr/bin/certtool %endif %if %with_fax BuildRequires: groff BuildRequires: ghostscript BuildRequires: mgetty-sendfax BuildRequires: netpbm-progs %endif BuildRequires: pcre-devel License: GPL %{?repository: Repository(pgpkeys.txt): http://download.lpmtool.com/@REPOSITORY@/courier} %% # The following macros must be defined in the package section # ----------------------------------------------------------------------------- %define __libtoolize /bin/true # # RH custom locations. # # <7.X 7.x # manpages /usr/man /usr/share/man # httpd /home/httpd /var/www # initscripts /etc/rc.d/init.d /etc/init.d %{expand:%%define manpagedir %(if test -d %{_prefix}/share/man ; then echo %{_prefix}/share/man ; else echo %{_prefix}/man ; fi)} %{expand:%%define apachedir %(if test -d /home/httpd ; then echo /home/httpd ; else echo /var/www ; fi)} %define _prefix /usr/lib/courier %define _localstatedir /var/spool/courier %define _sysconfdir /etc/courier %define _mandir %{manpagedir} %define _docdir /usr/share/doc/%{__name}-%{__version} %define initdir %(if test -d /etc/init.d/. ; then echo /etc/init.d ; else echo /etc/rc.d/init.d ; fi) # Change the following if your DocumentRoot and cgibindir differ. This is # the default redhat build: %define _cgibindir %{apachedir}/cgi-bin %define _documentrootdir %{apachedir}/html %define _imageurl /webmail %package Summary: Courier @VERSION@ mail server URL: http://www.courier-mta.org Provides: smtpdaemon server(smtp) AutoProv: no Requires: /sbin/chkconfig Requires: fileutils %if %use_openssl %else Requires: /usr/bin/certtool %endif %if %alternatives Provides: /usr/sbin/sendmail /usr/bin/mailq /usr/bin/rmail /usr/bin/newaliases %endif The Courier mail transfer agent (MTA) is an integrated mail/groupware server based on open commodity protocols, such as ESMTP, IMAP, POP3, LDAP, SSL, and HTTP. Courier provides ESMTP, IMAP, POP3, webmail, and mailing list services within a single, consistent, framework. Individual components can be enabled or disabled at will. Courier now implements basic web-based calendaring and scheduling services integrated in the webmail module. Advanced groupware calendaring services will follow soon.

After installing this package, additional information regarding configuring and using courier can be found in %{_docdir}.

Particularly, README.REDHAT describes where everything is installed, and install.html contains the regular installation instructions, which includes configuration information. In particular, the courier-webadmin package will contain the web-based configuration tool, webadmin. After installing apache and courier-webadmin, and using the webadmin password in %{_sysconfdir}/webadmin/password (which is initialized to a random string by default), you will be able to configure Courier using any web browser. %if %alternatives %else %package sendmail-wrapper Summary: Courier @VERSION@ soft links for sendmail This package contains two soft links from /usr/sbin/sendmail and /usr/lib/sendmail to %{_bindir}/sendmail. This allows application that use sendmail to transparently use Courier for sending mail. %endif %package ldap Summary: Courier @VERSION@ LDAP modules configuration screen This package contains the webadmin LDAP modules and the webadmin configuration screen for Courier. %package mysql Summary: Courier @VERSION@ MySQL configuration screen This package contains the webadmin MySQL configuration screen for Courier. %package pgsql Summary: Courier @VERSION@ PostgreSQL configuration screen This package conains the webadmin PostgreSQL configuration screen for Courier. %package pop3d Summary: Courier @VERSION@ Integrated POP3 server Requires: courier=%{__version}-%{__release} fileutils This package adds POP3 server access to the Courier mail server. Courier's POP3 server can only be used to access maildir mailboxes. This server does not support mailbox files. If you do not need the ability to download mail with a POP3 client, you do not need to install this package. %package imapd Summary: Courier @VERSION@ Integrated IMAP server Requires: courier=%{__version}-%{__release} fileutils This package adds IMAP server access to the Courier mail server. Courier's IMAP server can only be used to access maildir mailboxes. This server does not support mailbox files. If you do not need the ability to access mail with an IMAP client, you do not need to install this package.

This is a different package than the standalone version of the Courier IMAP server. You cannot install both this package, and the standalone version, called "Courier-IMAP". If you have the standalone version already installed, installing this package will automatically remove the standalone version. %package webmail Summary: Courier @VERSION@ Integrated HTTP (webmail) server Requires: courier=%{__version}-%{__release} %{_documentrootdir} /etc/cron.hourly %(which gpg >/dev/null 2>/dev/null && echo 'gnupg >= 1.0.5' && exit 0; echo gnupg2) expect fileutils %if %is_not_mandrake Requires: %{_cgibindir} %endif This package adds webmail access to the Courier mail server. Webmail access is provided via a CGI module that is installed in the apache's cgi-bin directory. You must have apache installed. %package webadmin Summary: Courier @VERSION@ web-based administration tool Requires: courier=%{__version}-%{__release} %{_documentrootdir} %if %is_not_mandrake Requires: %{_cgibindir} %endif This package installs the web-based administration tool for the Courier mail server. The webadmin tool allows the most common administrative tasks to be done from any web browser. After installing this tool, initialize %{_sysconfdir}/webadmin/password to contain the administrative password. The default configuration permits non-SSL access only from the same server, and all external logins must use SSL. See the installation notes for information on enabling external non-SSL access. %package mlm Summary: Courier @VERSION@ Integrated Mailing List Manager Requires: courier=%{__version}-%{__release} This package installs couriermlm - a mailing list manager for the Courier mail server. If you do not need the ability to manage mailing lists, you do not need to install this package. couriermlm is used to set up, maintain, and run a mailing list. couriermlm automatically processes subscription and unsubscription requests, and removes undeliverable addresses from the subscription rolls. Mailing lists managed by couriermlm require zero human administrative oversight. couriermlm supports digests, write-only posting aliases, and moderated mailing lists. %package mlm-web Summary: Courier @VERSION@ Integrated web-based mailing list interface Requires: courier-mlm=@VERSION@ %{_documentrootdir} %if %is_not_mandrake Requires: %{_cgibindir} %endif This package installs the web-based mini-interface to the Courier mailing list manager. The web access is provided via a CGI module that is installed in the apache's cgi-bin directory. You must have apache installed. %package maildrop Summary: Courier @VERSION@ Integrated mail filter Requires: courier=%{__version}-%{__release} This package adds mail filtering abilities to Courier. Mail filtering is provided via a customized version of the maildrop mail filter.

You need to install this package if you want the ability to filter incoming mail. %if %with_fax %package fax Summary: Courier @VERSION@ fax support Requires: courier=%{__version}-%{__release} groff ghostscript netpbm-progs mgetty-sendfax This package adds support for faxing E-mail messages. You need to install this package if you want the ability to send fax messages simply by Sending an E-mail to phonenumber@fax. %endif %package maildrop-wrapper Summary: Courier @VERSION@ soft links for maildrop Requires: courier-maildrop = %{__version}-%{__release} This package installs several soft links from the /usr/local/bin directory to Courier's integrated maildrop mail filter. Maildrop is available as a standalone package, which installs in /usr/local/bin. If you have applications that expect to find maildrop in /usr/local/bin you can install this package to create soft links that point to Courier's integrated maildrop version instead, in order to continue to use those applications, without needing to reconfigure them. # ----------------------------------------------------------------------------- %begin %setup %if %(test '%{xflags}' = '%''{xflags}' && echo 1 || echo 0) %define xflags %endif %configure %xflags %{__cat} >README.REDHAT <>permissions.dat echo '/etc/profile.d/courier.csh 755 bin bin config' >>permissions.dat echo '%{initdir}/courier 755 bin bin config' >>permissions.dat # # Translate permissions.dat to spec file format # %{__perl} -e ' $buildroot=$ENV{"__installdir"}; $prefix="%{_prefix}"; $exec_prefix="%{_exec_prefix}"; while (<>) { chop if /\n$/; ($file,$mode,$uid,$gid,$special)=split(/ +/); $file=$prefix if $file eq "$prefix/."; next if $special eq "doc"; next if $file eq "$prefix/doc"; # Ignore dir/. entries next if $file =~ /\/\.$/; # Ignore man directories next if $file eq "%{_mandir}"; next if substr($file, 0, length("%{_mandir}")) eq "%{_mandir}" && substr($file, length("%{_mandir}")) =~ /^\/man[1-9]$/; $mode = "-" if $special eq "%doc"; $special="%config" if $special eq "config"; $special="%dir" if ! -l "$buildroot/$file" && -d "$buildroot/$file"; $file .= "*" if $special eq "man"; # For brp-compress $special="" unless $special =~ /%/; $special="%attr($mode, $uid, $gid) $special"; print "$special $file\n"; } ' filelist1 || exit 1 ############################################################################ # # Break up a single filelist into multiple packages right here. This is # going to be ugly. # %{__sed} -n '/imap[\.a-z0-9]*$/p;/imapd-ssl/p' filelist.imap %{__sed} -n '/pop3[\.a-z0-9]*$/p;/pop3d-ssl/p' filelist.pop3 %{__sed} -n '/couriermlm/p' filelist.mlm %{__sed} -n '/webmlmd/p' filelist.webmlm %{__sed} -n '/maildrop[^/]*$/p;/mailbot/p;/reformail[^/]*$/p' filelist.maildrop %{__sed} -n '/15ldap/p;/ldapsearch/p;/courierldapalias/p' filelist.ldap %{__sed} -n '/15mysql/p' filelist.mysql %{__sed} -n '/15pgsql/p' filelist.pgsql %{__sed} -n '/faxmail/p;/35fax/p;/34fax/p' filelist.fax %{__mkdir_p} $__installdir/etc/mgetty+sendfax %{__ln_s} %{_datadir}/faxmail/new_fax $__installdir/etc/mgetty+sendfax/new_fax %if %with_fax %else awk '{print $NF}' filelist.fax | while read file; do rm -f $__installdir$file done rm -f $__installdir/etc/mgetty+sendfax/new_fax %endif # Delete all of the above, AND ldapaddressbook+webmail from the filelist. # Do not install esmtp.authpam, taken care of elsewhere. # Do not install htmldoc, taken care of elsewhere %{__sed} '/imap[\.a-z0-9]*$/d;/imapd-ssl/d;/pop3[\.a-z0-9]*$/d;/pop3d-ssl/d;/couriermlm/d;/webmail/d;/webmlm/d;/authsystem\.passwd/d;/ldapsearch$/d;/ldapaddressbook.dist$/d;/pcpd/d;/calendar/d;/maildrop[^/]*$/d;/mailbot/d;/reformail[^/]*$/d;/15ldap/d;/47webmail/d;/courierldapalias/d;/15mysql/d;/15pgsql/d;/faxmail/d;/35fax/d;/34fax/d;/esmtp\.authpam/d;/htmldoc/d' filelist %{__sed} -n '/47webmail/p;/sqwebmail/p;/sqwebpasswd/p;/authsystem\.passwd/p;/webmail-logincache/p;/ldapaddressbook.dist$/p;/pcpd/p;/calendar/p' filelist.webmail echo "%attr(755, root, bin) %{_sbindir}/webmaild" >>filelist.webmail # Note that we delete all 'webmail's, but extract only 'sqwebmail's. # This removes all webmail-related stuff from the main filelist, # and adds everything except the executable, webmail, to filelist.webmail. # Here's why, we move the webmail binary directly into the cgibindir. %{__mkdir_p} $__installdir%{_cgibindir} %{__cp} $__installdir%{_libexecdir}/courier/webmail/webmail \ $__installdir%{_cgibindir}/webmail %{__cp} $__installdir%{_libexecdir}/courier/webmail/webadmin \ $__installdir%{_cgibindir}/webadmin %{__cp} $__installdir%{_libexecdir}/courier/webmail/webmlm \ $__installdir%{_cgibindir}/webmlm rm -rf $__installdir%{_libexecdir}/courier/webmail # Remove the webadmin wrapper from filelist (but keep all html and pl files # there. %{__sed} '/courier\/webmail\/webadmin /d' filelist.tmp %{__mv} filelist.tmp filelist # For the same reason we delete all images from filelist.webmail: %{__mkdir_p} $__installdir%{_documentrootdir} %{__mv} $__installdir%{_datadir}/sqwebmail/images $__installdir%{_documentrootdir}/webmail # Do we need to install a cron job to clean out webmail's cache? if test -f webmail/cron.cmd then %{__mkdir_p} $__installdir/etc/cron.hourly %{__cat} >$__installdir/etc/cron.hourly/courier-webmail-cleancache <>filelist.webmail fi # # Move .html documentation back to build dir, so that LPM will move it to # the appropriate docdir # %{__rm} -rf htmldoc %{__mkdir} htmldoc %{__chmod} 755 htmldoc %{__cp} $__installdir%{_datadir}/htmldoc/* htmldoc %{__chmod} a-wx htmldoc/* rm -rf $__installdir%{_datadir}/htmldoc # # Update /etc/skel %{__mkdir_p} $__installdir/etc/skel maildir/maildirmake $__installdir/etc/skel/Maildir ############################################################################ # # Some configuration file tweaking. # # Manually set POP3DSTART and IMAPDSTART to yes, they'll go into a separate # package, so after it's installed they should be runnable. %{__sed} 's/^POP3DSTART.*/POP3DSTART=YES/' <$__installdir%{_sysconfdir}/pop3d.dist >$__installdir%{_sysconfdir}/pop3d.new %{__mv} $__installdir%{_sysconfdir}/pop3d.new $__installdir%{_sysconfdir}/pop3d.dist %{__sed} 's/^POP3DSSLSTART.*/POP3DSSLSTART=YES/' <$__installdir%{_sysconfdir}/pop3d-ssl.dist >$__installdir%{_sysconfdir}/pop3d-ssl.new %{__mv} $__installdir%{_sysconfdir}/pop3d-ssl.new $__installdir%{_sysconfdir}/pop3d-ssl.dist %{__sed} 's/^IMAPDSTART.*/IMAPDSTART=YES/' <$__installdir%{_sysconfdir}/imapd.dist >$__installdir%{_sysconfdir}/imapd.new %{__mv} $__installdir%{_sysconfdir}/imapd.new $__installdir%{_sysconfdir}/imapd.dist %{__sed} 's/^IMAPDSSLSTART.*/IMAPDSSLSTART=YES/' <$__installdir%{_sysconfdir}/imapd-ssl.dist >$__installdir%{_sysconfdir}/imapd.new-ssl %{__mv} $__installdir%{_sysconfdir}/imapd.new-ssl $__installdir%{_sysconfdir}/imapd-ssl.dist # Convenient init file. %{__mkdir_p} $__installdir%{initdir} %{__cp} courier.sysvinit $__installdir%{initdir}/courier # # Make up some /etc/profile.d scripts # %{__mkdir_p} $__installdir/etc/profile.d %{__cat} >$__installdir/etc/profile.d/courier.sh <$__installdir/etc/profile.d/courier.csh <filelist.sendmail-wrapper <) { chop; next unless /\%config.* (.*\.dist)$/; print "$1\n"; } ' < $f >$__installdir/%{_datadir}/$ff done %{__cp} sysconftool $__installdir%{_datadir}/sysconftool # ----------------------------------------------------------------------------- %post if test -f %{_sysconfdir}/userdb || test -d %{_sysconfdir}/userdb then : else %{__mkdir_p} %{_sysconfdir}/userdb chmod 700 %{_sysconfdir}/userdb chown --reference=%{_sysconfdir} %{_sysconfdir}/userdb fi /sbin/chkconfig --del courier /sbin/chkconfig --add courier %{_datadir}/sysconftool `%{__cat} %{_datadir}/configlist` >/dev/null %if %alternatives /usr/sbin/alternatives --install /usr/sbin/sendmail mta %{_bindir}/sendmail 91 \ --slave /usr/bin/mailq mta-mailq %{_bindir}/mailq \ --slave /usr/bin/rmail mta-rmail %{_bindir}/rmail \ --slave /usr/bin/newaliases mta-newaliases %{_sbindir}/makealiases \ --initscript courier if test "$1" != 0 then /sbin/service courier condrestart >/dev/null 2>&1 fi %endif %triggerpostun -- courier-sendmail-wrapper %if %alternatives /usr/sbin/alternatives --install /usr/sbin/sendmail mta %{_bindir}/sendmail 91 \ --slave /usr/bin/mailq mta-mailq %{_bindir}/mailq \ --slave /usr/bin/rmail mta-rmail %{_bindir}/rmail \ --slave /usr/bin/newaliases mta-newaliases %{_sbindir}/makealiases \ --initscript courier %endif %postun %if %alternatives if test "$1" = 0 ; then /usr/sbin/alternatives --remove mta %{_bindir}/sendmail fi %endif %preun if test "$1" = "0" then %{_sbindir}/esmtpd stop %{_sbindir}/esmtpd-msa stop %{initdir}/courier stop >/dev/null /sbin/chkconfig --del courier fi %preun ldap if test "$1" = "0" then if test -x %{_sbindir}/courierldapaliasd then %{_sbindir}/courierldapaliasd stop >/dev/null 2>&1 || /bin/true fi fi %post imapd %{_datadir}/sysconftool `%{__cat} %{_datadir}/configlist.imap` >/dev/null %preun imapd if test "$1" = "0" then %{_sbindir}/imapd stop %{_sbindir}/imapd-ssl stop fi %post pop3d %{_datadir}/sysconftool `%{__cat} %{_datadir}/configlist.pop3` >/dev/null %preun pop3d if test "$1" = "0" then %{_sbindir}/pop3d stop %{_sbindir}/pop3d-ssl stop fi %preun webmail if test "$1" = "0" then test ! -x %{_sbindir}/webmaild || %{_sbindir}/webmaild stop fi %post webmail %{_datadir}/sysconftool `%{__cat} %{_datadir}/configlist.webmail` >/dev/null %preun mlm-web if test "$1" = "0" then %{_bindir}/webmlmd stop %{_sysconfdir}/webmlmrc >/dev/null 2>&1 || : fi %post mlm-web %{_datadir}/sysconftool %{_sysconfdir}/webmlmrc >/dev/null if test "$1" -gt 1 then %{_bindir}/webmlmd restart %{_sysconfdir}/webmlmrc >/dev/null 2>&1 || : fi %post webadmin if test ! -f %{_sysconfdir}/webadmin/password then dd if=/dev/urandom 2>/dev/null | tr -d -c '[A-Za-z0-9]' | dd bs=16 count=1 2>/dev/null >%{_sysconfdir}/webadmin/password chmod 400 %{_sysconfdir}/webadmin/password chown --reference=%{_sysconfdir}/webadmin %{_sysconfdir}/webadmin/password fi %triggerpostun -- courier < 0.35 test -x %{_sbindir}/makeuserdb && %{_sbindir}/makeuserdb %triggerpostun -- courier test -f /etc/pam.d/esmtp || test ! -f /etc/pam.d/esmtp.lpmnew* || mv -f /etc/pam.d/esmtp.lpmnew* /etc/pam.d/esmtp %triggerpostun imapd -- courier-imapd test -f /etc/pam.d/imap || test ! -f /etc/pam.d/imap.lpmnew* || mv -f /etc/pam.d/imap.lpmnew* /etc/pam.d/imap %triggerpostun pop3d -- courier-pop3d test -f /etc/pam.d/pop3 || test ! -f /etc/pam.d/pop3.lpmnew* || mv -f /etc/pam.d/pop3.lpmnew* /etc/pam.d/pop3 %triggerpostun webmail -- courier-webmail test -f /etc/pam.d/webmail || test ! -f /etc/pam.d/webmail.lpmnew* || mv -f /etc/pam.d/webmail.lpmnew* /etc/pam.d/webmail test -f /etc/pam.d/calendar || test ! -f /etc/pam.d/calendar.lpmnew* || mv -f /etc/pam.d/calendar.lpmnew* /etc/pam.d/calendar # ----------------------------------------------------------------------------- %files -f filelist %if %alternatives %attr(-, root, root) /usr/bin/sendmail %attr(-, root, root) /usr/lib/sendmail %endif %attr(644, root, root) %config(noreplace) /etc/pam.d/esmtp %attr(555, bin, bin) %doc README.REDHAT AUTHORS COPYING %attr(-, bin, bin) %doc htmldoc/* %attr(555, bin, bin) %{_datadir}/sysconftool %attr(444, bin, bin) %{_datadir}/configlist %attr(-, root, root) /etc/skel/Maildir %if %alternatives %else %files sendmail-wrapper -f filelist.sendmail-wrapper %endif %files maildrop-wrapper %attr(-, bin, bin) /usr/local/bin/* %files pop3d -f filelist.pop3 %attr(644, root, root) %config(noreplace) /etc/pam.d/pop3 %attr(444, bin, bin) %{_datadir}/configlist.pop3 %files imapd -f filelist.imap %attr(644, root, root) %config(noreplace) /etc/pam.d/imap %attr(444, bin, bin) %{_datadir}/configlist.imap %files webmail -f filelist.webmail %attr(555, root, bin) %{_cgibindir}/webmail %attr(644, root, root) %config(noreplace) /etc/pam.d/webmail %attr(644, root, root) %config(noreplace) /etc/pam.d/calendar %attr(755, bin, bin) %dir %{_documentrootdir}/webmail %attr(444, bin, bin) %{_documentrootdir}/webmail/* %attr(444, bin, bin) %{_datadir}/configlist.webmail %files mlm-web -f filelist.webmlm %{_cgibindir}/webmlm %attr(644, root, root) %{_sysconfdir}/webmlmrc.dist %files webadmin %attr(4511, root, bin) %{_cgibindir}/webadmin %files maildrop -f filelist.maildrop %files mlm -f filelist.mlm %files ldap -f filelist.ldap %files mysql -f filelist.mysql %files pgsql -f filelist.pgsql %if %with_fax %files fax -f filelist.fax %attr(-, root, root) /etc/mgetty+sendfax/new_fax %endif