DomainKey-Signature和& Sons之间有什么区别? DKIM签名?

时间:2010-11-30 12:01:33

标签: php email smtp openssl dkim

我正在尝试使用PHPMailer Class使用DKIM签署电子邮件,但我无法让它工作。

当我在gmail的电子邮件中看到标题时,我发现该类已成功在电子邮件标题中注入DKIM,但gmail甚至不关心。

问题是我查看了LinkedIn电子邮件的标题,我发现他们正在使用2个DKIM标题,DomainKey-Signature& DKIM-Signature

有什么区别?这就是为什么Gmail无法验证我的电子邮件? &安培;你推荐任何替代品吗?在php上使用域密钥签署电子邮件的健壮类?

由于

2 个答案:

答案 0 :(得分:11)

两者都使用公钥/私钥对电子邮件进行数字签名。两者都使用发件人DNS服务器中的文本文件,该文件包含收件人可用于验证签名的公钥。

Domain Keys是第一个版本。

DKIM是更新版本。

不同之处在于Domain Keys和DKIM如何签署消息并构建标头。

电子邮件收件人可以实施其中任何一个(或两者)。如果你想覆盖所有基础,你唯一可以做的就是与两个班级签约。

您是否需要有关DomainKeys与DKIM之间差异的技术细节?

- 戴夫

答案 1 :(得分:0)

PHPMailer 5.1中的DKIM支持无法正常使用。以下是我必须做的事情,让它发挥作用:

  1. 我在此网址上应用了修补程序:http://sourceforge.net/tracker/index.php?func=detail&aid=2960165&group_id=26031&atid=385707

  2. 在第566行,我不得不改变这一点:

    // 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;
    }
    
  3. ......对此:

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