The Perfect Server - Fedora 10 [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:

Run

visudo

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/BUILDROOT
mkdir $HOME/rpm/SRPMS
mkdir $HOME/rpm/RPMS
mkdir $HOME/rpm/RPMS/i386

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

Now we 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.62.1.tar.bz2
wget http://prdownloads.sourceforge.net/courier/courier-imap-4.4.1.tar.bz2
wget http://prdownloads.sourceforge.net/courier/maildrop-2.0.4.tar.bz2

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

sudo rpmbuild -ta courier-authlib-0.62.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 588
-rw-r--r-- 1 root root 139439 2009-03-03 00:43 courier-authlib-0.62.1-1.fc10.i386.rpm
-rw-r--r-- 1 root root 311720 2009-03-03 00:43 courier-authlib-debuginfo-0.62.1-1.fc10.i386.rpm
-rw-r--r-- 1 root root  34714 2009-03-03 00:43 courier-authlib-devel-0.62.1-1.fc10.i386.rpm
-rw-r--r-- 1 root root  17779 2009-03-03 00:43 courier-authlib-ldap-0.62.1-1.fc10.i386.rpm
-rw-r--r-- 1 root root  14088 2009-03-03 00:43 courier-authlib-mysql-0.62.1-1.fc10.i386.rpm
-rw-r--r-- 1 root root  13344 2009-03-03 00:43 courier-authlib-pgsql-0.62.1-1.fc10.i386.rpm
-rw-r--r-- 1 root root   8144 2009-03-03 00:43 courier-authlib-pipe-0.62.1-1.fc10.i386.rpm
-rw-r--r-- 1 root root  34973 2009-03-03 00:43 courier-authlib-userdb-0.62.1-1.fc10.i386.rpm
[[email protected] i386]$

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

sudo rpm -ivh courier-authlib-0.62.1-1.fc10.i386.rpm courier-authlib-mysql-0.62.1-1.fc10.i386.rpm courier-authlib-devel-0.62.1-1.fc10.i386.rpm 

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

cd $HOME/downloads
rpmbuild -ta courier-imap-4.4.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 1864
-rw-r--r-- 1 root        root        139439 2009-03-03 00:43 courier-authlib-0.62.1-1.fc10.i386.rpm
-rw-r--r-- 1 root        root        311720 2009-03-03 00:43 courier-authlib-debuginfo-0.62.1-1.fc10.i386.rpm
-rw-r--r-- 1 root        root         34714 2009-03-03 00:43 courier-authlib-devel-0.62.1-1.fc10.i386.rpm
-rw-r--r-- 1 root        root         17779 2009-03-03 00:43 courier-authlib-ldap-0.62.1-1.fc10.i386.rpm
-rw-r--r-- 1 root        root         14088 2009-03-03 00:43 courier-authlib-mysql-0.62.1-1.fc10.i386.rpm
-rw-r--r-- 1 root        root         13344 2009-03-03 00:43 courier-authlib-pgsql-0.62.1-1.fc10.i386.rpm
-rw-r--r-- 1 root        root          8144 2009-03-03 00:43 courier-authlib-pipe-0.62.1-1.fc10.i386.rpm
-rw-r--r-- 1 root        root         34973 2009-03-03 00:43 courier-authlib-userdb-0.62.1-1.fc10.i386.rpm
-rw-r--r-- 1 compileuser compileuser 397991 2009-03-03 00:52 courier-imap-4.4.1-1.10.i386.rpm
-rw-r--r-- 1 compileuser compileuser 895065 2009-03-03 00:52 courier-imap-debuginfo-4.4.1-1.10.i386.rpm
[[email protected] i386]$

You can install courier-imap like this:

sudo rpm -ivh courier-imap-4.4.1-1.10.i386.rpm

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

cd $HOME/downloads
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 3076
-rw-r--r-- 1 root        root        139439 2009-03-03 00:43 courier-authlib-0.62.1-1.fc10.i386.rpm
-rw-r--r-- 1 root        root        311720 2009-03-03 00:43 courier-authlib-debuginfo-0.62.1-1.fc10.i386.rpm
-rw-r--r-- 1 root        root         34714 2009-03-03 00:43 courier-authlib-devel-0.62.1-1.fc10.i386.rpm
-rw-r--r-- 1 root        root         17779 2009-03-03 00:43 courier-authlib-ldap-0.62.1-1.fc10.i386.rpm
-rw-r--r-- 1 root        root         14088 2009-03-03 00:43 courier-authlib-mysql-0.62.1-1.fc10.i386.rpm
-rw-r--r-- 1 root        root         13344 2009-03-03 00:43 courier-authlib-pgsql-0.62.1-1.fc10.i386.rpm
-rw-r--r-- 1 root        root          8144 2009-03-03 00:43 courier-authlib-pipe-0.62.1-1.fc10.i386.rpm
-rw-r--r-- 1 root        root         34973 2009-03-03 00:43 courier-authlib-userdb-0.62.1-1.fc10.i386.rpm
-rw-r--r-- 1 compileuser compileuser 397991 2009-03-03 00:52 courier-imap-4.4.1-1.10.i386.rpm
-rw-r--r-- 1 compileuser compileuser 895065 2009-03-03 00:52 courier-imap-debuginfo-4.4.1-1.10.i386.rpm
-rw-r--r-- 1 root        root        300664 2009-03-03 00:59 maildrop-2.0.4-1.10.i386.rpm
-rw-r--r-- 1 root        root        723181 2009-03-03 00:59 maildrop-debuginfo-2.0.4-1.10.i386.rpm
-rw-r--r-- 1 root        root        132551 2009-03-03 00:59 maildrop-devel-2.0.4-1.10.i386.rpm
-rw-r--r-- 1 root        root         58083 2009-03-03 00:59 maildrop-man-2.0.4-1.10.i386.rpm
[[email protected] i386]$

You can now install maildrop like this:

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

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

exit

 

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
wget http://ftp-stud.fht-esslingen.de/pub/Mirrors/fedora/linux/releases/10/Fedora/source/SRPMS/postfix-2.5.5-1.fc10.src.rpm
rpm -ivh postfix-2.5.5-1.fc10.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 /root/rpmbuild/SOURCES
wget http://vda.sourceforge.net/VDA/postfix-2.5.5-vda-ng.patch.gz
gunzip postfix-2.5.5-vda-ng.patch.gz
cd /root/rpmbuild/SPECS/

Now we must edit the file postfix.spec:

vi postfix.spec

Add Patch0: postfix-2.5.5-vda-ng.patch to the # Patches stanza, and %patch0 -p1 -b .vda-ng to the %setup -q stanza:

[...]
# Patches

Patch0: postfix-2.5.5-vda-ng.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.4.0-cyrus.patch
Patch10: postfix-2.4.5-open_define.patch
[...]
%prep
%setup -q
# Apply obligatory patches
%patch0 -p1 -b .vda-ng
%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 .open_define
[...]

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

rpmbuild -ba postfix.spec

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

cd /root/rpmbuild/RPMS/i386

The command

ls -l

shows you the available packages:

[[email protected] i386]# ls -l
total 11828
-rw-r--r-- 1 root root 4006804 2009-03-03 01:06 postfix-2.5.5-1.fc10.i386.rpm
-rw-r--r-- 1 root root 8027876 2009-03-03 01:06 postfix-debuginfo-2.5.5-1.fc10.i386.rpm
-rw-r--r-- 1 root root   51904 2009-03-03 01:06 postfix-pflogsumm-2.5.5-1.fc10.i386.rpm
[[email protected] i386]#

Pick the Postfix package and install it like this:

rpm -ivh postfix-2.5.5-1.fc10.i386.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 server1.example.com, 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 CN=server1.example.com:

vi /usr/lib/courier-imap/etc/imapd.cnf
[...]
CN=server1.example.com
[...]
vi /usr/lib/courier-imap/etc/pop3d.cnf
[...]
CN=server1.example.com
[...]

Then we recreate both certificates...

./mkimapdcert
./mkpop3dcert

... 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:

Suggested articles

2 Comment(s)

Add comment

Comments

By: G. Lohmann

about "visudo"

I am not a geek with sudo but if I run visudo it already write:

## Sudoers allows particular users to run various commands as
## the root user, without needing the root password.

Which would mean that:

compileuser ALL=(ALL) ALL

will probably give away all the same rights to this user as like root himself, making a second root user that even not need to type the root password. If that is true I not need sudo at all but can directly act as root. Moreover I created a potential security lack!

Fact is, except of installing an rpm package to the system I normaly not need root rights at all. A default user in Fedora can run tools like 'make', 'gcc', 'rpmbuild' and even 'rpm -Uvh my_package.src.rpm' without any additional rights.

For installing a single package it should be sufficient enough to to a

# su -c 'rpm -Uvh my_package.rpm'

which would ask me for the root password before installing but should not hurt for that single file. If you already work anyway as a root user we can do the install directly and not need to bother about sudo, but then the question is why I use sudo at all.

Also a good idea might be to use on fedora

# yum localinstall my_package.rpm

which does the same as the rpm install but keep track of the package in yum and as well install dependency if necessary.

By: Martin

I tried to install it on CentOS 6.5 but unsuccesfull. I installed
courier-unicode-1.1.tar.bz2 and then I tried to install
courier-authlib-0.66.1.20140114.tar.bz2 but not well.
I got error: 
"The Courier Unicode Library appears not to be installed. You may need to
install a separate development subpackage, in addition to the main package
error: Bad exit status from /var/tmp/rpm-tmp.LecCXX (%prep)". 
 
I don´t know what I can do for now because unicode devel I installed succesfull but still
is missing. Could somebody help me, please?