Как отправить электронную почту с Phpmailer с подписью DKIM?

Я использую PHPmailer для отправки электронной почты.

Я установил службу postfix и DKIM-Milter для генерации ключа.

Он отлично работает, если я использую командную строку для отправки почты, а почта – с подписью DKIM, отображающей «подписанный: mydomain.com»,

Authentication-Results: mx.google.com; spf=pass (google.com: domain of root@mydomain.com designates 182.50.xxx.xxx as permitted sender) smtp.mail=root@mydomain.com; dkim=pass header.i=@mydomain.com DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=mydomain.com; s=default; t=1325531456; bh=+gZFhu4Id2AXb8UVbFLzDVVlChWGhvxvJUIdjdMLQsk=; h=To:Subject:Message-Id:Date:From; b=mH4GV8ayicc6UMn1uopCc9VJb5v2MiOKQpEtwJjckzoJ8ePhRKQIZI5KnzSdSoSP3 BtmehOQhMn9kIR/TlL2dlSog2EkRNeAaWcmO1K3khtCZ7rkXHGJsDn9C6l49K0tJa2 rplPOSI7wS8+3NCEiuc5sjZimPo4v9WuTECVqxkg= 

Но я хочу использовать PHPmailer (5.1) для отправки почты с поддержкой DKIM-подписи, но возвращает это:

 Authentication-Results: mx.google.com; spf=pass (google.com: domain of info@mydomain.com designates 182.50.xxx.xxx as permitted sender) smtp.mail=info@mydomain.com; dkim=neutral (bad format) header.i=info@mydomain.com DKIM-Signature: v=1; a=rsa-sha1; q=dns/txt; l=70; s=default; t=1325533594; c=relaxed/simple; h=From:To:Subject; d=mydomain.com; i=@mydomain.com; z= | |Subject:=20Testing=20email=20from=20phpmailer; bh=lC+16EvauA2HuJG03ArE6CtgLuY=; b= по Authentication-Results: mx.google.com; spf=pass (google.com: domain of info@mydomain.com designates 182.50.xxx.xxx as permitted sender) smtp.mail=info@mydomain.com; dkim=neutral (bad format) header.i=info@mydomain.com DKIM-Signature: v=1; a=rsa-sha1; q=dns/txt; l=70; s=default; t=1325533594; c=relaxed/simple; h=From:To:Subject; d=mydomain.com; i=@mydomain.com; z= | |Subject:=20Testing=20email=20from=20phpmailer; bh=lC+16EvauA2HuJG03ArE6CtgLuY=; b= 

Я проверил файл class.phpmailer.php, и у него есть некоторые опции DKIM:

  public $DKIM_selector = 'default'; /** * Used with DKIM DNS Resource Record * optional, in format of email address 'you@yourdomain.com' * @var string */ public $DKIM_identity = ''; /** * Used with DKIM DNS Resource Record * optional, in format of email address 'you@yourdomain.com' * @var string */ public $DKIM_domain = ''; /** * Used with DKIM DNS Resource Record * optional, in format of email address 'you@yourdomain.com' * @var string */ public $DKIM_private = ''; 

Как настроить этот параметр? Я знаю открытый ключ и закрытый ключ, но что такое $ DKIM_private и $ DKIM_identity?

Solutions Collecting From Web of "Как отправить электронную почту с Phpmailer с подписью DKIM?"

$ DKIM_private для вашего частного ключа и $ DKIM_identity, ну, я не уверен, но он не является обязательным, и вы можете найти более подробную информацию здесь: http://dkim.org/specs/draft-allman-dkim-base-01. html # anchor9 . Вот пример кода.

 $mail->DKIM_domain = 'mydomain.com'; $mail->DKIM_private = '/path/to/private_key'; $mail->DKIM_selector = 'default'; //this effects what you put in your DNS record $mail->DKIM_passphrase = '1234567'; 

надеюсь, это поможет

Вам нужно разбить заголовок DKIM-Signature таким образом, чтобы каждое свойство отображалось в новой строке. Реализация PHPMailer DKIM имеет некоторые проблемы, которые необходимо исправить.

Значение $DKIM_identity является необязательным. Чтобы понять роль $DKIM_private , см. Метод DKIM_Sign .

Начало здесь

http://dkim.worxware.com/

В нижней части нажмите «Продолжить».

Это позволит вам генерировать частный / открытый ключ с инструкциями

Вкратце: – настройка отправки с использованием файла приватного / открытого ключа для добавления заголовков dkim в заголовок электронной почты – изменение записи DNS txt для открытого ключа

Я обнаружил, что последняя версия использует sha256 вместо sha1, поэтому существующий генератор DKIM ( http://dkim.worxware.com/ ) не работает, если вы не заходите в файл class.phpmailer.php и не редактируете все упоминания о sha256 назад к sha1, это устраняет проблемы с верификаторами, которые не могут использовать sha256 для открытого ключа (давая ошибку)