我正在构buildWeb应用程序,用户通过向应用程序发送电子邮件添加新内容。 用于每个用户的电子邮件地址是自定义的(例如,[email protected]),并且被dynamic创build为Postfix虚拟邮箱。
用户需要能够发送电子邮件到他的自定义邮箱地址([email protected]),我想处理每个传入的电子邮件,parsing它的内容,并用电子邮件中的数据填充我的数据库。
我尝试使用Postfix After Queuefilter,但是我真正想要的是将邮件保存在用户的虚拟邮箱文件夹中后处理。
我会采取另一种方法来做到这一点。
我将创build一个catchall地址,然后通过/ etc / aliases发送到一个脚本,在这个脚本中我将完成所有的parsing和存档操作,而不是创build单个邮箱。 当你不打算存储电子邮件时,没有理由使用邮箱,这是一个巨大的开销。
在/ etc / aliases中,你可以使这个条目
usermail: "|/path/to/myscript.pl"
然后所有的电子邮件将被直接发送到myscript.pl,你可以在那里处理它。
有一个名为procmail (LDA)的程序,几乎可以完成你正在寻找的任务。
我可以想到两个可能的解决scheme:
第一种可能性 :你可以在Postfix中设置一个自定义的mailbox_command 。 对于Postfix收到的每封电子邮件,它将调用configuration文件中定义的mailbox_command ,并在stdin上以纯文本格式提供电子邮件。 这样,您可以决定如何处理每封电子邮件。 你将不得不自己parsing电子邮件的标题。 您可以查看Postfix文档以获取更多有关如何使其工作的想法。 其他应用程序,如procmail也可以作为mailbox_command并帮助您处理传入的邮件。
第二种可能性 :使用Dovecot存储电子邮件。 您不需要启用Dovecot的POP / IMAP模块。 但是,Dovecot配备了梦幻般的doveadm工具,它允许您查询邮箱并从中读取信息。 通过doveadm ,您可以自动select新的电子邮件,上周的电子邮件,阅读整个电子邮件,只是其中的一部分,删除旧的消息,等等。 这是一个强大的工具,我用它在各种脚本来清除旧电子邮件或为用户提供learn-as-spam文件夹。 看一下wiki中的文档 。
(注:我也张贴在Stackoverflow,海报问相同的问题)
我将使用POP3 / IMAP轮询邮箱,下载邮件并处理它们(而不是尝试将某些内容集成到Postfix堆栈中)。 如果您的parsing系统中断或需要在一段时间内脱机,这也将为您提供一个容错级别。