【发布时间】:2019-10-21 08:05:44
【问题描述】:
我正在尝试让我的网站发送带有 dkim 签名的电子邮件。我找到了 mimekit 并尝试实现逻辑。我使用了几个 dkim 检查器(dkim key checker 和 mail 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 工作,这样我就可以更新我的网站。 :)