64 lines · 1.2 KB · Text
RawDownload
#!/bin/rc# validateattachment mboxfilerfork enupastmp=/mail/tmp## exit status matching:##	*discard* - is really bad, refuse the message #	*accept* - is really good, leave attachment alone#	* - rewrite attachment to have .suspect extension#  if(! ~ $#* 1){	echo usage: validateattachment mboxfile >[1=2]	exit usage} echo validating >[1=2]fn save {	d=`{date -n}	cp body $upastmp/$d.$1	cp raw  $upastmp/$d.$1.raw	whatis x >$upastmp/$d.$1.file}fn sigexit {	rm -f $upastmp/$d.$1^('' .raw .file)} upas/fs -f $1cd /mail/fs/mbox/1 x=`{file body | sed s/body://}x=$"xswitch($x){case *Ascii* *text* *'c program'* *'rc executable'* 	save accept	exit accept case *'zip archive'*	# >[2=1] because sometimes we get zip files we can't parse	# but the errors look like	# unzip: reading data for philw.doc.scr failed: ...	# so we can still catch these.	if(unzip -tsf body >[2=1] | grep -si '      |\.(scr|exe|pif|bat|com)$'){		echo executables inside zip file!		exit discard	} case jpeg 'PNG image' bmp 'GIF image' *'plan 9 image'*	save accept	exit accept case *Microsoft* *Office*	save wrap	exit wrap case *MSDOS*	# no executables	echo $x	exit discard} save wrapexit wrap