php - para - verificar dkim
¿Cómo verifico una firma DKIM en PHP? (3)
Admito que no soy muy adepto a la verificación de claves. Lo que tengo es un script que descarga mensajes de un servidor POP3, y estoy intentando verificar las firmas DKIM en PHP. Ya he averiguado la comprobación de validación de hash (bh) del cuerpo, pero no puedo averiguar la validación del encabezado.
http://www.dkim.org/specs/rfc4871-dkimbase.html#rfc.section.6.1.3
A continuación se muestra un ejemplo de los encabezados de mis mensajes. He podido usar el paquete Mail :: DKIM para validar la firma en Perl, así que sé que es bueno. Parece que no puedo entender las instrucciones en el RFC y traducirlas al código 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]
Puedo extraer la clave pública de mi DNS muy bien, y creo que estoy canonizando correctamente los encabezados, pero simplemente no puedo validar la firma. No creo que esté preparando mi clave o calculando correctamente la validación de firma.
¿Es esto algo posible (necesito extensiones de pera o algo así) o está validando manualmente una firma DKIM en PHP simplemente no es factible?
Creo un nuevo proyecto en googlecode. el nombre era phpMailDomainSigner Es compatible con DKIM-Signature y DomainKey-Signature en el estilo orientado a objetos.
Intente interoperar con una herramienta externa u otro idioma.
Puede considerar adaptar la herramienta externa para hacer eso o usar la biblioteca C que tiene mejor soporte para trabajar con DKIM. También puedes intentar integrarte a través de Perl o Python.
Mail :: DKIM tiene las siguientes dependencias en otras bibliotecas:
- Crypt :: OpenSSL :: RSA
- Digest :: SHA
- Mail :: Address (parte del paquete de MailTools)
- MIME :: Base64
- Net :: DNS
Todo esto debería estar disponible en PHP también. Por lo tanto, verificar manualmente la validez en PHP es controlable. Mail :: DKIM está verificando la firma "manualmente" con esas librerías. Tal vez usted tiene un pico en la fuente de correo :: DKIM?
Adicional " OpenDKIM Library (libopendkim) " está disponible. Puede construir un módulo PHP alrededor de esta biblioteca, ya que otras personas han integrado OpenSSL, cURL, etc. en PHP.
¿Quizás pueda proporcionar el código de su función de verificación con algunos datos de prueba, para que todos puedan echarle un vistazo?
HTH y saludos cordiales
Miguel