HOW TO CONFIGURE POSTFIX AN DOVECOT IN REDHAT/CENTOS 7 USING ROUNDCUBE

Harshit Verma Published on 15 February 2020

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&gt; create database roundcube; 



mysql&gt; create user roundcube; 



mysql&gt; GRANT ALL PRIVILEGES ON roundcube.* TO roundcube@localhost IDENTIFIED BY 'password'; 



mysql&gt; flush privileges; 



mysql&gt; use roundcube; 



mysql&gt; source /usr/share/doc/roundcubemail-0.8.6/SQL/mysql.initial.sql 



mysql&gt; 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&gt; create database postfixadmin; 



mysql&gt; grant all privileges on postfixadmin.* to postfixadmin@' localhost' identified by 'password'; 



mysql&gt; flush privileges; 



mysql&gt; 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.