Я использую 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?
$ 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
.
Начало здесь
В нижней части нажмите «Продолжить».
Это позволит вам генерировать частный / открытый ключ с инструкциями
Вкратце: – настройка отправки с использованием файла приватного / открытого ключа для добавления заголовков dkim в заголовок электронной почты – изменение записи DNS txt для открытого ключа
Я обнаружил, что последняя версия использует sha256 вместо sha1, поэтому существующий генератор DKIM ( http://dkim.worxware.com/ ) не работает, если вы не заходите в файл class.phpmailer.php и не редактируете все упоминания о sha256 назад к sha1, это устраняет проблемы с верификаторами, которые не могут использовать sha256 для открытого ключа (давая ошибку)