#vsmtp #next-gen #transfer #agent #filtering #faster

vsmtp-mail-parser

下一代 MTA。安全、快速且环保

43 个版本 (19 个稳定版)

2.2.1 2023 年 3 月 31 日
2.1.1 2023 年 2 月 10 日
1.4.0-rc.162023 年 1 月 9 日
1.4.0-rc.72022 年 12 月 19 日
1.1.3 2022 年 7 月 12 日

#41电子邮件

Download history 33/week @ 2024-03-16 44/week @ 2024-03-23 60/week @ 2024-03-30 26/week @ 2024-04-06 33/week @ 2024-04-13 322/week @ 2024-04-20 29/week @ 2024-04-27 24/week @ 2024-05-04 26/week @ 2024-05-11 22/week @ 2024-05-18 30/week @ 2024-05-25 38/week @ 2024-06-01 14/week @ 2024-06-08 22/week @ 2024-06-15 31/week @ 2024-06-22 6/week @ 2024-06-29

每月 83 次下载
用于 12 个 Crates (7 个直接使用)

GPL-3.0-only

120KB
2.5K 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 允许您使用基于 vSMTP 脚本语言 (vsl) 的规则集来过滤电子邮件,该语言基于 Rhai。您可以

  • 检查/修改传入电子邮件的内容。
  • 本地或远程转发和传递电子邮件。
  • 连接到数据库。
  • 运行命令。
  • 隔离电子邮件。

等等。

// -- /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()
      }
    }
  ],
}

查看 过滤章节vSL 参考,以了解您可以使用 vSL 做些什么。

插件

vSMTP 可以通过插件进行扩展。以下是一些已提供的插件

有关详细信息,请参阅插件章节书籍

基准测试

在搭载AMD Ryzen 5 5600X 6核心处理器的Ubuntu 22.04 LTS操作系统上,对Postfix 3.6.4与vSMTP 1.0.1的性能进行了比较。

要重现上述示例,请查看"hold"基准测试说明,并尝试其他基准测试,请参阅基准测试说明

文档

在本仓库中,"develop"分支是我们每天开发新功能所工作的分支。如果您想查看最新vSMTP版本的示例,请切换到"main"分支,我们在这里发布最新版本。

有关文档,请参阅我们的书籍,名为vBook,是vSMTP的在线参考和用户指南。"develop"分支的文档也可在https://vsmtp.rs/next找到。

要了解最新动态、提问并获取深入答案,请加入我们的Discord服务器。您也可以在GitHub上发起讨论

路线图

关于项目计划的更多信息,请参阅里程碑路线图部分。

您可以在变更日志中查看更新。

贡献

有关向vSMTP贡献的指南,请参阅贡献部分。

商业

我们可以提供从设计到物理实现的一系列服务,提供维护并开发特定的功能和专用API以满足您的商业需求。

有关商业、许可等方面的问题,您可以通过我们的网站联系我们或发送邮件至contact@viridit.com

许可

vSMTP的标准版是免费的,并遵循开源许可。

它通常提供,不附带任何保证。请参阅许可以获取更多信息。

依赖项

~3.5–5.5MB
~90K SLoC