用于后缀的Python过滤器

时间:2011-08-22 20:47:12

标签: python email filter postfix-mta

我正在尝试为postfix创建一个简单的Python过滤器,在某些消息的“Reply-to”标题中添加。

到目前为止,我所做的是从stdin获取电子邮件,并将其解析为如下所示的电子邮件对象:

raw = sys.stdin.readlines()
msg = email.message_from_string(''.join(raw))

然后我玩过标题等。

msg.add_header('Reply-to', 'foo@bar.com')

现在想把它重新注入后缀。阅读与postfix相关的filter readme,我应该使用'sendmail'命令将其传回去。但是,我不确定如何将电子邮件对象传递给sendmail,例如使用subprocess的'call()'或者我是否应该使用smtplib的'smtplib.SMTP()'?

什么是'正确'方法?

由于

1 个答案:

答案 0 :(得分:4)

您应该能够使用这两种方法,但smtplib.SMTP()更灵活,使错误处理更容易。

如果您需要示例,请查看我的framework for python filtershttps://github.com/gryphius/fuglu/blob/master/fuglu/src/fuglu/connectors/smtpconnector.py#L67

re_inject方法就是这样(FUSMTPClient是smtplib.SMTP的子类),所以基本上归结为:

client = smtplib.SMTP('127.0.0.1',<yourportnumber for the receiving postfix instance>)
client.sendmail(<envelope from>, <envelope to>, <yourmessageobject>.as_string())