Salmon:一個基於Python語言的郵件伺服器

Salmon:一个基于Python语言的邮件服务器

Salmon是使用純Python語言開發的郵件服務器,旨在以Web框架的形式創建健壯和複雜的郵件應用程序。Salmon部署於傳統的郵件服務器後面,就像WEB應用程序部署在Apache或Nginx後面一樣。它具有Web應用程序的所有特性(模板,路由,處理程序,狀態機)並且可以與其他軟件庫(如Django和SQLAlchemy)很好地配合使用。

Salmon已經被FSF(免費軟件基金會)發佈,釋放版本遵循GNU GPLv3許可協議。

特性

Salmon支持在許多環境中運行,使用目前最先進的技術進行郵件處理。Salmon的目標是成為現代郵件服務器和郵件處理框架,因此它具備一些其他服務器都沒有功能特性:

  • 使用可移植平臺的Python語言編寫,幾乎可以在任何Unix服務器上運行。

  • 可處理幾乎所有類型編碼和格式的郵件,包括附件,並且可對郵件內容進行格式化以便於處理。

  • 發送幾乎原始的乾淨郵件,其他郵件服務器處理起來更容易。

  • 可準確地將國際化郵件解碼為Python的unicode編碼,並將unicode碼轉換成漂亮乾淨的ascii和/或UTF-8編碼。

  • 支持使用Maildir隊列進行延遲工作並將其分發到多臺機器。

  • 可以使用非root用戶運行在特定端口上,以減少入侵風險。

  • Salmon也可以在一個完全獨立的virtualenv中運行,以便於部署。

  • 靈活易用的路由系統可以讓您方便編寫電子郵件的有狀態或無狀態處理程序。

  • 自帶非常有用的工具箱,包括可使用nose進行郵件應用程序單元測試,以及使用PyEnchant進行語法檢查。

  • 支持使用Jinja2或Mako模板來製作包括標題在內的電子郵件。

  • 配置發送和接收系統、數據庫庫或任何其它需要與之通信的備份十分方便。

  • 另外,您無需配置所有內容即可開始使用。 一個簡單的Salmon gen命令可讓您快速啟動並運行應用程序。

  • 最後,為郵件服務器的調試和清理提供了許多有用的命令。

安裝

pip install salmon-mail

項目信息

項目文檔地址:https://salmon-mail.readthedocs.io/en/latest/。

分支

Salmon其實是Lamson的一個分支。 在2012年的夏天(確切地說是2012年7月13日),Lamson在可撤銷的BSD許可協議下被重新許可。 其中最受關注的兩個條款:

4.貢獻者同意任何貢獻歸版權所有者所有,並且貢獻者對他們的貢獻完全沒有權利。

5.版權所有人保留對任何人撤銷該許可的權利,無論何時以何種原因。

讀到這裡意味著我也可以對該項目做出貢獻,但原作者有理由拒絕我,僅僅因為原作者不喜歡我襪子的顏色。所以我找出GNU GPL3許可下的最新版本,然後創建了一個分支。

如果你還沒有熟悉Salmon,你可以理解為它就是Lamson。

源碼

你可以在GitHub上下載源碼:https://github.com/moggers87/salmon。

現狀

Salmon只對原有的基礎代碼做了幾處較大的變更。主要的API接口應該與之前的3.0.0版本相兼容,但是不能保證所有舊的應用程序都好用。

Python版本支持情況:2.7,3.5,3.6。

第2個版本之後的修改詳情參見CHANGELOG。

測試

Salmon項目需要單元測試,代碼檢查,代碼覆蓋率,源碼分析以及安全檢查一系列工作來保證代碼的質量。如果您發現了一個bug,請花點時間寫一下引起bug的測試用例,或者提供一份引起bug詳情的郵件。

如果您提交了新代碼,儘可能的多點代碼覆蓋測試,少點嘲笑。

安全性

Salmon項目遵循和其他開源項目一致的安全報告模式:如果您報告了一個安全漏洞,它將立即生效,並且修復程序以及漏洞詳情將同時發佈給每個人。持續跟蹤安全相關問題是使用Salmon的用戶的職責。

此外,Salmon是以儘可能安全的方式編寫的,並假定它在惡意的環境中運行。如果你發現Salmon運行出現異常,請及時聯繫我們。

開發

Salmon完全用Python編寫,並在Python 2.7上運行,應該會支持Python 3。它應該可以在任何支持Python並具有Unix語義的平臺上運行。

如果你發現自己迷失在源代碼中,那就大叫吧。

代碼風格應儘可能遵循PEP-8,但可以忽略其中關於的80個字符限制(在我看來,120是一個不錯的限制)。

英文原文:https://salmon-mail.readthedocs.io/en/latest/
譯者:少年


分享到:


相關文章: