5

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

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

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

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

任何建议表示赞赏!

4

2 回答 2

8

/etc/aliases文件中,您可以指定每次用户收到邮件时执行的程序。该程序在标准输入上获取邮件。所以你不必轮询,你的程序会立即运行。

于 2009-11-22T12:26:42.203 回答
5

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

于 2009-11-22T15:12:04.897 回答