2017-03-06 42 views
0

我有一個應用程序需要將電子郵件直接寫入本地imap帳戶。沒有MTA(Postfix,Sendmail等),以保持維護的簡單性,並且不擔心MTA漏洞,因爲將會有大約10萬個IMAP帳戶(maildir文件)。在沒有MTA的情況下將電子郵件直接發送到本地Maildir文件

是否有可能以編程方式直接寫入Maildir文件而無需藉助MTA?

到目前爲止,我已經看過毫微微郵件,但它對我的需求來說太簡單了,因爲它的目的是在單用戶機器上使用。還看到了一些可以做到這一點的Python模塊,但不知道Python是否足夠快我們在這裏討論的是100K IMAP帳戶。

計劃在AWS或DO實例上執行此操作。任何關於架構的建議也將非常感謝。

回答

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的方式做到這一點(這是,如果真正所有你需要做的是寫一個郵件目錄文件夾,但可能是矯枉過正):

:0 
/path/to/folder/ 

在結尾的斜線是非常重要的(如果folder是普通文件,Procmail自己的基於目錄的格式(如果它是一個目錄),則選擇不同的傳輸格式 - 伯克利)。

+0

如果您認真用完了CPU,請將[femtomail.c](https://git.lekensteyn.nl/femtomail/tree/femtomail.c)分叉以刪除「Received:」標題並添加愚蠢的默認選項與maildir文件夾路徑看起來像一個簡單的練習,即使你不是C程序員。 – tripleee

相關問題