diff options
Diffstat (limited to 'contrib/fetchspool')
-rw-r--r-- | contrib/fetchspool | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/contrib/fetchspool b/contrib/fetchspool new file mode 100644 index 00000000..cd6c2c81 --- /dev/null +++ b/contrib/fetchspool @@ -0,0 +1,58 @@ +#!/bin/sh - +# +# Quick hack for fetchmail to locally spool messages. +# +# To spool: +# fetchmail --mda "fetchspool -t %T %F" +# To de-spool +# fetchspool -f +# +# Robert de Bath <robert@mayday.cix.co.uk> +# updated by william boughton <bill@xencat.demon.co.uk> +# 4th/10/1998 and tested +# +# William Boughton comments: +# Still has some potential problems, with using inline from address. +# The use of _ is bad because fetchmails uses this if it notices +# shell escapes. +# 10th/11/1998 +# Changed to using 3 _@@s to delimit the message, i hope this is ok. +# Whilst i have tested and used this script, with my demon account and +# SDPS, it may still have serious problems, that i've not noticed etc. + +MAILSPOOL=/tmp/spool + +if [ "$1" != "-f" ] +then + if [ "$1" = "-t" ] + then + ADDR="$2" + FROM="$3" + else + ADDR="$1" + FROM="$2" + fi + + cat - > $MAILSPOOL/tmp.$$ || exit 1 + mv $MAILSPOOL/tmp.$$ "$MAILSPOOL/msg.`date +%j%H%M%S`$$.to.${ADDR}_@@${FROM}" || exit 1 + + exit 0 +else + for i in $MAILSPOOL/msg.*.to.* + do + [ -f "$i" ] || continue + # TO="`echo \"$i\" | sed 's/^msg.[^.]*.to.//'`" + TO=$(basename $i | sed -e 's/^msg.[^.]*.to.//' -e 's/_@@.*$//') + FROM=$(basename $i | sed 's/^msg.[^.]*.to.*_@@//') +# need the \<\> so for bounces to have a proper from addr +echo the to was \<$TO\> and the from \<$FROM\> + /usr/lib/sendmail -f \<${FROM}\> -oem "$TO" < "$i" || + { + echo "Sendmail failed on `basename \"$i\"`" + continue + } + rm -f "$i" + done + exit 0 +fi + |