14 个版本

0.3.0 2023年9月21日
0.2.6 2023年3月23日
0.2.5 2022年10月12日
0.2.4 2022年9月14日
0.1.2 2022年1月23日

#110电子邮件 类别中


用于 dmarc

MIT 许可证

85KB
2K SLoC

cfdkim

DKIM (RFC6376) 实现

特性

验证电子邮件签名

示例

let res: DKIMResult = cfdkim::verify_email(&logger, &from_domain, &parsed_email).await?;

if let Some(err) = &res.error() {
  error!(logger, "dkim verify fail: {}", err);
}

println!("dkim={}", res.with_detail());

verify_email 参数如下

  • logger: slog::Logger
  • from_domain: &str (RFC5322.From 的域名)
  • parsed_email: mailparse::ParsedMail

签名电子邮件

示例

let private_key =
    rsa::RsaPrivateKey::read_pkcs1_pem_file(Path::new("./test/keys/2022.private"))?;

let signer = SignerBuilder::new()
    .with_signed_headers(&["From", "Subject"])?
    .with_private_key(private_key)
    .with_selector("2020")
    .with_logger(&logger)
    .with_signing_domain("example.com")
    .build()?;
let signature = signer.sign(&email)?;

println!("{}", signature); // DKIM-Signature: ...

请参阅 SignerBuilder 对象的文档以获取更多信息。

生成测试 DKIM 密钥

使用 OpenDKIM

opendkim-genkey \
    --testmode \
    --domain=example.com \
    --selector=2022 \
    --nosubdomains

依赖项

~16–24MB
~432K SLoC