2010-11-30 4 views
8

Я пытаюсь подписать письма с DKIM с помощью PHPMailer Class, и я не могу заставить его работать.В чем разница между DomainKey-Signature и DKIM-Signature?

Когда я вижу заголовки в своих письмах в gmail, я обнаружил, что класс успешно вводит DKIM в заголовок электронной почты, но gmail даже не заботится.

Вопрос заключается в том, что я сам просматривал заголовки писем и щ ​​э ю я узнал, что они используют 2 DKIM заголовки, DomainKey-Signature & DKIM-Signature.

В чем разница? и почему Gmail не проверяет мои письма? & Вы рекомендуете любую альтернативу & надежные классы для подписывания электронных писем с помощью ключей домена на php?

Благодаря

ответ

9

Оба используют Public/Private ключи для цифровой подписи электронных писем. Оба используют текстовый файл на DNS-сервере отправителя, который содержит открытый ключ, который может использоваться получателем для проверки подписи.

Ключи доступа были первой версией.

DKIM - это обновленная версия.

Разница заключается в том, как Доменные ключи и DKIM подписывают сообщения и строят заголовок.

Адресаты электронной почты могут реализовать любой из них (или оба). Единственное, что вы можете сделать, это знак с обоими классами, если вы хотите охватить все базы.

Вы хотите технические данные о различиях между DomainKeys и DKIM?

--Dave

+0

Благодаря Дэйва для ваш ответ, как создать подписанный заголовок для электронной почты? – Ryan 2010-11-30 16:34:36

0

поддержка DKIM в PHPMailer 5.1 не работает из коробки. Вот то, что я должен был сделать, чтобы это заработало:

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

... к этому:

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