Mailcow di VPS, Server Email Sendiri Berbasis Docker
Apa itu mailcow, kebutuhan VPS-nya, langkah pemasangan dengan Docker, record DNS yang wajib, serta perawatan backup dan update agar email tetap terkirim.
Jawaban singkat
Mailcow adalah paket server email lengkap berbasis Docker yang berisi Postfix, Dovecot, Rspamd, dan webmail SOGo. Ia butuh VPS virtualisasi penuh dengan RAM minimal 6 GiB plus 1 GiB swap, port 25 yang terbuka, PTR yang cocok, serta record SPF, DKIM, dan DMARC yang benar.
Daftar isi
Seorang pemilik usaha merasa biaya email per pengguna terus bertambah setiap kali timnya tumbuh. Muncul ide: kenapa tidak menjalankan server email sendiri di VPS? Ide ini masuk akal, dan mailcow adalah salah satu cara paling rapi untuk mewujudkannya. Namun server email adalah layanan yang menuntut, dan keputusan ini sebaiknya diambil dengan mata terbuka.
Mailcow (lengkapnya mailcow: dockerized) adalah kumpulan perangkat lunak email open source yang dikemas dalam container Docker. Sekali pasang, kamu mendapat pengirim dan penerima email, IMAP dan POP3, filter spam, antivirus opsional, webmail, kalender, kontak, serta panel admin untuk mengelola domain dan kotak surat.
Isi paket mailcow
Setiap komponen berjalan di container sendiri yang saling terhubung lewat jaringan bridge. Yang paling penting untuk dipahami adalah Postfix sebagai MTA yang mengirim dan menerima email antar server, Dovecot sebagai server IMAP dan POP3 dengan pencarian teks penuh, dan Rspamd sebagai filter spam yang belajar dari email yang ditandai pengguna.
Di sekelilingnya ada SOGo untuk webmail serta CalDAV dan CardDAV, MariaDB untuk data pengguna, Redis untuk data spam dan kunci DKIM, Unbound sebagai resolver DNS internal dengan validasi DNSSEC, ACME untuk sertifikat Let's Encrypt otomatis, Netfilter yang bekerja mirip Fail2ban, serta Watchdog untuk memantau status container. ClamAV tersedia sebagai antivirus opsional, sedangkan Olefy memeriksa dokumen Office yang mengandung makro.
Semua ini bisa dirakit sendiri dari nol, tapi mailcow menyatukannya dengan konfigurasi yang sudah saling cocok. Itulah nilai utamanya.
Kebutuhan VPS yang sering diremehkan
Dokumentasi resmi mailcow menetapkan syarat minimal yang cukup tegas.
| Kebutuhan | Ketentuan menurut dokumentasi mailcow |
|---|---|
| RAM | Minimal 6 GiB ditambah 1 GiB swap dengan konfigurasi bawaan, disarankan 8 GiB untuk sekitar 5 sampai 10 pengguna |
| CPU | 1 GHz |
| Disk | 20 GiB di luar ruang untuk email |
| Arsitektur | x86_64 dan ARM64 |
| Virtualisasi | KVM, ESX, Hyper-V, dan virtualisasi penuh lain didukung. OpenVZ, Virtuozzo, dan LXC tidak didukung |
| Sistem operasi yang diuji | Debian 11 sampai 13, Ubuntu 22.04 atau lebih baru, AlmaLinux 8 dan 9, Rocky Linux 9 |
| Port masuk | 25, 465, 587, 143, 993, 110, 995, 4190, 80, 443 |
Ada dua syarat lain yang tidak tertulis di tabel, tapi menentukan berhasil tidaknya email terkirim. Pertama, port 25 keluar harus terbuka. Banyak penyedia cloud menutupnya secara bawaan untuk mencegah spam, jadi tanyakan sebelum membeli. Kedua, kamu harus bisa mengatur reverse DNS (PTR) pada IP server agar cocok dengan nama host mailcow. Tanpa PTR yang benar, banyak server penerima menolak atau menandai emailmu sebagai spam. Penjelasan lengkapnya ada di apa itu reverse DNS (PTR) dan pengaruhnya ke email.
Dokumentasi juga memperingatkan bahwa firewalld atau UFW di host bisa menimbulkan masalah dengan mailcow, dan menyarankan memakai rantai DOCKER-USER untuk aturan firewall.
Langkah pemasangan
Setelah Docker Engine dan plugin Compose terpasang, langkah resminya pendek. Jalankan sebagai root:
umask 0022
cd /opt
git clone https://github.com/mailcow/mailcow-dockerized
cd mailcow-dockerized
./generate_config.sh
docker compose pull
docker compose up -d
Skrip generate_config.sh menanyakan nama host lengkap, misalnya mail.contoh.co.id, lalu membuat file mailcow.conf. Setelah container berjalan, buka https://mail.contoh.co.id/admin. Login bawaannya admin dengan kata sandi moohoo, dan ini harus segera diganti.
Pastikan record A untuk nama host sudah mengarah ke IP server dan port 80 bisa dijangkau sebelum menjalankan docker compose up -d. Container ACME memakai keduanya untuk meminta sertifikat Let's Encrypt. Kalau sertifikat belum terbit, periksa lognya dengan docker compose logs acme-mailcow, dan cek semua container berstatus berjalan dengan docker compose ps.
Berikutnya, tambahkan domain dan kotak surat dari panel, lalu buat kunci DKIM untuk domain tersebut di antarmuka admin.
Record DNS yang wajib benar
Panduan DNS mailcow merekomendasikan susunan berikut:
- Record A (dan AAAA bila memakai IPv6) untuk
mail.contoh.co.idyang mengarah ke IP server. - Record MX di domain utama yang mengarah ke
mail.contoh.co.id. - CNAME
autodiscoverdanautoconfigke nama host mailcow, agar aplikasi email bisa menemukan pengaturan sendiri. - TXT SPF, contohnya
v=spf1 mx a -all, yang hanya mengizinkan server MX dan A domain untuk mengirim. - TXT DKIM di
dkim._domainkey, nilainya disalin dari panel mailcow. - TXT DMARC di
_dmarcdengan kebijakan dan alamat laporan. - PTR untuk IPv4 dan IPv6 yang cocok dengan nama host mailcow, diatur di penyedia IP.
Domain dan IP yang masih baru juga belum punya reputasi. Mengirim ratusan email di hari pertama hampir pasti berakhir di folder spam. Naikkan volume secara bertahap seperti dijelaskan di cara warm up domain email.
Perawatan rutin: backup dan update
Mailcow menyediakan skrip backup di helper-scripts/backup_and_restore.sh. Untuk backup otomatis tanpa pertanyaan, tetapkan lokasi lewat variabel:
MAILCOW_BACKUP_LOCATION=/opt/backup /opt/mailcow-dockerized/helper-scripts/backup_and_restore.sh backup all
Jadwalkan perintah ini, lalu salin hasilnya ke lokasi lain di luar server. Backup yang hanya tinggal di VPS yang sama tidak menolong saat VPS itu sendiri bermasalah.
Untuk update, jalankan ./update.sh --check dari folder mailcow untuk melihat pembaruan yang tersedia, lalu ./update.sh untuk menerapkannya. Dokumentasi meminta backup, minimal database, sebelum update besar, dan membaca catatan rilis karena bisa berisi perubahan yang tidak kompatibel.
Apakah mailcow pilihan yang tepat untukmu?
Mailcow cocok untuk tim yang punya orang teknis, ingin kendali penuh atas data email, dan siap merawat server: memantau antrean, membaca log saat email ditolak, menjaga reputasi IP, serta memperbarui sistem secara rutin. Biaya lisensinya nol, tapi waktu perawatannya nyata.
Kalau tidak ada yang bisa memegang tugas itu, layanan email terkelola biasanya lebih masuk akal. Untuk perusahaan yang butuh server kolaborasi lengkap dengan dukungan, Zimbra adalah alternatif lain yang layak dibandingkan.
Ringkasnya, mailcow membuat server email sendiri jauh lebih mudah dipasang, tapi tidak menghapus syarat dasar email yang sehat: VPS virtualisasi penuh dengan RAM cukup, port 25 terbuka, PTR yang cocok, dan SPF, DKIM, serta DMARC yang benar. Penuhi itu sejak awal, siapkan backup di luar server, dan email bisnismu bisa berjalan stabil di bawah kendalimu sendiri.


