A working mail server can be configured using Postfix (MTA) with the addition of some components like Dovecot (IMAP) and Roundcube (webmail).
Combining these applications, we obtain an email system with SMTP, IMAP, POP3 protocols that can be used in a corporate environment where the budget is pretty limited.
This solution based on Open Source software, where no licenses need to purchase,
Prerequisites
§ CentOS 6: minimal installation
§ Postfix: SMTP
§ Dovecot: IMAP, POP3
§ Roundcube: web-based IMAP client
§ Postfix admin: to easily manage Postfix
To work properly, the system needs to have SELinux disabled.
# vi /etc/SELinux/config
Install Postfix
From the console, install Postfix with yum command.
# yum install postfix
Edit configuration file /etc/postfix/main.cf and set the parameters as follow:
1
2
3
4
5
6
7
myhostname = hostname.domain.com
mydomain = domain.com
myorigin = $mydomain
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mynetworks = 192.168.1.0/24, 127.0.0.0/8
home_mailbox = Maildir/
# vi /etc/postfix/main.cf
1
2
3
myhostname = hostname.domain.com
mydomain = domain.com
myorigin = $mydomain
1
inet_interfaces = all
1
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
1
mynetworks = 192.168.1.0/24, 127.0.0.0/8
1
home_mailbox = Maildir/
Once all the parameters have been set, set the application to start during system boot, and start the service.
# chkconfig postfix on
# service postfix start
Testing Postfix
To check if everything works as expected, type from the console the following commands to send an email:
# telnet localhost smtp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Trying::1...
it is connected to the localhost.
Escape character is '^].'
220 server.domain.com ESMTP Postfix
ehlo localhost
250-server.domain.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
mail from: username@domain.com
250 2.1.0 Ok
rcpt to: username@domain.com
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
test
.
250 2.0.0 Ok: queued as 2C55A94
quit
221 2.0.0 Bye
Connection closed by foreign host.
To check if the email has been received, have a look at the /home/username/Maildir/newdirectory.
# cd /home/username/Maildir/new/
# ll
# cat xxxxx.xxxxx.server.domain.com
The system received the email then the mail server is working correctly.
Install Dovecot
While Postfix acts as Mail Transfer Agent (MTA) only to retrieve emails using modern tools, we need to enable IMAP/POP3 protocols. Dovecot is an application that acts as a secure IMAP and POP3 server.
Use the yum command to install Dovecot.
# yum install dovecot
Edit the configuration file /etc/dovecot/dovecot.conf to enable the needed protocols.
# vi /etc/dovecot/dovecot.conf
1
protocols = imap pop3 lmtp
Then we need to specify the mail location by editing the file /etc/dovecot/conf.d/10-mail.conf.
# vi /etc/dovecot/conf.d/10-mail.conf
1
mail_location = maildir:~/Maildir
Edit the file /etc/dovecot/conf.d/10-auth.conf and set the following parameters:
# vi /etc/dovecot/conf.d/10-auth.conf
1
disable_plaintext_auth = no
1
auth_mechanisms = plain login
Last file to edit /etc/dovecot/conf.d/10-master.conf.
# vi /etc/dovecot/conf.d/10-master.conf
1
2
3
4
5
unix_listener auth-userdb {
#mode = 0600
user = postfix
group = postfix
}
Set Dovecot to start at system boot and start the service.
# chkconfig dovecot on
# service dovecot start
Testing Dovecot
To check if Dovecot is working, we test the program through the POP3 protocol.
# telnet localhost pop3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Trying::1...
Connected to localhost.
Escape character is '^]'.
+OK Dovecot ready.
user admin
+OK
pass password
+OK Logged in.
list
+OK 1 messages:
1 477
.
retr 1
+OK 477 octets
Return-Path: <username@domain.com>
X-Original-To: username@domain.com
Delivered-To: username@domain.com
Received: from localhost (localhost [IPv6:::1])
by server.domain.com (Postfix) with ESMTP id 2C55A94
for username@domain.com; Wed, 12 Jun 2013 12:22:00 +0200 (CEST)
Message-Id: <20130207113547.117113FF18@server.domain.com>
Date: Wed, 12 Jun 2013 12:22:00 +0200 (CEST)
From: username@domain.com
To: undisclosed-recipients:;
test postfix
.
quit
+OK Logging out.
Connection closed by foreign host.
Install Roundcube
Roundcube is a browser-based IMAP client with an application-like user interface.
To configure the application, firstly, we need to install MySQL server and Apache in the system.
# yum install mysql-server mysql-devel httpd
Enable both MySQL and Apache to start at system boot and enable services.
# chkconfig mysqld on
# service mysqld start
# chkconfig httpd on
# service httpd start
Install EPEL repository
To install Roundcube with yum command, we need to install the EPEL repository in the system.
# wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# rpm -ivh epel-release-6-8.noarch.rpm
Once EPEL repo has installed, use yum to install Roundcube.
# yum install roundcubemail
Configure MySQL
To define the database used by the application, we need to access MySQL configuration.
# mysql -u root -p
1
2
3
4
5
6
7
mysql> create database roundcube;
mysql> create user roundcube;
mysql> GRANT ALL PRIVILEGES ON roundcube.* TO roundcube@localhost IDENTIFIED BY 'password';
mysql> flush privileges;
mysql> use roundcube;
mysql> source /usr/share/doc/roundcubemail-0.8.6/SQL/mysql.initial.sql
mysql> quit
Edit configuration file /etc/roundcubemail/db.inc.php to set the parameters to access the database.
# vi /etc/roundcubemail/db.inc.php
1
$rcmail_config['db_dsnw'] = 'mysql://roundcube:password@localhost/roundcube';
Edit the file /etc/roundcubemail/main.inc.php to set the hostname chosen to perform the login.
# vi /etc/roundcubemail/main.inc.php
1
$rcmail_config['default_host'] = 'localhost';
To make the system accessible outside the server, edit the file /etc/httpd/conf.d/roundcubemail.conf and set the correct parameter.
# vi /etc/httpd/conf.d/roundcubemail.conf
1
Allow from all
Edit the /etc/php.ini file and set the time zone.
Because the log could report errors related to encryption, set the correct encryption parameter.
# vi /etc/php.d/mcrypt.ini
1
extension=mcrypt.so
Restart Apache.
# service httpd restart
Testing Roundcube
Access Roundcube typing from your browser the address:
http://IP_address/roundcubemail
Enter your credentials then click Login.
The main screen appears showing the email received when Postfix previously tested.
Install Postfix Admin
To make Postfix administration easier, the Postfix admin is a web-based tool used to manage mailboxes, virtual domains, and aliases.
If not already present in the system, install the PHP component needed by the application.
# yum install php-IMAP
Access MySQL and create the database used by Postfix Admin.
# mysql -u root -p
1
2
3
4
mysql> create database postfixadmin;
mysql> grant all privileges on postfixadmin.* to postfixadmin@' localhost' identified by 'password';
mysql> flush privileges;
mysql> quit
Using the wget command, download the latest release of the application.
# wget http://downloads.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-2.3.6/postfixadmin-2.3.6.tar.gz
Extract the content and move the directory to /var/www/html folder.
# tar -vxzf postfixadmin-2.3.6.tar.gz
# mv postfixadmin-2.3.6 /var/www/html/postfixadmin
Edit the configuration file /var/www/html/postfixadmin/config.inc.php to enable the application and set the password.
# vi /var/www/html/postfixadmin/config.inc.php
1
2
$CONF['configured'] = true;
$CONF['setup_password'] = 'password';
Set the correct parameters to access the database previously created.
1
2
3
4
5
$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'password';
$CONF['database_name'] = 'postfixadmin';
Add the following line to allow the creation of the administration password.
1
$CONF['setup_password'] = '8abd38580e77ebf7010eb60b95eb4fad:0bd829114d9efc4bc35c7e42cf7d3507dad8b837';
Restart Apache.
# service httpd restart
To execute the Postfix Admin Setup Checker, type in your browser the address:
http://IP_address/postfixadmin/setup.php
Change the setup password.
Create the Superadmin account by filling the fields at the bottom of the screen. Click Add Admin.
The Superadmin account then created.
To access the Administration interface, type in your browser the address:
http://IP_address/postfixadmin
The Postfix Admin main screen.
Sending emails through a relay
If the corporate network has an antispam system to check inbound and outbound emails, Postfix needs to configure in order to relay the emails to the antispam.
To allow the correct email flow, set the relay host field with the address of the antispam system.
# vi /etc/postfix/main.cf
1
relayhost= lx-antispam02.nolabnoparty.local
The mail server is now up and running with the basic functions to properly manage email messages.
SSC
Banking
UPSC