Kemarin, salah satu customer Excellent yang menggunakan Proxmox Mail Gateway mengalami kendala saat melakukan pengecekan status email lampau melalui menu Tracking Center, padahal customer mau tracking bisa dilakukan sampai 1 bulan ke belakang.
Secara default, dashboard PMG hanya menampilkan data yang ada di file /var/log/syslog. Karena syslog mencatat semua aktivitas sistem, file ini biasanya cepat berputar (rotasi) dan terhapus, sehingga histori email yang bisa dilacak biasanya hanya bertahan sekitar 7 hari.
Padahal, file log khusus email biasanya masuk ke /var/log/mail.log*. Saya hendak menunjukkan bagaimana caranya supaya tracking center bisa mengacu dari data yang ada pada /var/log/mail.log*.
Kenapa Log Tidak Muncul?
Jika rekan-rekan mencoba melakukan tracking secara manual via CLI untuk tanggal yang sudah lampau, misalnya 2 minggu lalu, perintah pmg-log-tracker tidak akan muncul output-nya:
# Mencari log tanggal 23 Januari 2026 root@pmg:~# pmg-log-tracker -s 1769101200 -e 1769187600 # LogReader: 3326866 # Query options # Start: 2026-01-23 00:00:00 (1769101200) # End: 2026-01-24 00:00:00 (1769187600) # End Query Options (Hasil Kosong)
Btw pmg-log-tracker menggunakan format unix epoch timestamp. Untuk mendapatkan angka timetamp epoch, kita bisa menggunakan tools https://www.epochconverter.com/ atau sejenisnya. Masukkan tanggal mulai dan berakhir, lalu ambil epoch timestamp yang muncul untuk digunakan pada parameter -s (start) dan -e(end).
Kembali lagi ke hasil pmg-log-tracker diatas, output-nya tidak muncul karena data sudah masuk berubah menjadi archive logrotate. Padahal, jika kita cek di sistem, file log-nya masih ada:
root@pmg:~# ls -ltrh /var/log/mail.log* -rw-r----- 1 root adm 12M Jan 11 00:00 /var/log/mail.log-20260111.gz -rw-r----- 1 root adm 13M Jan 18 00:00 /var/log/mail.log-20260118.gz -rw-r----- 1 root adm 14M Jan 25 00:00 /var/log/mail.log-20260125.gz -rw-r----- 1 root adm 124M Feb 1 00:00 /var/log/mail.log-20260201 -rw-r----- 1 root adm 53M Feb 4 11:12 /var/log/mail.log
Memanfaatkan Logrotate
Saya hendak menggunakan /var/log/mail.log* juga karena konfigurasi logrotate sudah di konfigurasi untuk menyimpan histori log selama 4 minggu atau 1 bulan:
root@pmg:~# cat /etc/logrotate.d/rsyslog
/var/log/syslog
/var/log/mail.log
/var/log/kern.log
/var/log/auth.log
/var/log/user.log
/var/log/cron.log
{
rotate 4
weekly
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
dateext
}
Langkah 1: Testing via CLI (Piping Stdin)
Saya akan coba menjalankan pmg-log-tracker pakai menggunakan input (-i) dari stdin supaya script bisa membaca log yang sudah lampau sampai 1 bulan ke belakang. Gunakan perintah zcat -f (force) agar bisa inspect file teks biasa dan .gz sekaligus secara berurutan:
root@pmg:~# ls -1tr /var/log/mail.log* | xargs zcat -f | pmg-log-tracker -i - -s 1769101200 -e 1769187600 # LogReader: 3327431 # Start: 2026-01-23 00:00:00 ... TO:697257DC:A36BB10C1B8D:2: from <no_reply@domain.com> to <target@gmail.com>
Jika muncul pesan terminated by signal 13, abaikan saja. Itu normal karena proses dihentikan setelah limit tercapai.
Langkah 2: Modifikasi Backend API PMG
Jika testing via CLI sudah berhasil, supaya tracking center dashboard PMG bisa melakukan tracking kiriman email lampau, kita harus mengedit file Perl API PMG.
- Backup file asli script perl untuk
pmg-log-tracker:root@pmg:~# cp /usr/share/perl5/PMG/API2/MailTracker.pm /usr/share/perl5/PMG/API2/MailTracker.pm.bak
- Edit file script perl
/usr/share/perl5/PMG/API2/MailTracker.pm - Cari variabel
$cmddi sub-rutinrun_pmg_log_trackerdan ubah menjadi:my $cmd = "ls -1tr /var/log/mail.log* | xargs -I {} sh -c 'zcat -f {} 2>/dev/null || true' | /usr/bin/pmg-log-tracker -i - -v -l 10000"; foreach my $arg (@$args) { $cmd .= " " . PVE::Tools::shellquote($arg); } PVE::Tools::run_command($cmd, timeout => 120, outfunc => $parser); - Restart service PMG Proxy & PMG SMTP Filter
root@pmg:~# systemctl restart pmgproxy root@pmg:~# systemctl restart pmg-smtp-filter
Sekarang, menu Tracking Center sudah bisa “melihat” hingga 1 bulan ke belakang sesuai dengan ketersediaan file mail.log*.
Catatan: Apabila rekan-rekan melakukan upgrade ataupun patching PMG, maka kemungkinan script perl yang sudah kita sesuaikan akan kembali ke default. Saran saya, sebelum melakukan upgrade atau patching, baiknya melakukan backup file /usr/share/perl5/PMG/API2/MailTracker.pm
Namun apabila rekan-rekan ragu untuk melakukannya, Excellent juga menyediakan layanan implementasi & maintenance Proxmox Mail Gateway dan sudah mencakup konfigurasi improvement tersebut. Bagi rekan-rekan yang berminat untuk jasa layanan tersebut bisa langsung kontak & tanya-tanya ke email sales@excellent.co.id.