2012-01-02 3 views
3

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

Я установил службу postfix и DKIM-Milter, чтобы сгенерировать ключ.

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

Authentication-Results: mx.google.com; spf=pass (google.com: domain of [email protected] designates 182.50.xxx.xxx as permitted sender) [email protected]; dkim=pass [email protected] 

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 [email protected] designates 182.50.xxx.xxx as permitted sender) [email protected]; dkim=neutral (bad format) [email protected] 

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; [email protected]; 
    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 '[email protected]' 
    * @var string 
    */ 
    public $DKIM_identity = ''; 

    /** 
    * Used with DKIM DNS Resource Record 
    * optional, in format of email address '[email protected]' 
    * @var string 
    */ 
    public $DKIM_domain  = ''; 

    /** 
    * Used with DKIM DNS Resource Record 
    * optional, in format of email address '[email protected]' 
    * @var string 
    */ 
    public $DKIM_private = ''; 

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

+0

Поскольку они не являются обязательными, вы, возможно, не нуждаетесь в них? – Corubba

+0

@BloodyWorld Если вы хотите отправить письмо с подписью DKIM, они обязательно должны быть. – Angolao

ответ

9

$ 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'; 

Надежда, что помогает

+2

'DKIM_private' - это путь к файлу с ключом, а не сама строка. – Turako

2

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

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

0

Начало здесь

http://dkim.worxware.com/

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

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

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

0

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

+0

Хотя эта ссылка может ответить на вопрос, лучше включить здесь основные части ответа и предоставить ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. - [Из обзора] (/ review/low-quality-posts/11186309) –

+0

@ Magicprog.fr, он действительно включал существенные части * его * ответа, объяснил, как его исправить - * правильно ли это или нет * - также ссылка, которую он опубликовал, не отвечает на вопрос, потому что это всего лишь ссылка генератора DKIM, поэтому IMO это * попытка * ответить, а не ответ только на ссылку, спасибо –

Смежные вопросы