
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
.tgzready 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
- The history of the Zimbra server — from LiquidSys to Daffodil, and why the free binary disappeared
- Zimbra 8.7.7 and the Universal UI that never shipped
- Hosting with ISPConfig — the lightweight alternative, with Postfix
- Getting to Know DNS — MX, PTR, and why your email lands in spam
- Zimbra Wiki — zmprov examples
- Zimbra Wiki — receiving problems
- zimbra-foss-builder — community-maintained FOSS builds
- Zimbra + SPFBL integration