【问题标题】:DKIM Signing an email with MimeKit in vb.netDKIM 在 vb.net 中使用 MimeKit 签署电子邮件
【发布时间】:2019-10-21 08:05:44
【问题描述】:

我正在尝试让我的网站发送带有 dkim 签名的电子邮件。我找到了 mimekit 并尝试实现逻辑。我使用了几个 dkim 检查器(dkim key checkermail tester)来验证我的 dns 记录并且它通过了,但是dkim validators 和 google 和 Outlook 在标题或页面中显示 dkim 在电子邮件中失败。上面的 dkim 验证器说:

验证签名

结果 = 无效

详细信息:身份错误

我正在使用的子程序:

Private Shared Sub DKIMSignAndSend(mailMessage As System.Net.Mail.MailMessage)
   Dim message As MimeMessage = MimeMessage.CreateFromMailMessage(mailMessage)
   Dim headersToSign() As HeaderId = New HeaderId() {HeaderId.From, HeaderId.Subject, HeaderId.Date}
   Dim domain As String = "domain.com"
   Dim selector As String = "1559659173.domain"
   Dim signer As DkimSigner = New DkimSigner(String.Format("{0}\Administration\dkim.pem", System.Web.Configuration.WebConfigurationManager.AppSettings("WebsiteDirectory")), domain, selector)
   signer.SignatureAlgorithm = DkimSignatureAlgorithm.RsaSha1
   signer.AgentOrUserIdentifier = "domain.com"
   signer.QueryMethod = "dns/txt"
   message.Prepare(EncodingConstraint.SevenBit)
   message.Sign(signer, headersToSign, DkimCanonicalizationAlgorithm.Relaxed, DkimCanonicalizationAlgorithm.Simple)

   Using client As New MailKit.Net.Smtp.SmtpClient()
      With CType(ConfigurationManager.GetSection("system.net/mailSettings/smtp"), SmtpSection)
         client.Connect(.Network.Host, .Network.Port, .Network.EnableSsl)
         client.Authenticate(.Network.UserName, .Network.Password)
      End With
      client.Send(message)
      client.Disconnect(True)
   End Using
End Sub

我传入一个 System.Net.Mail.MailMessage,它具有 html 文本替代视图和 附件

谁能帮忙解决我做错了什么?

【问题讨论】:

  • 如果我错了,请阻止我,但是在 SMTP 服务器上设置您的密钥不是比通过这个繁琐的流程更容易吗?也许我有错误的想法,但似乎服务器应该处理这个而不是客户端应用程序。
  • 我无法控制 smtp(它使用 1and1)并且在 dkim 的帮助中搜索几乎没有。另外,我希望弄清楚这一点,以便我可以更新其他一些也在自己的域上使用电子邮件的网站以使用 dkim。
  • 我会说它不是一个很好的服务器,否则你会怎么做?例如 Outlook 或您在应用程序之外发送的任何其他邮件?甚至hmail 也有 DKIM 签名。
  • 我对运行 stmp 服务器或服务没有兴趣。我只想让 mimekit 工作,这样我就可以更新我的网站。 :)

标签: vb.net smtp dkim mimekit


【解决方案1】:

听起来您的 Selector 或 AgentOrUserIdentifier 是错误的。

试试 signer.AgentOrUserIdentifier = "@domain.com"

【讨论】:

  • 捐赠给所做的项目。 :)
猜你喜欢
  • 2018-07-18
  • 2017-10-21
  • 1970-01-01
  • 2016-08-25
  • 2015-10-13
  • 2012-09-02
  • 1970-01-01
  • 2011-11-10
  • 1970-01-01
相关资源
最近更新 更多