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 每月下载次数
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 canon
和 dkimdo 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