#!/bin/rc rfork ne fn deliver { sed '1,/^$/d' $1 > body.$1 sed '/^$/q' $1 > hdr.$1 addrs=`{grep -i '^To: ' hdr.$1 | sed 's/^To: //'} ccs=`{grep -i '^Cc: ' hdr.$1 | sed 's/^Cc: //'} atts=`{grep -i '^Attach: ' hdr.$1 | sed 's/^Attach: //' } incl=`{grep -i '^Include: ' hdr.$1 | sed 's/^Include: //' } repl=`{grep -i '^Replying: ' hdr.$1 | sed 's/^Replying: //' } xaddrs=$addrs xccs=$ccs if (! ~ $#ccs 0) ccs=-C^$ccs if (! ~ $#atts 0) atts=-a^$atts if (! ~ $#incl 0) incl=-A^$incl if (! ~ $#repl 0){ if(! test -f $repl && test -f /mail/box/$user/msgs/$repl) repl=/mail/box/$user/msgs/$repl if(! test -f $repl){ arepl=`{echo $repl | sed 's,(.*)/([0-9]+)/raw,\1/a.\2/raw,'} if(test -f $arepl) repl=$arepl if(test -f /mail/box/$user/msgs/$arepl) repl=/mail/box/$user/msgs/$arepl } if(! test -f $repl){ echo orginal message not found >[1=2] exit orig } upas/fs -p -f $repl repl=-R/mail/fs/mbox/1 } { for(t in $xaddrs) echo 'To: '^$"t for(t in $xccs) echo 'Cc: '^$"t } > addrs.$1 { cat addrs.$1 ; grep -vi '^(To|Cc|Attach|Include|Replying): ' hdr.$1 ; cat body.$1 } | { if ( upas/marshal $repl $atts $incl $ccs $addrs >[2] errs.$1 ) { rm errs.$1 hdr.$1 body.$1 addrs.$1 $1 } if not { echo spool: upas/marshal $repl $atts $incl $ccs $addrs { cat errs.$1 ; q ': ' hdr.$1 body.$1 } | mail -s'returned mail' $user mv $1 Fail.$1 } } unmount /mail/fs } mkdir -p /mail/box/$user/out cd /mail/box/$user/out || exit nombox for (m in [0-9]*) { if (test -e $m) deliver $m } exit ''