首页
学习
活动
专区
工具
TVP
发布

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/

译者:少年

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180905A0AH5N00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券