2011-11-26 69 views
3

爲了總結我的目標,我真的只是尋找一種簡單的開源方法,它允許我創建和維護一個(最好是noSQL db)一個/多個遠程IMAP電子郵件帳戶的備份/實現,並基於每個用戶進行同步每個個人用戶的電子郵件帳戶使用簡單,低成本的解決方案,可輕鬆擴展,以高效的方式消耗服務器資源,增加功能,每個用戶需要能夠通過簡單地將他的新imap帳戶添加到他的中央電子郵件存檔中現有電子郵件客戶端使用通過此存檔服務器/設置提供的imap服務器,用戶名和密碼。如何在couchdb/NoSQL數據存儲上實現IMAP服務器?

更具體地:

我一直在尋找一些類型的可伸縮的開源溶液可以在其允許以下的雲中運行(並且因此容易地向外擴展):

1)允許我指定各種IMAP服務器與登錄信息,用於訪問這些電子郵件帳戶和下載/同步每個帳戶內的所有電子郵件(希望包括文件夾/標籤)

2)關於數據庫用於存儲每個帳戶的所有電子郵件,我正在研究可擴展解決方案如couchdb或mongodb,這大概會保持每個電子郵件的簡單索引。此索引將保留每封電子郵件的基本信息,例如標題列,包括:從,到,數據時間戳,主題行,關聯的文件夾/標籤,首次同步日期時間,上次同步日期時間,讀/未讀狀態,附件,附件文件名/大小/類型以及它所屬的相關IMAP帳戶,....)

3)根據所有原始電子郵件的存儲情況,包括其附件我認爲應該下載每個單獨的電子郵件作爲具有唯一文件名/消息ID的單獨文件,其將在主電子郵件索引內引用,因此所有這些原始電子郵件都可以使用Amazons S3存儲解決方案來存儲,以實現無限的可擴展性。

到目前爲止,我相信現有的Opensource解決方案可以用於或定製以實現這些目標......最值得注意的是,「offlineIMAP」似乎提供了所有這些功能+更多,但如果您意識到不同替代請讓我知道。

好了,現在我不確定元素...

5)我需要的這裏是利用任何類型的電子郵件客戶端,它本身支持通過IMAP連接訪問電子郵件的方式,現在給我能夠連接到我的自定義電子郵件數據庫,就好像它是一個普通的imap電子郵件服務器一樣。因此,我需要某種類型的連接器,它將imap協議連接到在couchdb上執行的操作(或使用任何數據存儲)。當然,任何標準的iMac功能都應該是可能的,例如搜索/複製/移動/刪除/ ...,通過檢索Amazon S3存儲系統中的關聯電子郵件來檢索郵件的詳細信息。 (我只是假設這種方法最大限度地降低了成本這樣做

假設我的邏輯和方法在使用此方法中使用couchdb/mongodb方面是合理的,那麼在我看來,這安裝程序應該確實允許我輕鬆地將其擴展到多個用戶,並且訪問存檔應該相當快...

有沒有人有與實現這些目標相關的經驗,建議或建議/腳本?

如果電子郵件歸檔設置和使用Amazon S3存儲實際電子郵件,我可以想到的唯一不利的副作用是用戶無法通過關鍵字搜索其歸檔的內容(正文) 。我想這可以通過簡單地向couchdb電子郵件索引添加另一列來解決,該列可以從電子郵件中提取所有實際的消息文本(不包括任何以前的回覆/轉發內容中的內容)。

+1

DB!= IMAP服務器。數據庫不會說IMAP協議 – 2011-11-26 04:17:49

+0

自然我知道,couchdb和數據庫通常不提供通過IMAP協議進行連接的能力,因此我正在尋找建立這種連接的最佳方法。 –

回答

1

關於5): 您可能想要看看Apache James,afaik它有很多存儲引擎,您可以使用/改編其中的一個。這樣它可以爲你的數據庫提供一個IMAP接口。當然,它不會與其他服務器同步,您必須使用已經提到的其他服務器來做到這一點。

1

你想用這個完成什麼?

  • 備份IMAP服務器?
  • 網絡訪問電子郵件?
  • 用戶可瀏覽的電子郵件存檔?
  • ...?

你是IMAP管理員嗎?

如果沒有,您必須非常小心,因爲它具有將其他人的電子郵件複製到另一個存儲/數據庫的法律影響。

可以on Rails的使用Ruby如下:

創建Rails應用程序,它連接到你的選擇(如MongoDB的), 的數據庫,並使用Ruby的Net ::的imap庫連接到IMAP服務器,然後讀取數據並將其保存爲數據庫中所需的格式。

確保保存所有消息部分,例如還包括消息ID,時間戳和標題。

http://www.ruby-doc.org/stdlib-1.9.2/libdoc/net/imap/rdoc/Net/IMAP.html

如果你只是想有一個備份:

如果你有直接磁盤訪問IMAP服務器,可能是一個更好的方式來做到這一點是使用Rsync創建存儲電子郵件的磁盤分區副本(不必解析所有電子郵件並將其放入數據庫)。

http://en.wikipedia.org/wiki/Rsync

注:

我認爲,在一般情況下,它是不是一個好主意,試圖保存這些郵件在一個單獨的數據庫。您基本上繞過了IMAP的安全模型。如果您只希望用戶擁有基於Web的電子郵件視圖,則可以使用帶有Web郵件界面的IMAP客戶端。

+0

老實說,我試圖實現上述所有:)一個可以由用戶搜索的自動備份存檔 –

1

這讓我想起了在Hadoop HDFS之上實施的GSOC項目。我已經收集了更多詳細信息here,但我不確定要求是否完全相同。