| #!/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}}<<EOF |
| Subject: $USER's mail filter |
| I've been getting so much junk mail that I'm resorting to |
| a draconian mechanism to avoid the mail. In order |
| to make sure that there's a real person sending mail, I'm |
| asking you to explicitly enable access. To do that, send |
| mail to $USER at this domain with the token: |
| $TOKEN |
| in the subject of your mail message. After that, you |
| shouldn't get any bounces from me. Sorry if this is |
| an inconvenience. |
| |
| ---------------- |
| Original message |
| ---------------- |
| EOF |
| |
| echo `{date} bounced $RECIP From `{cat $D/replyto} \ |
| >> /mail/box/$USER/_bounced >[2] /dev/null |
| |
| rv=$status |
| rm $TMP |
| exit $status |