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:~#
We use essential cookies to make this site work, and optional cookies to enhance your experience.