Soren Dayton writes on 11 November 1995 at 15:48:29
Is it possible to set up a procmail recipe that just doesn't just forward
mail, but redirects it to a new address while preserving the original
sender? What I have in mind is something like the "redirect" in Eudora or
"bounce" in Pine.
What do you mean? Just put on resent- headers and send it on its
merry way? That is really easy... Just a bunch of formail things
Here's my "resend-message" script that as an added bonus expands
aliases in $HOME/.mailrc.
##### forward "nachrichten" onto intested persons
:0c
* ^Reply-To:.*German *News *<GERMNEWS@(vm.gmd.de|DEARN.BITNET)>
| resend-message nachrichten
:A:
toread/nachrichten
Dan
-----
#!/bin/sh
#
# J. Daniel Smith
# 13 January 1994
#
# resend a mail message expanding aliases from $HOME/.mailrc first
#
# note that your FQDN is needed in for the Errors-To: header. You can
# remove this header if you aren't forwarding mail from mailing lists;
# otherwise its VITAL you have this, w/o it the mailing list
# administrator will get email problems about addresses they know
# nothing about.
#
PATH=/bin:/usr/bin:/usr/local/bin:`dirname $0`
if [ $# != 1 ]; then
echo "Usage: $0 recipients < message"
exit 1
fi
#
# ugly alias expansion from $HOME/.mailrc. Probably could be done a
# lot better, but this seems to work OK
#
ALIAS_LIST=""
ADDRESS_LIST="$1"
until [ "$ALIAS_LIST" = "$ADDRESS_LIST" ] ; do
ALIAS_LIST="`echo "$ADDRESS_LIST"| sed -e 's/,/ /g' `"
ADDRESS_LIST=""
for ALIAS in $ALIAS_LIST ; do
ADDRESS=`grep '^[ ]*alias[ ][ ]*'"$ALIAS"'[ ]'
${HOME}/.mailrc |\
sed -e s/'^[ ]*alias[ ][ ]*'"$ALIAS"'[ ][
]*'// |\
sed -e s/'"'//g`
if [ "$ADDRESS" ] ; then
ADDRESS_LIST="$ADDRESS_LIST $ADDRESS"
else
ADDRESS_LIST="$ADDRESS_LIST $ALIAS"
# for elm alias expansion use the following line instead of the previous.
# ADDRESS_LIST="$ADDRESS_LIST "`elm -c "$ALIAS" | cut -f3 -d\ `
fi
done
done
ADDRESS_LIST="`echo "${ADDRESS_LIST}" | sed 's/^ //' | sed 's/ /, /g'`"
#
# now forward on the message
#
# get the date in RFC822 format for insertion into some messages;
# the "Resent-Date:" field is copied from the "Date:" field on some systems.
# RFC1123 says "All mail software SHOULD use 4-digit years in dates..."
DATE=`date '+%a, %d %h %Y %H:%M:%S %Z'`
# assume use of "formail" since that makes things a lot easier
# apparently sendmail ignores "To:" in the presence of "Resent-To:"
formail -b \
-IResent-From: -I "From " \
-i"Resent-To: $ADDRESS_LIST" \
-i"Resent-Date: $DATE" \
-I"Errors-To: $LOGNAME(_at_)`fqdn`" \
-a"Subject: No subject given in original message!" \
-a"To: $ADDRESS_LIST" \
| exec /usr/lib/sendmail -t -oi "$ADDRESS_LIST"
exit 0