26 个版本 (6 个稳定版)
2.2.1 | 2023 年 3 月 31 日 |
---|---|
2.2.0 | 2023 年 3 月 19 日 |
2.1.1 | 2023 年 2 月 10 日 |
2.0.1-rc.4 | 2023 年 1 月 31 日 |
1.4.0-rc.7 | 2022 年 12 月 19 日 |
#166 in 邮件
在 2 个 crate 中使用(通过 vsmtp-server)
460KB
9K SLoC
⚠️ vSMTP 2.1.1 到 2.2 的破坏性更改
请注意,vSMTP 2.1.1 和 2.2 之间引入了一些破坏性 API 更改。有关更多详细信息,请参阅变更日志。
什么是 vSMTP ?
vSMTP 是下一代邮件传输代理 (MTA),更快、更安全、更环保。
- 它完全由 Rust 构建。
- 它非常快。
- 它是模块化的,高度可定制。
- 它有一个完整的过滤系统。
- 它正在积极开发和维护。
更快、更安全、更环保
随着优化 IT 资源变得越来越具有挑战性,计算机攻击仍然是一个持续的问题。
每天,全世界有超过 3000 亿封电子邮件被发送和接收。处理、分析和投递数十亿个附件,这导致温室气体排放的增加。
为了应对这些挑战,viridIT 正在开发一种新的电子邮件网关技术,也称为 vSMTP。
关注我们的 viridit.com
过滤
vSMTP 允许您使用基于 Rhai 的 vSMTP 脚本语言 (vsl) 创建复杂的规则集来过滤您的电子邮件。您可以
- 检查/修改传入电子邮件的内容。
- 将电子邮件转发或投递到本地或远程。
- 连接到数据库。
- 运行命令。
- 隔离电子邮件。
等等。
// -- /etc/vsmtp/service/database.vsl
// vSMTP can be extended with plugins.
import "plugins/vsmtp_plugin_mysql" as mysql;
// Here we declare a service.
// Let's connect to a mysql database.
export const database = mysql::connect(#{
// the url to connect to the database.
url: "mysql://127.0.0.1/?user=greylist-manager&password=my-password"",
timeout: "30s",
connections: 4,
});
// -- /etc/vsmtp/filter.vsl
// Here we declare our rules for filtering.
import "service/database" as db;
#{
// hook on the 'mail from' stage. (when the server receives the `MAIL FROM:` command)
mail: [
rule "greylist" || {
let sender = ctx::mail_from();
// is the user in our greylist ?
// (don't forget to sanitize your inputs to prevent SQL injection)
if db::greylist.query(`SELECT * FROM greylist.sender WHERE address = '${sender}';`).is_empty() {
// it does not, we add the address to the database, then deny the email.
db::greylist.query(`
INSERT INTO greylist.sender (user, domain, address)
values ("${sender.local_part}", "${sender.domain}", "${sender}");
`);
// close the connection with a built in "451 - 4.7.1" error code.
state::deny(code::c451_7_1())
} else {
// it is, we accept the email.
state::accept()
}
}
],
}
插件
vSMTP 可以通过插件进行扩展。以下是一些已提供的插件
查看 插件章节 以获取更多详细信息。
基准测试
Postfix 3.6.4 与 vSMTP 1.0.1 性能比较,测试环境为运行在 AMD Ryzen 5 5600X 6核心处理器的 Ubuntu 22.04 LTS 操作系统。
要重现上述示例,请查看"hold" 性能测试说明文档,要尝试其他性能测试,请查看性能测试说明文档。
文档
在此存储库中,“develop”分支是我们每天工作的分支,用于提供新功能。如果您想查看最新 vSMTP 版本示例,请切换到“main”分支,我们的最新发布版本就在那里。
有关文档,请参阅我们的vBook,它是 vSMTP 的在线参考和用户指南。有关“develop”分支的文档,也可在vBook中的https://vsmtp.rs/next找到。
要了解最新动态,提问并获取深入答案,请随时加入我们的Discord服务器。您也可以在GitHub上讨论。
路线图
您可以在变更日志中查看更新。
贡献
有关如何向 vSMTP 贡献的指南可在贡献部分找到。
商业
我们可以提供从设计到物理实现的各种服务,提供维护,并开发特定功能和专用API以满足您的业务需求。
有关商业、许可等问题,您可以通过我们的网站联系我们,或向 contact@viridit.com
发送消息。
许可
vSMTP 的标准版本是免费的,并遵循开源许可。
它按惯例提供,不附带任何保证。有关更多信息,请参阅许可。
依赖
~29–63MB
~1M SLoC