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.
- 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, tambahoverflow-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.
- 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.
- 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.
- 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.
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 Agent | MUA | Klien email pengguna (Outlook, Thunderbird, Gmail UI, Zimbra Web Client) |
| Mail Transfer Agent | MTA | Server pengirim/penerima email (Postfix, Sendmail, Exim) |
| Mail Delivery Agent | MDA | Agen yang menempatkan email ke mailbox pengguna |
| Mail Submission Agent | MSA | Menerima email dari MUA untuk dikirim ke MTA (port 587) |
0.3 Protokol Email
| Protokol | Port | Enkripsi | Fungsi |
|---|---|---|---|
| SMTP | 25, 465, 587 | STARTTLS / SSL | Pengiriman email antar server dan dari klien ke server |
| POP3 | 110, 995 | STARTTLS / SSL | Download email ke lokal, typically delete dari server |
| IMAP | 143, 993 | STARTTLS / SSL | Sinkronisasi email antar device, keep di server |
| LMTP | 7025 | TLS | Local mail transfer protocol — antar MTA dan mailbox store |
0.4 Alur Pengiriman Email
Ketika Anda mengirim email, pesan melewati rantai berikut:
- MUA (Zimbra Web Client / Outlook) mengirim ke MSA (Postfix submission port 587) via SMTP.
- MSA meneruskan ke MTA pengirim (Postfix) untuk routing.
- MTA melakukan DNS lookup: MX record, PTR validasi, SPF, DKIM signing.
- Email melewati internet hingga MTA penerima (Postfix Zimbra).
- MDA (Postfix + LMTP) menyerahkan ke mailbox store (Jetty + MariaDB).
- MUA penerima mengambil email via IMAP/POP3 atau akses via webmail (Nginx proxy).
# 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:
# 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 |
|---|---|---|---|
| A | A | mail.example.com -> 1.2.3.4 | Ya |
| MX | MX | example.com -> mail.example.com | Ya |
| PTR | PTR | 4.3.2.1.in-addr.arpa -> mail.example.com | Ya |
| SPF | TXT | v=spf1 mx a:mail.example.com ip4:1.2.3.4 -all | Ya |
| DKIM | TXT | selector._domainkey.example.com | Ya |
| DMARC | TXT | v=DMARC1; p=quarantine; rua=mailto:[email protected] | Ya |
| MTA-STS | TXT | _mta-sts.example.com | Rekomendasi |
| TLS-RPT | TXT | _smtp._tls.example.com | Rekomendasi |
| CAA | TXT | 0 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-ldap | Directory service, autentikasi, GAL | 389 |
| zimbra-store | Mailbox store, Jetty web server, IMAP/POP3 | 143, 993, 110, 995 |
| zimbra-mta | Postfix MTA + Amavis + SpamAssassin + ClamAV | 25, 465, 587 |
| zimbra-proxy | Nginx reverse proxy + memcached | 80, 443, 7072 |
| zimbra-snmp | SNMP monitoring (opsional) | 161 |
| zimbra-apache | Apache HTTPD untuk convertd/admin | 7071 (Admin Console) |
0.8 Zimbra FOSS vs Network Edition (NE)
| Fitur | FOSS | Network Edition |
|---|---|---|
| Harga | Gratis, tanpa biaya lisensi | Berbayar per seat |
| Users | Unlimited | Berdasarkan lisensi |
| ActiveSync | Tidak tersedia | Ya (Zimbra Mobile NG) |
| MAPI/Outlook Connector | Tidak tersedia | Ya |
| Backup NG | Tidak tersedia (gunakan zmbackup/rsync) | Ya |
| Archiving & Discovery | Tidak tersedia | Ya |
| HSM NG | Tidak tersedia | Ya |
| Support | Community (forums, wiki) | Commercial (Zimbra Support) |
| Source code | Embargo sampai ~Sep 2026 | Tersedia 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.
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.
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.
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.
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-*.tgzhasil build Anda. - Waktu server disinkronkan (chrony/NTP).
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:
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.
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.
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:
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
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
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 |
|---|---|---|---|
| 25 | TCP | SMTP inbound (Postfix) | Publik |
| 465 / 587 | TCP | SMTPS / Submission | Publik |
| 110 / 995 | TCP | POP3 / POP3S | Publik (opsional) |
| 143 / 993 | TCP | IMAP / IMAPS | Publik |
| 80 / 443 | TCP | HTTP / HTTPS (proxy/Nginx) | Publik |
| 7071 | TCP | Admin Console | Batasi IP/VPN |
| 389 / 636 | TCP | LDAP / LDAPS | Internal only |
| 7025 | TCP | LMTP (mailbox delivery) | Internal only |
| 8080 / 8443 | TCP | Backend HTTP/HTTPS | Internal only |
| 7072 | TCP | Nginx lookup backend HTTP | Internal only |
| 11211 | TCP | Memcached (wajib jika proxy aktif) | Internal only |
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.
# 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
/etc/hosts. Split-DNS memastikan Zimbra dapat meresolve hostname sendiri dengan benar tanpa bergantung pada DNS publik yang mungkin memiliki latency atau rate-limiting.
Ubuntu Server 24.04 LTS — Persiapan OS
4.1 Update & Hostname
sudo hostnamectl set-hostname mail.example.com
sudo apt update
sudo apt full-upgrade -y
sudo reboot
4.2 Nonaktifkan Layanan yang Bentrok
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.
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
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.
Dependency Ubuntu 24.04
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
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
sudo hostnamectl set-hostname mail.example.com
sudo dnf update -y
sudo reboot
6.2 SELinux & Firewalld
# 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
./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.
Dependency Rocky Linux 9 / AlmaLinux 9
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
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]
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:
# 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
Menjalankan install.sh & Post-Install Validasi
9.1 Menjalankan install.sh
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:
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-ldap | Y | Directory service (wajib) |
| zimbra-logger | Y | Monitoring/log |
| zimbra-mta | Y | Postfix + Amavis + SpamAssassin + ClamAV |
| zimbra-dnscache | N | Pilih N jika DNS eksternal / dnsmasq sendiri sudah siap |
| zimbra-snmp | Y | Monitoring SNMP (10.1.20 memperbaiki CVE terkait) |
| zimbra-store | Y | Mailbox store (wajib) |
| zimbra-apache | Y | Komponen web pendukung |
| zimbra-spell | Y | Spell check |
| zimbra-memcached | Y | Wajib jika proxy diaktifkan |
| zimbra-proxy | Y | Nginx reverse proxy — sangat disarankan |
/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
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:
su - zimbra
zmcontrol status | grep -i license
# Harus: license daemon Running
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
- Login ke Admin Console:
https://mail.example.com:7071 - Navigasi ke Configure → Domains
- Klik New dan masukkan nama domain
- Pilih Finish
Via CLI (zmprov)
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
- Login ke Admin Console
- Navigasi ke Manage → Accounts
- Klik New dan pilih User Account
- Isi: First Name, Last Name, Email Address (contoh:
[email protected]) - Set password dan pilih COS (Class of Service)
- Klik Finish
Via CLI (zmprov)
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
- Login ke Admin Console
- Navigasi ke Manage → Distribution Lists
- Klik New
- Masukkan nama DL (contoh:
[email protected]) - Pilih type: Standard (static) atau Dynamic (LDAP-based)
- Klik Finish
Via CLI (zmprov)
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
# 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.
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
# 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.
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 only | 199 days | Minutes | Personal, testing, low-risk |
| OV (Organization Validation) | Domain + business verification | 199 days | 1–3 business days | Business, internal tools |
| EV (Extended Validation) | Rigorous org verification | 199 days | 1–5 business days | E-commerce, high-trust |
| Wildcard | DV/OV/EV | 199 days | Minutes–days | Multiple subdomains (*.example.com) |
| Multi-Domain/UCC/SAN | DV/OV/EV | 199 days | Minutes–days | Multiple domains in one cert |
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:
# 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:
# 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).
sudo apt update
sudo apt install -y certbot python3-certbot-nginx
# Untuk Apache:
# sudo apt install -y certbot python3-certbot-apache
sudo snap install certbot --classic
sudo ln -s /snap/bin/certbot /usr/bin/certbot
/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.
# 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.
# 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"
# 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
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.
# 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.
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
# 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
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.csrdan 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, ataufullchain.pem.
Langkah 3: Verifikasi & Deploy Commercial Certificate
# 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
# 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 Encrypt | DV | 90 days | — | Gratis, automated, 90-day renewal |
| Sectigo SSL DV | DV | 199 days | $500K | Issued in minutes, multi-year pricing |
| Sectigo SSL OV | OV | 199 days | $1M | 1–3 business days, org verification |
| Sectigo SSL EV | EV | 199 days | $1.75M | Highest trust, company name in cert |
| DigiCert | DV/OV/EV | 199 days | $1.75M+ | Premium, enterprise support |
| GlobalSign | DV/OV/EV | 199 days | $1M+ | Long-established CA |
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 Injection | Command injection di komponen SNMP monitoring saat SNMP notifications enabled — permanent fix[reference:12] | Critical | Zimbra Blog |
| 4 XSS (Classic Web Client) | Stored XSS via malicious attachment filenames, crafted fields, rendered attachments[reference:13] | High | Zimbra Blog |
| CVE-2026-50055 | Mail forwarding restriction bypass — authenticated users bisa exfiltrate email[reference:14][reference:15] | High | NVD |
| EWS Access Control | Security issue in EWS extension related to access controls[reference:16] | — | Zimbra Blog |
| Authorization Issue | Authorization 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 |
|---|---|---|
| MariaDB | 10.4.13 | Port 7306, weekly integrity check |
| Nginx | 1.24.0 | Reverse proxy, config digenerate otomatis |
| Postfix | 3.6.14 | MTA dengan Amavis + SpamAssassin |
| OpenLDAP | 2.5.17 | Directory service |
| Jetty | 9.4.57 | Web application server |
| OpenDKIM | 2.10.3 | DKIM signing di MTA |
| ClamAV | 1.4.3 | Anti-virus |
| SpamAssassin | — | Anti-spam (via Amavis) |
| OpenJDK | 17.0.19 | Runtime untuk Zimbra services |
| memcached | 1.4.37 | Wajib jika proxy aktif |
| PHP | 8.3.0 | Admin 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:
zmbackupatau 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:
# 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
zimbra-patch, zimbra-mta-patch, zimbra-proxy-patch, zimbra-ldap-patch, dll. Verifikasi dengan zmcontrol -v dan daftar package OS.
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.shtanpa menutup port 7071/80/443 - Lupa re-enable UFW/firewalld setelah instalasi selesai
- Menonaktifkan SELinux secara permanen tanpa rencana hardening
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 FQDN —
hostname -fharus mengembalikan FQDN lengkap. - Firewall minimal — Hanya buka port yang diperlukan (25, 80, 443, 587, 993, 995, 7071 terbatas).
- Backup rutin —
zmbackupfull + 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.logdan/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
zmbintegrityreportsecara 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
- DNS A + MX + PTR sudah benar dan terpropagasi
- VM bersih Ubuntu 24.04 atau Rocky 9 dengan resource cukup
- Hostname FQDN + /etc/hosts konsisten
- 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
- Update penuh + reboot
- Disable/remove MTA konflik (Postfix, Sendmail, Exim)
- Firewall port minimal + nonaktifkan UFW (Ubuntu) atau firewalld (Rocky) sebelum install
- Install dependency dasar dari official repo
- Sinkronkan waktu (chrony/NTP)
PHASE 3 — Instalasi
- Transfer installer (SCP/rsync/wget) + verifikasi integritas
- Extract →
./install.shsebagai root - Jawab interaktif: license Y, paket sesuai tabel, domain + admin password
- 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.logdan/var/log/zimbra.log - Weekly
zmbintegrityreportuntuk 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) ataursync+ 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
zmprovconfig, 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 LTS | main, universe, multiverse, restricted | sudo add-apt-repository universe && sudo add-apt-repository multiverse |
| RHEL 9 | BaseOS, AppStream, CRB (CodeReady Builder) | sudo subscription-manager repos --enable codeready-builder-for-rhel-9-$(arch)-rpms |
| Rocky 9 | baseos, appstream, crb, epel | sudo dnf config-manager --set-enabled crb && sudo dnf install -y epel-release |
| AlmaLinux 9 | baseos, appstream, crb, epel | sudo dnf config-manager --set-enabled crb && sudo dnf install -y epel-release |
| Oracle Linux 9 | baseos, appstream, ol9_codeready_builder, ol9_developer_EPEL | sudo dnf config-manager --set-enabled ol9_codeready_builder && sudo dnf install -y oraclelinux-developer-release-el9 |
| Zimbra (Ubuntu 24.04) | noble | deb https://repo.zimbra.com/ubuntu/ noble main |
| Zimbra (RHEL 9 / Rocky 9) | rhel9 | https://repo.zimbra.com/rpm/1000/rhel9 |
| EPEL 9 (all RHEL-compat) | epel | sudo dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm |
Quick Reference: Official URLs
- Zimbra 10.1.20 Release Notes: blog.zimbra.com/2026/07/patch-release-update-zimbra-10-1-20/
- Zimbra Security Center: wiki.zimbra.com/wiki/Security_Center
- Install Guide: zimbra.github.io/installguides/latest/single.html
- Admin Guide: zimbra.github.io/adminguide/latest/index.html
- Cipher Suites: wiki.zimbra.com/wiki/Cipher_suites
- Maldua Downloads: maldua.github.io/zimbra-foss/downloads/
- Maldua Stable Releases: github.com/maldua/zimbra-foss/discussions/8
- Community Builds (Maldua): maldua.github.io/zimbra-foss
- Unofficial Builds: techfiles.online/zimbra/
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 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
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
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 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.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.
# _smtp._tls.example.com. IN TXT
v=TLSRPTv1; rua=mailto:[email protected]
15.7 Email Deliverability Checklist
| # | Item | Status | Verifikasi |
|---|---|---|---|
| 1 | A record mail.example.com | Wajib | dig +short A mail.example.com |
| 2 | MX record example.com | Wajib | dig +short MX example.com |
| 3 | PTR record | Wajib | dig +short -x <IP> |
| 4 | SPF record | Wajib | dig +short TXT example.com | grep spf |
| 5 | DKIM record | Wajib | dig +short TXT selector._domainkey.example.com |
| 6 | DMARC record | Wajib | dig +short TXT _dmarc.example.com |
| 7 | CAA record | Rekomendasi | dig +short CAA example.com |
| 8 | MTA-STS | Rekomendasi | dig +short TXT _mta-sts.example.com |
| 9 | TLS-RPT | Rekomendasi | dig +short TXT _smtp._tls.example.com |
| 10 | Test email to Gmail/Outlook | Validasi | Kirim email dan cek header |