2009-04-24 157 views
3

我正在爲一家爲客戶提供客戶支持的公司工作。我試圖設計一個系統,在發生某些事件時自動發送電子郵件給客戶端。該系統將由後端部分和Web界面部分組成。後端將處理與Web界面的通信(這將只用於內部使用來更改電子郵件模板),最重要的是它將檢查一些數據庫表,並根據這些結果發送電子郵件......很多。如何設計電子郵件系統?

現在,我想知道如何設計它,使其可以擴展並提供必要的性能,因爲它每小時可能需要處理幾千封電子郵件(這應該是窺視)。我最感興趣的是如何考慮這種架構,以便在未來需要時輕鬆擴展。

Python將用於Postgres的後端,可能是Python Web框架和前端GWT之間的首要任務(這似乎是最簡單的任務)。

回答

2

這聽起來對你來說,你正試圖優化批處理,其中熱量發生在web界面上,但在後端。這也是排隊架構的一個工作。

Amazon例如,如果你真的需要大規模提供排隊系統。因此,您可以在您身邊添加多臺計算機,以將消息作爲eMails傳遞。因此,您允許一臺機器同時只收取來自隊列的100條消息。

與電子郵件系統的模式應該是不同尋常的,所以如果你不喜歡排隊,那麼看看其他異步建築。

5

這是使用一些現成的軟件的真正好選擇。周圍有許多開源郵件列表管理器軟件包;他們已經知道如何做羣發郵件。這些郵件是否每次都會去相同的人並不完全清楚;如果是這樣,請獲得任何一個常規郵件列表程序。

如果沒有,簡單的答案是

$ mail address -s subject < file 

每一次郵件。

順便說一下,調查網上誰在你的上游的政策。有些ISP會將大量郵件視爲可能的垃圾郵件,並可能會通過切斷或計量您的Internet訪問而讓您感到驚訝。

+0

+1爲現貨提示和ISP驚喜! – 2009-04-24 19:31:21

3

只要您的外發郵件服務器願意及時接受他們,每小時幾千封電子郵件並不算多。

我會使用本地mta發送它們,如postfix或exim(如果需要,它們會通過您的傳出中繼發送它們)。然後,該服務負責郵件隊列,重試,反彈等。如果您在尋找更多的「郵件列表」功能,請嘗試將郵遞員添加到組合中。它是用python編寫的,你可能已經看到了,因爲它運行着大量的互聯網郵件列表。

+0

+1在這種情況下使用本地MTA至關重要。 – codeape 2009-04-24 19:54:43

0

您可能想嘗試使用Twisted Mail來在純Python中實現自己的後端。

2

您可能想要查看Lamson,這是一個用Python編寫的基於狀態機的電子郵件服務器,應該能夠完成您所描述的任務。它是由Zed Shaw撰寫的,他最近在博客上發表了這篇文章here