aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/upas/filterkit/pipeto.sample
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/upas/filterkit/pipeto.sample')
-rw-r--r--src/cmd/upas/filterkit/pipeto.sample73
1 files changed, 73 insertions, 0 deletions
diff --git a/src/cmd/upas/filterkit/pipeto.sample b/src/cmd/upas/filterkit/pipeto.sample
new file mode 100644
index 00000000..82ef9d1f
--- /dev/null
+++ b/src/cmd/upas/filterkit/pipeto.sample
@@ -0,0 +1,73 @@
+#!/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