我使用MimeKit发送电子邮件,并且已经开始使用DKIM签名。我查看了MimKit网站上的示例,并搜索了这些条款但没有找到答案。
Public Shared Sub DkimSign(ByVal message As MimeMessage)
Dim headers = New HeaderId() {HeaderId.From, HeaderId.Subject, HeaderId.Date}
Dim headerAlgorithm = DkimCanonicalizationAlgorithm.Simple
Dim bodyAlgorithm = DkimCanonicalizationAlgorithm.Simple
Dim signer = New DkimSigner("filename", "domain", "selector") With {.SignatureAlgorithm = DkimSignatureAlgorithm.RsaSha1, .AgentOrUserIdentifier = "@eng.example.com"}
message.Prepare(EncodingConstraint.SevenBit)
message.Sign(signer, headers, headerAlgorithm, bodyAlgorithm)
End Sub
实例化签名者时,需要文件名,域和选择器。如果我从" bob@website.com"发送电子邮件;我假设物理文件将放在站点的根目录上,实例化将如下所示:
Dim signer = New DkimSigner("dkim.txt", "website.com", "") With {.SignatureAlgorithm = DkimSignatureAlgorithm.RsaSha1, .AgentOrUserIdentifier = "???"}
但不确定AgentOrUserIdentifier的格式/原因......如果我的假设错误,任何人都可以教我或纠正我吗?
答案 0 :(得分:1)
fileName
参数是应该用于对邮件进行签名的私钥的路径。我不确定你为什么期望它在网站的根目录或为什么它被称为dkim.txt,但我几乎可以保证这两个假设都是错误的。
接收客户端使用selector
在DNS记录中找到正确的公钥,因为同一个域可能有多个用于签名的密钥。
AgentOrUserIdentifier
对应于您在DKIM-Signature标头中找到的i=
参数,并指定负责签名的用户或代理。