您好,我们已经使用 sendmail 在邮件服务器中设置了 DKIM,并且还配置了 DNS 记录。但我们的邮件仍然被标记为垃圾邮件。此外,当我们从 Outlook 发送邮件时,域密钥身份验证通过,而当从 PHP(PEAR 包 MAIL)发送邮件时,Yahoo 将身份验证标记为失败
通过 PHP 发送时,Yahoo 会添加以下标头身份验证结果:mta150.mail.in.yahoo.com from=mydomain.com; domainkeys=fail (bad sig); from=mydomain.com; dkim=permerror (bad sig)
从 Outlook 发送时,标头为 Authentication-Results: mta175.mail.in.yahoo.com from=mydomain.com; domainkeys=pass (ok); from=mydomain.com; dkim=pass (ok),表示域密钥身份验证已通过
我检查了从 PHP 发送的标头,并将其与 Outlook 添加的标头进行了比较,没有发现太大差异。从 PHP 发送时,我添加了标头 From、To、Message-ID、Mime-Version、Date、Subject、Content-Type,Outlook 也具有同样的标头,
通过 PHP 发送邮件时,邮件中还可能存在哪些错误,导致身份验证失败
PHP 不使用服务器上的本地 MTA,而是连接到位于不同机器上的 SMTP 服务器 ( SendMail )。PEAR MAIL 使用套接字 API 连接到 SMTP 服务器并使用 SMTP 协议,我不认为邮件是在 WebServer 上签名的,它只是在 SMTP 服务器上签名的。
我们在邮件服务器上使用 SendMail,Outlook 和 PHP 都使用相同的 SMTP 服务器,使用相同的登录名和密码以及相同的身份验证机制
这就是我感到困惑的原因,不知道问题可能出在哪里。是否有某种标准的邮件构造方法可以影响邮件的签名,Outlook 可以正确地完成此操作,但通过 PHP 完成时,邮件的构造方式不同,至少我们已经验证了邮件头是相同的。
下面提到的是我向该雅虎帐户发送邮件时雅虎收到的标头。此邮件由 PHP Zend 框架发送。
之前我使用 PHP PEAR 包发送邮件,当时 Yahoo 添加了以下标头身份验证结果:mta150.mail.in.yahoo[dot]com from=mydomain[dot]com; domainkeys=fail (bad sig); from=mydomain[dot]com; dkim=permerror (bad sig)。
但是现在当我使用 PHP Zend 框架发送邮件时,dkim 设置为 pass(ok) 但 domainkeys=fail。标头如下 Authentication-Results: mta153.mail.in.yahoo[dot]com from=mydomain[dot]com; domainkeys=fail (bad sig); from=mydomain[dot]com; dkim=pass (ok)。
那么 dominkeys=fail ( bad sig ) 是什么意思?它与 dkim=pass ( ok ) 有何不同?
X-显然-致:ravi.cybertechie@yahoo[dot]com 通过 203.104.18.180;星期三, 2009 年 10 月 28 日 18:03:13 +0530 返回路径:<admin@mydomain[dot]com> X-YMailISG:YISh33wWLDtwDNH0f_08ONu7pG42J7wuD.SOtD4sPZcX_x7EOghleA5_M5U7vRhdf7ZIIIo0yVtS35PCaQRAY2w8Naq8c3wgufoQrWvJyQt6jIH0BRkuwgUERH7N7FHGLQpnCT0A9ig_TvthXoXJ3Vc.mQFe.OPT4CE6Vz 1kgCsBEVxb.M2Zcr4BYK27XARjHg7hCsNDFi_ddp.Y.s6njtr7fnbQl0SD0gCcK2qNVxxKNhoukmuvpE4BPA_EyVEgNqJGjcBYh_GYqsapic4zKDWhcb4nOBAAzDR0XtydFiX3nj_TqDI0v_zNwuUK0K53tYdnI3HCSg-- X-Originating-IP:[my_smtpserver_ipaddress] 身份验证结果:mta153.mail.in.yahoo[dot]com from=mydomain[dot]com; domainkeys=fail (坏签名); from=mydomain[dot]com; dkim=通过(确定) 已收到:来自 my_smtpserver_ipaddress(EHLO my_smtpserver_hostname) (my_domain_ip_address)由 mta153.mail.in.yahoo[dot]com 使用 SMTP 发送;星期三, 2009 年 10 月 28 日 18:03:13 +0530 已接收 SPF:通过(my_smtpserver_hostname:已验证的连接) 接收方=我的 SMTP 服务器主机名;客户端 ip=我的邮件客户端 ip 地址; helo=localhost; 信封来自=admin@mydomain[dot]com; x-软件=spfmilter 0.97 http://www.acme[dot]com/software/spfmilter/ 和 libspf2-1.0.0; 已接收:来自本地主机([my_mailclient_ipaddress])(已验证位 = 0) 通过 my_smtpserver_hostname (8.14.2/8.14.2) ESMTP id 为 n9SCX6ml017820; 2009 年 10 月 28 日,星期三 08:33:08 -0400 X-DKIM:Sendmail DKIM 过滤器 v2.5.1 我的 smtp 服务器主机名 n9SCX6ml017820 DKIM 签名:v=1;a=rsa-sha256;c=simple/simple;d=mydomain[dot]com;s=mydomain; t=1256733190;bh=oBeBoCqUcTrV/4cgaMK58OrPkchqCMzB2Vax aRRph6g=; h=发件人:收件人:主题:日期:内容类型:MIME 版本; b=faLHQ jAakBDkxbz8xhGmfi2ZfBHXUBFOWTZs9BAfaksB8lJghho6YmUPKIY5oMJMsCkh/QLQ 8RXD8dUPf04X6A== X-DomainKeys:Sendmail DomainKeys 过滤器 v1.0.2 我的 smtp 服务器主机名 n9SCX6ml017820 域名密钥签名:a=rsa-sha1; s=我的域名; d=我的域名[点]com; c=简单; q=域名; b=3Wazgw8//NzW95FYyQGZdXDuc4mLkp6+OdOIv224+aC0imfrA3GoeSEIt0UTyaT9d ygfHc6OKuxy7cz0/a3FnA== 消息 ID: 发件人:mydomain 管理员将发件人添加到联系人 收件人: 主题:来自 zend 的邮件 日期:2009 年 10 月 28 日星期三 12:33:05 +0000 内容类型:multipart/alternative;charset="iso-8859-1"; 边界=“=_2f9550c6ce7fb246f62d84f1221854d7” MIME 版本 : 1.0 内容长度:4918
答案1
听起来您的 PHP 脚本没有使用本地 MTA 发送邮件,而您的 Outlook 客户端却使用了。该 MTA 需要在将每封邮件传递到其他组织的服务器之前对其应用 DKIM 签名。因此,请检查您的 PHP 配置和代码。
答案2
如果我理解正确的话,内容如下:
- PHP(+PEAR MAIL)安装在 Web 服务器上。
- 当您通过该方式发送电子邮件时,它会使用 Web 服务器上的本地 MTA。
- 您的 DKIM 签名添加发生在不同的 MTA 中。
- 因此,PHP DKIM 失败而 Outlook 正常。
您可以将 Outlook SMTP 服务器设置与 PHP 的设置进行比较,确保它们相同。如果不同,请通过 Outlook 使用的相同 SMTP 服务器进行 PHP 中继。
答案3
下面提到的是我向该雅虎帐户发送邮件时雅虎收到的标头。此邮件由 PHP Zend 框架发送。
之前我使用 PHP PEAR 包发送邮件,当时 Yahoo 正在添加以下标头
Authentication-Results: mta150.mail.in.yahoo[dot]com from=mydomain[dot]com;
domainkeys=fail (bad sig); from=mydomain[dot]com; dkim=permerror (bad sig).
但是现在当我使用 PHP Zend 框架发送邮件时,dkim 设置为 pass(ok ),但 domainkeys=fail。标头如下
Authentication-Results: mta153.mail.in.yahoo[dot]com from=mydomain[dot]com; domainkeys=fail (bad sig); from=mydomain[dot]com;
dkim=pass (ok).
So what does dominkeys=fail ( bad sig ) mean ? and how is it different from dkim=pass (ok )
X-Apparently-To : ravi.cybertechie@yahoo[dot]com via 203.104.18.180; Wed,
28 Oct 2009 18:03:13 +0530
Return-Path : <admin@mydomain[dot]com>
X-YMailISG : YISh33wWLDtwDNH0f_08ONu7pG42J7wuD.SOtD4sPZcX_x7EOghleA5_M5U7vRhdf7ZIIIo0yVtS35PCaQRAY2w8Naq8c3wgufoQrWvJyQt6jIH0BRkuwgUERH7N7FHGLQpnCT0A9ig_TvthXoXJ3Vc.mQFe.OPT4CE6Vz1kgCsBEVxb.M2Zcr4BYK27XARjHg7hCsNDFi_ddp.Y.s6njtr7fnbQl0SD0gCcK2qNVxxKNhoukmuvpE4BPA_EyVEgNqJGjcBYh_GYqsapic4zKDWhcb4nOBAAzDR0XtydFiX3nj_TqDI0v_zNwuUK0K53tYdnI3HCSg--
X-Originating-IP : [my_smtpserver_ipaddress]
Authentication-Results: mta153.mail.in.yahoo[dot]com from=mydomain[dot]com;
domainkeys=fail (bad sig); from=mydomain[dot]com;
dkim=pass (ok)
Received : from my_smtpserver_ipaddress (EHLO my_smtpserver_hostname)
(my_domain_ip_address) by mta153.mail.in.yahoo[dot]com with SMTP; Wed,
28 Oct 2009 18:03:13 +0530
Received-SPF : pass (my_smtpserver_hostname: authenticated connection)
receiver=my_smtpserver_hostname; client-ip=my_mailclient_ipaddress;
helo=localhost; envelope-from=admin@mydomain[dot]com;
x-software=spfmilter 0.97
http://www.acme[dot]com/software/spfmilter/ with libspf2-1.0.0;
Received : from localhost ([my_mailclient_ipaddress]) (authenticated bits=0)
by my_smtpserver_hostname (8.14.2/8.14.2)
with ESMTP id n9SCX6ml017820 for <ravi.cybertechie@yahoo[dot]com>;
Wed, 28 Oct 2009 08:33:08 -0400
X-DKIM : Sendmail DKIM Filter v2.5.1
my_smtpserver_hostname n9SCX6ml017820
DKIM-Signature : v=1; a=rsa-sha256; c=simple/simple; d=mydomain[dot]com; s=mydomain;
t=1256733190; bh=oBeBoCqUcTrV/4cgaMK58OrPkchqCMzB2Vax aRRph6g=;
h=From:To:Subject:Date:Content-Type:MIME-Version;
b=faLHQ jAakBDkxbz8xhGmfi2ZfBHXUBFOWTZs9BAfaksB8lJghho6YmUPKIY5oMJMsCkh/QLQ 8RXD8dUPf04X6A==
X-DomainKeys : Sendmail DomainKeys Filter v1.0.2
my_smtpserver_hostname n9SCX6ml017820
DomainKey-Signature : a=rsa-sha1; s=mydomain; d=mydomain[dot]com; c=simple; q=dns;
b=3Wazgw8//NzW95FYyQGZdXDuc4mLkp6+OdOIv224+aC0imfrA3GoeSEIt0UTyaT9d ygfHc6OKuxy7cz0/a3FnA==
Message-Id : <200910281233.n9SCX6ml017820@my_smtpserver_hostname>
From : mydomain Admin <admin@mydomain[dot]com> Add sender to Contacts
To : Recipient <ravi.cybertechie@yahoo[dot]com>
Subject : Mail from zend
Date : Wed, 28 Oct 2009 12:33:05 +0000
Content-Type : multipart/alternative; charset="iso-8859-1";
boundary="=_2f9550c6ce7fb246f62d84f1221854d7"
MIME-Version : 1.0
内容长度:4918