【问题标题】:DKIM Signing an email using MimeKit in a vb.net projectDKIM 在 vb.net 项目中使用 MimeKit 签署电子邮件
【发布时间】:2018-07-18 21:01:07
【问题描述】:

我正在使用 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 的格式/原因...如果我的假设错误,谁能启发我或纠正我?

【问题讨论】:

    标签: vb.net smtp dkim mimekit


    【解决方案1】:

    fileName 参数是用于签署消息的私钥的路径。我不确定您为什么希望它位于站点的根目录或为什么将其称为 dkim.txt,但我几乎可以保证这两个假设都是错误的。

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

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

    【讨论】:

    • 关于 dkim.txt 的假设只是我使用了一个示例文件名,并且不理解路径是设备的物理路径,而不是相对于我正在实施它的站点。有了这个建议,我已经成功地在我的应用程序中进行了测试签名。非常感谢,您的建议简明扼要,非常有帮助。
    • 太棒了,很高兴我能帮上忙。
    猜你喜欢
    • 2019-10-21
    • 2017-10-21
    • 1970-01-01
    • 2016-08-25
    • 2015-10-13
    • 2012-09-02
    • 1970-01-01
    • 2011-11-10
    • 1970-01-01
    相关资源
    最近更新 更多