181ea85a8SBrad Davis#!/bin/sh 281ea85a8SBrad Davis# 381ea85a8SBrad Davis# 481ea85a8SBrad Davis 581ea85a8SBrad Davis# If there is a global system configuration file, suck it in. 681ea85a8SBrad Davis# 781ea85a8SBrad Davisif [ -r /etc/defaults/periodic.conf ] 881ea85a8SBrad Davisthen 981ea85a8SBrad Davis . /etc/defaults/periodic.conf 1081ea85a8SBrad Davis source_periodic_confs 1181ea85a8SBrad Davisfi 1281ea85a8SBrad Davis 1381ea85a8SBrad Daviscase "$daily_status_mail_rejects_shorten" in 1481ea85a8SBrad Davis[Yy][Ee][Ss]) shorten='cut -d" " -f2,3';; 1581ea85a8SBrad Davis*) shorten=cat;; 1681ea85a8SBrad Davisesac 1781ea85a8SBrad Davis 1881ea85a8SBrad Daviscase "$daily_status_mail_rejects_enable" in 1981ea85a8SBrad Davis [Yy][Ee][Ss]) 2081ea85a8SBrad Davis if [ ! -d /etc/mail ] 2181ea85a8SBrad Davis then 2281ea85a8SBrad Davis echo '$daily_status_mail_rejects_enable is set but /etc/mail' \ 2381ea85a8SBrad Davis "doesn't exist" 2481ea85a8SBrad Davis rc=2 2581ea85a8SBrad Davis elif [ ! -f /var/log/maillog ] 2681ea85a8SBrad Davis then 2781ea85a8SBrad Davis echo '$daily_status_mail_rejects_enable is set but ' \ 2881ea85a8SBrad Davis "/var/log/maillog doesn't exist" 2981ea85a8SBrad Davis rc=2 3081ea85a8SBrad Davis elif [ "$daily_status_mail_rejects_logs" -le 0 ] 3181ea85a8SBrad Davis then 3281ea85a8SBrad Davis echo '$daily_status_mail_rejects_enable is set but ' \ 3381ea85a8SBrad Davis '$daily_status_mail_rejects_logs is not greater than zero' 3481ea85a8SBrad Davis rc=2 3581ea85a8SBrad Davis else 3681ea85a8SBrad Davis echo 3781ea85a8SBrad Davis echo Checking for rejected mail hosts: 3881ea85a8SBrad Davis 3981ea85a8SBrad Davis yesterday=$(date -v-1d '+%b %e') 4081ea85a8SBrad Davis today=$(date '+%b %e') 4181ea85a8SBrad Davis n=$(($daily_status_mail_rejects_logs - 2)) 4281ea85a8SBrad Davis rc=$({ 4381ea85a8SBrad Davis while [ $n -ge 0 ] 4481ea85a8SBrad Davis do 4581ea85a8SBrad Davis if [ -f /var/log/maillog.$n ] 4681ea85a8SBrad Davis then 4781ea85a8SBrad Davis cat /var/log/maillog.$n 4881ea85a8SBrad Davis elif [ -f /var/log/maillog.$n.gz ] 4981ea85a8SBrad Davis then 5081ea85a8SBrad Davis zcat -fc /var/log/maillog.$n.gz 5181ea85a8SBrad Davis elif [ -f /var/log/maillog.$n.bz2 ] 5281ea85a8SBrad Davis then 5381ea85a8SBrad Davis bzcat -fc /var/log/maillog.$n.bz2 54*774bb1c2SCeri Davies elif [ -f /var/log/maillog.$n.xz ] 55*774bb1c2SCeri Davies then 56*774bb1c2SCeri Davies xzcat -f /var/log/maillog.$n.xz 57*774bb1c2SCeri Davies elif [ -f /var/log/maillog.$n.zst ] 58*774bb1c2SCeri Davies then 59*774bb1c2SCeri Davies zstdcat -fc /var/log/maillog.$n.zst 6081ea85a8SBrad Davis fi 6181ea85a8SBrad Davis n=$(($n - 1)) 6281ea85a8SBrad Davis done 6381ea85a8SBrad Davis cat /var/log/maillog 6481ea85a8SBrad Davis } | sed -Ene "/^$today/q" -e "/^$yesterday/{"' 6581ea85a8SBrad Davis s/.*ruleset=check_relay,.* relay=([^,]+), reject=([^ ]*).*/\2 check_relay \1/p 6681ea85a8SBrad Davis t end 6781ea85a8SBrad Davis s/.*ruleset=check_rcpt,.* arg1=<?([^>,]+).* reject=([^ ]+) .* ([^ ]+)/\2 check_rcpt \1 \3/p 6881ea85a8SBrad Davis t end 6981ea85a8SBrad Davis s/.*ruleset=check_([^,]+),.* arg1=<?([^@]+@)?([^>,]+).* reject=([^ ]+) .* ([^ ]+)/\4 check_\1 \3 \5/p 7081ea85a8SBrad Davis :end 7181ea85a8SBrad Davis }' | eval $shorten | sort -f | uniq -ic | sort -fnr | tee /dev/stderr | wc -l) 7281ea85a8SBrad Davis [ $rc -gt 0 ] && rc=1 7381ea85a8SBrad Davis fi;; 7481ea85a8SBrad Davis 7581ea85a8SBrad Davis *) rc=0;; 7681ea85a8SBrad Davisesac 7781ea85a8SBrad Davis 7881ea85a8SBrad Davisexit $rc 79