How to Install Zimbra Mail Server on CentOS 8 / RHEL 8

Mail server is one of the important server for any organization as all the communication are done via emails. There are number free and enterprise mail servers available in the IT world. Zimbra is one of the high rated mail server that comes in open source and enterprise edition. In this article, we touch base on how to install and configure single node open-source Zimbra mail server on CentOS 8 / RHEL 8 system.

Zimbra is also known as Zimbra Collaboration Suite (ZCS) because it consists numbers of components like MTA (postfix), Database (MariaDB), LDAP and MailboxdUI etc. Below is the architecture of Zimbra

Zimbra-Architecure-Overview

Minimum System Requirements for Open Source Zimbra Mail Server

  • Minimal CentOS 8/ RHEL 8
  • 8 GB RAM
  • 64-bit Intel / AMD CPU (1.5 GHz)
  • Separate Partition as /opt with at least 5 GB free space
  • Fully Qualified Domain Name (FQDN), like ‘zimbra.linuxtechi.com’
  • Stable Internet Connection with Fixed Internal / Public IP

Following are my Zimbra Lab Setup details:

  • Hostname: zimbra.linuxtechi.com
  • Domain: linuxtechi.com
  • IP address: 192.168.1.60
  • DNS Server: 192.168.1.51
  • SELinux : Enabled
  • Firewall : Enabled

Before jumping into the installation steps of Zimbra, let’s verify DNS records (A & MX) for our Zimbra Server, Login to your CentOS 8 / RHEL 8 system and use dig command to query dns records

Note: In case dig command is not available then install ‘bind-utils’ package

Run following dig command to query A record of our Zimbra server

[root@zimbra ~]# dig -t A zimbra.linuxtechi.com

DNS-A-Record-Zimbra-CentOS8-RHEL8

Run following dig command to query MX record for our domain ‘linuxtechi.com

[root@zimbra ~]# dig -t MX linuxtechi.com

Query-MX-Record-Zimbra-dig-command-CentOS8

Above outputs confirm that DNS records are configured correctly for our Zimbra mail server.

Read Also : How to Setup DNS Server (Bind) on CentOS 8 / RHEL8

Note: Before starting Zimbra installation, please make sure no MTA ( or mail server) configured on the system. In case it is installed then first disable its service and remove its package

# systemctl stop postfix
# dnf remove postfix -y

Let’s dive into Zimbra installation steps,

Step 1) Apply Updates, add entry in hosts file and reboot your system

Add the hostname entry in hosts file, run the following echo command,

[root@zimbra ~]# echo "192.168.1.60  zimbra.linuxtechi.com" >> /etc/hosts

Run the beneath command to apply all the available updates,

[root@zimbra ~]# dnf update -y

Once all the updates have been installed then reboot your system once.

[root@zimbra ~]# reboot

Step 2) Download Open source Zimbra Collaboration suite

As we discussed above, Zimbra comes in two editions, so use the following URLs to download

To Download it from the command line, run following commands,

[root@zimbra ~]# dnf install wget tar perl net-tools nmap-ncat -y
[root@zimbra ~]# wget https://files.zimbra.com/downloads/8.8.15_GA/zcs-8.8.15_GA_3953.RHEL8_64.20200629025823.tgz

Step 3) Start Zimbra Installation via installation script

Once the compressed Zimbra tar file is downloaded in step 2 then extract it in your current working directory using tar command,

[root@zimbra ~]# tar zxpvf zcs-8.8.15_GA_3953.RHEL8_64.20200629025823.tgz
[root@zimbra ~]# ls -l
total 251560
-rw-------. 1 root root      1352 Aug 30 10:46 anaconda-ks.cfg
drwxrwxr-x. 8 1001 1001      4096 Jun 29 11:39 zcs-8.8.15_GA_3953.RHEL8_64.20200629025823
-rw-r--r--. 1 root root 257588163 Jul  1 07:16 zcs-8.8.15_GA_3953.RHEL8_64.20200629025823.tgz
[root@zimbra ~]#

Go to the extracted directory and execute install script to begin the installation

[root@zimbra ~]# cd zcs-8.8.15_GA_3953.RHEL8_64.20200629025823
[root@zimbra zcs-8.8.15_GA_3953.RHEL8_64.20200629025823]# ls -l
total 24
drwxrwxr-x. 2 1001 1001  127 Jun 29 11:39 bin
drwxrwxr-x. 2 1001 1001   31 Jun 29 11:39 data
drwxrwxr-x. 3 1001 1001   34 Jun 29 11:39 docs
-rwxr-xr-x. 1 1001 1001 8873 Jun 29 11:39 install.sh
drwxrwxr-x. 3 1001 1001   18 Jun 29 11:39 lib
drwxrwxr-x. 3 1001 1001 4096 Jun 29 11:39 packages
-rw-rw-r--. 1 1001 1001  369 Jun 29 11:39 readme_binary_en_US.txt
-rw-rw-r--. 1 1001 1001  428 Jun 29 11:39 README.txt
drwxrwxr-x. 3 1001 1001   76 Jun 29 11:39 util
[root@zimbra zcs-8.8.15_GA_3953.RHEL8_64.20200629025823]# ./install.sh

Output of install script would be something like below

Press ‘Y’ to accept the license agreement

Accept-Zimbra-License-Agreement-Installation

In the next screen, press ‘Y’ to configure Zimbra package repository and install its components.

Configure-Zimbra-repsository-during-installation

In the next following screen, press ‘Y’ to modify the system,

press-y-to-modify-system-zimbra-installation-centos8

Once we press ‘Y’, it will start downloading and installing the Zimbra and its components. After the successful installation we will get the following screen:

Succesfull-installation-Zimbra-CentOS8

As we can see above, admin user’s password is not set, so press 7 and then 4 to assign password to admin user.

Admin-user-password-set-zimbra-installation

Once the password is set then press ‘r’ to go previous screen and then press ‘a’ to apply changes.

Apply-Changes-Zimbra-Installation-CentOS8

Once all the configurations are completed and Zimbra services are started successfully then we will get following screen:

Configuration-Completed-Zimbra-Installation-CentOS8

Perfect, above confirms that we have successfully installed Zimbra mail server. Before accessing its admin and web client portal, allow the following ports in OS firewall (In case firewall is disabled then you skip this step)

[root@zimbra ~]# firewall-cmd --add-service={http,https,smtp,smtps,imap,imaps,pop3,pop3s} --permanent
success
[root@zimbra ~]# firewall-cmd --add-port 7071/tcp --permanent
success
[root@zimbra ~]# firewall-cmd --add-port 8443/tcp --permanent
success
[root@zimbra ~]# firewall-cmd --reload
success
[root@zimbra ~]#

Step 4) Access Zimbra Mail Server Admin portal and Web Client

To Access Admin Portal, use the following URL:

https://zimbra.linuxtechi.com:7071/

Use the username as ‘admin’ and password that we set during the installation

Zimbra-Administration-Login-Page-CentOS8

Click on ‘Sign In

Zimbra-Admin-Portal-CentOS8

Note: After Zimbra installation on CentOS 8 / RHEL 8 system, I have found amavis was not running and when I checked Zimbra logs (/var/log/zimbra.log)  then I have found below error:

Sep  5 09:53:05 zimbra amavis[29288]: Net::Server: Binding to TCP port 10024 on host 127.0.0.1 with IPv4
Sep  5 09:53:05 zimbra amavis[29288]: Net::Server: Binding to TCP port 10024 on host ::1 with IPv6
Sep  5 09:53:05 zimbra amavis[29288]: (!)Net::Server: 2020/09/05-09:53:05 Can't connect to TCP port 10024 on ::1 [Cannot assign requested address]\n  at line 64 in file /opt/zimbra/common/lib/perl5/Net/Server/Proto/TCP.pm
Sep  5 09:53:05 zimbra amavis[29288]: Net::Server: 2020/09/05-09:53:05 Server closing!

I resolved amavis issue by adding the following parameter in /opt/zimbra/conf/amavisd.conf  file

$inet_socket_bind = '127.0.0.1';

and restarted the amavis service using following command,

[zimbra@zimbra ~]$ zmamavisdctl restart

To access web client, use the following URL:

https://zimbra.linuxtechi.com

Zimbra-Web-Client-Sign-CentOS8

After Entering credentials, click on ‘Sign In

Zimbra-Web-Client-Inbox

Step 5) Manage Zimbra from Command Line

All most all the Linux geeks prefer command line to manage their servers, so Zimbra can also be managed from command line with zmcontrol utility. All Zimbra related admin and operations task are performed with Zimbra user.

[root@zimbra ~]# su - zimbra
Last login: Sat Sep  5 09:51:41 BST 2020 on pts/1
[zimbra@zimbra ~]$ zmcontrol status
Host zimbra.linuxtechi.com
        amavis                  Running
        antispam                Running
        antivirus               Running
        dnscache                Running
        imapd                   Running
        ldap                    Running
        logger                  Running
        mailbox                 Running
        memcached               Running
        mta                     Running
        opendkim                Running
        proxy                   Running
        service webapp          Running
        snmp                    Running
        spell                   Running
        stats                   Running
        zimbra webapp           Running
        zimbraAdmin webapp      Running
        zimlet webapp           Running
        zmconfigd               Running
[zimbra@zimbra ~]$

If you want to restart Zimbra service then run,

[zimbra@zimbra ~]$ zmcontrol restart

Zimbra logs are stored in ‘/var/log/zimbra.log’ file. We should always refer this file while troubleshooting. Log files for individual components are stored under ‘/opt/zimbra/log’ directory.

[zimbra@zimbra ~]$ ls -l /opt/zimbra/log | more
total 6244
-rw-r-----. 1 zimbra zimbra  194710 Sep  5 12:40 access_log.2020-09-05
-rw-r-----. 1 zimbra zimbra       0 Sep  5 09:11 activity.log
-rw-r-----. 1 zimbra zimbra       6 Sep  5 09:58 amavis-mc.pid
-rw-r-----. 1 zimbra zimbra       6 Sep  5 09:58 amavisd.pid
-rw-r-----. 1 zimbra zimbra   16112 Sep  5 12:40 audit.log
-rw-r-----. 1 zimbra zimbra   10999 Sep  5 12:49 clamd.log
-rw-rw-r--. 1 zimbra zimbra       6 Sep  5 09:53 clamd.pid
-rw-r-----. 1 zimbra zimbra       0 Sep  5 09:11 ews.log
-rw-r-----. 1 zimbra zimbra    3427 Sep  5 11:54 freshclam.log
-rw-rw----. 1 zimbra zimbra       6 Sep  5 09:53 freshclam.pid
-rw-r-----. 1 root   root    553466 Sep  5 12:47 gc.log
-rw-r-----. 1 zimbra zimbra       6 Sep  5 09:54 httpd.pid
-rw-r-----. 1 zimbra zimbra    1241 Sep  5 09:54 httpd_error.log.2020-09-05
-rw-r-----. 1 zimbra zimbra       0 Sep  5 09:13 imapd-audit.log
-rw-r-----. 1 zimbra zimbra  247177 Sep  5 12:49 imapd.log
-rw-r-----. 1 zimbra zimbra     159 Sep  5 09:54 imapd.out
-rw-r-----. 1 zimbra zimbra       5 Sep  5 09:54 imapd.pid
-rw-r-----. 1 zimbra zimbra       6 Sep  5 09:51 logswatch.pid
-rw-r-----. 1 zimbra zimbra  584562 Sep  5 12:48 mailbox.log
-rw-r-----. 1 zimbra zimbra       6 Sep  5 09:51 memcached.pid
-rw-rw----. 1 zimbra zimbra   40340 Sep  5 12:48 myslow.log
-rw-rw----. 1 zimbra zimbra       6 Sep  5 09:51 mysql.pid
-rw-rw----. 1 zimbra zimbra   18266 Sep  5 09:51 mysql_error.log
-rw-r-----. 1 zimbra zimbra   20130 Sep  5 12:24 nginx.access.log
-rw-r-----. 1 zimbra zimbra   12652 Sep  5 12:24 nginx.log
-rw-r--r--. 1 root   root         6 Sep  5 09:51 nginx.pid
-rw-r-----. 1 zimbra zimbra       6 Sep  5 09:53 opendkim.pid
-rw-r-----. 1 zimbra zimbra       0 Sep  5 09:11 searchstat.log

Step 6) Uninstallation of Zimbra Server

For any reasons, if you wish to uninstall Zimbra server from your CentOS 8 / RHEL 8 system then go to Zimbra extracted folder and execute install script with ‘-u’ parameter, example is shown below:

[root@zimbra ~]# cd zcs-8.8.15_GA_3953.RHEL8_64.20200629025823
[root@zimbra zcs-8.8.15_GA_3953.RHEL8_64.20200629025823]# ./install.sh -u

That’s all from this tutorial, I hope you manage to install open source Zimbra server on your system by referring these steps. Please do share your feedback and comments.

Read Also : Top 7 Security Hardening Tips for CentOS 8 / RHEL 8 Server

Leave a Comment