# Deployment & Sizing — Mailcow (jangka panjang) > **Terakhir Diperbarui:** 2026-07-03 > **Target:** ~30+ user email aktif · hostname `sync.geonet.co.id` · VM **`10.100.1.28`** > **Keputusan storage:** ✅ **Local SSD VM** (prioritas uptime) + backup QNAP harian --- ## Linux atau Docker? **Keduanya — bukan pilihan salah satu.** | Lapisan | Teknologi | Keterangan | |---------|-----------|------------| | **Host OS** | Linux (VM) | Wajib — Debian 12 / Ubuntu 22.04 LTS / Alma 9 | | **Aplikasi mail** | **Docker Compose** | Mailcow hanya didistribusikan sebagai `mailcow-dockerized` | | **Windows** | ❌ | Tidak didukung sebagai host Mailcow | | **Install native tanpa Docker** | ❌ | Tidak ada paket Mailcow untuk Linux biasa | Alur install resmi: ``` Proxmox (.102) → VM Linux → Docker + Compose → git clone mailcow-dockerized → ./generate_config.sh → docker compose up -d ``` **Kesimpulan:** VM **Linux dedicated** yang menjalankan stack **Docker** Mailcow. --- ## Rekomendasi proper (30+ user aktif) ### Jangan taruh Mailcow di server `.24` Server `10.100.1.24` sudah penuh microservice (Zammad, geonet-console, Grafana, n8n, …). Mail server butuh: - Port 25/465/587/993 stabil - RAM predictable - Isolasi jika satu service restart tidak ganggu mail **Taruh di VM dedicated `10.100.1.28`** — terpisah dari app server `.24`. ### Spesifikasi VM (diset 2026-07-03) | Resource | Nilai | |----------|-------| | **IP** | `10.100.1.28` | | **vCPU** | 16 core | | **RAM** | 32 GiB | | **Disk 1** | 512 GiB SSD — OS + Docker + MariaDB + Redis | | **Disk 2** | 512 GiB SSD — vmail live | > Spec ini **melampaui** minimum resmi Mailcow — sangat nyaman untuk 30+ user dan headroom growth. ### Jangan Proxmox LXC + Docker (untuk production) | Opsi | Produksi mail? | |------|----------------| | **VM Linux penuh** | ✅ Disarankan | | LXC nested Docker | ⚠️ Bisa, tapi kurang bersih untuk mail jangka panjang | --- ## Spesifikasi VM (rekomendasi → **diset user**) Untuk **30+ mailbox aktif** — nilai **tebal** = yang akan dipakai: | Resource | Minimum | Rekomendasi doc | **VM `.27` (final)** | |----------|---------|-----------------|----------------------| | **vCPU** | 2 | 4 | **16** | | **RAM** | 8 GiB | 12–16 GiB | **32 GiB** | | **Disk OS+DB** | 40 GiB | 60 GiB | **512 GiB SSD** | | **Disk vmail** | 100 GiB | 200–300 GiB | **512 GiB SSD** | | **Swap** | 2 GiB | 4 GiB | **4 GiB** | ### Perkiraan storage email | Asumsi | Per user/tahun | 30 user × 3 tahun | |--------|----------------|-------------------| | Ringan (5 GB/user) | 5 GB | ~150 GB | | Sedang (10 GB/user) | 10 GB | ~300 GB | | Berat (attachment) | 20 GB+ | 600 GB+ | Mount `mailcow` data (`./data`, terutama `vmail`) di **disk/volume terpisah** agar mudah expand & backup. --- ## OS & software host | Item | Pilihan | |------|---------| | OS | **Debian 12** atau **Ubuntu 22.04 LTS** | | Docker | ≥ 24.x | | Docker Compose | **Plugin v2** (≥ 2.0) | | Firewall | `ufw` / nftables — buka 25, 80, 443, 465, 587, 993, 995 | | Hostname VM | `sync.geonet.co.id` | | PTR (reverse DNS) | IP publik → `sync.geonet.co.id` *(wajib untuk deliverability)* | --- ## Optimasi `mailcow.conf` (30 user, stabil) Default Mailcow memuat banyak komponen. Untuk 30 user dengan Outlook (bukan ActiveSync massal): | Setting | Rekomendasi | Alasan | |---------|-------------|--------| | `SKIP_CLAMD` | `n` jika RAM ≥12 GiB, `y` jika ketat | ClamAV ~1 GiB RAM | | `SKIP_FTS` / Solr | `y` *(opsional)* | Hemat RAM jika tidak pakai search SOGo berat | | SOGo | Tetap default | Webmail cadangan; Outlook user utama | | Redis maxmemory | Set batas di override | Cegah Redis membengkak | Resmi Mailcow: [Prerequisite System](https://docs.mailcow.email/getstarted/prerequisite-system/) --- ## Arsitektur target di `.102` ``` VM mail-sync — 10.100.1.28 ├── 16 vCPU, 32 GiB RAM, 4 GiB swap ├── Disk 1: 512 GiB SSD (OS + Docker + MariaDB + Redis) ├── Disk 2: 512 GiB SSD (vmail live — tidak via NAS) ├── Docker: mailcow-dockerized │ └── MAILCOW_HOSTNAME=sync.geonet.co.id ├── fetchmail (POP3 drain cPanel → Mailcow) └── Backup cron → QNAP 10.100.1.10 ``` **Koneksi ke layanan lain:** | Dari | Ke | Port | |------|-----|------| | VM Mailcow | AD `10.100.1.40` | 389 LDAP | | VM Mailcow | Internet | 995 POP3 (cPanel drain) | | Zammad `.24` | VM Mailcow `.27` | 993 IMAP, 587 SMTP | | User Outlook | `sync.geonet.co.id` | 993 / 587 | --- ## Backup jangka panjang (wajib) | Item | Cara | |------|------| | Mailcow built-in | `helper-scripts/backup_and_restore.sh` | | Jadwal | Harian → QNAP NFS/SMB atau rsync | | Retensi | 7 harian + 4 mingguan | | Uji restore | Kuartalan | Tanpa backup, VM mail = single point of failure data. --- ## Monitoring | Cek | Tool | |-----|------| | Container health | `docker compose ps` + Uptime Kuma | | Disk vmail | Alert >80% | | fetchmail | Log + alert jika cPanel inbox menumpuk | | Queue Postfix | `mailq` | | LDAP sync | Mailcow crontask logs | --- ## Yang **tidak** disarankan | Pilihan | Kenapa | |---------|--------| | Mailcow di `.24` bersama 15+ container | RAM/port conflict, restart cascade | | RAM 6 GiB untuk 30 user aktif | OOM / swap thrashing | | 1 disk kecil tanpa pisah vmail | Sulit expand & backup | | Skip PTR / SPF / DKIM | Email masuk spam | | Thunderbird di PC sebagai bridge POP3 | Tidak 24/7 — pakai fetchmail di VM | --- ## Checklist sebelum install - [ ] VM di Proxmox `.102` dengan spec di atas - [ ] DNS A `sync.geonet.co.id` → IP publik - [ ] PTR record ke `sync.geonet.co.id` - [ ] Port 25 outbound/inbound dicek (provider tidak blokir) - [ ] Firewall MikroTik NAT 25, 443, 465, 587, 993 - [ ] Volume data mail terpisah - [ ] Rencana backup ke QNAP --- ## Referensi - [Mailcow — Prepare your system](https://docs.mailcow.email/getstarted/prerequisite-system/) - [Mailcow — Install](https://docs.mailcow.email/getstarted/install/) - `docs/notes/email-sync-migration-concept.md` - `docs/notes/ldap-ad-mailcow.md`