Commit Diff


commit - 38c7eb9bd22e05ef32998858b178edaf8269cbab
commit + f1007ee0c6a2dfdc5512a1be3dada65cbc5d5391
blob - e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
blob + b370701d06246fa89dcf3303b2be5a20ce8984fe
--- bin/upas/.cvsignore
+++ bin/upas/.cvsignore
@@ -0,0 +1,11 @@
+aliasmail
+filter
+marshal
+nedmail
+qer
+runq
+send
+smtp
+smtpd
+unvf
+vf
blob - /dev/null
blob + 03be23f73edf7e9c4e150b6b046d5f333ba763ac (mode 755)
--- /dev/null
+++ bin/upas/isspam
@@ -0,0 +1,35 @@
+#!/usr/local/plan9/bin/rc
+
+rfork en
+
+if (~ $#* 0)
+	echo usage: isspam mesg && exit 'usage'
+
+TMP=/tmp/isspam.$USER.$pid
+{
+	echo '# hash table'
+	msgcat $1|sed '/^$/,$ s/^From / From /'|upas/msgtok|
+		grep -v '^....................(.*)	'|
+			sed 's/$/	1/'
+} >$TMP.tok
+
+x=`{upas/bayes -k $HOME/mail/_prof.mbox $HOME/mail/_prof.spam ~ $TMP.tok}
+where=$x(1)
+prob=$x(2)
+echo $where $prob
+*=($x)
+shift 2
+while(! ~$#* 0){
+	echo ' ' $1 $2
+	shift 2
+}
+
+rm -f $TMP.tok
+if (~ $where *spam*){
+	echo spam
+	exit ''
+} 
+if not {
+	echo ok
+	exit 'is ok'
+}
blob - /dev/null
blob + 7067a435a36ed4a001bf68c988471d045b266334 (mode 755)
--- /dev/null
+++ bin/upas/msgcat
@@ -0,0 +1,61 @@
+#!/usr/local/plan9/bin/rc
+
+fn read9p {
+	srv=$1; shift
+	9p read $srv >[2=1]|grep -v '^9p\:'
+}
+
+fn dir9p {
+	srv=$1; shift
+	9p ls $srv >[2=1]|grep -v '^9p\:'
+}
+	
+
+fn catmesg {
+	# hold on for a second
+	TMP=/tmp/$USER.`{date -n}; sleep 1
+	msg=$1;
+	read9p $msg/body >$TMP.body
+	t=`{read9p $msg/type}
+	switch($t){
+		case text/html
+			echo '
+					,x/<!--(-?[^\-]|--[^>]|\n)*-->/ c//
+					,x/<[^>]+>/d
+					,p
+					u
+					,y/<[^>]+>/d
+					,p
+				'| sam -d $TMP.body|[2] sed '1d;/^\?/d'
+		case text/*
+			cat $TMP.body
+		case message/*
+			cat $TMP.body
+		case multipart/related
+			if (~ `{read9p $msg/1/type} text/plain)
+				catmesg $msg/1
+			if not if (~ `{read9p $msg/2/type} text/plain)
+				catmesg $msg/2
+			if not {
+				for (i in `{dir9p $msg|awk '$10 ~ /[0-9][0-9]*/ {print $10}'})
+					catmesg $msg/$i
+			}
+		case *
+			echo $t
+		# should there be more?
+	}
+	rm -f $TMP.body
+}
+
+if (~ $#* 0)
+	echo usage: msgcat mail/mbox/msgn && exit 1
+
+mesg=$1
+if (~ `{read9p $mesg/lines} '')
+	echo no such message $mesg && exit 2
+
+			
+read9p $mesg/unixheader; read9p $mesg/header
+echo
+catmesg $mesg
+echo
blob - /dev/null
blob + d7d448526edf46b61060367fe8c7c4fd7fb130b3 (mode 755)
--- /dev/null
+++ bin/upas/spam
@@ -0,0 +1,19 @@
+#!/usr/local/plan9/bin/rc
+
+rfork en
+
+if (~ $#* 0)
+	echo usage: spam mesg && exit 1
+
+TMP=/tmp/spam.$USER.$pid
+{
+	echo '# hash table'
+	msgcat $1|sed '/^$/,$ s/^From / From /'|upas/msgtok|
+		grep -v '^....................(.*)	'|
+			sed 's/$/	1/'
+} >$TMP.tok
+
+cd $home/mail
+upas/addhash -o _prof.mbox _prof.mbox 1 $TMP.tok -1
+upas/addhash -o _prof.spam _prof.spam 1 $TMP.tok 1
+rm -f $TMP.*
blob - /dev/null
blob + b34cd300d1d42b99f477832e48ccd852387a74fd (mode 755)
--- /dev/null
+++ bin/upas/spambox
@@ -0,0 +1,14 @@
+#!/usr/local/plan9/bin/rc
+
+if (~ $#* 0)
+	echo usage: spambox mailfs/mbox && exit "usage"
+box=$1
+msgs=(`{9p ls $box>[2=1]|awk '$10 ~ /[0-9][0-9]*/{print $10}'})
+if (~ $#msgs 0)
+	echo no messages in $box && exit "none"
+
+echo -n adding
+for (m in $msgs){
+	echo -n ' '$m
+	spam $box/$m
+}
blob - /dev/null
blob + 1d056d528199bb48e19e5b0196592a11417ec3a4 (mode 755)
--- /dev/null
+++ bin/upas/unspam
@@ -0,0 +1,19 @@
+#!/usr/local/plan9/bin/rc
+
+rfork en
+
+if (~ $#* 0)
+	echo usage: unspam mesg && exit 1
+
+TMP=/tmp/unspam.$USER.$pid
+{
+	echo '# hash table'
+	msgcat $1|sed '/^$/,$ s/^From / From /'|upas/msgtok|
+		grep -v '^....................(.*)	'|
+			sed 's/$/	1/'
+} >$TMP.tok
+
+cd $home/mail
+upas/addhash -o _prof.mbox _prof.mbox 1 $TMP.tok 1
+upas/addhash -o _prof.spam _prof.spam 1 $TMP.tok -1
+rm -f $TMP.*
blob - /dev/null
blob + bfa70531a5a3d1c90a0f4656dbc4fc5f78c8570e (mode 755)
--- /dev/null
+++ bin/upas/unspambox
@@ -0,0 +1,14 @@
+#!/usr/local/plan9/bin/rc
+
+if (~ $#* 0)
+	echo usage: unspambox mailfs/mbox && exit "usage"
+box=$1
+msgs=(`{9p ls $box>[2=1]|awk '$10 ~ /[0-9][0-9]*/{print $10}'})
+if (~ $#msgs 0)
+	echo no messages in $box && exit "none"
+
+echo -n adding
+for (m in $msgs){
+	echo -n ' '$m
+	unspam $box/$m
+}