#mail-server #vsmtp #email #server #mail-filter

vsmtp-server

新一代 MTA。安全、快速、绿色

38 个版本 (17 个稳定版本)

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日

#7#vsmtp

Download history 1/week @ 2024-03-15 1/week @ 2024-03-22 121/week @ 2024-03-29 1/week @ 2024-04-05 296/week @ 2024-04-19 8/week @ 2024-04-26

每月 148 次下载
vsmtp 中使用

GPL-3.0-only

1MB
18K SLoC


⚠️ vSMTP 2.1.1 至 2.2 的破坏性更改

请注意,vSMTP 2.1.1 和 2.2 之间引入了一些破坏性 API 变更。有关详细信息,请参阅 变更日志

vSMTP 是什么?

vSMTP 是一个下一代 邮件传输代理 (MTA),更快、更安全、更绿色。

  • 它是 100% 使用 Rust 编写的。
  • 它速度极快。
  • 它是模块化的,高度可定制。
  • 它拥有完整的过滤系统。
  • 它正在积极开发和维护。

更快、更安全、更绿色

在优化 IT 资源成为越来越大的挑战的同时,计算机攻击仍然是一个持续的问题。

每天全球发送和接收的电子邮件超过 3000 亿封。数亿个附件被处理、分析和传递,导致温室气体排放的增加。

为了应对这些挑战,viridIT 正在开发一种新的电子邮件网关技术,也称为 vSMTP。

关注我们 viridit.com

过滤

vSMTP 允许您使用基于 RhaivSMTP 脚本语言 (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()
      }
    }
  ],
}

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

插件

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” 分支的文档也可在 书籍https://vsmtp.rs/next 处找到。

要随时关注,提问并获得深入解答,请自由加入我们的 Discord 服务器。您也可以在 GitHub 上 讨论

路线图

您可以在 里程碑路线图 部分找到更多关于项目计划的信息。

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

贡献

有关如何贡献 vSMTP 的指南可在 贡献 部分找到。

商业

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

有关商业、许可等问题,您可以通过我们的网站 联系 我们或发送消息到 contact@viridit.com

许可

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

它按照惯例提供,没有任何保证。有关更多信息,请参阅 许可

依赖关系

~38–74MB
~1.5M SLoC