Подтвердить что ты не робот

Как проверить подпись DKIM в PHP?

Я признаю, что не очень разбираюсь в проверке ключа. У меня есть script, который загружает сообщения с сервера POP3, и я пытаюсь проверить подписи DKIM в PHP. Я уже выяснил проверку проверки хэша тела (bh), но я не могу понять проверку заголовка.

http://www.dkim.org/specs/rfc4871-dkimbase.html#rfc.section.6.1.3

Ниже приведен пример моих заголовков сообщений. Я смог использовать пакет Mail:: DKIM для проверки подписи на Perl, поэтому я знаю, что это хорошо. Я просто не могу понять инструкции в RFC и перевести их в PHP-код.

 DomainKey-Signature: q=dns; a=rsa-sha1; c=nofws;
  s=angrychimp-1.bh; d=angrychimp.net;
  h=From:X-Outgoing;
  b=RVkenibHQ7GwO5Y3tun2CNn5wSnooBSXPHA1Kmxsw6miJDnVp4XKmA9cUELwftf9
  nGiRCd3rLc6eswAcVyNhQ6mRSsF55OkGJgDNHiwte/pP5Z47Lo/fd6m7rfCnYxq3
 DKIM-Signature: v=1; a=rsa-sha1; d=angrychimp.net; s=angrychimp-1.bh; c=relaxed/simple;
  q=dns/txt; [email protected]; t=1268436255;
  h=From:Subject:X-Outgoing:Date;
  bh=gqhC2GEWbg1t7T3IfGMUKzt1NCc=;
  b=ZmeavryIfp5jNDIwbpifsy1UcavMnMwRL6Fy6axocQFDOBd2KjnjXpCkHxs6yBZn
  Wu+UCFeAP+1xwN80JW+4yOdAiK5+6IS8fiVa7TxdkFDKa0AhmJ1DTHXIlPjGE4n5;
 To: [email protected]
 Message-ID: <EF.CC.24859.F1DCA9B4>
 From: DKIM Tester <[email protected]>
 Reply-To: [email protected]
 Subject: Automated DKIM Testing (angrychimp.net)
 X-Outgoing: dhaka
 Date: Fri, 12 Mar 2010 15:24:15 -0800
 Content-Type: text/plain; charset=iso-8859-1
 Content-Transfer-Encoding: quoted-printable
 Content-Disposition: inline
 MIME-Version: 1.0
 Return-Path: [email protected]
 X-OriginalArrivalTime: 12 Mar 2010 23:25:50.0326 (UTC) FILETIME=[5A0ED160:01CAC23B]

Я могу извлечь открытый ключ из моего DNS как можно точнее, и я считаю, что я правильно канонизирую заголовки, но я просто не могу проверить подпись. Я не думаю, что я готовлю свой ключ или правильно вычислил правильность подписи.

Является ли это чем-то возможным (мне нужны расширения груши или что-то еще?) или вручную проверяет подпись DKIM на PHP просто невозможно?

4b9b3361

Ответ 1

Mail:: DKIM имеет следующие зависимости от других библиотек:

  • Crypt:: OpenSSL:: RSA
  • Дайджест:: SHA
  • Mail:: Address (часть пакета MailTools)
  • MIME:: Base64
  • Net:: DNS

Все это должно быть доступно и на PHP. Таким образом, ручная проверка правильности в PHP управляема. Mail:: DKIM проверяет подпись "вручную" с этими lib. Возможно, у вас есть пик в источнике Mail:: DKIM?

Дополнительно " доступна библиотека OpenDKIM (libopendkim)". Вы можете создать PHP-модуль вокруг этой библиотеки, так как другие люди интегрировали OpenSSL, cURL и т.д. В PHP.

Возможно, вы можете предоставить код вашей функции проверки с некоторыми тестовыми данными, чтобы каждый мог посмотреть на него?

HTH и наилучшие пожелания

Майкл

Ответ 2

Попробуйте взаимодействовать с внешним инструментом или другим языком.

Вы можете рассмотреть возможность адаптации внешнего инструмента для этого или использования библиотеки C, которая имеет лучшую поддержку для работы с DKIM. Вы также можете попытаться интегрироваться через Perl или Python.

Ответ 3

Я создаю новый проект в googlecode. имя было phpMailDomainSigner Он поддерживает подпись DKIM и подпись DomainKey в объектно-ориентированном стиле.