The basic premise, as I understand is this:
Read mail from stdin Parse headers etc using rfc822 or email module Process
# Now I need to do one of the following:
# Discard mail # Pass through # Forward to another account, possibly modifying the mail
Now that I have coded up some stuff, the first looks easy - mails are getting lost. So the question is (may not be entirely specific to Python), how do I achieve the other two?
Currently, I have set up a .forward that pipes the mail to my script. I can verify that this works by dumping the contents to a file. If I write to stdout, however, the mail is not delivered. That doesn't quite look right either - it's probably too late for the MTA to pick up. What I want to do is to pass the processed mail back to Postfix so it can deliver it to the correct local mail box.
I think something like this might work (snipped from a small script I use to email log files to myself):
smtp = smtplib.SMTP('localhost') smtp.sendmail(sender, rcpt, msg.as_string()) smtp.close()
Regardless of MTA software, this should resend whatever is in msg (in my case a MIMEMultipart). If it should be forwarded, just change rcpt and the To: header.
Unless of course, the server is configured to block messages sent by localhost claiming to be from somewhere else...
/ug -- http://mail.python.org/mailman/listinfo/python-list