{"id":130,"date":"2017-04-06T11:01:28","date_gmt":"2017-04-06T14:01:28","guid":{"rendered":"https:\/\/www.linuxpro.com.br\/2017\/04\/install-zimbra-8\/"},"modified":"2026-09-08T03:46:23","modified_gmt":"2026-09-08T06:46:23","slug":"install-zimbra-8","status":"publish","type":"post","link":"https:\/\/www.linuxpro.com.br\/en\/2017\/04\/install-zimbra-8\/","title":{"rendered":"Installing Zimbra on Ubuntu: From 8.7 to 10.1"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" alt=\"Mascote do LinuxPro instalando o Zimbra com as maos no teclado e cabo no rack\" src=\"\/wp-content\/uploads\/2026\/09\/install-zimbra-v3.webp\" width=\"1052\" height=\"652\" \/><\/p>\n<div style=\"background:#fff8e1;border-left:4px solid #8b1a1a;padding:.8em 1em;margin:1em 0\"><strong>Note (2026):<\/strong> 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, <a href=\"#hoje\">installing the 10.1 series<\/a>, which is current, and then the original 2017 walkthrough, preserved as a record. What changed most was not the command \u2014 it was the <strong>way to get the installer<\/strong>.<\/div>\n<p>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 \u2014 Java, two HTTP servers, and a stack of processes <code data-no-translation=\"\">.jar<\/code>. If all you need is lightweight IMAP and webmail, <a href=\"\/en\/2017\/01\/hospedagem-com-ispconfig\/\">ISPConfig with Postfix<\/a> handles it with a fraction of the hardware. If you need the entire collaboration package, keep going.<\/p>\n<p><!-- more --><\/p>\n<h2 id=\"hoje\">Installing Zimbra 10.1 on Ubuntu<\/h2>\n<h3>First things first: where to get the installer<\/h3>\n<p>This is the part that changed since 2017 and catches people returning to the product after years away. There is no longer that <code data-no-translation=\"\">wget<\/code> directly to a public tarball:<\/p>\n<ul>\n<li><strong>Network Edition and official binaries<\/strong> \u2014 since the 10.1 series, downloading requires a <strong>key<\/strong>, even for evaluation. You register on Zimbra\u2019s portal and receive the installer along with a trial license.<\/li>\n<li><strong>Open Source Edition<\/strong> \u2014 still exists, but as <em>source code<\/em>. You compile it from <a href=\"https:\/\/github.com\/Zimbra\/zm-build\">zm-build<\/a>, the official tool, or use community-built binaries. The best-known project is <a href=\"https:\/\/github.com\/maldua\/zimbra-foss-builder\">zimbra-foss-builder<\/a>, by BTACTIC, which automates builds in a Docker container and publishes <code data-no-translation=\"\">.tgz<\/code> ready for Ubuntu and RHEL.<\/li>\n<\/ul>\n<p>Notice the detail that causes confusion: \u201copen source\u201d and \u201ca free official ISO without login\u201d stopped being the same thing. The code is free; the company-signed binary is not.<\/p>\n<h3>Sizing<\/h3>\n<p>The practical recommendation from 2017 still applies, with larger numbers. For 100 to 200 accounts with heavy traffic: <strong>8 GB of RAM or more<\/strong>, four cores, RAID disks, and a second volume just for backups. Less than 4 GB is for a lab and nothing more \u2014 the installer runs, but Java chokes at the first queue spike.<\/p>\n<h3>Preparing the system<\/h3>\n<p>Start with a clean Ubuntu Server \u2014 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.<\/p>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\">sudo apt update &amp;&amp; sudo apt full-upgrade -y\n\n# o Zimbra traz o proprio Postfix, o proprio nginx e o proprio DNS cache:\n# qualquer um desses ja instalado vai brigar por porta\nsudo systemctl disable --now postfix apache2 nginx bind9 2>\/dev\/null\n\n# hostname precisa ser o FQDN do servidor de e-mail\nsudo hostnamectl set-hostname mail.exemplo.com.br\n<\/code><\/pre>\n<p>The <code data-no-translation=\"\">\/etc\/hosts<\/code> must resolve the FQDN to the machine\u2019s real IP \u2014 not to <code data-no-translation=\"\">127.0.1.1<\/code>, which is the most common mistake and makes the installer complain about DNS:<\/p>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\">echo \"192.168.0.10  mail.exemplo.com.br  mail\" | sudo tee -a \/etc\/hosts\n<\/code><\/pre>\n<p>And external DNS must be ready <em>before<\/em> the installation. Check all three records:<\/p>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\">dig +short A   mail.exemplo.com.br     # aponta para o IP do servidor\ndig +short MX  exemplo.com.br          # aponta para mail.exemplo.com.br\ndig +short -x  192.168.0.10            # PTR reverso, pedido ao provedor do IP\n<\/code><\/pre>\n<p>Without MX, the installer stops. Without PTR, the server installs and works, but half the world will reject your email \u2014 reverse DNS is a deliverability requirement, not a whim. The post <a href=\"\/en\/2017\/04\/conhecendo-o-dns\/\">Getting to Know DNS<\/a> is worth reading if that part is not clear.<\/p>\n<h3>The installation<\/h3>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\">cd \/tmp\ntar xzf zcs-10.1.21_GA_XXXX.UBUNTU24_64.202XXXXXXXXXX.tgz\ncd zcs-10.1.21_GA_XXXX.UBUNTU24_64.202XXXXXXXXXX\nsudo .\/install.sh\n<\/code><\/pre>\n<p>Do not memorize a dependency list: <code data-no-translation=\"\">install.sh<\/code> 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 \u2014 on a single server, accept the default set (LDAP, MTA, Store, Proxy, SNMP) and decline <code data-no-translation=\"\">zimbra-dnscache<\/code> if you already have a resolver on the network.<\/p>\n<p>In the configuration menu, the item marked with an asterisk is what remains to be resolved: the <strong>administrator password<\/strong>. Enter the item <em>zimbra-store<\/em>, choose the admin password option, set it, go back, and then apply with <code data-no-translation=\"\">a<\/code> and confirm with <code data-no-translation=\"\">yes<\/code>. From there, installation takes several minutes \u2014 time to go read the <a href=\"https:\/\/wiki.zimbra.com\/wiki\/Zmprov_Examples\">zmprov wiki<\/a>.<\/p>\n<h3>Done. Now what?<\/h3>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\"># tudo deve responder \"Running\"\nsu - zimbra -c 'zmcontrol status'\nsu - zimbra -c 'zmcontrol -v'\n<\/code><\/pre>\n<p>The product lives in <code data-no-translation=\"\">\/opt\/zimbra<\/code>, under the user <code data-no-translation=\"\">zimbra<\/code>. The entire CLI runs as that user \u2014 never as root. The classic receiving adjustment still applies:<\/p>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\">su - zimbra\nzmprov ms `zmhostname` zimbraMtaLmtpHostLookup native\nzmprov mcf zimbraMtaLmtpHostLookup native\nzmmtactl restart\n<\/code><\/pre>\n<p>Access points:<\/p>\n<ul>\n<li><strong>Webmail:<\/strong> <code data-no-translation=\"\">https:\/\/mail.exemplo.com.br\/<\/code><\/li>\n<li><strong>Administration console:<\/strong> <code data-no-translation=\"\">https:\/\/mail.exemplo.com.br:7071\/<\/code><\/li>\n<\/ul>\n<p class=\"translation-block\">The firewall must allow ports 25, 80, 443, 587, 993, and 995 for public access. Port 7071, used by the administration console, must <strong>not<\/strong> be exposed \u2014 restrict it to your network or place it behind a VPN. Exposing an administration console to the internet is an invitation to trouble.<\/p>\n<h3>Keep it updated \u2014 seriously<\/h3>\n<p>Webmail is one of the most attacked surfaces there is, and Zimbra has a history. The <strong>CVE-2025-27915<\/strong>, a <em>stored XSS<\/em> triggered by an attachment <code data-no-translation=\"\">.ics<\/code> in the classic client, was used in a campaign against the <strong>Brazilian Armed Forces<\/strong>: simply opening the message let JavaScript run in the victim\u2019s session and create a filter forwarding the entire mailbox. The fix had existed since January 27, 2025 \u2014 those hit by the attack had not patched.<\/p>\n<p>Follow release notes and apply patches. The 10.1 series has General Support until <strong>31\/12\/2027<\/strong>; 8.8.15 and 9 have already ended.<\/p>\n<h2>The original 2017 walkthrough (record)<\/h2>\n<p>Below is how the post looked when published, with Zimbra 8.7 on Ubuntu 16.04. <strong>Do not use this in production<\/strong> \u2014 it is here because it still helps explain the installer workflow, which has changed little in almost ten years.<\/p>\n<p>On <a href=\"https:\/\/www.youtube.com\/watch?v=iG7xPekB3kE\">channel\u2019s video<\/a> 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.<\/p>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\">apt-get update\napt-get upgrade\napt-get install libperl5.22 sysstat sqlite3 pax libhttp-date-perl\napt-get install libgetopt-mixed-perl libgmp10\napt-get install libmime-explode-perl file lvm2 libaio1\n\necho '\nalias mailq=\"\/opt\/zimbra\/common\/sbin\/mailq\"\nalias postsuper=\"\/opt\/zimbra\/common\/sbin\/postsuper\"\nalias postcat=\"\/opt\/zimbra\/common\/sbin\/postcat\"\nalias tmail=\"tail -f \/var\/log\/mail.log\"\n' &gt;&gt; \/root\/.bashrc\nsource \/root\/.bashrc\n\ncd \/tmp\/\nwget https:\/\/files.zimbra.com\/downloads\/8.7.9_GA\/zcs-8.7.9_GA_1794.UBUNTU16_64.20170505054622.tgz\ntar -xvf zcs-8.7.9_GA_1794.UBUNTU16_64.20170505054622.tgz\ncd zcs-8.7.9_GA_1794.UBUNTU16_64.20170505054622\nbash install.sh\n<\/code><\/pre>\n<p>In the installer menu, the sequence was: option <strong>6<\/strong>, then <strong>4<\/strong>, to set the administrator password; then <code data-no-translation=\"\">r<\/code>, <code data-no-translation=\"\">a<\/code> and <code data-no-translation=\"\">yes<\/code> to apply. Once installed, <code data-no-translation=\"\">\/opt\/zimbra<\/code> occupied about 2,9 GB.<\/p>\n<h3>Video: installing Zimbra 8.7.9<\/h3>\n<p><iframe style=\"width:100%;aspect-ratio:16\/9;border:0\" src=\"https:\/\/www.youtube-nocookie.com\/embed\/uIH9mRUCyTg\" allowfullscreen loading=\"lazy\"><\/iframe><\/p>\n<h2>To keep going<\/h2>\n<ul>\n<li><a href=\"\/en\/2026\/09\/a-historia-do-servidor-zimbra\/\">The history of the Zimbra server<\/a> \u2014 from LiquidSys to Daffodil, and why the free binary disappeared<\/li>\n<li><a href=\"\/en\/2017\/04\/novo-zimbra-8\/\">Zimbra 8.7.7 and the Universal UI that never shipped<\/a><\/li>\n<li><a href=\"\/en\/2017\/01\/hospedagem-com-ispconfig\/\">Hosting with ISPConfig<\/a> \u2014 the lightweight alternative, with Postfix<\/li>\n<li><a href=\"\/en\/2017\/04\/conhecendo-o-dns\/\">Getting to Know DNS<\/a> \u2014 MX, PTR, and why your email lands in spam<\/li>\n<li><a href=\"https:\/\/wiki.zimbra.com\/wiki\/Zmprov_Examples\">Zimbra Wiki \u2014 zmprov examples<\/a><\/li>\n<li><a href=\"https:\/\/wiki.zimbra.com\/wiki\/Incoming_Mail_Problems\">Zimbra Wiki \u2014 receiving problems<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/maldua\/zimbra-foss-builder\">zimbra-foss-builder<\/a> \u2014 community-maintained FOSS builds<\/li>\n<li><a href=\"https:\/\/github.com\/leonamp\/SPFBL\/wiki\/Integra%C3%A7%C3%A3o-com-Zimbra---SPFBL\">Zimbra + SPFBL integration<\/a><\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>Zimbra remains the groupware platform closest to an Exchange running on Linux: email, shared calendars, contacts, tasks, and webmail in the same appliance. And it remains heavy \u2014 Java, two HTTP servers, and a stack of processes \u2026 <a title=\"Installing Zimbra on Ubuntu: From 8.7 to 10.1\" class=\"read-more\" href=\"https:\/\/www.linuxpro.com.br\/en\/2017\/04\/install-zimbra-8\/\" aria-label=\"Read more about Instalando o Zimbra no Ubuntu: do 8.7 ao 10.1\">Read more<\/a><\/p>","protected":false},"author":0,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,3,69],"tags":[79,297,14,233,403,5,70],"class_list":["post-130","post","type-post","status-publish","format-standard","hentry","category-linux","category-ubuntu","category-zimbra","tag-email","tag-groupware","tag-howto","tag-postfix","tag-servidor","tag-ubuntu","tag-zimbra"],"_links":{"self":[{"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/posts\/130","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/comments?post=130"}],"version-history":[{"count":5,"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/posts\/130\/revisions"}],"predecessor-version":[{"id":1101,"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/posts\/130\/revisions\/1101"}],"wp:attachment":[{"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/media?parent=130"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/categories?post=130"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/tags?post=130"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}