Membangun mail server sendiri sering dianggap sebagai salah satu konfigurasi jaringan paling kompleks dalam dunia IT. Berbeda dengan web server yang hanya melayani HTTP/HTTPS, sistem email modern melibatkan banyak komponen seperti DNS, autentikasi email, enkripsi TLS, reputasi IP, dan validasi keamanan lintas server.
Kesalahan kecil dalam konfigurasi bisa menyebabkan berbagai masalah seperti:
- Email tidak bisa dikirim
- Email selalu masuk spam
- Server email lain menolak koneksi
- DNS tidak tervalidasi
- Sertifikat TLS gagal
Dalam panduan ini kita akan membangun sistem email profesional menggunakan:
- Mailcow
- MikroTik RouterOS
- Cloudflare
Target akhirnya adalah mail server self-hosted yang stabil, aman, dan memiliki reputasi email yang baik.
🛑 FASE 1 — VALIDASI INFRASTRUKTUR JARINGAN
Fase pertama adalah memastikan infrastruktur jaringan Anda memang layak untuk menjalankan mail server.
Banyak orang langsung menginstal mail server tanpa mengecek kondisi jaringan terlebih dahulu. Akibatnya server sudah berjalan tetapi email tidak bisa dikirim atau selalu ditolak oleh Gmail.
Pada fase ini kita akan memverifikasi beberapa komponen penting.
1️⃣ Memastikan Anda Tidak Menggunakan CGNAT
CGNAT adalah singkatan dari Carrier Grade NAT.
Dalam sistem ini, ISP tidak memberikan IP publik langsung kepada pelanggan. Sebaliknya, banyak pelanggan berbagi satu IP publik yang sama.
Hal ini sangat umum pada koneksi internet rumah atau paket murah.
Masalahnya adalah:
Server email membutuhkan IP publik yang unik dan dapat diakses dari internet.
Jika Anda berada di belakang CGNAT maka:
- Server luar tidak dapat mengakses server Anda
- Port forwarding tidak akan bekerja
- Mail server tidak bisa menerima email
Cara mengecek apakah Anda CGNAT
Masuk ke router MikroTik RouterOS
Menu:
IP → Addresses
Lihat IP WAN.
Jika IP WAN Anda berada dalam rentang berikut:
10.x.x.x
100.64.x.x
172.16.x.x
192.168.x.x
maka kemungkinan besar Anda berada di belakang CGNAT.
Cara cek tambahan dari server Linux
Jalankan:
curl ifconfig.me
Bandingkan dengan IP WAN MikroTik.
Jika berbeda berarti:
Internet Anda melewati NAT milik ISP.
Solusinya:
Hubungi ISP dan minta IP publik statis.
2️⃣ Memastikan Port 25 Outbound Tidak Diblokir
Port 25 adalah jalur komunikasi antar mail server di seluruh dunia.
Ketika server Anda mengirim email ke Gmail, server Anda akan membuka koneksi TCP ke port 25 server Gmail.
Namun sebagian besar ISP memblokir port ini untuk mencegah spam.
Jika port 25 outbound diblokir maka:
- Server Anda tidak dapat mengirim email
- Email selalu gagal delivery
Cara mengecek port 25 outbound
Dari server Ubuntu jalankan:
telnet gmail-smtp-in.l.google.com 25
Jika berhasil Anda akan melihat respon seperti:
220 mx.google.com ESMTP
Jika gagal biasanya muncul:
Connection timed out
atau
Network unreachable
Alternatif pengecekan
Jika telnet tidak terinstall gunakan:
nc -zv gmail-smtp-in.l.google.com 25
Jika port terbuka hasilnya akan menunjukkan connection succeeded.
Jika diblokir:
Hubungi ISP dan minta mereka membuka port 25 outbound untuk IP Anda.
3️⃣ Memastikan Port 25 Inbound Bisa Diakses
Port inbound adalah jalur yang digunakan server lain untuk mengirim email ke server Anda.
Jika port ini tidak terbuka maka:
Email dari luar tidak akan pernah sampai.
Cara pengecekan
Gunakan server lain atau koneksi internet berbeda lalu jalankan:
telnet 203.0.113.50 25
Jika koneksi berhasil maka port sudah terbuka.
Jika tidak:
Kemungkinan penyebabnya:
- NAT MikroTik salah
- Firewall memblokir
- ISP memblokir port inbound
4️⃣ Reverse DNS (PTR Record)
Reverse DNS adalah mekanisme yang mengubah IP menjadi nama domain.
Contoh:
203.0.113.50 → mail.domainanda.com
Server email besar seperti Gmail selalu melakukan verifikasi reverse DNS.
Jika PTR tidak ada atau tidak cocok maka email Anda kemungkinan besar akan ditolak.
Cara mengecek PTR
Gunakan perintah:
dig -x 203.0.113.50 +short
Jika konfigurasi benar maka hasilnya:
mail.domainanda.com
Jika kosong berarti PTR belum diset.
PTR hanya bisa diset oleh ISP.
☁️ FASE 2 — KONFIGURASI DNS DI CLOUDFLARE
DNS adalah salah satu komponen paling penting dalam sistem email.
Jika konfigurasi DNS salah maka server lain tidak akan tahu ke mana email harus dikirim.
Dalam panduan ini kita menggunakan Cloudflare sebagai DNS manager.
1️⃣ Membuat A Record untuk Mail Server
A Record menghubungkan nama domain dengan IP server.
Contoh konfigurasi:
Type: A
Name: mail
Content: 203.0.113.50
Proxy: DNS Only
Sangat penting untuk memastikan status DNS Only.
Jika menggunakan Proxy (awan orange) maka Cloudflare hanya akan meneruskan trafik HTTP/HTTPS.
Semua port email akan diblokir.
2️⃣ Membuat MX Record
MX Record memberitahu internet server mana yang bertanggung jawab menerima email untuk domain Anda.
Contoh konfigurasi:
Type: MX
Name: @
Mail Server: mail.domainanda.com
Priority: 10
Cara mengecek MX record
Gunakan:
dig MX domainanda.com
Hasilnya harus menunjukkan:
10 mail.domainanda.com
3️⃣ SPF Record
SPF digunakan untuk memberitahu server lain IP mana yang diperbolehkan mengirim email atas nama domain Anda.
Contoh konfigurasi:
v=spf1 mx ip4:203.0.113.50 -all
Artinya:
- server MX boleh mengirim email
- IP 203.0.113.50 boleh mengirim email
- server lain ditolak
Cara cek SPF
dig TXT domainanda.com
4️⃣ DKIM Record
DKIM adalah sistem tanda tangan digital email.
Saat server Anda mengirim email, Mailcow akan menambahkan tanda tangan kriptografi.
Server penerima kemudian memverifikasi tanda tangan ini menggunakan DNS.
Jika cocok berarti email tidak dimodifikasi.
5️⃣ DMARC Record
DMARC adalah kebijakan keamanan email.
Contoh konfigurasi:
v=DMARC1; p=quarantine; rua=mailto:admin@domainanda.com
Artinya jika SPF atau DKIM gagal maka email akan dimasukkan ke spam.
📼 FASE 3 — KONFIGURASI MIKROTIK
Router MikroTik RouterOS akan berfungsi sebagai gateway antara internet dan server Mailcow.
Karena Mailcow berada di jaringan lokal maka kita harus menggunakan NAT.
1️⃣ Konsep Port Forwarding
Port forwarding adalah proses meneruskan koneksi dari internet ke server internal.
Contoh:
Internet → MikroTik → Mailcow
Ketika server luar menghubungi:
203.0.113.50:25
MikroTik akan meneruskan koneksi tersebut ke:
192.168.1.100:25
2️⃣ Port yang Dibutuhkan Mail Server
Mail server membutuhkan beberapa port penting:
| Port | Fungsi |
|---|---|
| 25 | SMTP |
| 587 | Submission |
| 465 | SMTP SSL |
| 143 | IMAP |
| 993 | IMAP SSL |
| 80 | Let's Encrypt |
| 443 | Webmail |
3️⃣ Cara Mengecek NAT Berfungsi
Di MikroTik jalankan:
/ip firewall connection print where dst-port=25
Jika ada koneksi berarti NAT bekerja.
🐧 FASE 4 — SETUP UBUNTU SERVER
Mailcow berjalan pada sistem Linux.
Dalam panduan ini kita menggunakan Ubuntu Server 24.04 LTS.
Server harus memiliki IP statis agar tidak berubah setelah reboot.
1️⃣ Mengapa IP Static Penting
Jika server menggunakan DHCP maka IP bisa berubah.
Jika IP berubah maka:
- NAT MikroTik rusak
- Mail server tidak bisa diakses
2️⃣ Mengecek Konfigurasi IP
Gunakan:
ip a
Pastikan IP yang muncul adalah:
192.168.1.100
🐳 FASE 5 — INSTALASI MAILCOW
Mailcow adalah platform email lengkap yang berjalan menggunakan container Docker.
Komponen yang termasuk di dalamnya antara lain:
- Postfix
- Dovecot
- Rspamd
- MariaDB
- Redis
- SOGo Webmail
1️⃣ Instal Docker
Gunakan script resmi Docker.
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
2️⃣ Download Mailcow
git clone https://github.com/mailcow/mailcow-dockerized
cd mailcow-dockerized
3️⃣ Generate Konfigurasi
./generate_config.sh
Masukkan hostname:
mail.domainanda.com
4️⃣ Menjalankan Mailcow
docker compose up -d
Proses ini akan menjalankan sekitar 15 container.
5️⃣ Mengecek Status Container
docker ps
Semua container harus status:
Up
🔐 FASE 6 — PENGUJIAN EMAIL
Kirim email dari server Anda ke Gmail.
Di Gmail buka menu Show Original.
Jika konfigurasi benar maka akan muncul:
SPF PASS
DKIM PASS
DMARC PASS

Posting Komentar
oke