The Perfect Server - CentOS 5.4 x86_64 [ISPConfig 3] - Page 4

10 Install Courier-IMAP, Courier-Authlib, And Maildrop

Unfortunately there are no rpm packages for Courier-IMAP, Courier-Authlib, and Maildrop, therefore we have to build them ourselves.

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 (compileuser in this example) and give him a password:

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

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



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

root    ALL=(ALL)       ALL
compileuser   ALL=(ALL)       ALL

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

su compileuser

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
mkdir $HOME/rpm/RPMS/x86_64

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

Now we download the source files from

cd /tmp

Now (still in /tmp) we can build courier-authlib:

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

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

cd $HOME/rpm/RPMS/x86_64

The command

ls -l

shows you the available rpm packages:

[compileuser@server1 x86_64]$ ls -l
total 676
-rw-r--r-- 1 root root 153870 Oct 28 15:39 courier-authlib-0.62.4-1.x86_64.rpm
-rw-r--r-- 1 root root 385183 Oct 28 15:39 courier-authlib-debuginfo-0.62.4-1.x86_64.rpm
-rw-r--r-- 1 root root  36260 Oct 28 15:39 courier-authlib-devel-0.62.4-1.x86_64.rpm
-rw-r--r-- 1 root root  18434 Oct 28 15:39 courier-authlib-ldap-0.62.4-1.x86_64.rpm
-rw-r--r-- 1 root root  14617 Oct 28 15:39 courier-authlib-mysql-0.62.4-1.x86_64.rpm
-rw-r--r-- 1 root root  13826 Oct 28 15:39 courier-authlib-pgsql-0.62.4-1.x86_64.rpm
-rw-r--r-- 1 root root   8484 Oct 28 15:39 courier-authlib-pipe-0.62.4-1.x86_64.rpm
-rw-r--r-- 1 root root  35388 Oct 28 15:39 courier-authlib-userdb-0.62.4-1.x86_64.rpm
[compileuser@server1 x86_64]$

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

sudo rpm -ivh courier-authlib-0.62.4-1.x86_64.rpm courier-authlib-mysql-0.62.4-1.x86_64.rpm courier-authlib-devel-0.62.4-1.x86_64.rpm

Now we go back to the /tmp directory and run rpmbuild again, this time without sudo, otherwise the compilation will fail because it was run as root:

cd /tmp
rpmbuild -ta courier-imap-4.6.0.tar.bz2

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

cd $HOME/rpm/RPMS/x86_64

The command

ls -l

shows you the available rpm packages:

[compileuser@server1 x86_64]$ ls -l
total 1996
-rw-r--r-- 1 root        root        153870 Oct 28 15:39 courier-authlib-0.62.4-1.x86_64.rpm
-rw-r--r-- 1 root        root        385183 Oct 28 15:39 courier-authlib-debuginfo-0.62.4-1.x86_64.rpm
-rw-r--r-- 1 root        root         36260 Oct 28 15:39 courier-authlib-devel-0.62.4-1.x86_64.rpm
-rw-r--r-- 1 root        root         18434 Oct 28 15:39 courier-authlib-ldap-0.62.4-1.x86_64.rpm
-rw-r--r-- 1 root        root         14617 Oct 28 15:39 courier-authlib-mysql-0.62.4-1.x86_64.rpm
-rw-r--r-- 1 root        root         13826 Oct 28 15:39 courier-authlib-pgsql-0.62.4-1.x86_64.rpm
-rw-r--r-- 1 root        root          8484 Oct 28 15:39 courier-authlib-pipe-0.62.4-1.x86_64.rpm
-rw-r--r-- 1 root        root         35388 Oct 28 15:39 courier-authlib-userdb-0.62.4-1.x86_64.rpm
-rw-r--r-- 1 compileuser compileuser 400497 Oct 28 15:49 courier-imap-4.6.0-1.x86_64.rpm
-rw-r--r-- 1 compileuser compileuser 941203 Oct 28 15:49 courier-imap-debuginfo-4.6.0-1.x86_64.rpm
[compileuser@server1 x86_64]$

You can install courier-imap like this:

sudo rpm -ivh courier-imap-4.6.0-1.x86_64.rpm

Now we go back to the /tmp directory and run rpmbuild again, this time to build a maildrop package:

cd /tmp
sudo rpmbuild -ta maildrop-2.2.0.tar.bz2

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

cd $HOME/rpm/RPMS/x86_64

The command

ls -l

shows you the available rpm packages:

[compileuser@server1 x86_64]$ ls -l
total 3256
-rw-r--r-- 1 root        root        153870 Oct 28 15:39 courier-authlib-0.62.4-1.x86_64.rpm
-rw-r--r-- 1 root        root        385183 Oct 28 15:39 courier-authlib-debuginfo-0.62.4-1.x86_64.rpm
-rw-r--r-- 1 root        root         36260 Oct 28 15:39 courier-authlib-devel-0.62.4-1.x86_64.rpm
-rw-r--r-- 1 root        root         18434 Oct 28 15:39 courier-authlib-ldap-0.62.4-1.x86_64.rpm
-rw-r--r-- 1 root        root         14617 Oct 28 15:39 courier-authlib-mysql-0.62.4-1.x86_64.rpm
-rw-r--r-- 1 root        root         13826 Oct 28 15:39 courier-authlib-pgsql-0.62.4-1.x86_64.rpm
-rw-r--r-- 1 root        root          8484 Oct 28 15:39 courier-authlib-pipe-0.62.4-1.x86_64.rpm
-rw-r--r-- 1 root        root         35388 Oct 28 15:39 courier-authlib-userdb-0.62.4-1.x86_64.rpm
-rw-r--r-- 1 compileuser compileuser 400497 Oct 28 15:49 courier-imap-4.6.0-1.x86_64.rpm
-rw-r--r-- 1 compileuser compileuser 941203 Oct 28 15:49 courier-imap-debuginfo-4.6.0-1.x86_64.rpm
-rw-r--r-- 1 root        root        299284 Oct 28 15:55 maildrop-2.2.0-1.x86_64.rpm
-rw-r--r-- 1 root        root        769256 Oct 28 15:55 maildrop-debuginfo-2.2.0-1.x86_64.rpm
-rw-r--r-- 1 root        root        134573 Oct 28 15:55 maildrop-devel-2.2.0-1.x86_64.rpm
-rw-r--r-- 1 root        root         63936 Oct 28 15:55 maildrop-man-2.2.0-1.x86_64.rpm
[compileuser@server1 x86_64]$

You can now install maildrop like this:

sudo rpm -ivh maildrop-2.2.0-1.x86_64.rpm

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



11 Apply Quota Patch To Postfix

We have to get the Postfix source rpm, patch it with the quota patch, build a new Postfix rpm package and install it.

cd /usr/src
rpm -ivh postfix-2.3.3-2.1.el5_2.src.rpm

The last command will show some warnings that you can ignore:

warning: user mockbuild does not exist - using root
warning: group mockbuild does not exist - using root

cd /usr/src/redhat/SOURCES
gunzip postfix-2.3.3-vda.patch.gz
cd /usr/src/redhat/SPECS/

Now we must edit the file postfix.spec:

vi postfix.spec

Change %define MYSQL 0 to %define MYSQL 1, add Patch0: postfix-2.3.3-vda.patch to the # Patches stanza, and finally add %patch0 -p1 -b .vda to the %setup -q stanza:

%define MYSQL 1
# Patches

Patch0: postfix-2.3.3-vda.patch
Patch1: postfix-2.1.1-config.patch
Patch3: postfix-alternatives.patch
Patch6: postfix-2.1.1-obsolete.patch
Patch7: postfix-2.1.5-aliases.patch
Patch8: postfix-large-fs.patch
Patch9: postfix-2.2.5-cyrus.patch
Patch10: postfix-CVE-2008-2936.patch
%setup -q
# Apply obligatory patches
%patch0 -p1 -b .vda
%patch1 -p1 -b .config
%patch3 -p1 -b .alternatives
%patch6 -p1 -b .obsolete
%patch7 -p1 -b .aliases
%patch8 -p1 -b .large-fs
%patch9 -p1 -b .cyrus
%patch10 -p1 -b .CVE-2008-2936

Then we build our new Postfix rpm package with quota and MySQL support:

rpmbuild -ba postfix.spec

Our Postfix rpm package is created in /usr/src/redhat/RPMS/x86_64 (/usr/src/redhat/RPMS/i386 if you are on an i386 system), so we go there:

cd /usr/src/redhat/RPMS/x86_64

The command

ls -l

shows you the available packages:

[root@server1 x86_64]# ls -l
total 11732
-rw-r--r-- 1 root root 3940050 Oct 28 16:02 postfix-2.3.3-2.1.x86_64.rpm
-rw-r--r-- 1 root root 7999345 Oct 28 16:02 postfix-debuginfo-2.3.3-2.1.x86_64.rpm
-rw-r--r-- 1 root root   49759 Oct 28 16:02 postfix-pflogsumm-2.3.3-2.1.x86_64.rpm
[root@server1 x86_64]#

Pick the Postfix package and install it like this:

rpm -ivh postfix-2.3.3-2.1.x86_64.rpm

Then turn off Sendmail and start Postfix, saslauthd, and courier-authlib:

chkconfig --levels 235 courier-authlib on
/etc/init.d/courier-authlib start

chkconfig --levels 235 sendmail off
chkconfig --levels 235 postfix on
chkconfig --levels 235 saslauthd on
/etc/init.d/sendmail stop
/etc/init.d/postfix start
/etc/init.d/saslauthd start


12 Configure Courier

Now we create the system startup links for courier-imap:

chkconfig --levels 235 courier-imap on
/etc/init.d/courier-authlib restart
/etc/init.d/courier-imap restart

When courier-imap is started for the first time, it automatically creates the certificate files /usr/lib/courier-imap/share/imapd.pem and /usr/lib/courier-imap/share/pop3d.pem from the /usr/lib/courier-imap/etc/imapd.cnf and /usr/lib/courier-imap/etc/pop3d.cnf files. Because the .cnf files contain the line CN=localhost, but our server is named, the certificates might cause problems when you use TLS connections. To solve this, we delete both certificates...

cd /usr/lib/courier-imap/share/
rm -f imapd.pem
rm -f pop3d.pem

... and replace the CN=localhost lines in /usr/lib/courier-imap/etc/imapd.cnf and /usr/lib/courier-imap/etc/pop3d.cnf with

vi /usr/lib/courier-imap/etc/imapd.cnf


vi /usr/lib/courier-imap/etc/pop3d.cnf


Then we recreate both certificates...


... and restart courier-authlib and courier-imap:

/etc/init.d/courier-authlib restart
/etc/init.d/courier-imap restart


13 Install Getmail

Getmail can be installed as follows:

yum install getmail

Share this page:

20 Comment(s)

Add comment


From: Anonymous at: 2009-12-17 17:10:17

If you are following this tutorial to the tee like you should, be advised a newer kernel update is available and will be upgraded and will affect the compiling of courier etc, you will not see a problem until after a subsequent reboot. I would either recommend disabling kernel updates before doing the yum update in step 7 Install Some Software or rebooting after the yum update in step 7 Install Some Software and then disabling kernel updates. Took me quite a while to figure out this problem as I am a newbie to Linux. I hope this helps out other people.

From: AJ at: 2010-02-09 14:21:37

After the group install of Development Tools, you should probably add the following perl install to be sure. I followed these instructions, but skipped adding SMTP/POP. Take a look at your httpd error log and you'll see problems. My httpd (apache) server would lock up intermittently.  Adding the statement below and rebooting fixed it:

 yum install perl-TimeDate

From: Marcelo Gondim at: 2010-03-31 22:33:48

Amavisd setup, we need to change this so the spamassassin to work properly by ispconfig 3: Change this: ### Uncomment this if you want to use amavis with sendmail milter interface. ### See README.milter for details. # #MILTER_SOCKET="local:/var/amavis/amavis-milter.sock" #MILTER_SOCKET="10024@" ### These are other defaults. #AMAVIS_ACCOUNT="amavis" #CONFIG_FILE="/etc/amavisd.conf" #MILTER_FLAGS="" For: ### Uncomment this if you want to use amavis with sendmail milter interface. ### See README.milter for details. # #MILTER_SOCKET="local:/var/amavis/amavis-milter.sock" #MILTER_SOCKET="10024@" ### These are other defaults. #AMAVIS_ACCOUNT="amavis" #CONFIG_FILE="/etc/amavisd.conf" CONFIG_FILE="/etc/amavisd/amavisd.conf" #MILTER_FLAGS="" The CONFIG_FILE is very important to work. Thanks for your howto, it helped me a lot with ISPConfig 3

From: iszabi at: 2010-03-15 14:40:11

Hi Falko Timme!

 Note to the 13th point:

under CentOs 5.4 screened :

"No package getmail available." when I wanted to install getmail:

 yum install getmail

From: Anonymous at: 2009-12-17 16:56:29 check your input or your internet connection, works for me.

From: at: 2010-04-22 15:11:28

when I issue commands ./configure --prefix=/usr --sysconfdir=/etc --with-apr=/usr/bin/apr-1-config --with-apxs=/usr/sbin/apxs --with-apache-user=apache --with-setid-mode=owner --with-php=/usr/bin/php-cgi --with-logfile=/var/log/httpd/suphp_log --enable-SUPHP_USE_USERGROUP=yes make make install make[4]: Leaving directory `/tmp/suphp-0.7.1/src' make[3]: Nothing to be done for `install-data-am'. i don't see file suphp.conf file in /etc/httpd/conf.d/suphp.conf I have i386 system. I'm stuck at this step Please advise

From: SCM at: 2009-12-15 10:26:29 is a dead link, can not find any other links. what a waste of 2 days worth of installing for ISPConfig :/

From: Anonymous at: 2010-02-02 23:29:20

This tutorial is seriously jacked up. I've spent over 8 hours, and half of this does not work. Find another route to take for ISPConfig!

From: JcOaCrO at: 2010-03-24 13:30:07

Great tutorial and all worked from first!!! For everyone having troubles just read carefully and check your typo :) Big THANKS to the auhor

From: Anonymous at: 2010-02-24 17:31:36

I've come across this tutorial a number of times because it looks like a great potential solution and finally took some time to walk through it on a test server.

Although the functionality looks great I'm rather concerned with the general lack of security and long term stability concern these instructions seem to have. True lots of people like to turn off SELINUX and GPG checks and you'll probably be fine, but more importantly the major reliance on disparate third party (and largely unaccountable) repositories and patches could make long term security and stability a serious issue.  To start, the instructions are already giving paths to out of date software packages, but what happens when a serious security update is released?  I could easily see running yum updates from official and third party repos, plus manual rpmbuilds could get things out of sync alone, but what happens when a patch or repo provider stops supplying updates?  Do you realize this before or after you've tried to apply updates?  And what services have you lost in the meantime without a clear path for resolution?

True a more experienced admin can pick and choose or modify aspects of the instructions to better suit their security and stability needs, but a lot of less experienced admins could be opening themselves up to the ticking time bomb of non-updatable system likely running production data for potentially paying customers.

As always with other people's "prefect build" instructions, be very cautious of what you are running and educate yourself on the finer details of how it all works.  Remember it's going to fall on you to fix things when they break, so make sure you have a good path to CYA. ;)

From: at: 2010-03-04 18:58:03

This line:

                mysqladmin -h -u root password yourrootsqlpassword

should probably look like this:

                mysqladmin -h -u root -p password yourrootsqlpassword

From: at: 2010-05-05 14:31:19


The link for download this "broken"

Can where get the file mydns-mysql-1.1.0-1.i386.rpm
There is some other option?

From: ksc133 at: 2010-05-13 09:25:14

hi folks,

 is it possible to

Install Amavisd-new, SpamAssassin And ClamAV

on ISPconfig2 centos 5.4 x64?

 thanks a lot

From: wepabong at: 2009-11-21 06:32:38

amavis fails and show errors when i try to start, cheking the error, i founded i need install two additional packages:

so easy like this:

yum install perl-Mail-SPF.noarch  perl-Mail-SPF-Query.noarch

 great job :)

From: ZadY at: 2010-02-20 15:24:06

Great job!

From: volker at: 2010-04-06 17:01:09



thanks for this tut: Great work! what is the squirrelmails username and passwd? admin /admin too, like in the ispconfig app?

cheers volker

From: Bill48105 at: 2010-04-29 03:03:23

If mail sticks in deferred queue & amavisd won't stay running then be sure to run sa-update!

maillog shows something like:
status=deferred (delivery temporarily suspended: connect to[]: Connection refused)

I found this out by running:
/usr/sbin/amavisd foreground
Which told me:
Suicide () TROUBLE in pre_loop_hook: config: no rules were found!  Do you need to run 'sa-update'?

After running sa-update then restarting mail started getting delivered.

Took me forever to figure that out since the maillog made no mention of amavid or sa-update (spamassassin) so hope it helps someone avoid the frustration of a step this how-to missed.

From: Riverman at: 2012-05-13 20:54:11

Thanks for your info! This helped me...

But old messages has not been routed to mail yet...


From: latvian at: 2010-10-08 09:11:05

In page 37/69 there is the step of building the rpm for courier-imap. I am gettin gthe following problem while trying to run the rpmbuild:

 RPM build errors:

Bad exist status from /var/tmp/rpm.tmp.14636 (%prep)

 What is the soultion for this problem?

Thanks in advance

From: at: 2011-03-07 01:36:01

very great tutorial!

 Easy to follow and rather simple to update and configure for i386.

Forum replies have been fast and accurate!

 Thank you for your time and support