]> CyberLeo.Net >> Repos - FreeBSD/releng/7.2.git/blob - etc/periodic/daily/460.status-mail-rejects
Create releng/7.2 from stable/7 in preparation for 7.2-RELEASE.
[FreeBSD/releng/7.2.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])
16     sed_output='\4 \3...';;
17 *)
18     sed_output='\2 (\3... \4)';;
19 esac
20
21 case "$daily_status_mail_rejects_enable" in
22     [Yy][Ee][Ss])
23         if [ ! -d /etc/mail ]
24         then
25             echo '$daily_status_mail_rejects_enable is set but /etc/mail' \
26                 "doesn't exist"
27             rc=2
28         elif [ ! -f /var/log/maillog ]
29         then
30             echo '$daily_status_mail_rejects_enable is set but ' \
31                 "/var/log/maillog doesn't exist"
32             rc=2
33         elif [ "$daily_status_mail_rejects_logs" -le 0 ]
34         then
35             echo '$daily_status_mail_rejects_enable is set but ' \
36                 '$daily_status_mail_rejects_logs is not greater than zero'
37             rc=2
38         else
39             echo
40             echo Checking for rejected mail hosts:
41
42             start=`date -v-1d '+%b %e'`
43             n=$(($daily_status_mail_rejects_logs - 2))
44             rc=$({
45                 while [ $n -ge 0 ]
46                 do
47                     if [ -f /var/log/maillog.$n ]
48                     then
49                         cat /var/log/maillog.$n
50                     elif [ -f /var/log/maillog.$n.gz ]
51                     then
52                         zcat -fc /var/log/maillog.$n.gz
53                     elif [ -f /var/log/maillog.$n.bz2 ]
54                     then
55                         bzcat -fc /var/log/maillog.$n.bz2
56                     fi
57                     n=$(($n - 1))
58                 done
59                 cat /var/log/maillog
60             } |
61                 sed -n -E "s/^$start"'.*ruleset=check_[^ ]+, +arg1=<?([^@]+@)?([^>,]+).*reject=([^ ]+) .* ([^ ]+)$/'"$sed_output"'/p' |
62                 sort -f | uniq -ic | sort -fnr | tee /dev/stderr | wc -l)
63             [ $rc -gt 0 ] && rc=1
64         fi;;
65
66     *)  rc=0;;
67 esac
68
69 exit $rc