How To Install courier-imap, courier-authlib, And maildrop On Fedora, RedHat, CentOS

Version 1.0
Author: Falko Timme

For some reason there are no Courier packages (courier-imap, courier-authlib, maildrop) available on RedHat-based distributions (RedHat, Fedora, CentOS), and the only third-party repository that had such packages seems to have closed (enlartenment.com). Therefore this tutorial explains how you can create and install your own Courier rpm packages from the sources, and I provide download links for my Courier rpm packages that I compiled on Fedora 8 (i386) so that you can save some time.

I do not issue any guarantee that this will work for you!

 

1 Preliminary Note

I have tried this on a Fedora 8 (i386) system; it should work for RedHat and CentOS as well. If you are on an x86_64 system, replace all references to i386 in this tutorial with x86_64.

 

2 Installing Prerequisites

Before we can compile the Courier packages, we need some prerequisites such as compilers, development libraries, etc. which we can install like this:

yum groupinstall 'Development Tools'
yum groupinstall 'Development Libraries'
yum install rpm-build gcc mysql-devel openssl-devel cyrus-sasl-devel pkgconfig zlib-devel pcre-devel openldap-devel postgresql-devel expect libtool-ltdl-devel openldap-servers libtool gdbm-devel pam-devel gamin-devel

 

3 Creating A Non-Priviledged User Account

RPM packages should not be built as root; courier-imap will even refuse to compile if it detects that the compilation is run as the root user. Therefore we create a normal user account now (falko in this example) and give him a password:

useradd -m -s /bin/bash falko
passwd falko

We will need the sudo command later on so that the user falko can compile and install the rpm packages. But first, we must allow falko to run all commands using sudo:

Run

visudo

In the file that opens there's a line root ALL=(ALL) ALL. Add a similar line for falko just below that line:

[...]
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
falko   ALL=(ALL)       ALL
[...]

 

4 Building courier-authlib, courier-imap, And maildrop

Now we are ready to build our rpm package. First become the user falko:

su falko

Next we create our build environment:

mkdir $HOME/rpm
mkdir $HOME/rpm/SOURCES
mkdir $HOME/rpm/SPECS
mkdir $HOME/rpm/BUILD
mkdir $HOME/rpm/SRPMS
mkdir $HOME/rpm/RPMS
mkdir $HOME/rpm/RPMS/i386

echo "%_topdir $HOME/rpm" >> $HOME/.rpmmacros

Now we create a downloads directory and download the source files from http://www.courier-mta.org/download.php:

mkdir $HOME/downloads
cd $HOME/downloads

wget http://prdownloads.sourceforge.net/courier/courier-authlib-0.60.2.tar.bz2
wget http://prdownloads.sourceforge.net/courier/courier-imap-4.2.1.tar.bz2
wget http://prdownloads.sourceforge.net/courier/maildrop-2.0.4.tar.bz2

 

4.1 courier-authlib

Now (still in $HOME/downloads) we can build courier-authlib:

sudo rpmbuild -ta courier-authlib-0.60.2.tar.bz2

After the build process, the rpm packages can be found in $HOME/rpm/RPMS/i386 ($HOME/rpm/RPMS/x86_64 if you are on an x86_64 system):

cd $HOME/rpm/RPMS/i386

The command

ls -l

shows you the available rpm packages:

[[email protected] i386]$ ls -l
total 600
-rw-r--r-- 1 root root 137335 2007-11-13 18:02 courier-authlib-0.60.2-1.fc8.i386.rpm
-rw-r--r-- 1 root root 323827 2007-11-13 18:02 courier-authlib-debuginfo-0.60.2-1.fc8.i386.rpm
-rw-r--r-- 1 root root  34201 2007-11-13 18:02 courier-authlib-devel-0.60.2-1.fc8.i386.rpm
-rw-r--r-- 1 root root  18039 2007-11-13 18:02 courier-authlib-ldap-0.60.2-1.fc8.i386.rpm
-rw-r--r-- 1 root root  14258 2007-11-13 18:02 courier-authlib-mysql-0.60.2-1.fc8.i386.rpm
-rw-r--r-- 1 root root  13602 2007-11-13 18:02 courier-authlib-pgsql-0.60.2-1.fc8.i386.rpm
-rw-r--r-- 1 root root   8336 2007-11-13 18:02 courier-authlib-pipe-0.60.2-1.fc8.i386.rpm
-rw-r--r-- 1 root root  36859 2007-11-13 18:02 courier-authlib-userdb-0.60.2-1.fc8.i386.rpm
[[email protected] i386]$

Select the ones you want to install, and install them like this:

sudo rpm -ivh courier-authlib-0.60.2-1.fc8.i386.rpm
sudo rpm -ivh courier-authlib-devel-0.60.2-1.fc8.i386.rpm
sudo rpm -ivh courier-authlib-mysql-0.60.2-1.fc8.i386.rpm

 

4.2 courier-imap

Now we go back to our downloads directory:

cd $HOME/downloads

and run rpmbuild again, this time without sudo, otherwise the compilation will fail because it was run as root:

rpmbuild -ta courier-imap-4.2.1.tar.bz2

After the build process, the rpm packages can be found in $HOME/rpm/RPMS/i386 ($HOME/rpm/RPMS/x86_64 if you are on an x86_64 system):

cd $HOME/rpm/RPMS/i386

The command

ls -l

shows you the available rpm packages:

[[email protected] i386]$ ls -l
total 1284
-rw-r--r-- 1 root root 137335 2007-11-13 18:02 courier-authlib-0.60.2-1.fc8.i386.rpm
-rw-r--r-- 1 root root 323827 2007-11-13 18:02 courier-authlib-debuginfo-0.60.2-1.fc8.i386.rpm
-rw-r--r-- 1 root root  34201 2007-11-13 18:02 courier-authlib-devel-0.60.2-1.fc8.i386.rpm
-rw-r--r-- 1 root root  18039 2007-11-13 18:02 courier-authlib-ldap-0.60.2-1.fc8.i386.rpm
-rw-r--r-- 1 root root  14258 2007-11-13 18:02 courier-authlib-mysql-0.60.2-1.fc8.i386.rpm
-rw-r--r-- 1 root root  13602 2007-11-13 18:02 courier-authlib-pgsql-0.60.2-1.fc8.i386.rpm
-rw-r--r-- 1 root root   8336 2007-11-13 18:02 courier-authlib-pipe-0.60.2-1.fc8.i386.rpm
-rw-r--r-- 1 root root  36859 2007-11-13 18:02 courier-authlib-userdb-0.60.2-1.fc8.i386.rpm
-rw-rw-r-- 1 falko falko 383455 2007-11-13 18:21 courier-imap-4.2.1-1.8.i386.rpm
-rw-rw-r-- 1 falko falko 917771 2007-11-13 18:21 courier-imap-debuginfo-4.2.1-1.8.i386.rpm
[[email protected] i386]$

You can install courier-imap like this:

sudo rpm -ivh courier-imap-4.2.1-1.8.i386.rpm

 

4.3 maildrop

Now we go back to our downloads directory:

cd $HOME/downloads

and run rpmbuild again:

sudo rpmbuild -ta maildrop-2.0.4.tar.bz2

After the build process, the rpm packages can be found in $HOME/rpm/RPMS/i386 ($HOME/rpm/RPMS/x86_64 if you are on an x86_64 system):

cd $HOME/rpm/RPMS/i386

The command

ls -l

shows you the available rpm packages:

[[email protected] i386]$ ls -l
total 3128
-rw-r--r-- 1 root  root  137343 2007-11-13 18:02 courier-authlib-0.60.2-1.fc8.i386.rpm
-rw-r--r-- 1 root  root  324618 2007-11-13 18:02 courier-authlib-debuginfo-0.60.2-1.fc8.i386.rpm
-rw-r--r-- 1 root  root   34208 2007-11-13 18:02 courier-authlib-devel-0.60.2-1.fc8.i386.rpm
-rw-r--r-- 1 root  root   18042 2007-11-13 18:02 courier-authlib-ldap-0.60.2-1.fc8.i386.rpm
-rw-r--r-- 1 root  root   14254 2007-11-13 18:02 courier-authlib-mysql-0.60.2-1.fc8.i386.rpm
-rw-r--r-- 1 root  root   13599 2007-11-13 18:02 courier-authlib-pgsql-0.60.2-1.fc8.i386.rpm
-rw-r--r-- 1 root  root    8339 2007-11-13 18:02 courier-authlib-pipe-0.60.2-1.fc8.i386.rpm
-rw-r--r-- 1 root  root   36855 2007-11-13 18:02 courier-authlib-userdb-0.60.2-1.fc8.i386.rpm
-rw-rw-r-- 1 falko falko 383455 2007-11-13 18:21 courier-imap-4.2.1-1.8.i386.rpm
-rw-rw-r-- 1 falko falko 917771 2007-11-13 18:21 courier-imap-debuginfo-4.2.1-1.8.i386.rpm
-rw-r--r-- 1 root  root  299030 2007-11-13 18:35 maildrop-2.0.4-1.8.i386.rpm
-rw-r--r-- 1 root  root  752872 2007-11-13 18:35 maildrop-debuginfo-2.0.4-1.8.i386.rpm
-rw-r--r-- 1 root  root  136235 2007-11-13 18:35 maildrop-devel-2.0.4-1.8.i386.rpm
-rw-r--r-- 1 root  root   58439 2007-11-13 18:35 maildrop-man-2.0.4-1.8.i386.rpm
[[email protected] i386]$

You can now install maildrop like this:

sudo rpm -ivh maildrop-2.0.4-1.8.i386.rpm

After you have compiled and installed all needed packages, you can become root again by typing

exit

 

5 My Fedora 8 Packages

Here are the links to my Fedora 8 (i386) packages:

Share this page:

Suggested articles

14 Comment(s)

Add comment

Comments

By:
By:

If, when building the courier-imap rpm, the build fails a dependency for /usr/include/fam.h, it can be installed by downloading and installing the gamin-devel-0.1.9-4.fc8.i368.rpm.

wget http://download.fedora.redhat.com/pub/fedora/linux/releases/8/Everything/i386/os/Packages/gamin-devel-0.1.9-4.fc8.i386.rpm

By:

Hi,

thanks for the gr8 tutorial, but rpmbuild on 64bit systems fails as you forgot to mention the creation of the

mkdir -p $HOME/rpm/RPMS/x86_64

 directory, so when sudo rpmbuild -ta courier-authlib first runs it creates the dir with root permissions so further courier-imap rpm creation fails...

 RB

 

By:
By: Anonymous

I am facing a er.ror when install courier-imap

 

 checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking for env... /bin/env
configure: WARNING: === Do not compile Courier-IMAP as root.  Compile
configure: WARNING: === Courier-IMAP as a non-root user then su to
configure: WARNING: === root before running make install.  You must now
configure: WARNING: === remove this entire directory and then extract the
configure: WARNING: === source code from the tarball as a non-root user
configure: WARNING: === and rerun the configure script.  If you have read
configure: WARNING: === the INSTALL file you should have known this.  So
configure: WARNING: === you better read INSTALL again.
configure: error: aborted.
error: Bad exit status from /var/tmp/rpm-tmp.31034 (%prep)


RPM build errors:
    Bad exit status from /var/tmp/rpm-tmp.31034 (%prep)

 

PLZ some one help me!

By: Anonymous

You are trying install as root. Simply just do

# su -  whatever usename you are using

Then run the command.

 

By: Roshan Seneviratne.

do not use "sudo" for courier-imap rpm build process. Just only give the command with out sudo. Read the document and it is there.

By: Anonymous

I got the error.

 

[[email protected] x86_64]$ rpm -ivh courier-imap-debuginfo-4.2.1-1.5Server.x86_64.rpm
error: can't create transaction lock on /var/lib/rpm/__db.000

 

Plz send me suggestion.

By: vitor

Very helpfull ! Thanks a lot !

 Just one detail:

Nowadays, the links to downloads are :

http://sourceforge.net/projects/courier/files/authlib/0.63.0/courier-authlib-0.63.0.tar.bz2.sig/download

http://sourceforge.net/projects/courier/files/imap/4.9.3/courier-imap-4.9.3.tar.bz2/download

http://sourceforge.net/projects/courier/files/maildrop/2.5.4/maildrop-2.5.4.tar.bz2/download

Vitor

By: dahey

Thanks a lot.

By: Tschaeff

After running "sudo rpm -ivh courier-imap-4.2.1-1.8.i386.rpm"  I get

RPM build errors:

 

    File not found: /home/falko/rpm/BUILDROOT/courier-imap-4.16.2-2.x86_64/usr/lib/courier-imap/share/courier-imap.sysvinit

Before that I got "config.status: WARNING:  'courier-authlib.service.in' seems to ignore the --datarootdir setting"  I tried copying the file from its existing location to the location that it thinks it should be and setting permissions, but it didn't help.

Someone please help!

By: Ranjit Singh

Hi, I am having same issue while building RPM using rpmbuild -ta courier-imap-4.2.1.tar.bz2

have you found any solution to this ?

By: Alec

That file, courier-imap.sysvinit already exists but in another directory, so start the build (rpmbuild -ta courier-imap-4.16.2.tar.bz2) and then after a while just copy the file to where it should be. 

 

 cp /home/USER/rpm/BUILD/courier-imap-4.16.2/packaging/systemd/courier-imap.sysvinit /home/USER/rpm/BUILDROOT/courier-imap-4.16.2-2.x86_64/usr/lib/courier-imap/share/courier-imap.sysvinit

By: Andrew

To fix the File not found error for courier-imap.sysvinit, patch the specfile

@@ -355,7 +355,9 @@ %{_mandir} %dir %{_datadir} %{_datadir}/configlist+%if %using_systemd %{_datadir}/courier-imap.sysvinit+%endif %{_datadir}/mk* %{_datadir}/sysconftool