Greetings, Everyone. In this blog post we will cover the installation of the latest Zimbra Collaboration 8.8 Network Edition release on Ubuntu 16.04 LTS, using dnsmasq as a DNS Server. These steps cover a single-server installation. If you are looking for multi-server installation steps, please visit our official guide.
This blog post is a bit long, so you might find this menu useful:
- Creating the VM on VMware ESXi (vmxnet3 y pvscsi)
- OS Requirements
- Operating System installation (video)
- OS configuration for Zimbra Collaboration
- Zimbra Collaboration 8.8 Installation
In this blog post, we use a VM on VMware and all the best practices from VMware for a high-use workload. We will create the VM with vmxnet3 for Networking and pvscsi for the Disk Controller.
The first step is to create the VM. Select the first option and press Next:
Type a name for the VM, and select the compatibility, in this case ESXi 6.0. For the Guest OS Familiy, choose Linux, and for Guest OS version, choose Ubuntu 64-bit.
In this step, select the datastore where Zimbra will be installed. Remember that Zimbra is read/write intensive, so please choose the fastest datastore in your environment. Zimbra doesn’t recommend RAID5 or SATA, but you can find much more information about this on the Performance Tuning Guidelines Wiki.
In the step Customize Settings, you need to pay more attention. Change the SCSI Controller to VMware Paravirtual, and double-check if the Network Adapater is already on VMXNET3. Change it to VMXNET3 if it isn’t already there.
In the last step, verify that everything is correct, and click Finish.
In this blog article, we are using Ubuntu 16.04 LTS on VMware vSphere 6.5 U1. These are the requirements for a single-server VM with up to 50 users:
- 4vCPU or more
- 8GB de RAM or more
- 50GB could be the minimum recommended, remember to use the fastest available disks and adjust the size of the server according to your environment
- Internet connectivity a requirement to install Zimbra Collaboration 8.8, which uses external packages repository, and of course, you need internet conectivity to send and receive emails
- A perfect DNS configuration is needed
You can use the next video as an example of how to install Ubuntu 16.04 LTS and how to configure it properly for Zimbra Collaboration. Edit the hosts file, configure the Networking as static, and configure the resolv.conf file:
You will see these steps in the previous video, but here they are in text mode as root user:
oper@zimbra8:~$ sudo su [sudo] password for oper: root@zimbra8:/home/oper#
If the system has been configured by using DHCP, you need a static IP for Zimbra Collaboration. Let’s edit the Networking Configuration:
root@zimbra8:~# vim /etc/network/interfaces
If you have somehting like the next, please note the dhcp line:
allow-hotplug eth0 iface eth0 inet dhcp
Let’s change it for a Static Ethernet configuration:
allow-hotplug eth0 iface eth0 inet static address 192.X.X.X netmask 255.255.255.0 gateway 192.X.X.X dns-nameservers 127.0.0.1 dns-nameservers 188.8.131.52
Type your own configuration: address with your Zimbra Collaboration IP, gateway with the router IP address in your Environment. For the DNS Server, you might type your own Zimbra server if you will use an internal DNS server on the Zimbra Server or another IP in case you have a valid DNS Server already.
You can double check the /etc/resolv.conf even if in Ubuntu 16.04 could be dynamic:
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8) # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN nameserver 127.0.0.1 nameserver 184.108.40.206
The hosts file is always a hot point where many people fail, so let’s edit it:
You need to have your internal, or external, IP within your full hostname and domain, something like the next example:
root@zimbra8:/home/oper# vi /etc/hosts 127.0.0.1 localhost 220.127.116.11 zcs-886.zimbra.io zcs-886 # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters
Once the server is configured properly, type reboot:
If you are trying Zimbra Collaboration, or for small environments, you might want to consider dnsmasq inside the Zimbra Collaboration Server. Please note that you will need a valid SplitDNS configuration in this case.
Now let’s install dnsmasq. Select Y when the system asks to install the package:
apt-get install dnsmasq Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: dnsmasq 0 upgraded, 1 newly installed, 0 to remove and 4 not upgraded. Need to get 15.9 kB of archives. After this operation, 71.7 kB of additional disk space will be used. Do you want to continue? [Y/n] y
Now edit the dnsmasq configuration with your own environment data:
root@zcs-886:~# vim /etc/dnsmasq.conf server=18.104.22.168 listen-address=127.0.0.1 domain=zimbra.io mx-host=zimbra.io,zcs-886.zimbra.io,0 address=/zcs-886.zimbra.io/22.214.171.124
Once saved, restart the dnsmasq services
root@zimbra8:/home/oper# service dnsmasq restart * Restarting DNS forwarder and DHCP server dnsmasq ...done.
4.2. Tests to check and validate the DNS entries
You need to run two simple tests before installing Zimbra Collaboration: Test that the MX and the A DNS entries are configured properly.
In this blog we have used the dig tool:
Test the MX entry:
Please note the answer section.
root@zcs-886:~# dig mx zimbra.io ; <<>> DiG 9.10.3-P4-Ubuntu <<>> mx zimbra.io ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 11345 ;; flags: qr aa rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1280 ;; QUESTION SECTION: ;zimbra.io. IN MX ;; ANSWER SECTION: zimbra.io. 0 IN MX 0 zcs-886.zimbra.io. ;; ADDITIONAL SECTION: zcs-886.zimbra.io. 0 IN A 126.96.36.199 ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Thu Jan 11 13:06:43 UTC 2018 ;; MSG SIZE rcvd: 87
Test the A DNS entry:
Please note the answer section.
root@zcs-886:~# dig zcs-886.zimbra.io ; <<>> DiG 9.10.3-P4-Ubuntu <<>> zcs-886.zimbra.io ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 56775 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1280 ;; QUESTION SECTION: ;zcs-886.zimbra.io. IN A ;; ANSWER SECTION: zcs-886.zimbra.io. 0 IN A 188.8.131.52 ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Thu Jan 11 13:09:32 UTC 2018 ;; MSG SIZE rcvd: 62
You can clearly see the answers in the previous tests. You can also see which DNS Server gave us the answer. Check if that answer is correct. If your DNS tests are not valid, please do not install Zimbra Collaboration until you verify that your configuration is correct. If you have issues, you can open a new forum thread about it.
Now it is time to install the latest Zimbra Collaboration 8.8 release. You can find the GA bits on the usual downloads page.
Uncompress the package you downloaded from the downloads page :
root@zimbra8:/home/oper# tar xzvf zcs-NETWORK-8.8.6_GA_1906.UBUNTU16_64.20171130041047.tgz
Move into the new directory:
root@zimbra8:/home/oper# cd zcs-NETWORK-8.8.6_GA_1906.UBUNTU16_64.20171130041047
Before installing Zimbra Collaboration 8.8 Network Edition, have the license.xml already on the server, for example on /tmp :
Now you need to run the install script with the flag -l and the path for the license file, so we save time later during the installation:
root@zcs-886:~/zcs-NETWORK-8.8.6_GA_1906.UBUNTU16_64.20171130041047## ./install.sh -l /tmp/license.xml Operations logged to /tmp/install.log.luSct9Pm Checking for existing installation... zimbra-chat...NOT FOUND zimbra-drive...NOT FOUND zimbra-imapd...NOT FOUND zimbra-network-modules-ng...NOT FOUND zimbra-rpost...NOT FOUND zimbra-ldap...NOT FOUND zimbra-logger...NOT FOUND zimbra-mta...NOT FOUND zimbra-dnscache...NOT FOUND zimbra-snmp...NOT FOUND zimbra-store...NOT FOUND zimbra-apache...NOT FOUND zimbra-spell...NOT FOUND zimbra-convertd...NOT FOUND zimbra-memcached...NOT FOUND zimbra-proxy...NOT FOUND zimbra-archiving...NOT FOUND zimbra-core...NOT FOUND IMPORTANT-READ CAREFULLY: THE TERMS OF THIS END USER LICENSE AGREEMENT ("EULA") WILL GOVERN YOUR USE OF THE SOFTWARE. BY DOWNLOADING, INSTALLING, OR USING THE SOFTWARE, YOU (THE INDIVIDUAL OR LEGAL ENTITY) ARE (1)¬†REPRESENTING THAT YOU ARE OVER THE AGE OF 18 AND HAVE THE CAPACITY AND AUTHORITY TO BIND YOURSELF OR THE LEGAL ENTITY, AS APPLICABLE, TO THE TERMS OF THIS EULA AND (2)¬†AGREEING ON BEHALF OF YOURSELF AND/OR AS AN AUTHORIZED REPRESENTATIVE OF THE LEGAL ENTITY, AS APPLICABLE, TO BE BOUND BY THIS EULA. IF YOU DO NOT AGREE TO THE TERMS OF THIS EULA, YOU MUST NOT DOWNLOAD, INSTALL, OR USE THE SOFTWARE. EVALUATION LICENSE. If You are licensing the Software for evaluation purposes, Your use of the Software is only permitted in a non-production environment and for the period limited by the License Key. Notwithstanding any other provision in this EULA, an Evaluation License of the Software is provided "AS-IS" without indemnification, support, or warranty of any kind, expressed or implied. 1. DEFINITIONS 12.14 Contact Information. Please direct legal notices or other correspondence to Synacor, Inc., 40 La Riviere Drive, Suite 300, Buffalo, New York, United States, Attn: Legal Department, email address: email@example.com. Any questions concerning this EULA should be sent to the foregoing email address: firstname.lastname@example.org. 12.15 Trademarks. "Synacor" and "Zimbra" are registered trademarks of Synacor, Inc. and, along with other Synacor trademarks, services marks and product names, may not be used without the prior permission of Synacor, Inc. Any third party trademarks, service marks, and product names included in the Software or Documentation or otherwise provided hereunder may not be used without the prior permission of the owner thereof.
Select “y” on the two EULA and license agreement questions.
Do you agree with the terms of the software license agreement? [N]y The parties acknowledge and agree that a material breach of this Agreement adversely affecting Autonomy's proprietary rights would cause irreparable harm to Autonomy for which a remedy at law would be inadequate and that Autonomy shall be entitled to injunctive relief in addition to any remedies it may have hereunder or at law. Do you agree with the terms of the software license agreement? [N]y
On the next question, Zimbra asks if we want to use the Zimbra public repository or not. If you want to configure your own mirror of the Zimbra public Repository, please read the next Wiki where you will find the steps to do it.
Use Zimbra's package repository [Y] Importing Zimbra GPG key Configuring package repository Checking for installable packages Found zimbra-core (local) Found zimbra-ldap (local) Found zimbra-logger (local) Found zimbra-mta (local) Found zimbra-dnscache (local) Found zimbra-snmp (local) Found zimbra-store (local) Found zimbra-apache (local) Found zimbra-spell (local) Found zimbra-convertd (local) Found zimbra-memcached (repo) Found zimbra-proxy (local) Found zimbra-archiving (local) Found zimbra-chat (repo) Found zimbra-drive (repo) Found zimbra-imapd (local) Found zimbra-network-modules-ng (local)
In this blog, we are going to install all packages except the dnscache and the IMAPD service, which are still in beta:
Select the packages to install Install zimbra-ldap [Y] Install zimbra-logger [Y] Install zimbra-mta [Y] Install zimbra-dnscache [Y] n Install zimbra-snmp [Y] Install zimbra-store [Y] Install zimbra-apache [Y] Install zimbra-spell [Y] Install zimbra-convertd [Y] Install zimbra-memcached [Y] Install zimbra-proxy [Y] Install zimbra-archiving [N] Install zimbra-chat [Y] Install zimbra-drive [Y] Install zimbra-imapd (BETA - for evaluation only) [N] Install zimbra-network-modules-ng [Y] ###WARNING### Network Modules NG needs to bind on TCP ports 8735 and 8736 in order to operate, for inter-instance communication. Please verify no other service listens on these ports and that ports 8735 and 8736 are properly filtered from public access by your firewall. Please remember that the Backup NG module needs to be initialized in order to be functional. This is a one-time operation only that can be performed by clicking the 'Initialize' button within the Backup section of the Network NG Modules in the Administration Console or by running `zxsuite backup doSmartScan` as the zimbra user. Checking required space for zimbra-core Checking space for zimbra-store Installing: zimbra-core zimbra-ldap zimbra-logger zimbra-mta zimbra-snmp zimbra-store zimbra-apache zimbra-spell zimbra-convertd zimbra-memcached zimbra-proxy zimbra-chat zimbra-drive zimbra-network-modules-ng
Press “y” to allow modification of the system:
The system will be modified. Continue? [N] Y Beginning Installation - see /tmp/install.log.luSct9Pm for details... zimbra-core-components will be downloaded and installed. zimbra-timezone-data will be installed. zimbra-common-mbox-conf-msgs will be installed. zimbra-common-mbox-db will be installed. zimbra-common-mbox-conf will be installed. zimbra-common-mbox-native-lib will be installed. zimbra-common-mbox-docs will be installed. zimbra-common-mbox-conf-attrs will be installed. zimbra-common-mbox-conf-rights will be installed. zimbra-core will be installed. zimbra-ldap-components will be downloaded and installed. zimbra-ldap will be installed. zimbra-logger will be installed. zimbra-mta-components will be downloaded and installed. zimbra-mta will be installed. zimbra-snmp-components will be downloaded and installed. zimbra-snmp will be installed. zimbra-store-components will be downloaded and installed. zimbra-jetty-distribution will be downloaded and installed. zimbra-mbox-war will be installed. zimbra-mbox-conf will be installed. zimbra-mbox-service will be installed. zimbra-store will be installed. zimbra-apache-components will be downloaded and installed. zimbra-apache will be installed. zimbra-spell-components will be downloaded and installed. zimbra-spell will be installed. zimbra-convertd will be installed. zimbra-memcached will be downloaded and installed. zimbra-proxy-components will be downloaded and installed. zimbra-proxy will be installed. zimbra-chat will be downloaded and installed (later). zimbra-drive will be downloaded and installed (later). zimbra-network-modules-ng will be installed. Downloading packages (10): zimbra-core-components zimbra-ldap-components zimbra-mta-components zimbra-snmp-components zimbra-store-components zimbra-jetty-distribution zimbra-apache-components zimbra-spell-components zimbra-memcached zimbra-proxy-components … Installing local packages (22): zimbra-timezone-data zimbra-common-mbox-conf-msgs zimbra-common-mbox-db zimbra-common-mbox-conf zimbra-common-mbox-native-lib zimbra-common-mbox-docs zimbra-common-mbox-conf-attrs zimbra-common-mbox-conf-rights zimbra-core zimbra-ldap zimbra-logger zimbra-mta zimbra-snmp zimbra-mbox-war zimbra-mbox-conf zimbra-mbox-service zimbra-store zimbra-apache zimbra-spell zimbra-convertd zimbra-proxy zimbra-network-modules-ng ...done Installing extra packages (2): zimbra-chat zimbra-drive ...done Running Post Installation Configuration: Installing /opt/zimbra/conf/ZCSLicense.xml Operations logged to /tmp/zmsetup.20180111-132052.log Installing LDAP configuration database...done. Setting defaults...
This is another hot step. You need to select yes to change the domain and select your own instead hostname.domain.com, just domain.com
DNS ERROR resolving MX for zcs-886.zimbra.io It is suggested that the domain name have an MX record configured in DNS Change domain name? [Yes] Y Create domain: [zcs-886.zimbra.io] zimbra.io MX: zcs-886.zimbra.io (184.108.40.206) Interface: 220.127.116.11 Interface: 127.0.0.1 Interface: ::1 Interface: 10.16.0.5 done. Checking for port conflicts
You need to change the admin password by pressing the number 6 and then number 4 on the submenu:
Select from menu or 'r' for previous menu [r] 4
You can then select the password for the Admin user:
Password for email@example.com (min 6 characters): [_DSYzh6s] ZimbraROCKS Main menu 1) Common Configuration: 2) zimbra-ldap: Enabled 3) zimbra-logger: Enabled 4) zimbra-mta: Enabled 5) zimbra-snmp: Enabled 6) zimbra-store: Enabled 7) zimbra-spell: Enabled 8) zimbra-convertd: Enabled 9) zimbra-proxy: Enabled 10) Default Class of Service Configuration: 11) Enable default backup schedule: yes s) Save config to file x) Expand menu q) Quit *** CONFIGURATION COMPLETE - press 'a' to apply
Press “a” to apply the changes:
Select from menu, or press 'a' to apply config (? - help) a
Save configuration data to a file? [Yes]
Press enter again:
Save config in file: [/opt/zimbra/config.10904] Saving config in /opt/zimbra/config.10904...done.
Press “y” to continue:
Operations logged to /tmp/zmsetup.20180111-132052.log Setting local config values...done. Initializing core config...Setting up CA...done. Deploying CA to /opt/zimbra/conf/ca ...done. Creating SSL zimbra-store certificate...done. Creating new zimbra-ldap SSL certificate...done. Creating new zimbra-mta SSL certificate...done. Creating new zimbra-proxy SSL certificate...done. Installing mailboxd SSL certificates...done. Installing MTA SSL certificates...done. Installing LDAP SSL certificate...done. Installing Proxy SSL certificate...done. Initializing ldap...done. Setting replication password...done. Setting Postfix password...done. Setting amavis password...done. Setting nginx password...done. Setting BES searcher password...done. Creating server entry for zcs-886.zimbra.io...done. Setting Zimbra IP Mode...done. Saving CA in ldap...done. Saving SSL Certificate in ldap...done. Setting spell check URL...done. Setting service ports on zcs-886.zimbra.io...done. Setting zimbraFeatureTasksEnabled=TRUE...done. Setting zimbraFeatureBriefcasesEnabled=TRUE...done. Checking current setting of zimbraReverseProxyAvailableLookupTargets Querying LDAP for other mailstores Searching LDAP for reverseProxyLookupTargets...done. Adding zcs-886.zimbra.io to zimbraReverseProxyAvailableLookupTargets Setting convertd URL...done. Setting TimeZone Preference...done. Disabling strict server name enforcement on zcs-886.zimbra.io...done. Initializing mta config...done. Setting services on zcs-886.zimbra.io...done. Adding zcs-886.zimbra.io to zimbraMailHostPool in default COS...done. Creating domain zimbra.io...done. Setting default domain name...done. Setting up default domain admin UI components...done. Granting group zimbraDomainAdmins@zimbra.io domain right +domainAdminConsoleRights on zimbra.io...done. Granting group zimbraDomainAdmins@zimbra.io global right +domainAdminZimletRights...done. Setting up global distribution list admin UI components..done. Granting group zimbraDLAdmins@zimbra.io global right +adminConsoleDLRights...done. Granting group zimbraDLAdmins@zimbra.io global right +listAccount...done. Creating domain zimbra.io...already exists. Creating admin account firstname.lastname@example.org...done. Creating root alias...done. Creating postmaster alias...done. Creating user email@example.com...done. Creating user firstname.lastname@example.org...done. Creating user email@example.com...done. Setting spam training and Anti-virus quarantine accounts...done. Initializing store sql database...done. Setting zimbraSmtpHostname for zcs-886.zimbra.io...done. Configuring SNMP...done. Setting up syslog.conf...done. Looking for valid license to install...license installed. Enabling zimbra network NG modules features. Starting servers… Starting servers...done. Installing common zimlets... com_zextras_drive_open...done. com_zimbra_bulkprovision...done. com_zimbra_email...done. com_zimbra_ymemoticons...done. com_zimbra_attachcontacts...done. com_zimbra_adminversioncheck...done. com_zimbra_clientuploader...done. com_zimbra_phone...done. com_zimbra_mailarchive...done. com_zextras_chat_open...done. com_zimbra_webex...done. com_zimbra_date...done. com_zimbra_url...done. com_zimbra_attachmail...done. com_zimbra_viewmail...done. com_zimbra_proxy_config...done. com_zextras_client...done. com_zimbra_cert_manager...done. com_zimbra_srchhighlighter...done. com_zimbra_tooltip...done. com_zextras_zextras...done. Finished installing common zimlets. Installing network zimlets... com_zimbra_mobilesync...done. com_zimbra_backuprestore...done. com_zimbra_hsm...done. com_zimbra_smime_cert_admin...done. com_zimbra_securemail...done. com_zimbra_click2call_mitel...done. com_zimbra_smime...done. com_zimbra_ucconfig...done. com_zimbra_click2call_cisco...done. com_zimbra_two_factor_auth...done. com_zimbra_delegatedadmin...done. com_zimbra_license...done. com_zimbra_convertd...done. com_zimbra_voiceprefs...done. Finished installing network zimlets. Restarting mailboxd...done. Creating galsync account for default domain...done. Setting up zimbra crontab...done.
Press “enter” to finish the installation:
Moving /tmp/zmsetup.20180111-132052.log to /opt/zimbra/log Configuration complete - press return to exit
I hope you have enjoyed this blog article. Please let us know in the comments if you want to see more technical blog posts, and we will prepare many others for you.