#!/bin/rc # create a /tmp for here documents rfork en bind -c /mail/tmp /tmp KEY=whocares USER=ken RECIP=$1 MBOX=$2 PF=/mail/box/$USER/_pattern TMP=/mail/tmp/mine.$pid BIN=/bin/upas D=/mail/fs/mbox/1 # save and parse the mail file {sed '/^$/,$ s/^From / From /'; echo} > $TMP upas/fs -f $TMP # if we like the source # or if the subject contains a valid token # then deliver the mail and allow all the addresses if( $BIN/list check $PF $D/from $D/sender $D/replyto ) { $BIN/deliver $RECIP $D/from $MBOX < $D/raw $BIN/list add $PF $D/from $D/to $D/cc $D/sender rm $TMP exit 0 } switch($status){ case *!match* echo `{date} dropped $RECIP From `{cat $D/replyto} >> /mail/box/$USER/_bounced >[2] /dev/null rm $TMP exit 0 } if ( $BIN/token $KEY $D/subject ) { $BIN/deliver $RECIP $D/from $MBOX < $D/raw $BIN/list add $PF $D/from $D/to $D/cc $D/sender rm $TMP echo `{date} added $RECIP From `{cat $D/replyto} \ >> /mail/box/$USER/_bounced >[2] /dev/null exit 0 } # don't recognize the sender so # return the message with instructions TOKEN=`{upas/token $KEY} upasname=/dev/null {{cat; cat $D/raw} | upas/send `{cat $D/replyto}}<> /mail/box/$USER/_bounced >[2] /dev/null rv=$status rm $TMP exit $status