DKIM在vb.net项目中使用MimeKit签名电子邮件

时间:2018-02-08 10:17:03

标签: vb.net smtp dkim mimekit

我使用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的格式/原因......如果我的假设错误,任何人都可以教我或纠正我吗?

1 个答案:

答案 0 :(得分:1)

fileName参数是应该用于对邮件进行签名的私钥的路径。我不确定你为什么期望它在网站的根目录或为什么它被称为dkim.txt,但我几乎可以保证这两个假设都是错误的。

接收客户端使用selector在DNS记录中找到正确的公钥,因为同一个域可能有多个用于签名的密钥。

AgentOrUserIdentifier对应于您在DKIM-Signature标头中找到的i=参数,并指定负责签名的用户或代理。