DKIM Подписание электронного письма с MimeKit на vb.net - PullRequest
0 голосов
/ 05 июня 2019

Я пытаюсь заставить мой веб-сайт отправлять электронные письма, подписанные dkim.Я нашел mimekit и попытался реализовать логику.Я использовал несколько dkim checkers ( 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 и текстовые альтернативные представления и вложения .

Может кто-нибудь помочь с тем, что я делаю неправильно?

1 Ответ

1 голос
/ 06 июня 2019

Похоже, ваш селектор или AgentOrUserIdentifier неверны.

Попробуйте signer.AgentOrUserIdentifier = "@ domain.com"

...