Extend Tracking Center Log Proxmox Mail Gateway

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 $cmd di sub-rutin run_pmg_log_tracker dan 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.

Leave a Reply

Your email address will not be published. Required fields are marked *