2012-01-02 218 views
3

我使用PHPmailer发送电子邮件。如何使用DKIM签名向Phpmailer发送电子邮件?

我安装了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 2012-01-03 01:11:57

+0

@BloodyWorld如果你想发送带有DKIM签名的邮件,它们是必备的。 – Angolao 2012-01-03 13:43:20

回答

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 2016-02-19 16:00:13

2

需要,打破了DKIM-Signature头,使得出现在新行每个属性。 DKIM的PHPMailer实现有一些必须纠正的问题。

$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) – 2016-02-08 15:41:13

+0

@ Magicprog.fr,他确实包括了*他的*答案的基本部分解释了如何解决它 - *不管它是否正确* - 也他发布的链接不是回答问题,因为这只是DKIM生成器的链接,所以IMO这是一个*尝试*来回答,而不是一个链接专用的答案,谢谢 – 2016-02-09 03:14:21

相关问题