#vsmtp #smtp

vsmtp-common

新一代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日

#128 in 电子邮件

Download history 23/week @ 2024-03-11 27/week @ 2024-03-18 45/week @ 2024-03-25 64/week @ 2024-04-01 30/week @ 2024-04-08 28/week @ 2024-04-15 415/week @ 2024-04-22 30/week @ 2024-04-29 19/week @ 2024-05-06 32/week @ 2024-05-13 17/week @ 2024-05-20 36/week @ 2024-05-27 30/week @ 2024-06-03 24/week @ 2024-06-10 24/week @ 2024-06-17 25/week @ 2024-06-24

每月103次下载
用于 10 个crate(8个直接使用)

GPL-3.0-only

385KB
7.5K 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可以通过插件进行扩展。以下是一些已提供的插件

查看插件章节以获取更多详细信息。

基准测试

在运行AMD Ryzen 5 5600X 6核处理器的Ubuntu 22.04 LTS上进行的Postfix 3.6.4与vSMTP 1.0.1性能比较。

查看"hold" 性能基准说明文档以重现上述示例,并查看性能基准说明文档以尝试其他性能基准。

文档

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

有关文档,请查阅我们的vBook,这是 vSMTP 的在线参考和使用指南。"develop" 分支的文档也可在vBookhttps://vsmtp.rs/next处找到。

想保持最新动态、提问并获得深入解答,请随时加入我们的Discord服务器。您也可以在GitHub上讨论

路线图

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

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

贡献

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

商业

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

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

许可

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

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

依赖项

~29–61MB
~1M SLoC