直接发送电子邮件到没有MTA的本地Maildir文件

时间:2017-03-06 00:11:55

标签: python email procmail maildir

我的应用程序需要直接将电子邮件写入本地imap帐户。之间没有MTA(Postfix,Sendmail等),以便保持简单,并且不需要担心MTA漏洞,因为将有大约100K IMAP帐户(maildir文件)。

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

到目前为止,我已经看过femtomail,但它对我的需求来说太简单了,因为它打算在单用户机器上使用。还看到一些python模块会这样做但不确定考虑到我们在这里谈论100K IMAP账户,如果Python足够快。

计划在AWS或DO实例上执行此操作。对建筑的任何建议也将非常感激。

1 个答案:

答案 0 :(得分:1)

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

Python mailbox library支持writing to并以其他方式操纵maildir folders

# 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自己的基于目录的格式。)