|
|
1.1 ! root 1: #!/usr/local/bin/perl ! 2: eval ' exec /usr/local/bin/perl $0 "$@" ' ! 3: if $running_under_some_shell; ! 4: ! 5: # From a script by <[email protected]> ! 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 <[email protected]> ! 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 = "/usr/local/bin/uustat"; ! 38: $SHELL = "/bin/sh"; ! 39: $SMAIL = "/bin/smail"; ! 40: ! 41: sub usage ! 42: { ! 43: die join ("\n", @_) . "\n$USAGE\n"; ! 44: } ! 45: ! 46: do "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: ! 55: if (!$verbose) ! 56: { ! 57: open (SHELL, "| $SHELL"); ! 58: select SHELL; ! 59: } ! 60: ! 61: while ($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: } ! 89: close SHELL unless $verbose; ! 90: ! 91: exit 0;
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.