I seem to get messages like Unable to deliver message to the following recipients, because the message was forwarded more than the maximum allowed times when I try to bounce messages via mutt. This is because by the time an email to ianw@ieee.org gets to my inbox it has bounced around a bunch of places like the IEEE and UNSW.
What I would really like is a filter-and-bounce function in mutt to filter out the headers. This involves minimal work from me (as opposed to, say, resending the message). mutt doesn't have this so I have hacked my own.
Firstly, in .muttrc add
set pipe_decode=no macro index "B" "python2.3 /home/bin/bounce.py"
The pipe decode is important, since otherwise mime messages will get scrambled on the bounce and attachments won't come, etc.
Then just do the bounce with this python script
SENDMAIL = "/usr/sbin/sendmail"
FROMMAIL = "ianw@ieee.org"
SMTPHOST = mail.internode.on.net
import email, sys, smtplib, os
m = email.message_from_file(sys.stdin)
del m['received']
if len(sys.argv) == 2 :
email = sys.argv[1]
print "Bouncing to %s" % email
else:
newstdin = os.open("/dev/tty", os.O_RDONLY)
os.dup2(newstdin, 0)
print "Email to send to :",
sys.stdout.flush()
email = sys.stdin.readline()
server = smtplib.SMTP(SMTPHOST)
server.sendmail(FROMMAIL, email, m.as_string())
server.quit()
The only tricky bit is having to re-open stdin because mutt sets up a pipe between it and the pipe-message process. You can add your own X-Resent-From type headers if you want.