在没有MTA的情况下将电子邮件直接发送到本地Maildir文件

问题描述:

我有一个应用程序需要将电子邮件直接写入本地imap帐户。没有MTA(Postfix,Sendmail等),以保持维护的简单性,并且不担心MTA漏洞,因为将会有大约10万个IMAP帐户(maildir文件)。在没有MTA的情况下将电子邮件直接发送到本地Maildir文件

是否有可能以编程方式直接写入Maildir文件而无需借助MTA?

到目前为止,我已经看过毫微微邮件,但它对我的需求来说太简单了,因为它的目的是在单用户机器上使用。还看到了一些可以做到这一点的Python模块,但不知道Python是否足够快我们在这里讨论的是100K IMAP帐户。

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

大多数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的方式做到这一点(这是,如果真正所有你需要做的是写一个邮件目录文件夹,但可能是矫枉过正):

:0 
/path/to/folder/ 

在结尾的斜线是非常重要的(如果folder是普通文件,Procmail自己的基于目录的格式(如果它是一个目录),则选择不同的传输格式 - 伯克利)。

+0

如果您认真用完了CPU,请将[femtomail.c](https://git.lekensteyn.nl/femtomail/tree/femtomail.c)分叉以删除“Received:”标题并添加愚蠢的默认选项与maildir文件夹路径看起来像一个简单的练习,即使你不是C程序员。 – tripleee