В некоторых (не всех) полученных электронных письмах - особенно ТОЛЬКО тех, которые были отправлены через «массовые» службы - я получаю ошибку DKIM: «Ошибка проверки подписи». Вот один пример:
Received message headers
DKIM-Filter: OpenDKIM Filter v2.10.3 mail.example.com 3rfbq51KBTz2xF0
Authentication-Results: dkim.example.com/3rfbq51KBTz2xF0;
dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=proxyvote.com header.i=@proxyvote.com header.b=XjB07H1q
Но при проверке "dkim-stats" появляется сообщение "ПРОШЛО".
opendkim-stats dkim-stats
Job 3rfbq51KBTz2xF0 at edge (size 12124)
received via 127.0.0.1 at Wed Jun 29 01:45:37 2016
from domain = 'proxyvote.com'
Signature 1 from proxyvote.com
PASSED
signed bytes: (whole message)
Signature properties:
Key properties:
DNSSEC status: INSECURE
Вот дамп для этого сообщения
cat dkim.3rfbq51KBTz2xF0.4dDfiv
Date: Wed, 29 Jun 2016 03:10:40 -0400
From: "PROXYVOTE" <id@proxyvote.com>
To: USER@EXAMPLE.COM
Subject: Semi-Annual Report
message-id: <$A94546_1_519687362154ADDC_0154651$495132454@adp-ics.com>
Reply-To: "PROXYVOTE" <ProxyMaster@proxyvote.com>
MIME-Version: 1.0
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
d=proxyvote.com; i=@proxyvote.com; q=dns/txt;
s=edppsuirna01; t=1467189937; x=1498725937;
h=date:from:to:subject:message-id:reply-to:mime-version;
bh=H5lkhcTIjxd0B3N4Kdj314qELLpSKZvAAtPAS+XcM1A=;
Почему я получаю как «не пройден», так и «прошел» и что мне нужно сделать, чтобы это исправить?
Джейсон, можно ли изменить c=simple/simple
к c=relaxed\relaxed
? Я много раз видел, как разные валидаторы DKIM боролись со сворачиванием пробелов. Вы говорите, что это не работает только с "Bulk", так что это говорит мне, что вы отправляете это через какую-то службу SMTP, что заставляет меня больше склоняться к тому, что заголовки переписываются, а сворачивание пробелов простого / простого является виновником. Вы также можете запустить Почтовый тест на нем, который проверит его с 4 различными валидаторами DKIM - если он не работает со всеми четырьмя. Вероятно, это то, что происходит, когда вы отправляете через эту массовую службу.
После получения электронного письма вы все равно можете повторно обработать его и проверить DKIM с помощью другого валидатора. Это то, что я делаю для проверки работоспособности, когда думаю, что мой почтовый сервер может неправильно обрабатывать DKIM. Я использую Limilabs Mail.dll для обработки отправки EML, но вы можете использовать все, что захотите, на любом языке программирования, с которым вы знакомы. DKIM останется нетронутым, и вы сможете проверить его по сравнению с другими валидаторами DKIM, используя онлайн-автоответчики.
Dim email As IMail
Dim mb As New Limilabs.Mail.MailBuilder
Dim smtpMail As SmtpMail = SmtpMail.CreateFromEmlFile("D:\ValidateDKIM\BadDKIM.eml")
email = mb.CreateFromEml(smtpMail.RawEmlData)
Using client As New Smtp()
client.ConnectSSL("mailserver", 465)
client.Login("mailserver", "password")
Dim stream As System.Net.Security.SslStream = client.ReadStream()
Dim reader As IO.StreamReader = New IO.StreamReader(stream)
client.SendMessage(New SmtpMail("Mail Check", { "mailtest@unlocktheinbox.com","check-auth@verifier.port25.com"}, smtpMail.RawEmlData))
client.Close()
End Using