Installing Zimbra on Ubuntu: From 8.7 to 10.1

Mascote do LinuxPro instalando o Zimbra com as maos no teclado e cabo no rack

Note (2026): this article began in April 2017, with Zimbra 8.7.1 on Ubuntu 16.04. Both versions are out of support. The text has been reorganized: first, installing the 10.1 series, which is current, and then the original 2017 walkthrough, preserved as a record. What changed most was not the command — it was the way to get the installer.

Zimbra remains the groupware closest to Exchange running on Linux: email, shared calendars, contacts, tasks, and webmail in the same appliance. And it is still heavy — Java, two HTTP servers, and a stack of processes .jar. If all you need is lightweight IMAP and webmail, ISPConfig with Postfix handles it with a fraction of the hardware. If you need the entire collaboration package, keep going.

Installing Zimbra 10.1 on Ubuntu

First things first: where to get the installer

This is the part that changed since 2017 and catches people returning to the product after years away. There is no longer that wget directly to a public tarball:

  • Network Edition and official binaries — since the 10.1 series, downloading requires a key, even for evaluation. You register on Zimbra’s portal and receive the installer along with a trial license.
  • Open Source Edition — still exists, but as source code. You compile it from zm-build, the official tool, or use community-built binaries. The best-known project is zimbra-foss-builder, by BTACTIC, which automates builds in a Docker container and publishes .tgz ready for Ubuntu and RHEL.

Notice the detail that causes confusion: “open source” and “a free official ISO without login” stopped being the same thing. The code is free; the company-signed binary is not.

Sizing

The practical recommendation from 2017 still applies, with larger numbers. For 100 to 200 accounts with heavy traffic: 8 GB of RAM or more, four cores, RAID disks, and a second volume just for backups. Less than 4 GB is for a lab and nothing more — the installer runs, but Java chokes at the first queue spike.

Preparing the system

Start with a clean Ubuntu Server — the 10.1 series lists Ubuntu 22.04 and 24.04, plus RHEL/Rocky 8 and 9. Zimbra is possessive: it wants the machine all to itself.

sudo apt update && sudo apt full-upgrade -y

# o Zimbra traz o proprio Postfix, o proprio nginx e o proprio DNS cache:
# qualquer um desses ja instalado vai brigar por porta
sudo systemctl disable --now postfix apache2 nginx bind9 2>/dev/null

# hostname precisa ser o FQDN do servidor de e-mail
sudo hostnamectl set-hostname mail.exemplo.com.br

The /etc/hosts must resolve the FQDN to the machine’s real IP — not to 127.0.1.1, which is the most common mistake and makes the installer complain about DNS:

echo "192.168.0.10  mail.exemplo.com.br  mail" | sudo tee -a /etc/hosts

And external DNS must be ready before the installation. Check all three records:

dig +short A   mail.exemplo.com.br     # aponta para o IP do servidor
dig +short MX  exemplo.com.br          # aponta para mail.exemplo.com.br
dig +short -x  192.168.0.10            # PTR reverso, pedido ao provedor do IP

Without MX, the installer stops. Without PTR, the server installs and works, but half the world will reject your email — reverse DNS is a deliverability requirement, not a whim. The post Getting to Know DNS is worth reading if that part is not clear.

The installation

cd /tmp
tar xzf zcs-10.1.21_GA_XXXX.UBUNTU24_64.202XXXXXXXXXX.tgz
cd zcs-10.1.21_GA_XXXX.UBUNTU24_64.202XXXXXXXXXX
sudo ./install.sh

Do not memorize a dependency list: install.sh checks prerequisites and tells you exactly which packages are missing on your machine. Install what it requests and run it again. Then it asks which Zimbra packages to install — on a single server, accept the default set (LDAP, MTA, Store, Proxy, SNMP) and decline zimbra-dnscache if you already have a resolver on the network.

In the configuration menu, the item marked with an asterisk is what remains to be resolved: the administrator password. Enter the item zimbra-store, choose the admin password option, set it, go back, and then apply with a and confirm with yes. From there, installation takes several minutes — time to go read the zmprov wiki.

Done. Now what?

# tudo deve responder "Running"
su - zimbra -c 'zmcontrol status'
su - zimbra -c 'zmcontrol -v'

The product lives in /opt/zimbra, under the user zimbra. The entire CLI runs as that user — never as root. The classic receiving adjustment still applies:

su - zimbra
zmprov ms `zmhostname` zimbraMtaLmtpHostLookup native
zmprov mcf zimbraMtaLmtpHostLookup native
zmmtactl restart

Access points:

  • Webmail: https://mail.exemplo.com.br/
  • Administration console: https://mail.exemplo.com.br:7071/

The firewall must allow ports 25, 80, 443, 587, 993, and 995 for public access. Port 7071, used by the administration console, must not be exposed — restrict it to your network or place it behind a VPN. Exposing an administration console to the internet is an invitation to trouble.

Keep it updated — seriously

Webmail is one of the most attacked surfaces there is, and Zimbra has a history. The CVE-2025-27915, a stored XSS triggered by an attachment .ics in the classic client, was used in a campaign against the Brazilian Armed Forces: simply opening the message let JavaScript run in the victim’s session and create a filter forwarding the entire mailbox. The fix had existed since January 27, 2025 — those hit by the attack had not patched.

Follow release notes and apply patches. The 10.1 series has General Support until 31/12/2027; 8.8.15 and 9 have already ended.

The original 2017 walkthrough (record)

Below is how the post looked when published, with Zimbra 8.7 on Ubuntu 16.04. Do not use this in production — it is here because it still helps explain the installer workflow, which has changed little in almost ten years.

On channel’s video I show the step-by-step installation of Zimbra 8.7.1 on Ubuntu 16.04 64-bit. At the time, the Zimbra package was 256 MB and the Ubuntu Server ISO about 700 MB. The stated requirements were 4 GB of RAM and 80 GB of disk for production.

apt-get update
apt-get upgrade
apt-get install libperl5.22 sysstat sqlite3 pax libhttp-date-perl
apt-get install libgetopt-mixed-perl libgmp10
apt-get install libmime-explode-perl file lvm2 libaio1

echo '
alias mailq="/opt/zimbra/common/sbin/mailq"
alias postsuper="/opt/zimbra/common/sbin/postsuper"
alias postcat="/opt/zimbra/common/sbin/postcat"
alias tmail="tail -f /var/log/mail.log"
' >> /root/.bashrc
source /root/.bashrc

cd /tmp/
wget https://files.zimbra.com/downloads/8.7.9_GA/zcs-8.7.9_GA_1794.UBUNTU16_64.20170505054622.tgz
tar -xvf zcs-8.7.9_GA_1794.UBUNTU16_64.20170505054622.tgz
cd zcs-8.7.9_GA_1794.UBUNTU16_64.20170505054622
bash install.sh

In the installer menu, the sequence was: option 6, then 4, to set the administrator password; then r, a and yes to apply. Once installed, /opt/zimbra occupied about 2,9 GB.

Video: installing Zimbra 8.7.9

To keep going