3

我正在使用 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=

我检查了 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 是什么?

4

4 回答 4

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

希望有帮助

于 2012-01-03T04:02:08.697 回答
3

您需要分解DKIM-Signature标题,以便每个属性出现在新行上。DKIM 的 PHPMailer 实现存在一些必须纠正的问题。

$DKIM_identity值是可选的。要了解 的作用$DKIM_private,请看DKIM_Sign方法。

于 2012-01-04T20:01:40.743 回答
0

我发现最新版本使用 sha256 而不是 sha1,因此现有的 DKIM 生成器(http://dkim.worxware.com/)不起作用,除非您进入 class.phpmailer.php 文件并编辑所有提及 sha256回到 sha1,这样做可以解决验证者无法使用 sha256 作为公钥的问题(给出错误)

于 2016-02-08T09:55:45.553 回答
0

从这里开始

http://dkim.worxware.com/

在底部 - 单击继续...。

它将允许您生成带有说明的私钥/公钥

简而言之: - 设置使用私钥/公钥文件发送以在电子邮件标头中添加 dkim 标头 - 修改公钥的 DNS txt 记录

于 2016-01-31T13:15:38.420 回答