Install Zimbra 10.1.20 FOSS

Panduan komprehensif instalasi Zimbra Collaboration 10.1.20 FOSS (hasil build dari zm-build) pada Ubuntu Server 24.04 LTS dan Rocky Linux 9 / AlmaLinux 9. Dari persiapan DNS hingga security baseline production-ready.

10.1.20
Zimbra FOSS
24.04
Ubuntu LTS
Rocky 9
RHEL-compatible
install.sh
Official Installer
.tgz
Hasil Build
v1.0.5 DOC-ZCS10120-INST-ALSY-2026.08
18 Agustus 2026 Production Ready
Penulis & Maintainer: Harry Dertin Sutisna Alsyundawy
Target: Zimbra Collaboration 10.1.20 FOSS (NE rilis 20 Juli 2026)
v1.0.5 (18 Agustus 2026) — Code formatting, link fixes, full responsiveness, bugfix & optimasi Current
  • Code formatting & maintainability: Seluruh CSS dan JavaScript diformat dengan rapi, terstruktur, dan diberi komentar untuk memudahkan maintenance.
  • Link Build-Zimbra-FOSS.html: Semua tautan ke tutorial build kini menggunakan relative path dengan fallback URL https://alsyundawy.com/Build-Zimbra-FOSS.html.
  • Full responsive: Dukungan penuh untuk semua device (desktop, laptop, tablet, mobile) dan semua resolusi (VGA hingga 2K), termasuk safe area untuk iPhone notch dan Android punch-hole.
  • Bugfix: Perbaiki semua && di inline code, tambah overflow-wrap: break-word, perbaiki struktur heading, pastikan semua tag tertutup.
  • Update informasi Zimbra 10.1.20: Tambah detail dari release notes resmi Zimbra Blog: 9 vulnerabilities, permanent fix SNMP, 4 XSS, CVE-2026-50055, EWS, mailbox delegation, SSRF Nextcloud.
  • Section 8 Transfer Installer: Tambah informasi lengkap Maldua builds dengan link ke https://maldua.github.io/zimbra-foss/downloads/.
  • Section 12 Security: Update tabel CVE dengan informasi dari release notes resmi Zimbra 10.1.20.
v1.0.4 (17 Agustus 2026) — Email Deliverability, SSL/TLS mandiri, Add Domain/User/DL, Best Practices MUST/SHOULD/MAY/AVOID Previous
  • Email Validation & Deliverability: tambah Section 15 mandiri: SPF, DKIM, DMARC, PTR, MTA-STS, TLS-RPT, dan deliverability checklist lengkap.
  • SSL/TLS Certificate: pindahkan ke Section 11 mandiri dengan struktur jelas: konsep SSL/TLS, certificate types, CAA records, install certbot, generate SSL, deploy ke Zimbra, auto-renewal, commercial CA.
  • Section 10 baru — Add Domain, User & Distribution List: cara add domain via Admin Console & CLI, add user, add distribution list, dynamic DL, manage settings.
  • Ringkasan & Best Practices: restrukturisasi dengan kategori MUST / SHOULD / MAY / AVOID.
  • DNS, Hostname & Firewall: diperkaya dengan penjelasan detail setiap DNS record, tabel port lengkap, split-DNS.
  • Zimbra FOSS & License: tambah penjelasan licensing GPLv2 dan CPAL v1, LDS requirement.
v1.0.3 (17 Agustus 2026) — SSL/TLS enrichment, security deep-dive, Urutan Final, repo update Previous
  • SSL/TLS enrichment: tambah CAA record, DNS-01 challenge, certbot-zimbra, Sectigo bundle, commercial CA comparison.
  • Security deep-dive: tambah CVE-2026-49975, fail2ban, Classic Web Client XSS, CAA security, hardening checklist.
  • Urutan Final & Best Practices: tambah PHASE 6 (Disaster Recovery), quick reference URLs, distro repository table.
  • Repository & compatibility: perbarui repo URLs untuk semua distro dan Zimbra official repo.
v1.0.0 (17 Agustus 2026) — Rilis awal tutorial instalasi Previous
  • 10.1.20 NE: release resmi 20 Juli 2026 (Patch Security Severity: High).
  • FOSS status: sumber masih embargo hingga ~20 September 2026. Installer bisa dari build sendiri atau unofficial build.
  • Ubuntu 24.04: GA sejak Zimbra 10.1.17 / 10.1.18.
  • Rocky Linux 9 / Oracle Linux 9 / RHEL 9: GA resmi.
  • 10.1 active/supported major line; 10.0 EOGS sejak Juni 2025.
0

Dasar Email, Protokol, & Zimbra Collaboration

0.1 Apa Itu Email?

Email (electronic mail) adalah sistem pertukaran pesan digital antar pengguna melalui jaringan komputer. Sejak RFC 733 (1977) dan standarisasi SMTP, email menjadi protokol komunikasi paling umum di internet. Setiap pesan email melewati beberapa komponen sebelum mencapai inbox penerima.

0.2 Komponen Utama Email
Komponen Singkatan Fungsi
Mail User AgentMUAKlien email pengguna (Outlook, Thunderbird, Gmail UI, Zimbra Web Client)
Mail Transfer AgentMTAServer pengirim/penerima email (Postfix, Sendmail, Exim)
Mail Delivery AgentMDAAgen yang menempatkan email ke mailbox pengguna
Mail Submission AgentMSAMenerima email dari MUA untuk dikirim ke MTA (port 587)
0.3 Protokol Email
Protokol Port Enkripsi Fungsi
SMTP25, 465, 587STARTTLS / SSLPengiriman email antar server dan dari klien ke server
POP3110, 995STARTTLS / SSLDownload email ke lokal, typically delete dari server
IMAP143, 993STARTTLS / SSLSinkronisasi email antar device, keep di server
LMTP7025TLSLocal mail transfer protocol — antar MTA dan mailbox store
0.4 Alur Pengiriman Email

Ketika Anda mengirim email, pesan melewati rantai berikut:

  1. MUA (Zimbra Web Client / Outlook) mengirim ke MSA (Postfix submission port 587) via SMTP.
  2. MSA meneruskan ke MTA pengirim (Postfix) untuk routing.
  3. MTA melakukan DNS lookup: MX record, PTR validasi, SPF, DKIM signing.
  4. Email melewati internet hingga MTA penerima (Postfix Zimbra).
  5. MDA (Postfix + LMTP) menyerahkan ke mailbox store (Jetty + MariaDB).
  6. MUA penerima mengambil email via IMAP/POP3 atau akses via webmail (Nginx proxy).
Contoh alur SMTP
# 1. MUA -> MSA (submission)
openssl s_client -starttls smtp -connect mail.example.com:587

# 2. MSA -> MTA (MX lookup)
dig MX example.com

# 3. MTA -> MTA (SMTP relay)
openssl s_client -starttls smtp -connect mail.example.com:25

# 4. MUA fetch via IMAP
openssl s_client -connect mail.example.com:993 -crlf
0.5 DNS Records untuk Email

DNS adalah fondasi deliverability email. Record yang wajib dan direkomendasikan. Untuk Certificate Authority (CA) seperti Let's Encrypt dan Sectigo, tambahkan CAA record untuk mengontrol CA mana yang diperbolehkan menerbitkan certificate untuk domain Anda:

Contoh CAA Record & SPF
# CAA — izinkan Let's Encrypt dan Sectigo
example.com.  IN  CAA  0 issue "letsencrypt.org"
example.com.  IN  CAA  0 issue "sectigo.com"
example.com.  IN  CAA  0 issuewild "letsencrypt.org"
example.com.  IN  CAA  0 issuewild "sectigo.com"

# SPF
v=spf1 mx a:mail.example.com ip4:<PUBLIC-IP> -all
Record Tipe Contoh Nilai Wajib
AAmail.example.com -> 1.2.3.4Ya
MXMXexample.com -> mail.example.comYa
PTRPTR4.3.2.1.in-addr.arpa -> mail.example.comYa
SPFTXTv=spf1 mx a:mail.example.com ip4:1.2.3.4 -allYa
DKIMTXTselector._domainkey.example.comYa
DMARCTXTv=DMARC1; p=quarantine; rua=mailto:[email protected]Ya
MTA-STSTXT_mta-sts.example.comRekomendasi
TLS-RPTTXT_smtp._tls.example.comRekomendasi
CAATXT0 issue "letsencrypt.org"Rekomendasi
0.6 Apa Itu Zimbra Collaboration?

Zimbra Collaboration Suite (ZCS) adalah platform messaging dan kolaborasi open source yang menggabungkan email, calendar, kontak, tasks, dan file sharing dalam satu antarmuka web. Zimbra menggunakan komponen open source terkemuka: Postfix (MTA), MariaDB (database), OpenLDAP (directory), Nginx (reverse proxy), Jetty (web app server), OpenDKIM (DKIM signing), ClamAV (anti-virus), dan SpamAssassin (anti-spam).

0.7 Arsitektur Zimbra

Zimbra dapat berjalan sebagai single-server (semua komponen dalam satu host) atau multi-server (MTA, mailbox, proxy terpisah). Untuk instalasi FOSS single-server:

Paket Fungsi Port
zimbra-ldapDirectory service, autentikasi, GAL389
zimbra-storeMailbox store, Jetty web server, IMAP/POP3143, 993, 110, 995
zimbra-mtaPostfix MTA + Amavis + SpamAssassin + ClamAV25, 465, 587
zimbra-proxyNginx reverse proxy + memcached80, 443, 7072
zimbra-snmpSNMP monitoring (opsional)161
zimbra-apacheApache HTTPD untuk convertd/admin7071 (Admin Console)
0.8 Zimbra FOSS vs Network Edition (NE)
Fitur FOSS Network Edition
HargaGratis, tanpa biaya lisensiBerbayar per seat
UsersUnlimitedBerdasarkan lisensi
ActiveSyncTidak tersediaYa (Zimbra Mobile NG)
MAPI/Outlook ConnectorTidak tersediaYa
Backup NGTidak tersedia (gunakan zmbackup/rsync)Ya
Archiving & DiscoveryTidak tersediaYa
HSM NGTidak tersediaYa
SupportCommunity (forums, wiki)Commercial (Zimbra Support)
Source codeEmbargo sampai ~Sep 2026Tersedia untuk customer
0.9 Zimbra FOSS & Lisensi

Zimbra FOSS (Open Source Edition) dilisensikan di bawah dua lisensi utama:

  • Server Code: GNU General Public License v2 (GPLv2) — Anda bebas menggunakan, memodifikasi, dan mendistribusikan ulang selama mematuhi ketentuan GPLv2.
  • Web Client Code: Common Public Attribution License v1.0 (CPAL) — lisensi open source yang diakui OSI.

Zimbra FOSS dapat digunakan secara gratis tanpa batasan jumlah user atau mailbox. Namun, Zimbra 10.1+ memperkenalkan License Daemon Service (LDS) yang tetap berjalan meskipun FOSS — LDS bertanggung jawab untuk validasi fitur dan licensing internal. Tanpa LDS yang berjalan, akun tidak dapat mengirim/menerima email.

Catatan Licensing: Zimbra FOSS tidak memerlukan license key atau aktivasi berbayar. LDS yang berjalan di FOSS hanya melakukan validasi internal dan tidak memblokir fungsionalitas dasar. Namun, jika LDS mati atau gagal, layanan email akan terganggu — pastikan zimbra-license-daemon selalu running.
0.10 Mengapa Memilih Zimbra FOSS?

Zimbra FOSS menjadi pilihan kuat untuk organisasi yang membutuhkan kontrol penuh atas infrastruktur email tanpa biaya lisensi:

  • Gratis & Open Source: Tidak ada biaya per-user atau per-server. Akses source code (setelah embargo) untuk audit dan customisasi.
  • Self-Hosted & Privasi: Data email tetap di server Anda. Tidak ada vendor lock-in atau ketergantungan cloud.
  • Stack Terbuka: Berbasis Postfix, MariaDB, OpenLDAP, Nginx — teknologi standar industri yang didokumentasikan dengan baik.
  • Standar Protokol: Mendukung IMAP, POP3, SMTP, CalDAV, CardDAV — kompatibel dengan semua klien email standar.
  • Scalable: Dari single-server hingga cluster multi-node dengan load balancing.
  • Community: Forum aktif, dokumentasi wiki, dan community builds (Maldua, techfiles.online).
  • Production-Ready: Zimbra 10.1.20 FOSS mencakup semua komponen inti yang dibutuhkan untuk operasi email production: MTA, webmail, calendar, kontak, dan admin console.
Catatan: Zimbra FOSS tidak menyertakan fitur berbayar seperti ActiveSync (mobile sync proprietary), MAPI connector untuk Outlook, Backup NG, Archiving & Discovery, HSM NG, dan OnlyOffice NE integration. Jika membutuhkan fitur tersebut, pertimbangkan Network Edition dengan lisensi resmi.
1

Ringkasan & Status (per 18 Agustus 2026)

Panduan ini menjelaskan cara menginstal Zimbra Collaboration 10.1.20 FOSS yang telah Anda bangun sendiri menggunakan zm-build (lihat Tutorial Build Zimbra 10.1.20 FOSS) pada dua platform yang didukung secara GA:

  • Ubuntu Server 24.04 LTS amd64
  • Rocky Linux 9 amd64 (RHEL-compatible, GA resmi bersama RHEL 9 & Oracle Linux 9). AlmaLinux 9 dapat digunakan karena binary-compatible, namun Rocky 9 adalah target resmi yang direkomendasikan.

Hasil akhir adalah server Zimbra siap production dengan DNS, TLS, firewall, dan security baseline yang benar.

Prinsip utama: Install hanya di VM/server bersih (bukan di mesin build). Jangan menginstal Zimbra di server yang sudah menjalankan Postfix, Sendmail, Apache, Nginx, OpenLDAP, atau MySQL/MariaDB lain. Satu hostname = satu Zimbra instance.
Status FOSS (per 18 Agustus 2026): Zimbra Collaboration Network Edition 10.1.20 rilis resmi 20 Juli 2026 dengan Patch Security Severity: High dan Deployment Risk: Low[reference:0]. Total 9 vulnerabilities diperbaiki termasuk permanent fix untuk SNMP command injection, 4 stored XSS di Classic Web Client, CVE-2026-50055 (mail forwarding bypass), EWS access control, mailbox delegation authorization, dan SSRF di Nextcloud[reference:1][reference:2]. Sumber FOSS di organisasi GitHub Zimbra untuk 10.1.20 masih berstatus embargo hingga sekitar 20 September 2026. Anda bisa menggunakan installer zcs-10.1.20-*.tgz dari beberapa sumber: (1) build sendiri menggunakan zm-build (lihat Tutorial Build Zimbra 10.1.20 FOSS), (2) unofficial build dari Maldua (lihat Section 8), atau (3) unofficial build di https://techfiles.online/zimbra/. Community builds (Maldua dkk.) saat ini mencapai 10.1.16.p1 untuk stable, dengan Recent dan Experimental menyusul.
2

Persyaratan Sistem & Prasyarat

Spesifikasi Minimum & Rekomendasi
Komponen Minimum Rekomendasi Produksi
CPU 4 vCPU 8–16 vCPU
RAM 8 GB 16–32 GB (lebih untuk >200 mailbox)
Storage (/opt) 50 GB 100 GB+ NVMe + ruang mailbox terpisah
Network 1 Gbps, IP publik 1 Gbps+ + PTR yang konsisten
Architecture amd64 (x86_64) saja
  • OS bersih (minimal install) — tanpa MTA, web server, atau directory service lain.
  • FQDN valid (contoh: mail.example.com).
  • DNS A, MX, dan PTR sudah benar sebelum instalasi.
  • Akses root / sudo.
  • Installer zcs-10.1.20-*.tgz hasil build Anda.
  • Waktu server disinkronkan (chrony/NTP).
3

DNS, Hostname FQDN & Firewall

3.1 DNS Wajib Benar Sebelum Instalasi

Zimbra memeriksa MX record saat membuat domain. Tanpa A + MX + PTR yang konsisten, pengiriman keluar sering ditolak atau masuk spam. DNS yang benar adalah fondasi deliverability email.

3.1.1 A Record

A record menghubungkan hostname dengan alamat IP publik server. Contoh:

A Record
mail.example.com.  IN  A  1.2.3.4
3.1.2 MX Record

MX record menentukan server mana yang bertanggung jawab menerima email untuk domain. Zimbra memerlukan MX record yang menunjuk ke A record server.

MX Record
example.com.  IN  MX  10  mail.example.com.
3.1.3 PTR Record (Reverse DNS)

PTR record adalah kebalikan dari A record — mapping IP ke hostname. Banyak email server menerima menolak email dari IP tanpa PTR yang valid. PTR harus dikonfigurasi oleh provider VPS/ISP Anda.

PTR Record
4.3.2.1.in-addr.arpa.  IN  PTR  mail.example.com.
3.1.4 SPF, DKIM, DMARC

Ketiga mekanisme ini adalah wajib untuk deliverability email modern. Detail implementasi dibahas di Section 15 — Email Validation & Deliverability.

3.1.5 CAA Record

CAA (Certificate Authority Authorization) adalah DNS record yang mengontrol CA mana yang diperbolehkan menerbitkan certificate untuk domain Anda. Tambahkan sebelum requesting certificate:

CAA Record
example.com.  IN  CAA  0 issue "letsencrypt.org"
example.com.  IN  CAA  0 issue "sectigo.com"
example.com.  IN  CAA  0 issuewild "letsencrypt.org"
example.com.  IN  CAA  0 issuewild "sectigo.com"
3.1.6 MTA-STS & TLS-RPT

MTA-STS (Mail Transfer Agent Strict Transport Security) dan TLS-RPT (TLS Reporting) adalah mekanisme untuk enforce TLS pada komunikasi email dan menerima laporan kegagalan TLS. Implementasi direkomendasikan untuk meningkatkan security posture.

3.2 Verifikasi DNS
Test DNS
dig +short A mail.example.com
dig +short MX example.com
dig +short -x <PUBLIC-IP>
# Semua harus konsisten sebelum lanjut
3.3 Set Hostname FQDN
Hostname
sudo hostnamectl set-hostname mail.example.com
# Edit /etc/hosts — pastikan ada baris:
# <IP-INTERNAL-ATAU-PUBLIK>  mail.example.com mail
hostname -f
# Harus: mail.example.com
3.4 Firewall Port Minimal

Buka hanya yang diperlukan. Jangan membuka 1–65535/tcp. Port internal (LDAP 389, LMTP 7025, backend 8080/8443) sebaiknya tidak diekspos ke internet.

Port Protokol Fungsi Ekspos
25TCPSMTP inbound (Postfix)Publik
465 / 587TCPSMTPS / SubmissionPublik
110 / 995TCPPOP3 / POP3SPublik (opsional)
143 / 993TCPIMAP / IMAPSPublik
80 / 443TCPHTTP / HTTPS (proxy/Nginx)Publik
7071TCPAdmin ConsoleBatasi IP/VPN
389 / 636TCPLDAP / LDAPSInternal only
7025TCPLMTP (mailbox delivery)Internal only
8080 / 8443TCPBackend HTTP/HTTPSInternal only
7072TCPNginx lookup backend HTTPInternal only
11211TCPMemcached (wajib jika proxy aktif)Internal only
UFW (Ubuntu)
sudo ufw allow OpenSSH
sudo ufw allow 25/tcp
sudo ufw allow 80/tcp
sudo ufw allow 110/tcp
sudo ufw allow 143/tcp
sudo ufw allow 443/tcp
sudo ufw allow 465/tcp
sudo ufw allow 587/tcp
sudo ufw allow 993/tcp
sudo ufw allow 995/tcp
# Admin: batasi ke IP kantor/VPN bila memungkinkan
sudo ufw allow from <ADMIN-IP> to any port 7071 proto tcp
# Port internal (jika firewall terpisah): LDAP 389, LMTP 7025, backend 8080/8443, memcached 11211
sudo ufw enable
sudo ufw status verbose
3.5 Split-DNS untuk Environment NAT

Jika server Zimbra berada di belakang NAT (misalnya di VPC dengan IP private), Anda perlu mengonfigurasi split-DNS:

  • DNS publik: A record menunjuk ke IP publik router/NAT.
  • DNS internal (di server Zimbra atau DNS lokal): A record menunjuk ke IP private server.
  • Zimbra akan menggunakan DNS internal untuk resolusi, sementara email dari internet akan mencapai server melalui NAT.
Split-DNS dengan /etc/hosts (alternatif sederhana)
# Di /etc/hosts
# IP private untuk komunikasi internal
192.168.1.100  mail.example.com mail

# Untuk production, gunakan DNS server internal (dnsmasq/bind) daripada /etc/hosts
Best Practice: Untuk production, gunakan DNS server internal (dnsmasq atau bind) daripada mengandalkan /etc/hosts. Split-DNS memastikan Zimbra dapat meresolve hostname sendiri dengan benar tanpa bergantung pada DNS publik yang mungkin memiliki latency atau rate-limiting.
4

Ubuntu Server 24.04 LTS — Persiapan OS

4.1 Update & Hostname
Update Ubuntu
sudo hostnamectl set-hostname mail.example.com
sudo apt update
sudo apt full-upgrade -y
sudo reboot
4.2 Nonaktifkan Layanan yang Bentrok
Hapus MTA & Konflik
sudo systemctl disable --now postfix 2>/dev/null || true
sudo apt purge -y postfix sendmail exim4* 2>/dev/null || true
sudo apt autoremove -y

# Pastikan tidak ada proses yang mendengarkan port 25/80/443/389
sudo ss -tlnp | grep -E ':25|:80|:443|:389|:3306' || echo "Ports clear"

# Nonaktifkan UFW selama instalasi (aktifkan kembali setelah install selesai)
sudo ufw disable
4.3 systemd-resolved (penting di Ubuntu 24.04)

Ubuntu 24.04 menjalankan systemd-resolved yang mengikat port 53. Jika Anda memasang zimbra-dnscache atau memakai dnsmasq lokal, port 53 harus bebas. Untuk DNS eksternal (direkomendasikan), nonaktifkan resolved dan set resolver statis.

Nonaktifkan systemd-resolved
sudo systemctl disable --now systemd-resolved
sudo systemctl mask systemd-resolved 2>/dev/null || true

# Ganti symlink resolv.conf dengan file statis
sudo rm -f /etc/resolv.conf
echo "nameserver 1.1.1.1" | sudo tee /etc/resolv.conf
echo "nameserver 8.8.8.8" | sudo tee -a /etc/resolv.conf
echo "nameserver 9.9.9.9" | sudo tee -a /etc/resolv.conf

# Verifikasi resolusi
dig +short google.com
dig +short A mail.example.com
Catatan systemd-resolved (Ubuntu 24.04): Zimbra 10.1.20 masih memaksa dependensi systemd-resolved pada Ubuntu 24.04 (berdasarkan zimbra-os-requirements). Jika Anda menggunakan DNS eksternal, mask resolved setelah instalasi OS dan sebelum menjalankan install.sh: sudo systemctl mask systemd-resolved && sudo rm -f /etc/resolv.conf && echo "nameserver 1.1.1.1" | sudo tee /etc/resolv.conf. Zimbra berencana menghapus dependensi ini pada rilis mendatang. Package resolvconf tidak tersedia di Ubuntu 24.04 — jangan coba install.
5

Dependency Ubuntu 24.04

Paket yang Diperlukan
sudo apt update
sudo apt install -y \
    wget curl gnupg2 ca-certificates \
    apt-transport-https software-properties-common \
    net-tools dnsutils \
    libidn11 libpcre3 libgmp10 libexpat1 \
    libstdc++6 libperl5.38 libaio1t64 \
    resolvconf unzip pax sysstat \
    sqlite3 netcat-openbsd \
    openssh-client sudo

# Verifikasi
hostname -f
java -version 2>/dev/null || echo "Java akan diinstal oleh Zimbra"
perl -v | head -2
6

Rocky Linux 9 / AlmaLinux 9 — Persiapan OS

Rocky Linux 9 adalah target resmi. AlmaLinux 9 binary-compatible dan biasanya berjalan baik, namun pastikan Anda memahami bahwa official matrix mencantumkan Rocky / RHEL / Oracle.

6.1 Hostname & Update
Update Rocky/Alma
sudo hostnamectl set-hostname mail.example.com
sudo dnf update -y
sudo reboot
6.2 SELinux & Firewalld
SELinux & Firewall
# Untuk instalasi awal, set SELinux ke permissive (rekomendasi Zimbra docs)
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config

# Nonaktifkan firewalld selama instalasi (aktifkan kembali & konfigurasi setelah install selesai)
sudo systemctl disable --now firewalld

# Pastikan tidak ada MTA aktif
sudo systemctl disable --now postfix 2>/dev/null || true
sudo dnf remove -y postfix sendmail 2>/dev/null || true
Firewalld setelah instalasi: Setelah ./install.sh selesai, aktifkan firewalld dan buka port yang diperlukan: sudo systemctl enable --now firewalld && sudo firewall-cmd --permanent --add-service=smtp && sudo firewall-cmd --permanent --add-service=smtps && sudo firewall-cmd --permanent --add-service=imaps && sudo firewall-cmd --permanent --add-service=pop3s && sudo firewall-cmd --permanent --add-service=http && sudo firewall-cmd --permanent --add-service=https && sudo firewall-cmd --permanent --add-port=587/tcp && sudo firewall-cmd --permanent --add-port=7071/tcp && sudo firewall-cmd --reload. Batasi port 7071 ke IP admin/VPN.
7

Dependency Rocky Linux 9 / AlmaLinux 9

Paket yang Diperlukan
sudo dnf install -y epel-release
sudo dnf config-manager --set-enabled crb
sudo dnf update -y

sudo dnf install -y \
    wget curl gnupg2 ca-certificates \
    net-tools bind-utils \
    perl nmap-ncat \
    sysstat unzip pax \
    libaio libidn \
    openssh-clients sudo \
    which

# Pastikan tidak ada MTA aktif
sudo systemctl disable --now postfix 2>/dev/null || true
sudo dnf remove -y postfix sendmail 2>/dev/null || true

hostname -f
# Harus menampilkan FQDN
8

Transfer & Extract Installer

8.1 Sumber Installer

Installer zcs-10.1.20-*.tgz dapat diperoleh dari beberapa sumber:

8.1.1 Build Sendiri (Official Source)

Menggunakan zm-build dari source code Zimbra FOSS. Lihat Tutorial Build Zimbra 10.1.20 FOSS. Metode ini memberikan kontrol penuh atas proses build dan hasil akhir.

8.1.2 Maldua's Zimbra FOSS Builds (Community Build)

Maldua menyediakan community-driven FOSS builds yang setara dengan Zimbra OSE/Community Edition. Sumber daya utama:

  • Download Page: https://maldua.github.io/zimbra-foss/downloads/
  • Jenis Rilis: Stable, Recent, dan Experimental
  • Platform Didukung: RHEL 7/8/9, Oracle Linux 7/8/9, Rocky Linux 8/9, Ubuntu 18.04/20.04/22.04[reference:3][reference:4]
  • Pimbra Patches: Build Maldua sejak 10.1.5, 10.0.13, dan 9.0.0.p44 menyertakan Pimbra patches untuk meningkatkan keamanan[reference:5]
Disclaimer Penting: Build Maldua bukan official build Zimbra/Synacor. Disediakan "as is" tanpa garansi, termasuk implied warranties of MERCHANTABILITY atau FITNESS FOR A PARTICULAR PURPOSE[reference:6].

Jadwal Rilis Maldua:

  • Recent releases dibangun 1 minggu setelah Network Edition (NE) counterpart diumumkan
  • Stable releases adalah Recent releases yang telah lolos uji 15 hari tanpa feedback negatif
  • Experimental releases adalah rilis beta yang menyertakan Pimbra patches tambahan[reference:7]

Notifikasi Rilis Baru: Subscribe ke GitHub Discussions untuk mendapatkan notifikasi rilis baru: Stable, Recent, dan Experimental.

Status Terkini (per 18 Agustus 2026): Stable release terakhir Maldua adalah 10.1.16.p1. Untuk Zimbra 10.1.20, kemungkinan besar tersedia di kategori Recent atau Experimental karena masih dalam masa uji 15 hari setelah rilis NE (20 Juli 2026).

8.1.3 techfiles.online (Unofficial Build)

Alternatif lain dari https://techfiles.online/zimbra/. Verifikasi integritas file sedapat mungkin.

8.2 Transfer & Extract

Salin file installer ke server target (bukan mesin build) dan extract:

SCP & Extract
# Dari mesin build / workstation
scp zcs-10.1.20*.tgz [email protected]:/root/

# Atau download langsung dari Maldua (contoh untuk RHEL 8/9)
wget https://github.com/maldua/zimbra-foss/releases/download/zimbra-foss-build-rhel-8/10.1.16.p1/zcs-10.1.16_GA_4200001.RHEL8_64.20260310121612.tgz

# Di server target
cd /root
sha256sum zcs-10.1.20*.tgz   # cocokkan dengan checksum (jika dari build sendiri)
# Untuk build Maldua, verifikasi dengan MD5 dan SHA256 yang tersedia
tar xzf zcs-10.1.20*.tgz
cd zcs-10.1.20*
ls -la
# Harus ada install.sh
Jangan hanya percaya nama file. Pastikan string versi yang diinginkan ada di dalam archive. Untuk build Maldua, verifikasi integritas menggunakan MD5 dan SHA256 yang disediakan di halaman download. Jika dari build sendiri, validasi SHA256 + grep seperti di panduan Build.
9

Menjalankan install.sh & Post-Install Validasi

9.1 Menjalankan install.sh
Jalankan sebagai root. Proses interaktif. Siapkan password admin yang kuat, domain, dan keputusan komponen (umumnya install semua kecuali yang tidak diperlukan).
Mulai Instalasi
cd /root/zcs-10.1.20*
sudo ./install.sh
9.2 Panduan Jawaban Interaktif
  • Agree license → Y
  • Use Zimbra package repository? → biasanya Y (mengambil dependency OS dari repo resmi) atau N jika offline penuh
  • Domain name → masukkan domain (contoh: example.com)
  • Admin password → password kuat (simpan di password manager / vault)
  • Konfirmasi konfigurasi → Y lalu tunggu selesai
9.3 Rekomendasi Pilihan Paket (Single-Server FOSS)

Stack internal Zimbra meliputi Postfix (MTA), MariaDB, OpenLDAP, Nginx (proxy), Jetty, Lucene, ClamAV, SpamAssassin, dan OpenDKIM. Untuk satu server:

v10.1.20 packages: Pastikan patch package terpasang: zimbra-patch, zimbra-mta-patch, zimbra-proxy-patch, zimbra-ldap-patch, zimbra-lds-patch, zimbra-license-tools. Verifikasi dengan zmcontrol -v dan rpm -qa | grep zimbra (Rocky) atau dpkg -l | grep zimbra (Ubuntu).
Paket Pilihan Catatan
zimbra-ldapYDirectory service (wajib)
zimbra-loggerYMonitoring/log
zimbra-mtaYPostfix + Amavis + SpamAssassin + ClamAV
zimbra-dnscacheNPilih N jika DNS eksternal / dnsmasq sendiri sudah siap
zimbra-snmpYMonitoring SNMP (10.1.20 memperbaiki CVE terkait)
zimbra-storeYMailbox store (wajib)
zimbra-apacheYKomponen web pendukung
zimbra-spellYSpell check
zimbra-memcachedYWajib jika proxy diaktifkan
zimbra-proxyYNginx reverse proxy — sangat disarankan
Instalasi dapat memakan waktu 15–45 menit tergantung hardware. Jangan interupsi proses. Log tersedia di /opt/zimbra/log/ setelah selesai. FOSS tidak menyertakan fitur Network Edition (OnlyOffice NE, mobile sync proprietary, dll.). Catatan proxy: Zimbra 10 menggunakan Nginx sebagai reverse proxy (menggantikan Apache-based proxy pada versi lama). Config di /opt/zimbra/conf/nginx.conf digenerate otomatis dari template — jangan edit langsung. Gunakan zmprov / zmlocalconfig lalu zmproxyctl restart. Paket zimbra-proxy otomatis memilih zimbra-memcached.
9.4 Cek Status Layanan
zmcontrol status
su - zimbra
zmcontrol status
# Semua service penting harus Running

zmcontrol -v
# Target: 10.1.20 ... FOSS edition
9.5 Akses Admin Console & Webmail
  • Admin Console: https://mail.example.com:7071
  • Webmail: https://mail.example.com
  • Login admin: [email protected] + password yang Anda set
9.6 Database & Internal Services

Zimbra menggunakan MariaDB internal di /opt/zimbra/db/ dan /opt/zimbra/mariadb/, tidak memakai MySQL eksternal. Port default: 7306 (localhost only). Integritas database dicek otomatis setiap minggu via cron zmbintegrityreport. Jangan jalankan MariaDB/MySQL eksternal di server yang sama — akan terjadi konflik port dan data.

9.7 License Daemon Service (LDS)

Zimbra 10.1+ memerlukan zimbra-license-daemon (LDS) untuk validasi licensing internal. Tanpa LDS, akun tidak dapat mengirim/menerima email. Verifikasi setelah instalasi:

Verifikasi LDS
su - zimbra
zmcontrol status | grep -i license
# Harus: license daemon Running
10

Add Domain, User & Distribution List

10.1 Add Domain

Setelah instalasi, Zimbra secara otomatis membuat domain yang Anda masukkan saat instalasi. Untuk menambah domain tambahan:

Via Admin Console
  1. Login ke Admin Console: https://mail.example.com:7071
  2. Navigasi ke Configure → Domains
  3. Klik New dan masukkan nama domain
  4. Pilih Finish
Via CLI (zmprov)
Add Domain via CLI
su - zimbra
zmprov cd domain2.com
zmprov md domain2.com zimbraMailStatus enabled
zmprov md domain2.com zimbraGalMode both

# Verifikasi
zmprov gadl | grep domain2.com
10.2 Add User Account
Via Admin Console
  1. Login ke Admin Console
  2. Navigasi ke Manage → Accounts
  3. Klik New dan pilih User Account
  4. Isi: First Name, Last Name, Email Address (contoh: [email protected])
  5. Set password dan pilih COS (Class of Service)
  6. Klik Finish
Via CLI (zmprov)
Add User via CLI
su - zimbra
zmprov ca [email protected] 'Password123!' displayName 'User Name' givenName User sn Name

# Set password (jika belum)
zmprov sp [email protected] 'NewPassword123!'

# Set COS (jika perlu)
zmprov ma [email protected] zimbraCOSid <COS-ID>

# Verifikasi
zmprov ga [email protected] displayName mail
10.3 Add Distribution List

Distribution list (DL) adalah grup email yang memungkinkan pengiriman ke banyak penerima sekaligus.

Via Admin Console
  1. Login ke Admin Console
  2. Navigasi ke Manage → Distribution Lists
  3. Klik New
  4. Masukkan nama DL (contoh: [email protected])
  5. Pilih type: Standard (static) atau Dynamic (LDAP-based)
  6. Klik Finish
Via CLI (zmprov)
Add Distribution List
su - zimbra
zmprov cdl [email protected]
zmprov adlm [email protected] [email protected] [email protected]
zmprov adlm [email protected] [email protected]

# Tambahkan alias
zmprov adla [email protected] [email protected]

# Verifikasi
zmprov gadl | grep support
zmprov gdlm [email protected]
10.4 Add Members to Distribution List
Manage DL Members
# Add single member
zmprov adlm [email protected] [email protected]

# Add multiple members
zmprov adlm [email protected] [email protected] [email protected]

# Remove member
zmprov rdlm [email protected] [email protected]

# List all members
zmprov gdlm [email protected]

# List all distribution lists
zmprov gadl
10.5 Dynamic Distribution List

Dynamic DL menggunakan filter LDAP untuk menentukan anggota secara otomatis berdasarkan atribut.

Dynamic DL
su - zimbra
zmprov cdl [email protected]
zmprov mdl [email protected] zimbraDynamicGroupMembershipAttr memberURL
zmprov mdl [email protected] zimbraMailDeliveryAddress [email protected]
zmprov mdl [email protected] zimbraDynamicGroupURL \
  "ldap:///??sub?(&(objectClass=zimbraAccount)(mail=*@domain.com))"
# Anggota akan otomatis semua akun di domain
10.6 Manage Domain & User Settings
Domain & User Management
# Set default COS untuk domain
zmprov md domain.com zimbraDefaultCOSId <COS-ID>

# Set quota untuk user
zmprov ma [email protected] zimbraMailQuota 10485760

# Set alias untuk user
zmprov aaa [email protected] [email protected]

# Delete user
zmprov da [email protected]

# List all users in domain
zmprov sa domain.com
10.7 Best Practices Manajemen User & Domain
  • Gunakan COS (Class of Service) untuk mengelola quota, features, dan privilege secara terpusat.
  • Buat distribution list dengan owner yang bertanggung jawab mengelola keanggotaan.
  • Limit dynamic DL dengan filter yang spesifik untuk menghindari unexpected members.
  • Audit secara berkala daftar user dan DL yang tidak aktif.
  • Gunakan alias untuk memudahkan pengelompokan dan migrasi.
11

Sertifikat SSL/TLS — Let's Encrypt, Certbot & Commercial CA

Zimbra FOSS mendukung penempatan certificate sendiri. Setelah instalasi, ganti self-signed dengan certificate yang valid: Let's Encrypt (gratis, otomatis via Certbot) atau Commercial CA (Sectigo, DigiCert, GlobalSign, dll.). Pastikan chain lengkap dan restart proxy/mailbox.

11.1 Konsep Dasar SSL/TLS

SSL/TLS (Secure Sockets Layer / Transport Layer Security) adalah protokol kriptografi yang mengamankan komunikasi jaringan. Untuk email/webmail, TLS menyediakan:

  • Enkripsi: Data tidak dapat dibaca oleh pihak ketiga selama transmisi.
  • Autentikasi: Memastikan server yang Anda hubungi adalah yang sebenarnya (via certificate).
  • Integritas: Data tidak dapat diubah selama transmisi tanpa terdeteksi.

Certificate Authority (CA) adalah entitas tepercaya yang menerbitkan dan menandatangani certificate. Let's Encrypt adalah CA publik gratis; Sectigo, DigiCert, GlobalSign adalah CA komersial berbayar.

11.2 Certificate Types & Validity
Type Validation Validity Issuance Use Case
DV (Domain Validation)Domain control only199 daysMinutesPersonal, testing, low-risk
OV (Organization Validation)Domain + business verification199 days1–3 business daysBusiness, internal tools
EV (Extended Validation)Rigorous org verification199 days1–5 business daysE-commerce, high-trust
WildcardDV/OV/EV199 daysMinutes–daysMultiple subdomains (*.example.com)
Multi-Domain/UCC/SANDV/OV/EV199 daysMinutes–daysMultiple domains in one cert
CA/Browser Forum requirement (2026): SSL/TLS certificates are issued with maximum 199 days validity. Multi-year subscriptions lock pricing but require reissuance within the term. Let's Encrypt certificates are 90 days with automated renewal.
11.3 CAA Records & DNS-01 Challenge

CAA (Certificate Authority Authorization) adalah DNS record yang mengontrol CA mana yang diperbolehkan menerbitkan certificate untuk domain Anda. Tambahkan CAA record sebelum requesting certificate:

Contoh CAA Record
# Izinkan Let's Encrypt dan Sectigo
# Untuk domain utama (example.com):
0 issue "letsencrypt.org"
0 issue "sectigo.com"
0 issuewild "letsencrypt.org"
0 issuewild "sectigo.com"

# Verifikasi dengan dig:
dig +short CAA example.com

Untuk wildcard certificate (*.example.com), Let's Encrypt memerlukan DNS-01 challenge. Buat TXT record di _acme-challenge.example.com:

Wildcard via DNS-01 (Certbot)
# Generate wildcard cert dengan DNS-01
sudo certbot certonly \
  --dns-cloudflare \
  --dns-cloudflare-credentials ~/.secrets/cloudflare.ini \
  -d example.com -d "*.example.com" \
  --preferred-chain "ISRG Root X2" \
  --agree-tos --register-unsafely-without-email

# Atau manual dengan plugin DNS lainnya:
# --dns-route53, --dns-google, --dns-digitalocean, dll.
11.4 Install Certbot
Ubuntu 24.04

Certbot tersedia di repo universe. Dua metode instalasi: APT (stabil, terintegrasi OS) atau Snap (versi terbaru).

Install Certbot (APT — recommended)
sudo apt update
sudo apt install -y certbot python3-certbot-nginx
# Untuk Apache:
# sudo apt install -y certbot python3-certbot-apache
Install Certbot (Snap — latest)
sudo snap install certbot --classic
sudo ln -s /snap/bin/certbot /usr/bin/certbot
Penting: Jangan install certbot via APT dan Snap secara bersamaan. Kedua timer akan saling bersaing mengelola certificate di /etc/letsencrypt/. Pilih satu metode saja.
RHEL 9 / Rocky 9 / AlmaLinux 9 / Oracle Linux 9

Di RHEL-compatibles, certbot disediakan melalui EPEL 9. CRB/CodeReady Builder harus diaktifkan terlebih dahulu.

Install Certbot (EPEL)
# 1. Enable CRB/CodeReady Builder
sudo dnf config-manager --set-enabled crb
# Oracle Linux: sudo dnf config-manager --set-enabled ol9_codeready_builder

# 2. Install EPEL release
sudo dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm

# 3. Install Certbot + Nginx plugin
sudo dnf install -y certbot python3-certbot-nginx

# Untuk Apache:
# sudo dnf install -y certbot python3-certbot-apache mod_ssl
11.5 Generate SSL dengan Certbot

Tiga metode untuk mendapatkan certificate: Standalone, Webroot, atau Nginx/Apache plugin. Untuk Zimbra, gunakan Standalone atau Webroot karena Zimbra menggunakan Nginx internal yang dikelola oleh zmproxyctl.

Method 1: Standalone (port 80 harus bebas)
# Stop Zimbra proxy agar port 80 bebas
sudo su - zimbra -c "/opt/zimbra/bin/zmproxyctl stop"

# Generate cert
sudo certbot certonly --standalone -d mail.example.com \
  --preferred-chain "ISRG Root X2" \
  --agree-tos --register-unsafely-without-email

# Start Zimbra proxy kembali
sudo su - zimbra -c "/opt/zimbra/bin/zmproxyctl start"
Method 2: Webroot (tanpa stop service)
# Buat webroot jika belum ada
sudo mkdir -p /var/www/html/.well-known/acme-challenge
sudo chown -R www-data:www-data /var/www/html/.well-known
# RHEL: sudo chown -R nginx:nginx /var/www/html/.well-known

# Generate cert
sudo certbot certonly --webroot -w /var/www/html -d mail.example.com \
  --preferred-chain "ISRG Root X2" \
  --agree-tos --register-unsafely-without-email
Catatan ISRG Root X2: Zimbra tidak menyertakan ISRG Root X1 atau X2 secara default. Tambahkan root certificate secara manual saat deploy ke Zimbra (lihat langkah 11.6). Unduh dari https://letsencrypt.org/certs/isrg-root-x2.pem.
11.6 Deploy Let's Encrypt ke Zimbra

Setelah certificate di-generate, deploy ke Zimbra menggunakan zmcertmgr. Zimbra memerlukan private key, certificate, dan chain yang benar.

Deploy Let's Encrypt ke Zimbra
# 1. Copy private key ke lokasi Zimbra
sudo cp "/etc/letsencrypt/live/$(hostname --fqdn)/privkey.pem" \
  /opt/zimbra/ssl/zimbra/commercial/commercial.key
sudo chown zimbra:zimbra /opt/zimbra/ssl/zimbra/commercial/commercial.key

# 2. Download ISRG Root X2 dan buat chain untuk Zimbra
sudo wget -q -O /tmp/ISRG-X2.pem https://letsencrypt.org/certs/isrg-root-x2.pem
sudo rm -f "/etc/letsencrypt/live/$(hostname --fqdn)/chainZimbra.pem"
sudo cp "/etc/letsencrypt/live/$(hostname --fqdn)/chain.pem" \
  "/etc/letsencrypt/live/$(hostname --fqdn)/chainZimbra.pem"
sudo cat /tmp/ISRG-X2.pem >> \
  "/etc/letsencrypt/live/$(hostname --fqdn)/chainZimbra.pem"
sudo chown -R zimbra:zimbra /etc/letsencrypt/live/$(hostname --fqdn)

# 3. Deploy certificate
sudo su - zimbra -c '/opt/zimbra/bin/zmcertmgr deploycrt comm \
  "/etc/letsencrypt/live/$(hostname --fqdn)/cert.pem" \
  "/etc/letsencrypt/live/$(hostname --fqdn)/chainZimbra.pem"'

# 4. Restart Zimbra
sudo su - zimbra -c "/opt/zimbra/bin/zmcontrol restart"

# 5. Verifikasi
sudo su - zimbra -c "/opt/zimbra/bin/zmcertmgr viewdeployedcrt"
sudo su - zimbra -c "/opt/zimbra/bin/zmcertmgr checkcrtexpiration all -days 30"
11.7 Auto-Renewal Let's Encrypt

Certbot memiliki systemd timer untuk auto-renewal. Buat deploy hook agar certificate baru otomatis di-deploy ke Zimbra setelah renewal.

Renewal Hook (Ubuntu & RHEL-compatible)
sudo tee /etc/letsencrypt/renewal-hooks/deploy/zimbra-deploy.sh > /dev/null << 'EOF'
#!/bin/bash
DOMAIN="${RENEWED_DOMAINS%% *}"
LIVE_PATH="/etc/letsencrypt/live/$DOMAIN"

cp "$LIVE_PATH/privkey.pem" /opt/zimbra/ssl/zimbra/commercial/commercial.key
chown zimbra:zimbra /opt/zimbra/ssl/zimbra/commercial/commercial.key

wget -q -O /tmp/ISRG-X2.pem https://letsencrypt.org/certs/isrg-root-x2.pem
rm -f "$LIVE_PATH/chainZimbra.pem"
cp "$LIVE_PATH/chain.pem" "$LIVE_PATH/chainZimbra.pem"
cat /tmp/ISRG-X2.pem >> "$LIVE_PATH/chainZimbra.pem"
chown -R zimbra:zimbra "$LIVE_PATH"

su - zimbra -c '/opt/zimbra/bin/zmcertmgr deploycrt comm \
  "$LIVE_PATH/cert.pem" "$LIVE_PATH/chainZimbra.pem"'
rm -f "$LIVE_PATH/chainZimbra.pem"
EOF
sudo chmod +x /etc/letsencrypt/renewal-hooks/deploy/zimbra-deploy.sh

# Test renewal (dry-run)
sudo certbot renew --dry-run
Timer & Status
# Ubuntu: certbot.timer
# RHEL/Rocky: certbot-renew.timer
sudo systemctl status certbot.timer
sudo systemctl list-timers | grep certbot
sudo certbot certificates
sudo certbot renew --dry-run
11.8 Commercial CA (Sectigo, DigiCert, GlobalSign)
Langkah 1: Generate CSR & Private Key
Generate CSR (Zimbra)
sudo su - zimbra -c '/opt/zimbra/bin/zmcertmgr createcsr comm -new \
  -subject "/C=ID/ST=Jakarta/L=Jakarta/O=Organisasi/OU=IT/CN=mail.example.com" \
  -subjectAltNames mail.example.com'

# Output:
# /opt/zimbra/ssl/zimbra/commercial/commercial.key  (private key)
# /opt/zimbra/ssl/zimbra/commercial/commercial.csr  (CSR untuk di-submit ke CA)
Langkah 2: Submit CSR ke CA
  • Buka halaman pembelian certificate di Sectigo/DigiCert/GlobalSign.
  • Pilih validation type: DV, OV, atau EV sesuai kebutuhan.
  • Copy isi file commercial.csr dan paste ke form CA.
  • Lakukan validasi sesuai tipe: DV (email/DNS), OV/EV (verifikasi organisasi).
  • Download certificate bundle setelah CA mengeluarkan: biasanya certificate.crt, ca_bundle.crt, atau fullchain.pem.
Langkah 3: Verifikasi & Deploy Commercial Certificate
Deploy Commercial SSL
# 1. Upload certificate ke server (misal ke /tmp/)
#    Pastikan chain order: intermediate(s) dahulu, kemudian root

# 2. Verifikasi certificate dan key cocok
sudo su - zimbra -c '/opt/zimbra/bin/zmcertmgr verifycrt comm \
  /opt/zimbra/ssl/zimbra/commercial/commercial.key \
  /tmp/commercial.crt /tmp/ca_chain.crt'

# 3. Deploy
sudo su - zimbra -c '/opt/zimbra/bin/zmcertmgr deploycrt comm \
  /tmp/commercial.crt /tmp/ca_chain.crt'

# 4. Restart Zimbra
sudo su - zimbra -c "/opt/zimbra/bin/zmcontrol restart"

# 5. Verifikasi
sudo su - zimbra -c "/opt/zimbra/bin/zmcertmgr viewdeployedcrt"
sudo su - zimbra -c "/opt/zimbra/bin/zmcertmgr checkcrtexpiration all -days 30"
Sectigo: Pembuatan Chain Bundle
Sectigo CA Bundle
# Contoh: Sectigo RSA DV Intermediate + Root
# Download dari https://www.sectigo.com/resource-library/sectigo-root-intermediate-certificate-files

cat /tmp/SectigoRSAAddTrustCA.crt \
  /tmp/SectigoRSADomainValidationSecureServerCA.crt \
  /tmp/AddTrustExternalCARoot.crt \
  > /tmp/ca_chain.crt

# Atau gunakan bundle resmi dari Sectigo jika tersedia
# Deploy seperti langkah 3 di atas
11.9 Commercial CA Comparison
CA Tipe Validity Warranty Catatan
Let's EncryptDV90 daysGratis, automated, 90-day renewal
Sectigo SSL DVDV199 days$500KIssued in minutes, multi-year pricing
Sectigo SSL OVOV199 days$1M1–3 business days, org verification
Sectigo SSL EVEV199 days$1.75MHighest trust, company name in cert
DigiCertDV/OV/EV199 days$1.75M+Premium, enterprise support
GlobalSignDV/OV/EV199 days$1M+Long-established CA
Rekomendasi: Gunakan Let's Encrypt untuk single-server FOSS production (gratis, automated renewal). Gunakan Sectigo OV/EV jika membutuhkan warranty tinggi, validasi organisasi, atau multi-year pricing. Pastikan chain lengkap (intermediate + root) dan restart Zimbra setelah deploy.
12

Security Baseline Zimbra 10.1.20

Zimbra 10.1.20 rilis 20 Juli 2026 dengan Patch Security Severity: High dan Deployment Risk: Low[reference:8]. Versi ini memperbaiki 9 vulnerabilities termasuk permanent fix untuk SNMP command injection, 4 stored XSS di Classic Web Client, CVE-2026-50055 (mail forwarding bypass), EWS access control, mailbox delegation authorization, dan SSRF di Nextcloud[reference:9][reference:10]. Zimbra 10.1.19 rilis 7 Juli 2026 memperbaiki unspecified security issue di Classic Web Client[reference:11].

12.1 CVE yang Diperbaiki di 10.1.20
CVE / Issue Deskripsi Severity Sumber
SNMP Command InjectionCommand injection di komponen SNMP monitoring saat SNMP notifications enabled — permanent fix[reference:12]CriticalZimbra Blog
4 XSS (Classic Web Client)Stored XSS via malicious attachment filenames, crafted fields, rendered attachments[reference:13]HighZimbra Blog
CVE-2026-50055Mail forwarding restriction bypass — authenticated users bisa exfiltrate email[reference:14][reference:15]HighNVD
EWS Access ControlSecurity issue in EWS extension related to access controls[reference:16]Zimbra Blog
Authorization IssueAuthorization flaw in mailbox delegation[reference:17]Zimbra Blog
SSRF (Nextcloud)Server-side request forgery vulnerability in Nextcloud integration[reference:18]Zimbra Blog
12.2 Fix Non-Security
  • Licensing: "Reset to COS Value" sekarang restore feature usage counts dengan benar (sebelumnya salah reset ke 0)[reference:19].
  • Mail Forwarding: Admin mail redirects tidak lagi di-block ketika user forwarding restrictions enabled[reference:20].
12.3 Bundled Component Versions

Zimbra 10.1.20 membundel komponen pihak ketiga yang telah dimodifikasi. Versi dan sumber:

Komponen Versi Catatan
MariaDB10.4.13Port 7306, weekly integrity check
Nginx1.24.0Reverse proxy, config digenerate otomatis
Postfix3.6.14MTA dengan Amavis + SpamAssassin
OpenLDAP2.5.17Directory service
Jetty9.4.57Web application server
OpenDKIM2.10.3DKIM signing di MTA
ClamAV1.4.3Anti-virus
SpamAssassinAnti-spam (via Amavis)
OpenJDK17.0.19Runtime untuk Zimbra services
memcached1.4.37Wajib jika proxy aktif
PHP8.3.0Admin console
12.4 Security Hardening
  • Batasi akses port 7071 hanya dari IP admin / VPN (UFW/firewalld from <IP>).
  • Konfigurasi SPF, DKIM (OpenDKIM di MTA Zimbra), dan DMARC segera setelah domain live — lihat contoh di bab DNS. Tambahkan CAA record untuk membatasi CA mana yang dapat menerbitkan certificate.
  • Pastikan PTR cocok dengan FQDN; ini sering menjadi penyebab utama mail masuk spam.
  • Backup rutin: zmbackup atau snapshot storage + database MariaDB di /opt/zimbra.
  • Monitor log: /opt/zimbra/log/mailbox.log, /var/log/zimbra.log, Postfix di /var/log/mail.log.
  • Jangan expose Admin Console, LDAP (389), Memcached (11211), atau backend (8080/8443) ke internet publik.
  • Update OS secara berkala; uji patch Zimbra di staging sebelum production.
  • Jika SNMP diaktifkan, pastikan versi 10.1.20 (perbaikan command injection permanen).
  • Instal fail2ban untuk melindungi SSH, SMTP, dan webmail dari brute-force attacks. Zimbra 10.1.20 tetap menjadi target APT.
  • Classic Web Client XSS risk: Zimbra 10.1.20 memperbaiki 4 stored XSS di Classic Web Client[reference:21]. Pertimbangkan migrasi ke Zimbra Modern Web Client (default di 10.1+) untuk mengurangi surface area serangan XSS.
  • Pantau Zimbra Security Center dan NVD untuk CVE terkini. Zimbra telah muncul 18 kali di CISA KEV catalog.
  • Gunakan MTA-STS dan TLS-RPT DNS records untuk enforce TLS pada komunikasi email dan menerima laporan ketidakcocokan TLS.
12.5 TLS & Cipher Settings

Zimbra 10.1.20 mendukung TLSv1.2 dan TLSv1.3. Disarankan mengaktifkan TLSv1.3 di Nginx proxy dan MTA. Generate DH parameters 4096-bit untuk forward secrecy:

TLS 1.3 & Cipher
# Generate DH params (jalankan sekali)
openssl dhparam -out /etc/ffdhe4096.pem 4096

# As zimbra user — enable TLS 1.3 on proxy
su - zimbra
zmprov mcf zimbraReverseProxySSLProtocols TLSv1.2
zmprov mcf +zimbraReverseProxySSLProtocols TLSv1.3
zmprov mcf zimbraReverseProxySSLCiphers \
  'TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384'

# MTA TLS
zmprov mcf zimbraMtaSmtpdTlsProtocols '>=TLSv1.2'
zmprov mcf zimbraMtaTlsSecurityLevel may
zmprov ms `zmhostname` zimbraMtaTlsAuthOnly TRUE
zmmtactl restart
Package patch yang diharapkan pada 10.1.20 antara lain: zimbra-patch, zimbra-mta-patch, zimbra-proxy-patch, zimbra-ldap-patch, dll. Verifikasi dengan zmcontrol -v dan daftar package OS.
13

Hal yang TIDAK Disarankan

  • Menginstal di mesin yang sama dengan build server
  • Menggunakan hostname pendek (bukan FQDN)
  • Mengabaikan PTR / reverse DNS
  • Membuka semua port (1–65535) di firewall
  • Menjalankan Postfix/Apache/Nginx/MySQL lain di server yang sama
  • Menggunakan AlmaLinux sebagai target "resmi" tanpa menguji kompatibilitas (prioritaskan Rocky 9)
  • Menginstal versi FOSS yang belum tervalidasi (sha256 + string versi di dalam archive)
  • Menyimpan password admin di chat / plaintext tanpa vault
  • Mengabaikan CAA record untuk certificate issuance
  • Menggunakan Classic Web Client tanpa patch 10.1.20 (rentan XSS)
  • Membiarkan firewall aktif selama install.sh tanpa menutup port 7071/80/443
  • Lupa re-enable UFW/firewalld setelah instalasi selesai
  • Menonaktifkan SELinux secara permanen tanpa rencana hardening
14

Ringkasan & Best Practices Operasional

Kategori Prioritas Operasional

Berikut adalah panduan prioritas untuk operasional Zimbra production, dikategorikan berdasarkan tingkat urgensi dan dampak.

MUST (Wajib — Kritikal)
  • DNS A + MX + PTR — Harus benar sebelum instalasi. Tanpa ini, email tidak akan sampai atau masuk spam.
  • Hostname FQDNhostname -f harus mengembalikan FQDN lengkap.
  • Firewall minimal — Hanya buka port yang diperlukan (25, 80, 443, 587, 993, 995, 7071 terbatas).
  • Backup rutinzmbackup full + incremental, atau snapshot /opt/zimbra.
  • TLS 1.2+ enabled — Nonaktifkan TLS 1.0/1.1 di proxy dan MTA.
  • Admin Console dibatasi — Port 7071 hanya boleh diakses dari IP admin/VPN.
  • Update Zimbra patch — Selalu gunakan versi patch terbaru (10.1.20+). Zimbra 10.1.19 rilis 7 Juli 2026[reference:22].
SHOULD (Sebaiknya — High Impact)
  • SPF, DKIM, DMARC — Konfigurasi segera setelah domain live untuk deliverability.
  • Let's Encrypt / Commercial SSL — Ganti self-signed certificate dengan certificate yang valid.
  • fail2ban — Lindungi SSH, SMTP, dan webmail dari brute-force.
  • Monitoring log — Pantau /opt/zimbra/log/mailbox.log dan /var/log/zimbra.log.
  • MTA-STS & TLS-RPT — Enforce TLS dan terima laporan kegagalan.
  • CAA record — Kontrol CA mana yang boleh menerbitkan certificate.
  • Database integrity check — Jalankan zmbintegrityreport secara berkala.
MAY (Opsional — Nice to Have)
  • SNMP monitoring — Aktifkan hanya jika diperlukan, pastikan versi 10.1.20+ (permanent fix untuk command injection).
  • Zimbra DNSCache — Gunakan jika tidak ada DNS resolver internal yang reliable.
  • IPv6 — Dukungan IPv6 di Zimbra masih terbatas, uji di staging terlebih dahulu.
  • Custom spam filtering — Sesuaikan aturan SpamAssassin jika default kurang optimal.
  • Dynamic Distribution List — Gunakan untuk automasi anggota berdasarkan atribut LDAP.
AVOID (Hindari — Risiko Tinggi)
  • Install di mesin build — Build server dan production server harus terpisah.
  • Expose port internal ke internet — LDAP (389), LMTP (7025), backend (8080/8443), Memcached (11211).
  • Abaikan PTR record — Penyebab utama email masuk spam.
  • Gunakan self-signed di production — Browser dan klien email akan menampilkan peringatan keamanan.
  • Edit nginx.conf langsung — Konfigurasi digenerate otomatis, gunakan zmprov/zmlocalconfig.
  • Jalankan MySQL/MariaDB eksternal di server yang sama — Konflik port dan data.
  • Nonaktifkan SELinux permanen — Set ke permissive untuk instalasi, aktifkan kembali dengan policy yang tepat.

PHASE 1 — Persiapan
  1. DNS A + MX + PTR sudah benar dan terpropagasi
  2. VM bersih Ubuntu 24.04 atau Rocky 9 dengan resource cukup
  3. Hostname FQDN + /etc/hosts konsisten
  4. Siapkan installer: build sendiri (Tutorial Build Zimbra 10.1.20 FOSS), dari Maldua (maldua.github.io), atau unofficial build di https://techfiles.online/zimbra/
PHASE 2 — OS Prep
  1. Update penuh + reboot
  2. Disable/remove MTA konflik (Postfix, Sendmail, Exim)
  3. Firewall port minimal + nonaktifkan UFW (Ubuntu) atau firewalld (Rocky) sebelum install
  4. Install dependency dasar dari official repo
  5. Sinkronkan waktu (chrony/NTP)
PHASE 3 — Instalasi
  1. Transfer installer (SCP/rsync/wget) + verifikasi integritas
  2. Extract → ./install.sh sebagai root
  3. Jawab interaktif: license Y, paket sesuai tabel, domain + admin password
  4. Tunggu 15–45 menit, jangan interupsi
PHASE 4 — Post & Production
  • zmcontrol status & zmcontrol -v
  • Ganti self-signed certificate (Let's Encrypt / commercial CA)
  • Aktifkan SPF, DKIM, DMARC
  • Buat akun uji, kirim/terima email eksternal
  • Backup & monitoring
  • Batasi Admin Console (port 7071) ke IP/VPN saja
  • Enable TLSv1.2 + TLSv1.3, strong ciphers, DH params 4096
  • Audit log rutin: /opt/zimbra/log/, /var/log/mail.log
PHASE 5 — Maintenance & Monitoring
  • Update OS dan Zimbra patch secara berkala
  • Monitor /opt/zimbra/log/mailbox.log dan /var/log/zimbra.log
  • Weekly zmbintegrityreport untuk MariaDB health
  • Snapshot storage + database sebelum upgrade besar
  • Uji patch di staging sebelum production
  • Track CVE di Zimbra Security Center
  • Review firewall rules, user accounts, dan admin access secara bulanan
PHASE 6 — Disaster Recovery
  • Backup rutin: zmbackup (full + incremental) atau rsync + LVM snapshot untuk /opt/zimbra.
  • Offsite backup: Simpan backup di lokasi terpisah (cloud storage, NAS remote, atau FTP eksternal).
  • Restore test: Uji prosedur restore minimal 1x per kuartal di environment terpisah.
  • Config backup: Ekspor zmprov config, LDAP (jika multi-server), dan custom modifications.
  • Documentation: Dokumentasikan versi OS, Zimbra patch level, dan semua custom config untuk recovery cepat.
Distro Repository Reference

Pastikan repo official diaktifkan sebelum install dependency:

Distro Repo URL / Command
Ubuntu 24.04 LTSmain, universe, multiverse, restrictedsudo add-apt-repository universe && sudo add-apt-repository multiverse
RHEL 9BaseOS, AppStream, CRB (CodeReady Builder)sudo subscription-manager repos --enable codeready-builder-for-rhel-9-$(arch)-rpms
Rocky 9baseos, appstream, crb, epelsudo dnf config-manager --set-enabled crb && sudo dnf install -y epel-release
AlmaLinux 9baseos, appstream, crb, epelsudo dnf config-manager --set-enabled crb && sudo dnf install -y epel-release
Oracle Linux 9baseos, appstream, ol9_codeready_builder, ol9_developer_EPELsudo dnf config-manager --set-enabled ol9_codeready_builder && sudo dnf install -y oraclelinux-developer-release-el9
Zimbra (Ubuntu 24.04)nobledeb https://repo.zimbra.com/ubuntu/ noble main
Zimbra (RHEL 9 / Rocky 9)rhel9https://repo.zimbra.com/rpm/1000/rhel9
EPEL 9 (all RHEL-compat)epelsudo dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
Quick Reference: Official URLs
Kesimpulan: Instalasi Zimbra 10.1.20 FOSS dapat dilakukan dari installer hasil build sendiri, dari Maldua community builds, atau dari sumber unofficial lainnya. Pada Ubuntu 24.04 atau Rocky Linux 9 (AlmaLinux 9 sebagai alternatif kompatibel), hasilnya adalah platform kolaborasi yang kuat bila DNS, hostname, firewall, dan security baseline dikerjakan dengan benar. Ikuti urutan PHASE 1–6, gunakan official repo distro masing-masing, aktifkan TLS 1.3 dengan DH params 4096-bit, deploy SSL/TLS via Let's Encrypt (certbot-zimbra) atau commercial CA (Sectigo/DigiCert), dan pantau Zimbra Security Center untuk CVE terkini. Selalu validasi versi, jangan pernah menginstal di mesin build, verifikasi integritas installer, dan uji di staging sebelum production.
15

Email Validation & Deliverability

Email deliverability adalah kemampuan email untuk sampai ke inbox penerima tanpa ditolak atau masuk folder spam. Selain DNS dasar (A, MX, PTR), ada beberapa mekanisme autentikasi yang wajib dikonfigurasi untuk memastikan email Anda tidak ditolak oleh server penerima.

15.1 SPF (Sender Policy Framework)

SPF adalah mekanisme autentikasi yang memungkinkan domain menentukan server mana yang diizinkan mengirim email atas nama domain tersebut. SPF menggunakan DNS TXT record.

SPF Syntax & Contoh
SPF Record
# SPF untuk example.com
v=spf1 mx a:mail.example.com ip4:1.2.3.4 -all

# Penjelasan:
# v=spf1         : versi SPF
# mx             : izinkan server MX
# a:mail...      : izinkan A record mail.example.com
# ip4:1.2.3.4    : izinkan IP tertentu
# -all           : tolak (fail) semua yang tidak match
  • ~all (softfail) — gunakan saat testing, email tetap diterima tapi ditandai
  • -all (fail) — gunakan di production, email dari server tidak terdaftar akan ditolak
15.2 DKIM (DomainKeys Identified Mail)

DKIM menambahkan signature digital pada email yang memungkinkan penerima memverifikasi bahwa email benar-benar berasal dari domain yang diklaim dan tidak dimodifikasi selama transit.

Generasi DKIM di Zimbra
Generate DKIM Key
su - zimbra
/opt/zimbra/libexec/zmdkimkeyutil -a -d example.com

# Output akan menampilkan TXT record yang harus dipublikasikan:
# selector._domainkey.example.com. IN TXT "v=DKIM1; k=rsa; p=..."

# Verifikasi DKIM
zmprov gd example.com | grep -i dkim
# DKIM signature diaktifkan secara default di Zimbra MTA
Catatan: Zimbra 8.7+ menggunakan 2048-bit key secara default. Pastikan Anda mempublikasikan record TXT yang dihasilkan ke DNS domain Anda.
15.3 DMARC (Domain-based Message Authentication)

DMARC adalah kebijakan yang memberi tahu penerima apa yang harus dilakukan jika email gagal validasi SPF dan/atau DKIM. DMARC juga menyediakan mekanisme pelaporan untuk memonitor aktivitas email domain Anda.

DMARC Policy Levels
  • p=none — Monitoring only, tidak ada tindakan (digunakan saat awal implementasi)
  • p=quarantine — Email yang gagal akan dikirim ke folder spam
  • p=reject — Email yang gagal akan ditolak (hard fail)
DMARC Record
# DMARC untuk _dmarc.example.com
v=DMARC1; p=quarantine; rua=mailto:[email protected]; ruf=mailto:[email protected]; fo=1

# Penjelasan:
# v=DMARC1        : versi DMARC
# p=quarantine    : policy (none/quarantine/reject)
# rua=mailto:...  : aggregate report destination
# ruf=mailto:...  : forensic report destination
# fo=1            : kirim laporan untuk semua kegagalan
15.4 PTR Record (Reverse DNS)

PTR record adalah salah satu faktor paling penting untuk deliverability. Banyak email server (terutama Gmail, Outlook, Yahoo) melakukan reverse DNS lookup untuk memverifikasi bahwa IP pengirim memiliki PTR yang sesuai dengan HELO/EHLO yang dikirimkan.

  • PTR harus dikonfigurasi oleh provider VPS/ISP Anda (bukan di DNS domain Anda).
  • Nilai PTR harus sama persis dengan FQDN yang digunakan Zimbra (contoh: mail.example.com).
  • Gunakan dig +short -x <IP> untuk verifikasi.
15.5 MTA-STS (Strict Transport Security)

MTA-STS adalah mekanisme untuk meng-enforce TLS pada komunikasi SMTP antar server. Dengan MTA-STS, server pengirim akan menolak mengirim email jika server penerima tidak mendukung TLS yang memadai.

MTA-STS Record
# _mta-sts.example.com. IN TXT
v=STSv1; id=20260818001;

# Policy file di https://mta-sts.example.com/.well-known/mta-sts.txt
# Isi policy file:
version: STSv1
mode: testing
mx: mail.example.com
max_age: 86400
15.6 TLS-RPT (TLS Reporting)

TLS-RPT adalah mekanisme pelaporan untuk MTA-STS. Server yang mendukung MTA-STS akan mengirim laporan kegagalan TLS ke alamat yang ditentukan.

TLS-RPT Record
# _smtp._tls.example.com. IN TXT
v=TLSRPTv1; rua=mailto:[email protected]
15.7 Email Deliverability Checklist
# Item Status Verifikasi
1A record mail.example.comWajibdig +short A mail.example.com
2MX record example.comWajibdig +short MX example.com
3PTR recordWajibdig +short -x <IP>
4SPF recordWajibdig +short TXT example.com | grep spf
5DKIM recordWajibdig +short TXT selector._domainkey.example.com
6DMARC recordWajibdig +short TXT _dmarc.example.com
7CAA recordRekomendasidig +short CAA example.com
8MTA-STSRekomendasidig +short TXT _mta-sts.example.com
9TLS-RPTRekomendasidig +short TXT _smtp._tls.example.com
10Test email to Gmail/OutlookValidasiKirim email dan cek header
Best Practice: Gunakan tools seperti mail-tester.com atau dkimvalidator.com untuk memverifikasi konfigurasi SPF, DKIM, dan DMARC Anda sebelum meluncurkan ke production. Pantau laporan DMARC secara rutin untuk mendeteksi aktivitas mencurigakan atau misconfiguration.
Dokumentasi teknis mutakhir Install Zimbra Collaboration 10.1.20 FOSS — Riset & Pengujian oleh ALSYUNDAWY IT SOLUTION