我正在编写一个网络应用程序,它需要将电子邮件消息接收到用户的内部电子邮件地址,让管理员批准它们,然后转发到相应用户的外部邮箱。
我已经为消息接收任务安装并配置了后缀。它使用虚拟电子邮件地址,以及存储用户电子邮件地址的现有数据库。本地电子邮件存储是 maildir,我使用 postfix 的虚拟 MDA。
基本上,我想在每次收到新消息时执行一个脚本,以及针对哪个用户(maildir 消息 id 也会非常有帮助)。然后我可以从 python 代码中读取消息(python 有一个用于 maildir 消息框的模块)并将其插入数据库。我可以想到三种方法来做到这一点:
- 迭代用户maildirs并检查是否有任何新消息,但对于大量用户来说它是无效的。
- 使用 dbmail 然后检查数据库中是否有任何新消息(这会更快,但我必须从头开始配置所有内容)。此外,不能使用现有的用户数据表。
- 围绕 maildrop/virtual 编写一个包装器以将消息保存在 db 和 maildir 中,但我需要一种方法来检查接收到的消息是否有效并由真正的MDA 成功保存。
任何建议表示赞赏!