1#!/usr/bin/perl 2eval ' exec /usr/bin/perl $0 "$@" ' 3 if $running_under_some_shell; 4 5# From a script by <Bill.Campbell@celestial.com> 6# Newsgroups: comp.sources.misc 7# Subject: v28i073: uureroute - Reroute HDB queued mail, Part01/01 8# Date: 26 Feb 92 02:28:37 GMT 9# 10# This is a Honey DanBer specific routine written in perl to reroute all 11# mail queued up for a specific host. It needs to be run as "root" since 12# uucp will not allow itself to remove others requests. 13# 14# Revision *** 92/21/09: Francois Pinard <pinard@iro.umontreal.ca> 15# 1. adapted for Taylor UUCP 16# 17# Revision 1.3 91/10/08 09:01:21 src 18# 1. Rewritten in perl 19# 2. Add -v option for debugging. 20# 21# Revision 1.2 91/10/07 23:57:42 root 22# 1. Fix mail program path. 23# 2. Truncate directory name to 7 characters 24 25($progname = $0) =~ s!.*/!!; # save this very early 26 27$USAGE = " 28# Reroute uucp mail 29# 30# Usage: $progname [-v] host [host...] 31# 32# Options Argument Description 33# -v Verbose (doesn't execute /bin/sh) 34# 35"; 36 37$UUSTAT = "uustat"; 38$SHELL = "/bin/sh"; 39$SMAIL = "/bin/smail"; 40 41sub usage 42{ 43 die join ("\n", @_) . "\n$USAGE\n"; 44} 45 46do "getopts.pl"; 47 48&usage ("Invalid Option") unless do Getopts ("vV"); 49 50$verbose = ($opt_v ? '-v' : ()); 51$suffix = ($verbose ? '' : $$); 52 53&usage ("No system specified") if $#ARGV < 0; 54 55if (!$verbose) 56{ 57 open (SHELL, "| $SHELL"); 58 select SHELL; 59} 60 61while ($system = shift) 62{ 63 $sysprefix = substr ($system, 0, 7); 64 $directory = "/usr/spool/uucp/$sysprefix"; 65 open (UUSTAT, "$UUSTAT -s $system -c rmail |"); 66 print "set -ex\n"; 67 while (<UUSTAT>) 68 { 69 ($jobid, ) = split; 70 ($cfile) = substr ($jobid, length ($jobid) - 5); 71 $cfilename = "$directory/C./C.$cfile"; 72 open (CFILE, $cfilename) || die "Cannot open $cfilename\n"; 73 $_ = <CFILE>; 74 close CFILE; 75 if (/^E D\.(....) [^ ]+ [^ ]+ -CR D\.\1 0666 [^ ]+ 0 rmail (.*)/) 76 { 77 $datafile = "$directory/D./D.$1"; 78 $address = $2; 79 } 80 else 81 { 82 print STDERR; 83 die "Cannot parse previous line from $cfilename\n"; 84 } 85 print "$SMAIL -R $system!$address < $datafile && $UUSTAT -k $jobid\n"; 86 } 87 close UUSTAT; 88} 89close SHELL unless $verbose; 90 91exit 0; 92