Masdika Loading..
Masdika.ID

DevOps Engineer

Cloud Engineer

System Administrator

  • Home
  • Portfolio
  • Services
  • Resume
  • Skills
  • Blog
  • Contact
Masdika.ID

DevOps Engineer

Cloud Engineer

System Administrator

Download CV

Recent Posts

  • Dari Laptop Bekas Jadi Server Pribadi: Cara Membangun Home Server Murah Menggunakan ISP MyRepublic dengan Public IP
  • Pembuatan Subnet dan Alokasi IP Address pada Amazon Web Service VPC
  • Instalasi dan Konfigurasi AWS CLI pada EC2 (Lab Guide)
  • Membangun Arsitektur Web + Database Highly Available di AWS (RDS Multi-AZ)
  • Cara Reset Password OpenBSD di Proxmox via VNC

Recent Comments

  1. Alif on Jangan Gunakan latest Tag pada Docker Images! Ini Alasannya
  2. Sahrull on Panduan Lengkap Anti-DDoS: Installasi Iptables, Hardening, dan Cloudflare Proxy
  3. VSTRA on Cara Cerdas Menguasai Kubernetes (K8s): Panduan Lengkap Orkestrasi Kontainer untuk Developer Modern
  4. Rikiy on Cara Mudah Deploy Website Node.js Menggunakan Docker
  5. Masdika.BIZ.ID on Disaster Recovery Cluster (DRC) WordPress dengan MariaDB Galera dan Load Balancer Caddy

Categories

  • Tutorial

Masdika.ID

  • About
  • Terms & Conditions
  • Privacy Policy
BLOG POST

Panduan Install Dan Konfigurasi Proxmox Mail Gateway (PMG) via ISO (Production Ready)

February 21, 2026 Tutorial by Masdika.ID
Panduan Install Dan Konfigurasi Proxmox Mail Gateway (PMG) via ISO (Production Ready)

Panduan ini cocok buat kamu yang mau pakai PMG sebagai Mail Gateway di depan mail server backend (contoh: Poste.io) supaya email:

โœ… Difilter Spam/Virus
โœ… Auto DKIM Sign โœ๏ธ
โœ… Lolos SPF
โœ… Lolos DMARC
โœ… Gak masuk Spam ๐Ÿ˜Ž

๐Ÿงฑ Arsitektur Target

Internet
   โ†“
MX Domain
   โ†“
PMG (Filter + DKIM)
   โ†“
Mail Server Backend (Poste.io / dll)
   โ†“
Inbox User

PMG = Security Layer ๐Ÿ”
Mail Server = Storage Inbox ๐Ÿ“ฌ

โœ… Prasyarat

Siapkan dulu:

KebutuhanContoh
Public IP PMG103.16.2.61
Hostname PMGpmg.domainkamu.id
Mail Backend103.16.6.9
PTR (rDNS)pmg.domainkamu.id
A Recordpmg.domainkamu.id โ†’ 103.16.2.61

โš ๏ธ PTR WAJIB sama dengan hostname PMG.

๐Ÿ’ฟ INSTALL PMG VIA ISO

1๏ธโƒฃ Download ISO

Download dari:
https://www.proxmox.com/en/downloads

2๏ธโƒฃ Buat VM

Rekomendasi:

  • CPU: 2 Core ๐Ÿง 
  • RAM: 2โ€“4GB ๐Ÿงฌ
  • Disk: 20โ€“40GB ๐Ÿ’พ
  • Network: Bridge ke Public / LAN

Boot dari ISO โ†’ pilih:

Install Proxmox Mail Gateway

3๏ธโƒฃ Network Setting

Isi:

Hostname : pmg.domainkamu.id
IP       : (LAN / Public IP)
Gateway  : sesuai network

Install selesai โ†’ Reboot ๐Ÿ”„

Akses:

https://IP-PMG:8006

๐ŸŒ DNS WAJIB

A Record

pmg.domainkamu.id โ†’ 103.16.2.61
Proxy: DNS Only

MX Record

domainkamu.id โ†’ pmg.domainkamu.id
Priority: 10
DNS Only

SPF

v=spf1 ip4:103.16.2.61 -all

๐Ÿ”ฅ NAT PERLU (JIKA PMG DI BAWAH MIKROTIK)

Misal PMG LAN:

172.21.0.9

/ip firewall nat
add chain=dstnat protocol=tcp dst-address=103.16.2.61 dst-port=25 action=dst-nat to-addresses=172.21.0.9 to-ports=25 comment="SMTP to PMG"

/ip firewall nat
add chain=dstnat protocol=tcp dst-address=103.16.2.61 dst-port=26 action=dst-nat to-addresses=172.21.0.9 to-ports=26 comment="SMTP to PMG"
/ip firewall nat
add chain=srcnat src-address=172.21.0.9 prot
ocol=tcp dst-port=25 action=src-nat to-addresses=103.16.2.61 comment="FORCE PMG SM
TP OUT"

โš™๏ธ KONFIGURASI PMG

Masuk:

Configuration โ†’ Mail Proxy

๐ŸŸข STEP 1 โ€” Relay Domain

Tambahkan domain yang dilayani:

masdika.id

๐ŸŸข STEP 2 โ€” Transport (Per Domain)

masdika.id โ†’ 103.16.6.9 โ†’ port 25
Use MX: Uncheck

PMG akan forward email ke backend.

๐ŸŸข STEP 3 โ€” Trusted Network

Tambahkan backend mail:

103.16.6.9/32

Supaya backend boleh kirim outbound via PMG.

๐ŸŸข STEP 4 โ€” Enable TLS

Enable TLS: Yes

๐Ÿ” DKIM CONFIG

Masuk:

Configuration โ†’ Mail Proxy โ†’ DKIM

Edit:

Enable DKIM Signing: Yes
Selector: pmg
Sign all Outgoing Mail: Yes

๐ŸŸข STEP 5 โ€” Sign Domain

Klik Create:

masdika.id

โš ๏ธ CLI OPENSSL?

Jalankan perintah ini untuk generate DKIM

PMG otomatis generate:

openssl genrsa -out /etc/pmg/dkim/pmg.private 2048
openssl rsa -in /etc/pmg/dkim/pmg.private -pubout -out /etc/pmg/dkim/pmg.public

๐ŸŸข STEP 6 โ€” Ambil DKIM

Klik:

View DNS Record

Salin TXT Public Key.

๐ŸŒ DNS DKIM (SETIAP DOMAIN)

masdika.id

Type:

TXT

Name:

pmg._domainkey

Value:
โžก๏ธ Paste public key hasil generate DKIM
โš ๏ธ SATU BARIS TANPA TANDA KUTIP

๐Ÿ“ฌ POSTE.IO (BACKEND)

Admin โ†’ SMTP Route:

Route all outgoing emails via external mailserver โœ”
Target SMTP: pmg.domainkamu.id
Port: 26
Auth: Off

โš ๏ธ Matikan DKIM di backend.
Biarkan PMG yang sign.

๐Ÿงช TESTING

Kirim email ke Gmail.

Gmail โ†’ Show Original

Harus muncul:

SPF: PASS
DKIM: PASS
DMARC: PASS

๐Ÿงฐ TROUBLESHOOT

Backend โžœ PMG

telnet pmg.domainkamu.id 25

PMG โžœ Internet

telnet gmail-smtp-in.l.google.com 25

Realtime Log

tail -f /var/log/mail.log

๐ŸŸฃ MULTI DOMAIN

Domain baru?

Cukup:

  1. Tambah Relay Domain
  2. Tambah Transport
  3. Tambah Trusted Network
  4. Tambah Sign Domain
  5. Tambah TXT DKIM

โŒ Tidak perlu generate key baru

๐Ÿ› ๏ธ TROUBLESHOOTING: Error TLS Certificate Missing di PMG

Pada beberapa kasus setelah instalasi Proxmox Mail Gateway, email masuk bisa gagal karena TLS certificate tidak ditemukan.

Biasanya akan muncul error seperti ini di log:

tail -f /var/log/mail.log

Contoh error:

warning: error opening chain file: /etc/pmg/pmg-tls.pem: No such file or directory
lost connection after STARTTLS

Artinya Postfix tidak menemukan file TLS certificate yang digunakan untuk STARTTLS.

Akibatnya mail server lain seperti Gmail akan memutus koneksi karena handshake TLS gagal.

๐Ÿ” Penyebab

File TLS bawaan PMG belum dibuat atau gagal dibuat.

File yang dicari oleh Postfix adalah:

/etc/pmg/pmg-tls.pem

Jika file ini tidak ada maka SMTP TLS akan gagal.

โšก Cara Cepat Solve (Generate TLS Manual)

Jika terjadi error tersebut, kita bisa membuat certificate sementara menggunakan OpenSSL.

Jalankan perintah berikut:

openssl req -x509 -newkey rsa:4096 -nodes \
-keyout /etc/pmg/pmg-tls.pem \
-out /etc/pmg/pmg-tls.pem \
-days 3650 \
-subj "/C=ID/ST=East Java/L=Surabaya/O=PMG/OU=Mail/CN=pmg.masdika.id"

Perintah ini akan membuat Self Signed Certificate yang langsung bisa digunakan oleh Postfix.

๐Ÿ” Set Permission File

Setelah certificate dibuat, atur permission agar bisa dibaca oleh Postfix:

chmod 640 /etc/pmg/pmg-tls.pem
chown root:www-data /etc/pmg/pmg-tls.pem

๐Ÿ”„ Restart Postfix

Agar konfigurasi TLS terbaca oleh sistem mail:

systemctl restart postfix

๐Ÿ”Ž Verifikasi

Pastikan file sudah ada:

ls -lh /etc/pmg/pmg-tls.pem

Cek kembali log mail:

tail -f /var/log/mail.log

Jika berhasil, error berikut akan hilang:

error opening chain file
lost connection after STARTTLS

Dan koneksi SMTP TLS akan berjalan normal.

โš ๏ธ Catatan

Certificate yang dibuat di atas adalah Self Signed Certificate, sehingga:

โœ” SMTP tetap berjalan normal
โœ” Gmail tetap bisa kirim email
โ— Sertifikat tidak trusted oleh browser

Untuk produksi disarankan menggunakan Let’s Encrypt Certificate melalui fitur ACME di Proxmox Mail Gateway.

๐ŸŽฏ Kesimpulan

Jika PMG mengalami error TLS seperti ini:

error opening chain file: /etc/pmg/pmg-tls.pem

Solusinya cukup:

1๏ธโƒฃ Generate TLS certificate manual
2๏ธโƒฃ Set permission file
3๏ธโƒฃ Restart postfix

SMTP akan langsung normal kembali.

๐Ÿ› ๏ธ TROUBLESHOOTING: ClamAV Tidak Bisa Update (freshclam error)

Pada beberapa instalasi Proxmox Mail Gateway, proses update database antivirus ClamAV bisa gagal.

Biasanya muncul error seperti ini saat menjalankan:

freshclam

Contoh error:

WARNING: Download failed (6)
Message: Couldn't resolve host name
Can't download daily.cvd from https://database.clamav.net

Padahal server sebenarnya bisa internet dan DNS normal.

๐Ÿ” Penyebab

Masalah ini biasanya disebabkan oleh AppArmor yang memblokir proses freshclam.

AppArmor adalah security module di Linux yang membatasi akses aplikasi terhadap sistem.

Pada beberapa instalasi Proxmox Mail Gateway, policy AppArmor dapat membuat freshclam tidak bisa melakukan koneksi keluar, sehingga update database virus gagal.

โšก Cara Fix

Install utilitas AppArmor terlebih dahulu:

apt update
apt install apparmor-utils -y

Kemudian ubah mode AppArmor untuk freshclam menjadi complain mode:

aa-complain /usr/bin/freshclam

Jika berhasil akan muncul output seperti ini:

Setting /usr/bin/freshclam to complain mode.

Mode ini membuat AppArmor tidak lagi memblokir freshclam, tetapi hanya mencatat aktivitasnya ke log.

๐Ÿ”„ Update Database ClamAV

Setelah itu jalankan kembali update database:

freshclam

Jika berhasil akan muncul output seperti:

daily.cld updated
main.cvd database is up-to-date
bytecode.cvd database is up-to-date
Clamd successfully notified about the update.

Artinya database antivirus berhasil diperbarui dan service ClamAV sudah aktif.

๐Ÿ”Ž Verifikasi Service ClamAV

Pastikan service berjalan:

systemctl status clamav-freshclam

atau

systemctl status clamav-daemon

๐ŸŽฏ Kesimpulan

Jika PMG mengalami error seperti ini:

Couldn't resolve host name
Failed to get daily database version

Padahal koneksi internet normal, biasanya penyebabnya adalah AppArmor memblokir freshclam.

Solusinya cukup:

1๏ธโƒฃ Install apparmor-utils
2๏ธโƒฃ Jalankan aa-complain /usr/bin/freshclam
3๏ธโƒฃ Jalankan kembali freshclam

Setelah itu database antivirus akan update normal kembali.embali.

๐ŸŽ‰ FINAL

Setup kamu sekarang:

โœ” Gateway Filter
โœ” DKIM Signing
โœ” SPF PASS
โœ” DMARC PASS
โœ” TLS Enabled
โœ” Multi Domain Ready

Production Ready ๐Ÿš€

Share:
Tags: pmgproxmox
Related Posts
Panduan Lengkap Setup Proxmox Backup Server (PBS) untuk Backup Incremental

Backup server adalah hal wajib untuk menjaga data tetap aman dari kegagalan hardware, human error, maupun serangan malware. Dengan Proxmox…

Automasi Proxmox VE 9 Pakai Terraform: Panduan Lengkap + Full Script Siap Pakai

Kalau kamu pakai Proxmox VE 9 dan mau automasi bikin VM tanpa klik-klik GUI, Terraform adalah jawabannya. Artikel ini FULL…

Post navigation

Prev
Next
ยฉ 2025 www.masdika.id โ€” Semua hak cipta dilindungi