如何在发送给Postfix中的虚拟用户之前保存电子邮件?

我使用DBMail的Postfix,所以Postfix将电子邮件发送给虚拟用户。 它一直在完美的工作。

但是,我希望将所有电子邮件保存到本地磁盘,然后交付给虚拟用户。 我发现content_filter可以做到这一点,但对我来说这不是一个好的方法,因为我已经将它用于DSpam的垃圾邮件过滤。

有没有另一种方式来做到这一点?

谢谢。

我做了一些非常相似的事情。 似乎有一些不同的方法。

首先,您可以使用recipient_bcc_maps为传入该域的邮件生成附加地址。 例如,这可能是一个表格,用于说明电子邮件是否具有收件人[email protected]它应该被[email protected] archive ,然后被别名为文件/ maildir。

或者,我在本地完成的方式是在我的“虚拟”( virtual_mailbox_maps )表中input这样的内容:

 [email protected] [email protected], offline-comms 

然后在我的“vmailbox”( virtual_mailbox_maps )表中:

 [email protected] supply/ 

然后,我将virtual_mailbox_base设置为我的邮件归档的基本目录。 “虚拟”表中的条目将传入的电子邮件分割为电子邮件地址( [email protected]并将其传递到offline-comms (将电子邮件提供给应用程序服务器)以及本身,以便在“vmailbox “以及。 “vmailbox”条目告诉virtual(8)交付代理将电子邮件保存到virtual_mailbox_base下名为“supply”的Maildir中。

当然,这意味着必须更新两个文件才能添加新的收件人。 但是,如果你是从数据库生成这些文件,或者使用数据库查找,那么这不会是一个问题。

请注意,我已经将邮件别名到offline-comms以便将其传送到应用程序服务器。 这可能对您无效,具体取决于您如何集成DBMail。 另一种方法是将传入的电子邮件别名存档到一个特殊的域中进行存档:

 [email protected] [email protected], [email protected] 

然后,将虚拟域emails.example.com提供给您的dbmail传输(例如,使用transports映射将emails.example.com简单映射到dbmail-lmtp: ,并使用virtual传输将archive.example.com域传递给得到保存到本地邮件。

希望有所帮助!