pipeto.sample-hold (872B)
1 #!/bin/rc 2 3 # create a /tmp for here documents 4 rfork en 5 bind -c /mail/tmp /tmp 6 7 KEY=whocares 8 USER=ken 9 10 RECIP=$1 11 MBOX=$2 12 PF=/mail/box/$USER/_pattern 13 TMP=/mail/tmp/mine.$pid 14 BIN=/bin/upas 15 D=/mail/fs/mbox/1 16 17 # save and parse the mail file 18 {sed '/^$/,$ s/^From / From /'; echo} > $TMP 19 upas/fs -f $TMP 20 21 # if we like the source 22 # or if the subject contains a valid token 23 # then deliver the mail and allow all the addresses 24 if( $BIN/list check $PF $D/from $D/sender $D/replyto ) 25 { 26 $BIN/deliver $RECIP $D/from $MBOX < $D/raw 27 $BIN/list add $PF $D/from $D/to $D/cc $D/sender 28 rm $TMP 29 exit 0 30 } 31 switch($status){ 32 case *!match* 33 echo `{date} dropped $RECIP From `{cat $D/replyto} >> /mail/box/$USER/_bounced >[2] /dev/null 34 rm $TMP 35 exit 0 36 } 37 38 # don't recognize the sender so hold the message 39 $BIN/deliver $RECIP $D/from /mail/box/$USER/_held < $D/raw 40 41 rv=$status 42 rm $TMP 43 exit $status