Mail Server Setup With Exim, MySQL, Cyrus-Imapd, Horde Webmail On Centos 5.1

Want to support HowtoForge? Become a subscriber!
 
Submitted by topdog (Contact Author) (Forums) on Tue, 2008-02-19 18:04. :: CentOS | Email

Mail Server Setup With Exim, MySQL, Cyrus-Imapd, Horde Webmail On Centos 5.1

Version 1.1
Author: Andrew Colin Kissa <andrew [at] topdog [dot] za [dot] net>
Last edited 04/02/2009

Introduction

This how to describes the installation and configuration of a mail system on Centos 5.1 with selinux enabled for enhanced security. This system will be able to service HTTP, HTTPS, SMTP, TLS, SMTP-AUTH, IMAP, POP3 clients and is virtual enabled allowing more than one domain to be served from the system.

The webmail client imp will provide a feature rich interface with a webmail component, an address book, calendaring, and ability to reset passwords all with a highly configurable preference system to enable users to modify their look and feel as well as the operation of the interface.

The IMAP/POP3 system is the high performance cyrus-imapd system that runs as a sealed unit (mail users are not system users) and utilizes a high end/ performance back end for mail storage. The other cyrus-imapd features include, mail indexing for quick search operations using squat, a notification daemon that can be configured to notify via sms or email, sieve filtering system (auto response, mail filtering, notifications, filing), and built in quota system. This system will use pam_mysql via the SASL (saslauthd) mechanism to authenticate users against the Mysql database back end shared by all the components.

The exim system will be configured to enable users to relay mail using TLS secured SMTP-AUTH, using the same database backend that is shared by all the components. Address verification will take place using SQL queries to the mysql backend before any mail is accepted for delivery to the cyrus-imapd mail store. Anti-virus checks are integrated into this system with the use of clamav via a Unix domain socket. Spam checks are also run at smtp time via a socket connection to the spamd spamassasin system, messages scoring over 6 are automatically rejected with out being spooled to the system.

The mysql database will store the user authentication information encrypted using md5-hex as well as other information for the other webmail components.

This system is designed for high performance and security, cutting down on open ports and preferring to use unix domain sockets and running selinux in enforcing mode.

User account management takes place via the horde web interface allowing the admin easy access to add and remove accounts or to manage passwords, it is also possible to interact directly with the database table and make alterations there.

 

OS Installation Notes

For the purpose of keeping this howto precise i will not take you through the actually installation of the Centos 5.1 system i will assume that you have a bare bones install, a kickstart to help you get a bare bones install is can be downloaded here.

For this tutorial I will be using the static IP address 192.168.1.4 and the hostname mail.home.topdog-software.com with a domain of home.topdog-software.com, please feel free to make alterations to suite your environment. The working directory will be /usr/local/src all packages to be downloaded should be downloaded and extracted there.

 

Software Installation

Install Prerequisites

  • Update the system.

    yum update

  • Configure rpmforge repo

    rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm

  • Disable the repo (such that base packages not overwritten) edit /etc/yum.d/rpmforge.repo and set the following option
    enabled = 0
    

 

Install Apache

yum install httpd php php-mysql php-xml php-imap php-mbstring php-mcrypt \
php-pecl-Fileinfo php-pear-DB php-pear-File php-pear-Log php-pear-Mail-Mime \
php-pear-Auth-SASL php-pear-Date php-pear-HTTP-Request php-pear-Mail php-pear-Net-Sieve \
php-pear-Net-Socket php-pear-Net-SMTP openssl mod_ssl -y

 

Install Exim

yum install exim system-switch-mail -y

 

Install Mysql

yum install mysql mysql-server -y

 

Install Horde

yum install horde imp-h3 ingo-h3 turba-h3 kronolith-h3 -y
wget ftp://ftp.horde.org/pub/passwd/passwd-h3-3.0.1.tar.gz
tar xzvf passwd-h3-3.0.1.tar.gz -C /usr/share/horde
mv /usr/share/horde/passwd-h3-3.0.1 /usr/share/horde/passwd

 

Install cyrus-imapd

I will use the Invoca systems source rpm as it is more recent and support many features that the Centos build does not provide.

yum install db4-utils -y
rpm -Uvh http://www.topdog-software.com/oss/cyrus-imapd/cyrus-imapd-perl-2.3.11-3.i386.rpm
rpm -Uvh http://www.topdog-software.com/oss/cyrus-imapd/cyrus-imapd-utils-2.3.11-3.i386.rpm
rpm -Uvh http://www.topdog-software.com/oss/cyrus-imapd/cyrus-imapd-2.3.11-3.i386.rpm

 

Install Pam_mysql

rpm -Uvh http://www.topdog-software.com/oss/pam_mysql/pam_mysql-0.7RC1-1.i386.rpm

 

Install ClamAV

yum --enablerepo=rpmforge install clamav clamav-db clamd -y

 

Install Spamassassin

yum install spamassassin -y


Please do not use the comment function to ask for help! If you need help, please use our forum.
Comments will be published after administrator approval.
Submitted by Gilad Menachem (not registered) on Tue, 2012-12-25 10:06.

unfortently i cant finish this tutorial becuse i didnt find those component download

if some one got it or have i will glad for help

cyrus-imapd-perl-2.3.11-3.i386.rpm
cyrus-imapd-utils-2.3.11-3.i386.rpm
cyrus-imapd-2.3.11-3.i386.rpm

 

 

Submitted by jacek (not registered) on Tue, 2009-01-27 00:26.
Good stuff, excellent tutorial!!!
Submitted by Squeegee (registered user) on Tue, 2008-02-19 21:45.
The link (http://www.topdog-software.com/files/barebones.ks) for the kickstart returns permission denied.
Submitted by topdog (registered user) on Wed, 2008-02-20 10:52.
My apologies, the link should work now.
Submitted by nguyenlaman (not registered) on Thu, 2008-11-20 14:32.


  • Create a file admin.sql and add the following (modify the password to suite you)

USE horde;REPLACE INTO horde_users (user_uid,user_pass)    VALUES (        'andrew@onet.com.vn',        md5('vnevn123@123a'),);


  • Add user to database


mysql -p horde < admin.sql

Error , so i must add user to horde_users table by phpmyadmin but , still error
A fatal error has occurred
Could not connect to database for SQL SessionHandler.
Details have been logged for the administrator.