#spf #dns #domain #smtp #data-model #query-api

viaspf-record

发送者策略框架 (SPF) 记录的数据模型和解析器

7 个版本

0.5.1 2024 年 5 月 6 日
0.5.0 2023 年 9 月 12 日
0.5.0-alpha.12023 年 7 月 12 日
0.4.1 2022 年 5 月 10 日
0.4.0-alpha.32022 年 1 月 20 日

电子邮件 中排名 33

Download history 293/week @ 2024-04-27 345/week @ 2024-05-04 307/week @ 2024-05-11 262/week @ 2024-05-18 409/week @ 2024-05-25 485/week @ 2024-06-01 232/week @ 2024-06-08 378/week @ 2024-06-15 362/week @ 2024-06-22 144/week @ 2024-06-29 127/week @ 2024-07-06 134/week @ 2024-07-13 54/week @ 2024-07-20 132/week @ 2024-07-27 68/week @ 2024-08-03 61/week @ 2024-08-10

每月下载量 335
18 个crate中(通过 viaspf)使用

GPL-3.0-or-later

90KB
2.5K SLoC

viaspf-record

viaspf-record 库包含 SPF 记录的数据模型和解析器。SPF 记录在 发送者策略框架 规范中描述,版本 1 (RFC 7208)。

本库中的数据结构构成了对 RFC 7208,第 12 节 中 ABNF 的完整且忠实的编码。广泛的检查确保了正确性和与规范的兼容性。

此库在 viaspf 中使用,其中可以找到 SPF 的完整实现,包括执行 SPF 查询的 API。viaspf-record 库是一个独立的产品,也可以用于其他项目。

最低支持的 Rust 版本是 1.65.0。

使用方法

这是一个 Rust 库。像往常一样,在 Cargo.toml 中包含 viaspf-record

结构体 SpfRecord 表示一个语法上有效的 SPF 记录。可以编程构造一个 SpfRecord 或从一个字符串解析它。

use std::net::Ipv4Addr;
use viaspf_record::*;

let spf_record = "v=spf1 mx ip4:12.34.56.78/24 -all".parse();

assert_eq!(
    spf_record,
    Ok(SpfRecord {
        terms: vec![
            Term::Directive(Directive {
                qualifier: None,
                mechanism: Mechanism::Mx(Mx {
                    domain_spec: None,
                    prefix_len: None,
                }),
            }),
            Term::Directive(Directive {
                qualifier: None,
                mechanism: Mechanism::Ip4(Ip4 {
                    addr: Ipv4Addr::new(12, 34, 56, 78),
                    prefix_len: Some(Ip4CidrLength::new(24).unwrap()),
                }),
            }),
            Term::Directive(Directive {
                qualifier: Some(Qualifier::Fail),
                mechanism: Mechanism::All,
            }),
        ],
    })
);

有关详细信息,请参阅 API 文档

许可证

版权所有 © 2020–2024 David Bürgin

本程序是自由软件:您可以在自由软件基金会发布的 GNU 通用公共许可证的条款下重新分发和/或修改它,许可证版本 3 或(根据您的选择)任何较新版本。

本程序是免费提供给用户的,但没有任何保证;甚至没有关于其适销性或特定用途适用性的暗示性保证。有关详细信息,请参阅 GNU 通用公共许可证。

您应该已经随本程序收到一份 GNU 通用公共许可证副本。如果没有,请参阅 https://gnu.ac.cn/licenses/

无运行时依赖