Cara instal Docker mail server di Ubuntu VPS Kirim dan Terima email

Gas langsung ke pembahasan.
Kalau kamu butuh mail server sendiri di VPS Ubuntu buat kirim dan terima email, salah satu cara paling praktis sekarang adalah pakai Docker Mail Server. Setup-nya relatif simpel, gak perlu install banyak service manual seperti Postfix, Dovecot, dan OpenDKIM satu per satu.

Ada beberapa image Docker buat mail server. Bedanya, docker-mailserver/docker-mailserver yang kita pakai di sini lebih simple dan minimal, cocok kalau kamu mau setup cepat tanpa banyak fitur tambahan. Sedangkan jeboehm/docker-mailserver sudah bundling webmail dan panel admin bawaan, kalau kamu butuh interface manajemen langsung, cek juga tutorial Cara Install Jeboehm Docker Mail Server.

Tutorial ini menggunakan project docker-mailserver, sebuah mail server lengkap berbasis Docker yang sudah include:

SMTP server
IMAP server
DKIM
SPF support
SSL support
Anti spam basic

Kalau setup DNS benar, email kamu sudah bisa kirim dan terima seperti mail server normal.

Spek Minimum Server

Sebelum mulai, pastikan VPS kamu minimal punya spesifikasi berikut:

Spek Minimum

  • 1 vCore
  • 2GB RAM (No ClamAV)
  • Swap enabled for the container

Port yang Wajib Dibuka

Pastikan port berikut sudah dibuka di firewall atau security group VPS.

143, 25, 465, 587, 993

Penjelasan singkat:

  • 25 SMTP server
  • 587 SMTP submission
  • 465 SMTP SSL
  • 143 IMAP
  • 993 IMAP SSL

Tanpa port ini, email tidak akan bisa dikirim atau diterima.

Siapkan Domain dan DNS

Siapkan domain atau subdomain yang akan dijadikan hostname mail server.

Contoh kita pakai:

mail.domainkamu.com

Lalu buat DNS record seperti berikut.

HostRecordValue
@AServer IP
mail.domainAServer IP
@MXmail.example.com priority 10
autodiscover.domainCNAMEdomain
autoconfig.domainCNAMEdomain
Jika @ tidak support seperti cpanel
@ dapat di ganti nama domain

Pastikan Docker Sudah Terinstall

Tutorial ini menggunakan Docker.

Kalau Docker belum ada di VPS kamu, silakan install dulu.
Di blog ini juga sudah ada artikel cara instal Docker di Ubuntu.

Kalau sudah siap, kita lanjut instal mail servernya.

Download Docker Mail Server

Pertama kita download file konfigurasi dari repository resmi.

Jalankan perintah berikut di VPS:

DMS_GITHUB_URL="https://raw.githubusercontent.com/docker-mailserver/docker-mailserver/master"
wget "${DMS_GITHUB_URL}/compose.yaml"
wget "${DMS_GITHUB_URL}/mailserver.env"

Setalah itu pastikan sudah dapat 2 file compose.yaml dan mailserver.env

Edit Hostname Mail Server

Sekarang kita edit file docker compose.

nano compose.yaml

Cari bagian hostname, lalu ganti dengan domain mail server kamu.

mail. bisa di ganti bebas asal konsisten
misal inbox.domain.kamu atau pesan.domain.kamu

lalu CTRL + X terus ENTER buat simpan ya

oke saat nya jalankan docker composenya untuk instal mail server

docker compose up -d

tunggu sampai selesai

JIka sudah. Sekarang kita buat 1 email agar sistem bisa berjalan dengan jalankan perintah ini

docker exec -ti mailserver setup email add usernamemail@domain.kamu

habis itu akan di minta buat password.

Buat DKIM key untuk DNS Zone

docker exec -ti mailserver setup config dkim

Hasilnya bisa di buka dengan perintah ini

cat docker-data/dms/config/opendkim/keys/ganti-domain-kamu/mail.txt

Update DNS Zone dengan tambahkan 2 ini

HostRecordValue
@TXTv=spf1 a mx ip4:IPSERVERMU -all
_dmarcTXTv=DMARC1; p=quarantine; adkim=r; aspf=r; pct=100
mail._domainkey.domainkamuTXTv=DKIM1; h=sha256; k=rsa; p=PASTE dari DKIM

Sekarang tinggal buat SSL untuk domain emailnya

jalankan perintah ini

docker run --rm -it \
-v "${PWD}/docker-data/certbot/certs/:/etc/letsencrypt/" \
-v "${PWD}/docker-data/certbot/logs/:/var/log/letsencrypt/" \
-p 81:80 \
certbot/certbot certonly --standalone -d mail.domain.kamu

nanti akan di minta masukan email yg valid untuk notifikasi jika ssl mau habis atau auto perpanjang

Tunggu sampai selesai

Buka lagi compose.yaml

nano compose.yaml

Tambahkan 2 baris ini didalam Volume

 - /etc/letsencrypt:/etc/letsencrypt
 - ./docker-data/certbot/certs/:/etc/letsencrypt

Buka file mailserver.env dan edit bagian SSL

nano mailserver.env
SSL_TYPE=manual

SSL_CERT_PATH=/etc/letsencrypt/live/mail.domainkamu/fullchain.pem
SSL_KEY_PATH=/etc/letsencrypt/live/mail.domainkamu/privkey.pem

Jalankan Ulang Docker compose untuk update SSL nya

docker compose up -d

Tunggu sampai selesai

Sekarang mail server sudah berjalan dengan SSL dan bisa di coba dengan login atau di test IMAP tester atau SMTP tester

Email Server Test | SMTP Exchange IMAP POP3 Server Testing

Masukkan Login isi dengan email yg di buat td dan passwordnya

lalu pilih type IMAP atau SMTP

IMAP port 993 untuk email masuk

SMTP port 587untuk email keluar

Bonus perintah untuk cek

openssl s_client -connect mail.domainkamu:993 -quiet
openssl s_client -connect mail.domainkamu:587 -starttls smtp -crlf

Untuk cek email list yg sudah di buat

docker exec -it mailserver setup email list

Test Login email di dalam VPS

docker exec -it mailserver doveadm auth test username@domainkamu passwordnya

Kendala yang Sering Muncul

  • Port 25/587 diblokir provider VPS
    Banyak provider cloud memblokir port ini secara default untuk mencegah spam. Cek ke support provider apakah port sudah dibuka untuk akun kamu.
  • DNS belum propagasi
    Record MX/SPF/DKIM butuh waktu untuk propagasi, bisa 15 menit sampai beberapa jam. Cek statusnya dengan mxtoolbox.com.
  • Email masuk folder spam
    Biasanya karena SPF/DKIM/DMARC belum settle sempurna atau IP VPS kena blacklist. Cek reputasi IP di mxtoolbox.com/blacklists.aspx.

Penutup

Segitu aja langkah-langkah instal Docker mail server di Ubuntu VPS. Kalau semua langkah di atas sudah diikuti dengan benar, email server kamu sudah bisa kirim dan terima email sendiri tanpa bergantung ke pihak ketiga. Kalau ada error yang belum kebahas di sini, drop komentar aja bro.

Jundi Husni Mubaraq

Jundi Husni Mubaraq

Saya seorang software engineer yang sejak awal 2026 megang penuh (sendirian) tanggung jawab infrastruktur server di tempat saya kerja: deploy dan maintain server Linux Ubuntu on-premises, bangun keamanan berlapis pakai CrowdSec dan Cloudflare, kelola job scheduling dan monitoring pakai Cronicle, deploy aplikasi containerized pakai Docker, sampai ngurusin mail server korporat dari nol. Sebelumnya saya 3+ tahun jadi Software Engineer/Fullstack Developer di beberapa perusahaan, termasuk proyek skala internasional (EUDR compliance system buat Lindt & Sprungli) dan sistem rumah sakit (SIMRS, rekam medis elektronik, integrasi BPJS Kesehatan) di RS PKU Muhammadiyah Surakarta. jundi.hm ini tempat saya dokumentasiin apa yang beneran saya kerjain dan pelajarin di lapangan, bukan sekadar riset teori, S.Kom dari Universitas Duta Bangsa Surakarta jadi bekal awal, tapi yang nulis di sini adalah pengalaman langsung ngelola server production sehari-hari. Selengkapnya: https://iam.jundi.hm

Lihat Juga Nih

Selanjutnya Nih

Kasih Komentar

Email kamu gak bakal ditampilin ke publik. Kalau ada tanda ini artinya wajib diisi ya *

Rekomendasi.

Lagi Viral.