]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - etc/periodic/daily/460.status-mail-rejects
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / etc / periodic / daily / 460.status-mail-rejects
1 #!/bin/sh
2 #
3 # $FreeBSD$
4 #
5
6 # If there is a global system configuration file, suck it in.
7 #
8 if [ -r /etc/defaults/periodic.conf ]
9 then
10     . /etc/defaults/periodic.conf
11     source_periodic_confs
12 fi
13
14 case "$daily_status_mail_rejects_shorten" in
15 [Yy][Ee][Ss])   shorten='cut -d" " -f2,3';;
16 *)              shorten=cat;;
17 esac
18
19 case "$daily_status_mail_rejects_enable" in
20     [Yy][Ee][Ss])
21         if [ ! -d /etc/mail ]
22         then
23             echo '$daily_status_mail_rejects_enable is set but /etc/mail' \
24                 "doesn't exist"
25             rc=2
26         elif [ ! -f /var/log/maillog ]
27         then
28             echo '$daily_status_mail_rejects_enable is set but ' \
29                 "/var/log/maillog doesn't exist"
30             rc=2
31         elif [ "$daily_status_mail_rejects_logs" -le 0 ]
32         then
33             echo '$daily_status_mail_rejects_enable is set but ' \
34                 '$daily_status_mail_rejects_logs is not greater than zero'
35             rc=2
36         else
37             echo
38             echo Checking for rejected mail hosts:
39
40             yesterday=$(date -v-1d '+%b %e')
41             today=$(date '+%b %e')
42             n=$(($daily_status_mail_rejects_logs - 2))
43             rc=$({
44                 while [ $n -ge 0 ]
45                 do
46                     if [ -f /var/log/maillog.$n ]
47                     then
48                         cat /var/log/maillog.$n
49                     elif [ -f /var/log/maillog.$n.gz ]
50                     then
51                         zcat -fc /var/log/maillog.$n.gz
52                     elif [ -f /var/log/maillog.$n.bz2 ]
53                     then
54                         bzcat -fc /var/log/maillog.$n.bz2
55                     fi
56                     n=$(($n - 1))
57                 done
58                 cat /var/log/maillog
59             } | sed -Ene "/^$today/q" -e "/^$yesterday/{"'
60                     s/.*ruleset=check_relay,.* relay=([^,]+), reject=([^ ]*).*/\2 check_relay \1/p
61                     t end
62                     s/.*ruleset=check_rcpt,.* arg1=<?([^>,]+).* reject=([^ ]+) .* ([^ ]+)/\2 check_rcpt \1 \3/p
63                     t end
64                     s/.*ruleset=check_([^,]+),.* arg1=<?([^@]+@)?([^>,]+).* reject=([^ ]+) .* ([^ ]+)/\4 check_\1 \3 \5/p
65                     :end
66                 }' | eval $shorten | sort -f | uniq -ic | sort -fnr | tee /dev/stderr | wc -l)
67             [ $rc -gt 0 ] && rc=1
68         fi;;
69
70     *)  rc=0;;
71 esac
72
73 exit $rc