2010-11-30 24 views
8

Estoy intentando firmar correos electrónicos con DKIM usando PHPMailer Class y no puedo hacer que funcione.¿Cuál es la diferencia entre DomainKey-Signature y DKIM-Signature?

Cuando veo los encabezados en mis correos electrónicos en gmail, me parece que la clase está inyectando con éxito DKIM en el encabezado del correo electrónico, pero a Gmail ni siquiera le importa.

La cuestión es que He visto las cabeceras de los mensajes de correo electrónico a LinkedIn y me enteré de que están utilizando 2 cabeceras DKIM, DomainKey-Signature & DKIM-Signature.

¿Cuál es la diferencia? ¿y es por eso que Gmail no verifica mis correos electrónicos? & ¿recomienda alguna alternativa & clases robustas para firmar correos electrónicos con claves de dominio en php?

Gracias

Respuesta

9

Ambos usan claves pública/privada para firmar digitalmente los mensajes de correo electrónico. Ambos usan un archivo de texto en el servidor DNS del remitente que contiene la clave pública que puede usar el destinatario para verificar la firma.

Domain Keys fue la primera versión.

DKIM es la versión actualizada.

La diferencia es cómo Domain Keys y DKIM firman los mensajes y crean el encabezado.

Los destinatarios del correo electrónico pueden implementar cualquiera de ellos (o ambos). Lo único que puedes hacer es firmar con ambas clases, si quieres cubrir todas las bases.

¿Desea detalles técnicos sobre las diferencias entre DomainKeys vs DKIM?

--Dave

+0

Gracias Dave por su respuesta, ¿cómo generar un encabezado firmado para un correo electrónico? – Ryan

+0

Lamentablemente no sé cómo hacer esto con PHP. Lo siento. –

+0

Parece que PHPMailer es compatible con DKIM. Aunque no he probado: http://www.worxware.com/forum/viewthread.php?tid=185 –

0

apoyo DKIM en PHPMailer 5.1 no funciona correctamente fuera de la caja. Esto es lo que tenía que hacer, para que funcione:

  1. que aplica la corrección en esta dirección: http://sourceforge.net/tracker/index.php?func=detail&aid=2960165&group_id=26031&atid=385707

  2. En la línea 566, que tenía que cambiar esto:

    // digitally sign with DKIM if enabled 
    if ($this->DKIM_domain && $this->DKIM_private) { 
        $header_dkim = $this->DKIM_Add($header,$this->Subject,$body); 
        $header = str_replace("\r\n","\n",$header_dkim) . $header; 
    } 
    

... a esto:

// digitally sign with DKIM if enabled 
    if ($this->DKIM_domain && $this->DKIM_private) { 

    // Hack to add To: header to the headers which are passed to DKIM_Add 
      // Note that this only adds the first To: recipient, so it's going to break 
      // if you try to send an email to more than one person simultaneously 

    $header_temp = $header . $this->LE . 'To: ' . $this->to[0][0]; 
    $header_dkim = $this->DKIM_Add($header_temp,$this->EncodeHeader($this->SecureHeader($this->Subject)),$body); 
    $header = str_replace("\r\n","\n",$header_dkim) . $header; 
    } 
Cuestiones relacionadas