В чем разница между DomainKey-Signature и DKIM-Signature? - PullRequest
10 голосов
/ 30 ноября 2010

Я пытаюсь подписывать электронные письма с помощью DKIM, используя класс PHPMailer, и не могу заставить его работать.

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

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

Какая разница?и поэтому Gmail не проверяет мои электронные письма?И вы рекомендуете какие-либо альтернативные и надежные классы для подписи писем с ключами домена на php?

Спасибо

Ответы [ 2 ]

11 голосов
/ 30 ноября 2010

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

Доменные ключи были первой версией.

DKIM является обновленнымверсия.

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

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

Хотите узнать технические подробности о различиях между DomainKeys и DKIM?

- Дейв

0 голосов
/ 19 марта 2011

Поддержка 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;
  }
...