电子邮件被标记为垃圾邮件

电子邮件被标记为垃圾邮件

您好,我们已经使用 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

如果我理解正确的话,内容如下:

  1. PHP(+PEAR MAIL)安装在 Web 服务器上。
  2. 当您通过该方式发送电子邮件时,它会使用 Web 服务器上的本地 MTA。
  3. 您的 DKIM 签名添加发生在不同的 MTA 中。
  4. 因此,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

相关内容