0

我有一个应用程序需要将电子邮件直接写入本地 imap 帐户。中间没有 MTA(Postfix、Sendmail 等),以使其易于维护,也无需担心 MTA 漏洞,因为将有大约 10 万个 IMAP 帐户(maildir 文件)。

是否可以在不借助 MTA 的情况下以编程方式直接写入 Maildir 文件?

到目前为止,我已经查看了 femtomail,但它对我的需求来说太简单了,因为它旨在用于单用户机器上。还看到了一些可以执行此操作的 python 模块,但不确定 Python 是否足够快,因为我们正在谈论100K IMAP 帐户在这里。

计划在 AWS 或 DO 实例上执行此操作。任何关于架构的建议也将不胜感激。

4

1 回答 1

1

大多数 IMAP 服务器都很好地模块化并包含一个交付代理,和/或协作使用已经存在此类工具的标准文件夹格式。在这种情况下,不需要为任何事情调用 MTA,这可以说是一个有意识的设计决策(也使 IMAP 服务器等的系统测试变得更加简单!)

Pythonmailbox支持写入和以其他方式操作maildir 文件夹

# Untested, based on example in documentation
import mailbox
destination = mailbox.Maildir('/path/to/folder')
destination.add(message)

我严重怀疑这段代码无论如何都会受 CPU 限制(写入磁盘往往会成为瓶颈)所以语言的速度可能不会成为问题(而且我还没有发现 Python 太慢了用户空间的东西,通常)。

由于您标记了此 Procmail,因此 Procmail 执行此操作的方式(但是,如果您真正需要做的只是写入 maildir 文件夹,这可能是矫枉过正

:0
/path/to/folder/

尾部斜杠很重要(省略它会选择不同的交付格式——如果folder是纯文件,则为 Berkeley,如果是目录,则为 Procmail 自己的基于目录的格式)。

于 2017-03-06T05:45:20.513 回答