2010-11-30 48 views
8

J'essaye de signer des emails avec DKIM en utilisant PHPMailer Class et je n'arrive pas à le faire fonctionner. Lorsque je vois les en-têtes dans mes courriels sur gmail, je trouve que la classe injecte DKIM avec succès dans l'en-tête de l'e-mail, mais gmail ne s'en soucie même pas.Quelle est la différence entre DomainKey-Signature et DKIM-Signature?

La question est que je l'ai vu les en-têtes des e-mails et je linkedin découvert qu'ils utilisent 2 têtes DKIM, DomainKey-Signature & DKIM-Signature.

Quelle est la différence? et est-ce la raison pour laquelle Gmail ne vérifie pas mes emails? & recommandez-vous une alternative & classes robustes pour signer des e-mails avec des clés de domaine sur php?

Merci

Répondre

9

pour signer numériquement des e-mails utilisent deux clés publiques/privées. Les deux utilisent un fichier texte dans le serveur DNS de l'expéditeur qui contient la clé publique qui peut être utilisée par le destinataire pour vérifier la signature.

Domain Keys était la première version.

DKIM est la version mise à jour.

La différence est la façon dont les clés de domaine et DKIM signent les messages et construisent l'en-tête.

Les destinataires de courrier électronique peuvent implémenter l'un d'entre eux (ou les deux). La seule chose que vous pouvez faire est de signer avec les deux classes, si vous voulez couvrir toutes les bases.

Vous voulez les détails techniques sur les différences entre DomainKeys vs DKIM?

--Dave

+0

Merci pour dave votre réponse, comment générer un en-tête signé pour un e-mail? – Ryan

+0

Malheureusement, je ne sais pas comment faire cela avec PHP. Pardon. –

+0

Il semble que PHPMailer supporte DKIM. N'a pas testé cependant: http://www.worxware.com/forum/viewthread.php?tid=185 –

0

soutien DKIM dans PHPMailer 5.1 ne fonctionne pas correctement hors de la boîte. Voici ce que je devais faire pour le faire fonctionner:

  1. J'ai appliqué le correctif à l'adresse suivante: http://sourceforge.net/tracker/index.php?func=detail&aid=2960165&group_id=26031&atid=385707

  2. À la ligne 566, je devais changer ceci:

    // 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; 
    } 
    

... à ceci:

// 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; 
    }