procmail
[Top] [All Lists]

Re: redirecting mail

1995-11-11 16:00:59
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