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 email@example.com 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 = "firstname.lastname@example.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 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.