home *** CD-ROM | disk | FTP | other *** search
- #!/bin/sh
- # shell script to verify what sendmail would do with given addresses
- # this version works for sendmail versions 4.40 and above
-
- verbose=false
- if [ $1 = "-v" ]
- then
- verbose=true
- shift
- fi
-
- trap "/bin/rm /tmp/ver.$$; exit" 1 2 3 15
-
- while [ $# -ge 1 ]
- do
- echo -n "$1: "
-
- /usr/lib/sendmail -bt > /tmp/ver.$$ <<EOF
- 0 $1
- EOF
-
- if grep -s 'ruleset 0 returns: "^V" "local"' /tmp/ver.$$
- then
- if /usr/lib/sendmail -bv $1 > /tmp/ver.$$
- then
- echo addr OK
- else
- sed -n -e '/deliverable/d' \
- -e 's/\(.*\)\.\.\. \(.*\)/\2 (\1)/p' /tmp/ver.$$
- fi
- if $verbose
- then
- aliases=""
- for a in `sed -n 's/\.\.\. deliverable//p' /tmp/ver.$$`
- do
- if [ "$a" = "$1" ]
- then
- echo "Routed to: channel=local, addr=$a"
- else
- aliases="$aliases $a"
- fi
- done
- if [ -n "$aliases" ]
- then
- echo "Aliased to:$aliases"
- $0 $aliases
- fi
- fi
- elif grep -s 'ruleset 0 returns: "^V" "error"' /tmp/ver.$$
- then
- sed -n -e 's/"\([^"]*\)"/\1/g' \
- -e '/ruleset 0 returns:/s/.*^X //p' /tmp/ver.$$
- else
- echo addr OK
- if $verbose
- then
- sed -n '/ruleset 3 returns:/s/.*returns: //p' /tmp/ver.$$ |
- sed -n -e '$s/"\([^"]*\)"/\1/g' \
- -e '$s/ \([!.@%]\) /\1/g' \
- -e '$s/^/Normalised to: /p'
-
- sed -n '/ruleset 0 returns:/s/.*^V" //p' /tmp/ver.$$ |
- sed -e 's/"\([^"]*\)"/\1/g' \
- -e 's/\(.*\) ^W \(.*\) ^X \(.*\)/Routed to: channel=\1, host=\2, addr=\3/'\
- -e 's/\(.*\) ^X \(.*\)/Routed to: channel=\1, addr=\2/' \
- -e 's/ \([!.@%]\) /\1/g'
- fi
- fi
-
- /bin/rm /tmp/ver.$$
- shift
- done
-