Postfix消息收到钩子

时间:2009-11-22 12:22:08

标签: postfix-mta

我正在编写一个网络应用程序,需要接收用户内部电子邮件地址的电子邮件,让管理员批准它们,然后转发到相应用户的外部邮箱。

我已经为消息接收任务安装并配置了postfix。它使用虚拟电子邮件地址和我存储用户电子邮件地址的现有数据库。本地电子邮件存储是maildir,我使用postfix的虚拟MDA。

基本上,我想在每次收到新消息时执行一个脚本,并且对于哪个用户(maildir消息id也非常有帮助)。然后我可以从python代码中读取消息(python有一个maildir消息框的模块)并将其插入数据库中。 我可以想到三种方法:

  • 迭代用户maildirs并检查 如果有任何新消息,但对大量用户无效。
  • 使用dbmail,然后检查数据库中是否有新消息(这会更快,但我必须从头开始配置所有内容)。此外,不能使用现有的用户数据表。
  • 在maildrop / virtual周围编写一个包装器,以便在db和maildir中保存消息,但我需要一种方法来检查收到的消息是否有效并由真实 MDA成功保存。

任何建议都赞赏!

2 个答案:

答案 0 :(得分:8)

/etc/aliases文件中,您可以指定每次用户收到邮件时执行的程序。该程序在stdin上获取邮件。所以你不必进行民意调查,你的程序会立即运行。

答案 1 :(得分:5)

在回答我自己的问题时,我使用了postfix content_filter,在管道中设置了X标志并手动处理接收地址和消息。由于我不需要在maildir中访问消息,这种方法对我来说很好。