7 个版本

0.1.1 2024年6月14日
0.1.0 2024年5月21日
0.0.5 2024年5月13日
0.0.4 2024年4月13日
0.0.1 2024年1月3日

#167密码学

36 每月下载次数

GPL-3.0-or-later

130KB
3K SLoC

dkimdo

dkimdo 工具是一个命令行工具,用于执行常见的 DKIM 操作:密钥生成和密钥处理,以及电子邮件的签名和验证。DKIM(域密钥识别邮件)在 RFC 6376 中定义。

该项目目标是提供一个通用的工具,以满足您在命令行上处理 DKIM 所需要的所有功能。所有 dkimdo 子命令都支持多种选项,因此可以进行高度定制。

内部,dkimdo 基于 viadkim 库。这个库旨在实现优秀标准兼容性,包括国际化电子邮件的支持。由于 dkimdo 主要依赖于这个库,因此其 API 文档对于了解 dkimdo 的行为细节非常有帮助。

安装

dkimdo 命令行工具是一个 Rust 程序;使用 Cargo 按照常规安装。

例如,使用以下命令安装发布在 crates.io 上的最新版本

cargo install --locked dkimdo

最低支持的 Rust 版本是 1.74.0。

使用方法

安装后,dkimdo 程序可以在命令行上以 dkimdo 的形式调用,后面跟一个命令名称。

对于密钥处理,以下命令可用

  • dkimdo genkey 生成一个新的签名密钥及其对应的 DKIM 公钥记录
  • dkimdo keyinfo 显示现有本地签名密钥的信息
  • dkimdo query 显示 DNS 中 DKIM 公钥记录的信息

对于签名和验证,以下命令可用

  • dkimdo sign 使用 DKIM 签名签名电子邮件消息
  • dkimdo verify 验证电子邮件消息中的 DKIM 签名

此外,低级命令 dkimdo canondkimdo crypt 执行规范化和基本加密操作。

所有 dkimdo 命令都提供了广泛的配置选项。有关使用信息,请参阅 dkimdo help <command>

有关详细信息,请参阅随附的手册页面 dkimdo(1)。 (您可以通过传递文件路径到 man 来查看手册页面,而无需安装: man ./dkimdo.1)

示例

生成 Ed25519 签名密钥和 DKIM 公钥记录,并将其打印到 stdout 和 stderr

dkimdo genkey ed25519

生成 2048 位 RSA 签名密钥

dkimdo genkey rsa

生成 1024 位 RSA 签名密钥

dkimdo genkey --bits 1024 rsa

生成 RSA 签名密钥并将其存储在文件 key.pem 中,同时将 DKIM 公钥记录存储在文件 record.txt

dkimdo genkey rsa >key.pem 2>record.txt

使用权限 0600 在文件 key.pem 中生成 RSA 签名密钥

dkimdo genkey --out-file key.pem rsa

查询 DNS 以获取位于 default._domainkey.example.com 的 DKIM 公钥记录

dkimdo query example.com default

查询 DKIM 公钥并检查它是否与签名密钥 key.pem 相对应

dkimdo query example.com default key.pem

使用密钥 key.pem 对域 example.com 的消息 msg.eml 进行签名

dkimdo sign example.com default key.pem < msg.eml

验证消息 msg.eml 中的签名

dkimdo verify < msg.eml

签名消息 msg.eml 并立即验证生成的消息

dkimdo sign example.com default key.pem < msg.eml | dkimdo verify

每个命令都有许多自定义选项。再次签名消息 msg.eml,但这次包括用户标识符,使用宽松的规范化,一周后过期,在诊断 z= 标签中记录原始标题,在 l= 标签中记录正文长度,并格式化到较窄的宽度

dkimdo sign \
  --id user@example.com \
  --canon-algo relaxed/relaxed \
  --expiration +1w \
  --copy-headers \
  --body-length '%' \
  --line-width 64 \
  example.com default key.pem < msg.eml

许可

版权 © 2024 David Bürgin

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

本程序的分发是希望它将是有用的,但没有任何保证;甚至没有对适销性或特定用途适用性的暗示保证。有关更多信息,请参阅 GNU 通用公共许可证。

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

依赖关系

~13–23MB
~358K SLoC