mv /usr/bin/pmg-log-tracker /usr/bin/pmg-log-tracker-default
mv /var/log/syslog /var/log/syslog-tmp
mv /tmp/syslog /var/log/syslog
/usr/bin/pmg-log-tracker-default "$@"
mv /var/log/syslog /tmp/syslog
mv /var/log/syslog-tmp /var/log/syslog
chmod +x /usr/bin/pmg-log-tracker
cat /var/log/syslog | grep -E 'postfix' > /tmp/syslog
ssh root@mx2 -o ConnectTimeout=2 -o ConnectionAttempts=1 'cat /var/log/syslog | grep -E postfix' >> /tmp/syslog
ssh root@mx3 -o ConnectTimeout=2 -o ConnectionAttempts=1 'cat /var/log/syslog | grep -E postfix' >> /tmp/syslog
ssh root@mx4-o ConnectTimeout=2 -o ConnectionAttempts=1 'cat /var/log/syslog | grep -E postfix' >> /tmp/syslog
cat /tmp/syslog | sort -M > /tmp/syslog-2
uniq /tmp/syslog-2 /tmp/syslog
chmod +x /root/merge-syslog.sh
*/10 * * * * /root/merge-syslog.sh
Thank you, your solution made my life easier =) I have a cluster with 3 larger devices. More than 20,000 clean e-mails go through each device every day. Even with the amount, your script has no problems!I made my own solution with earlier ideas. Since I manage 4 big PMG servers, syncing and using cat with SSH on the fly is not an option. So I create a script to cache the syslog and merge them for all servers and changed the original: /usr/bin/pmg-log-tracker to place this cache file to the live (/var/log/syslog) location, load: /usr/bin/pmg-log-tracker-default and set the original syslog back (so this will not get corrupt).
Steps (logged in as root):
1. Back-up original: pmg-log-tracker
2. Create new: /usr/bin/pmg-log-tracker file with this code:Code:mv /usr/bin/pmg-log-tracker /usr/bin/pmg-log-tracker-default
3. Give it execution rights.Code:mv /var/log/syslog /var/log/syslog-tmp mv /tmp/syslog /var/log/syslog /usr/bin/pmg-log-tracker-default "$@" mv /var/log/syslog /tmp/syslog mv /var/log/syslog-tmp /var/log/syslog
Code:chmod +x /usr/bin/pmg-log-tracker
Now create a script to generate: /tmp/syslog
1. Create file: /root/merge-syslog.sh with this code:
2. Give it execution rights.Code:cat /var/log/syslog | grep -E 'postfix' > /tmp/syslog ssh root@mx2 -o ConnectTimeout=2 -o ConnectionAttempts=1 'cat /var/log/syslog | grep -E postfix' >> /tmp/syslog ssh root@mx3 -o ConnectTimeout=2 -o ConnectionAttempts=1 'cat /var/log/syslog | grep -E postfix' >> /tmp/syslog ssh root@mx4-o ConnectTimeout=2 -o ConnectionAttempts=1 'cat /var/log/syslog | grep -E postfix' >> /tmp/syslog cat /tmp/syslog | sort -M > /tmp/syslog-2 uniq /tmp/syslog-2 /tmp/syslog
3. Create cronjob, (runtime depends on time to execute /root/merge-syslog.sh)Code:chmod +x /root/merge-syslog.sh
Code:*/10 * * * * /root/merge-syslog.sh
Warning, your data in the tracker-log can have a delay of 10 minutes with this example. With a small amount of mail, you can run it every 5 minutes or less.
Script is used at one node only, in my case mx1.
This is just excellent, well done !! So, in my case, on the master server mx02 I did this:I found a simpler solution that runs without CronJob.
mv /usr/bin/pmg-log-tracker /usr/bin/pmg-log-tracker-default
cat >/usr/bin/pmg-log-tracker <<'SCRIPT_END'
#!/bin/bash
/usr/bin/pmg-log-tracker-default "$@" | head -n -1
ssh root@mx01 /usr/bin/pmg-log-tracker-default "$@" | sed '/^#/ d'
ssh root@mx03 /usr/bin/pmg-log-tracker-default "$@" | sed '/^#/ d'
SCRIPT_END
chmod +x /usr/bin/pmg-log-tracker
# provides UDP syslog reception
module(load="imudp")
input(type="imudp" port="514")
mail.* @ip-address-server1
systemctl restart rsyslog
root@mailgate1:~# grep 24095067E3A9A40CC3A /var/log/syslog
2025-03-26T07:15:48+00:00 mailgate2 pmg-smtp-filter[12069]: 24095067E3A9A40CC3A: new mail message-id=<D9.CA.09278.899A3E76@i-07f2d4481de636190.mta3vrest.sd.prd.sparkpost>#012
2025-03-26T07:15:48+00:00 mailgate2 pmg-smtp-filter[12069]: 24095067E3A9A40CC3A: Subject: Build your rewards!#012
2025-03-26T07:15:51+00:00 mailgate2 pmg-smtp-filter[12069]: 24095067E3A9A40CC3A: SA score=0/5 time=2.923 bayes=undefined autolearn=disabled hits=DKIMWL_WL_HIGH(-0.443),DKIM_SIGNED(0.1),DKIM_VALID(-0.1),DKIM_VALID_AU(-0.1),DKIM_VALID_EF(-0.1),DMARC_PASS(-0.1),HTML_FONT_LOW_CONTRAST(0.001),HTML_MESSAGE(0.001),KAM_EU(0.5),POISEN_SPAM_PILL(0.1),POISEN_SPAM_PILL_1(0.1),POISEN_SPAM_PILL_2(0.1),SPF_HELO_NONE(0.001),SPF_PASS(-0.001)
2025-03-26T07:15:51+00:00 mailgate2 pmg-smtp-filter[12069]: 24095067E3A9A40CC3A: accept mail to <X@XXX.co.uk> (3059D240952) (rule: default-accept)
2025-03-26T07:15:51+00:00 mailgate2 pmg-smtp-filter[12069]: 24095067E3A9A40CC3A: processing time: 3.19 seconds (2.923, 0.157, 0)
2025-03-26T07:15:51+00:00 mailgate2 postfix/smtpd[14546]: proxy-accept: END-OF-MESSAGE: 250 2.5.0 OK (24095067E3A9A40CC3A); from=<msprvs1=20180EhecHOij=bounces-1898-534@em.screwfix.com> to=<X@XXX.co.uk> proto=ESMTP helo=<z2vlqbzr.em.screwfix.com>
root@mailgate1:~# pmg-log-tracker --verbose | grep 24095067E3A9A40CC3A
root@mailgate1:~#
This works fine: https://forum.proxmox.com/threads/h...o-the-master-in-real-time.125843/#post-758627Just another year has passed without the Tracking Center being synchronized across the different cluster nodes. Are there any updates on this?
I am seriously questioning whether it still makes sense to pay for multiple licenses, since diagnostics is our primary responsibility at PMG. In its current state, this setup is extremely inconvenient.
Are there any plans from the developer team to keep the Tracking Center synchronized in a future version of PMG?
Master comment out:
# /etc/rsyslog.conf
module(load="imtcp")
input(type="imtcp" port="514")
Slave(s) add:
# /etc/rsyslog.d/pmg-master.conf
mail.* @@<master-ip>;RSYSLOG_ForwardFormat
On master and slave: systemctl restart rsyslog
We use essential cookies to make this site work, and optional cookies to enhance your experience.