#vsmtp #mysql #plugin

vsmtp-plugin-mysql

一个为vSMTP启用对mysql数据库支持的插件

1个版本 (0个不稳定版本)

1.4.0-rc.102023年1月3日

#1925 in 数据库接口

GPL-3.0-only

340KB
4.5K SLoC


什么是vSMTP ?

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

  • 它是100%用 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 ?
      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()
      }
    }
  ],
}

查看 api 文件夹以了解您可以使用vsl做什么。

基准测试

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

查看 benchmarks readme 获取可重复使用的示例。

文档

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

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

要了解最新信息、提问并获得深入答案,请加入我们的 Discord 服务器。您还可以在GitHub上打开 讨论

路线图

接下来的版本 "1.4.x" 专注于为 vSMTP 开发插件。您可以在 里程碑 中找到更多关于项目计划的信息。

变更日志 中查看更新历史。

贡献 部分可以找到关于为 vSMTP 贡献的指南。

商业

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

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

许可证

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

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

依赖项

~45–82MB
~1.5M SLoC