Email Spam Tester

Email Spam Tester › 适用于 cPanel 和 WHM 的 Email Spam Tester

适用于 cPanel 和 WHM 的 Email Spam Tester

面向托管服务商的插件。你的客户可以在 cPanel 的 Email 下找到它,从自己的一个邮箱发送一封真实邮件,然后获得需要修复的问题列表。每项检查结果旁都会显示准确的 DNS 记录或对应的 cPanel 按钮。

版本 0.1.1,2026 年 9 月 30 日。下载(94 KB),SHA-256 4909ff8402b3244711bc13bac96cfc22810ee33d48f80885f87e44809572cdd0。安装步骤位于本页末尾,归档文件中也包含相同内容的 INSTALL.md。源代码、测试和发行版位于 GitHub。

适用对象

为他人运行 cPanel & WHM 服务器的公司。你以 root 身份安装一次,它就会出现在你所选套餐的 cPanel » Email 中。在你通过 Feature Manager 启用它之前,客户不会看到任何新功能。

如果没有它,客户想知道自己的邮件为什么进入垃圾邮件文件夹,就必须找到测试工具,打开邮件客户端并手动发送一封邮件。安装后,测试按钮就在客户的邮箱旁边,而且邮件确实会从你的服务器发出,并使用该服务器的 IP、HELO 名称、DKIM 签名以及邮件经过的任何中继。

客户在 cPanel 中可以获得什么

测试

客户选择一个邮箱,然后发送标准测试邮件(英文的简短个人邮件,包含纯文本和 HTML 部分),也可以发送自己的邮件。发送自己的邮件时,客户粘贴主题、HTML 以及可选的纯文本版本,邮件会完全按照粘贴的内容发出。Exim 会像发送该账户的其他邮件一样发送它。大约一分钟后,报告会显示在同一页面上,其中包含全部 42 项检查:SPF、DKIM、DMARC 及对齐、反向 DNS 和 HELO、TLS、IP 黑名单、SpamAssassin 和 Rspamd、Gmail 和 Yahoo 公布的发件人要求,以及邮件内容。报告提供两个评分,一个是满分 100 分的技术评分,另一个是传统的 0 到 10 分评分。

“检查邮件在电子邮件提供商处进入的文件夹”默认选中。启用后,系统还会向我们的每个测试邮箱发送一份邮件副本,覆盖 14 家提供商的约 30 个邮箱,包括 Gmail、Outlook、Yahoo、GMX 和 Proton。在 Gmail 中,这些是公开测试邮箱,任何人都可以看到主题、发件人名称和邮件所在文件夹。表格会在最长 30 分钟内逐步填充,并显示邮件在每家提供商处进入了收件箱、垃圾邮件还是促销邮件。如果提供商直接拒收邮件,表格会明确说明,并引用其服务器返回的响应,包括 SMTP 代码,这些信息来自你服务器上的 Exim 日志。

评分下方是 需要修复的内容。如果域名的 DNS 位于你的服务器上,cPanel 可以通过按钮修复 DKIM、SPF 和 DMARC。插件会显示记录当前的内容和修改后的内容,并先征求确认。如果 DNS 托管在其他位置,客户会获得需要复制的准确记录,包括名称、类型和值。反向 DNS 和服务器自身的 A 记录位于单独的分组中,供服务器管理员处理,其中已填好相应的值。检查完成几分钟后,Email Spam Tester 会提供一份书面处理方案。记录配置完成后,点击“再次检查”即可发送一封新的测试邮件。

历史记录

这里会列出该账户发送过的每次测试,最新的排在最前面,并显示日期、邮箱、所用邮件、两个评分和各文件夹的邮件数量。图表会显示每次测试的评分变化。每项测试都会列出相较于同一域名上一次测试发生变化的检查,因此,如果修复后某项 DKIM 检查从失败变为通过,这一变化会直接显示在对应行中。打开某项测试即可查看报告,以及每家提供商的接收服务器返回的响应。每个账户最近的 200 次测试会保存在你的服务器上。

持续监控

从某个邮箱发起的测试只能显示该邮箱如何发送邮件。而 cPanel 中常见的问题通常出现在其他位置。例如,WordPress 网站或联系表单使用信封发件人 user@hostname 发送邮件,导致 SPF 对齐失败,而从邮箱发起的测试永远无法发现这一问题。监控功能可以发现它。

监控功能生成的不可见副本会沿着与原邮件相同的路径离开你的服务器,使用相同的 IP、相同的 HELO 和相同的 DKIM 签名。对于受监控域名发送的每封邮件,Exim 都会生成一个副本,并将其发送到属于该域名的私有地址。因此,报告反映的是真实发送路径,而原邮件本身会保持不变并正常送达收件人。

监控选项卡以信息流形式显示该域名的邮件。每封邮件都会显示收件人的域名(绝不会显示具体地址)、邮件来源和失败项目。来源包括网页邮箱、邮件客户端、PHP 或 WordPress,以及调用 sendmail 的脚本。信息流上方会显示过去 24 小时的单行摘要和告警:DKIM 不再通过、某个来源的 SPF 或 DMARC 失败、发送 IP 被列入黑名单、接收服务器拒收邮件。打开任意邮件即可查看各项检查的技术报告(不包含邮件标头),客户还可以请求针对该邮件生成 AI 处理方案。

在管理员允许在服务器上启用监控之前,该功能会保持关闭。管理员允许后,每位客户可以为自己的域名启用监控。

WHM 中提供的功能

WHM » Plugins » Email Spam Tester 只有一个页面。

价格

目前免费,包含监控。无需在 email-spam-tester.com 上创建账户,目前也无需支付任何费用。如果将来有任何变化,会先在更新日志中说明。

数据和隐私

会离开你服务器的数据:

测试报告的工作方式与网站上一样:报告会保留在对应链接中,任何拥有该链接的人都可以打开报告,其中包括主题和发件人。电子邮件本身会在到达一小时后,也就是完成检查后删除。在删除前,任何拥有该链接的人都可以阅读全文。如上所述,文件夹检查中的 Gmail 部分也是公开的,因此测试机密邮件时最好不要启用这部分。

监控副本是真实通信内容,其报告不公开。只有你服务器上的插件可以使用安装密钥打开报告,不存在公开链接。副本会在到达两天后删除,其报告会在 90 天后删除。历史记录和监控信息流保留在你的服务器上。

隐私页面包含完整政策。

托管服务提供商常问的问题

它会自行更改 DNS 吗?

不会。只有当客户点击检测结果旁边的按钮并确认更改前后的内容时,记录才会更改,而且仅限于您的服务器托管该域名 DNS 的情况。SPF 和 DMARC 按钮只会创建缺失的记录。如果记录已经存在,系统会显示合并后的内容,供客户手动复制,按钮绝不会替换现有记录。DKIM 按钮可以替换与服务器密钥不匹配的记录,但前提是只有一条这样的记录。每次更改都会写入账户日志,还会写入 /var/cpanel/email_spam_tester/ 下只有 root 才能编辑的日志,其中也会记录 DNS 在更改前提供的记录。

我的服务器通过智能主机中继外发邮件。它还能正常工作吗?

应该可以,但我还没有在智能主机之后测试过。测试邮件会按照该账户所有邮件的正常方式发出,因此报告会显示中继服务器的 IP 和名称,因为收件服务器看到的就是这些信息。修复中继服务器的反向 DNS 或将其从黑名单中移除,需要由中继服务器的运营方处理。但有一项信息会丢失。提供商拒收邮件的原因来自您服务器上的 Exim 日志,而使用中继时,该日志中只有中继服务器的回复。如果中继服务器接受了邮件,但提供商随后拒收,该邮件可能会显示为“未收到”。监控副本也会通过中继服务器发送。

监控会影响邮件送达率吗?

客户的邮件会像以前一样发出,内容不会改变,收件人也看不到任何额外内容,因为副本是单独投递到我们的地址。监控会占用每小时发送限额。每个副本都会计入域名的“每小时最大邮件数”一次,因此接近限额的域名会更早达到限额。使用默认设置时,每小时最多会额外计入 20 封邮件。某个小时内的副本数量超过该值后,邮件仍会发出,但不会发送副本。

文件夹检查也会计入每小时限额吗?

会,它会发送大约 30 封邮件。开始之前,插件会检查该域名本小时还可以发送多少封邮件。如果剩余额度不足,插件会告知客户。

哪些功能已经过实际测试?

支持 cPanel & WHM 134 或更高版本。目前,我已在 Ubuntu 24.04 上对 138(11.138)进行了实际测试。测试范围包括安装和升级、注册、功能开关、启用和不启用文件夹检查的测试、历史记录,以及对来自全部四种来源的邮件进行监控。尚未实际测试的项目包括其他操作系统、启用了 CageFS 的 CloudLinux、DKIM、SPF 和 DMARC 按钮(测试服务器的 DNS 托管在其他位置)、通过智能主机中继邮件的服务器,以及为整台服务器关闭监控,该功能目前只进行过试运行。如果您在其中一种环境中运行了该插件,我希望了解实际运行情况。

逐步安装

本指南假定你拥有服务器的 root 权限,并且此前没有使用过 WHM 插件。下面的每条命令都可以直接原样复制并粘贴。

1. 所需条件

你可以在安装前检查这两项连接。第一条命令应输出一行以 220 开头的内容,第二条命令应输出 200:

timeout 10 bash -c 'exec 3<>/dev/tcp/t.email-spam-tester.com/25 && head -1 <&3'
curl -s -o /dev/null -w '%{http_code}\n' https://email-spam-tester.com/health

2. 安装

通过 SSH 以 root 身份登录,然后逐条运行以下命令。

进入 root 的主目录,插件将安装在这里:

cd /root

下载压缩包及其校验和。成功时不会输出任何内容:

curl -fsSLO https://email-spam-tester.com/cpanel/latest.tar.gz
curl -fsSLO https://email-spam-tester.com/cpanel/latest.tar.gz.sha256

检查下载内容是否完整。你应该会看到 latest.tar.gz: OK。如果看到 FAILED,请重新下载,不要继续:

sha256sum -c latest.tar.gz.sha256

将其解压到 /root/email-spam-tester-cpanel。同样不会输出任何内容:

mkdir -p email-spam-tester-cpanel
tar -xzf latest.tar.gz -C email-spam-tester-cpanel --strip-components=1

运行安装程序。它会先检查每个文件,然后将文件复制到相应位置:

cd /root/email-spam-tester-cpanel && ./install.sh

你应该会看到 Checking Perl syntax…、Root module…、cPanel pages…、来自 cPanel 自身插件安装程序的几行输出、Switching the feature off in all feature lists… 和 WHM page…。最后几行应为:

Installed. Next: WHM » Plugins » Email Spam Tester » Register this server.
Customers do not see it yet: turn on email_spam_tester in WHM » Feature Manager
for the feature lists (packages) that should have it.

保留 /root/email-spam-tester-cpanel 目录。升级和 uninstall.sh 都需要从该目录运行。

3. 在 WHM 中注册服务器

  1. 以 root 身份登录 WHM。
  2. 在左侧菜单中打开 Plugins,然后点击 Email Spam Tester。
  3. Registration 区域显示 "Not registered"。其下方的管理员邮箱字段可以不填。
  4. 点击 Register this server。

页面顶部会出现一行绿色文字 "Registered. Installation #…",该区域现在会显示 Status: Registered、安装编号和密钥的开头部分。注册时会发送服务器的主机名、cPanel 版本、插件版本、账户数量,以及你填写的邮箱地址。密钥保存在 /var/cpanel/email_spam_tester/config.json 中,只有 root 可以读取。

你可以在同一页面修改每日限制,默认每个账户 20 次测试,每台服务器 500 次测试。

4. 为客户启用插件

安装后,任何人都看不到该插件。你需要选择哪些套餐可以使用它。

  1. 确认你的套餐使用哪个功能列表:打开 WHM » Packages » Edit a Package,选择一个套餐,然后查看 Feature List 字段。在许多服务器上,该值为 default。
  2. 打开 WHM » Packages » Feature Manager。
  3. 在 Manage feature list 下选择该列表,然后点击 Edit。
  4. 在列表中找到 Email Spam Tester(如果列表很长,可以使用浏览器的查找功能),选中它的复选框,然后点击 Save。
  5. 对所有需要启用该插件的功能列表重复以上操作。

使用这些套餐的客户现在可以在 cPanel 的 Email 部分看到 Email Spam Tester。以后创建新的功能列表时,也要记得选中它。

5. 以客户身份发送第一次测试

以其中一个客户的身份登录 cPanel。你可以在 WHM 中打开 Account Information » List Accounts,然后点击账户旁边的 cPanel 图标。

  1. 打开 Email » Email Spam Tester。页面有三个选项卡:Test、History 和 Monitoring。
  2. 在 Test 选项卡中选择一个邮箱。如果该账户没有邮箱,请先在 Email » Email Accounts 中创建一个。
  3. 保持选中 Standard test email,并保持勾选 Check the folder at email providers。
  4. 点击 Send test。

页面会显示当前操作,包括检查 DNS 记录、发送邮件以及等待邮件到达。大约一分钟后,报告会显示出来。报告包含两个评分,一个是满分 100 分的技术评分,另一个是传统的 0 到 10 分评分,下方还有 What to fix。如果 cPanel 可以修复此服务器上的某条记录,该列表会提供相应按钮;如果 DNS 托管在其他位置,则会提供需要复制的准确记录;还会为服务器管理员提供反向 DNS 值。再往下是所有检查结果。接下来的 30 分钟内,Where the email landed 会逐步显示邮件在每个邮件提供商处进入了 Inbox、Spam 还是 Promotions。如果提供商拒收邮件,也会显示其响应。检查完成几分钟后,还会生成一份书面处理方案。

文件夹检查会发送大约 30 封邮件。如果域名的每小时发送限制没有足够余量,页面会在发送任何邮件之前提示你。

6. 持续监控(可选)

为某个域名启用监控后,Exim 会将该域名发送的每封邮件以不可见副本的形式发送到 Email Spam Tester 的一个专用地址,客户可以看到每封邮件的技术报告。收件人不会看到任何变化。每个副本都会占用一次该域名的每小时发送限额,默认每小时最多复制 20 封。

  1. 在 WHM » Plugins » Email Spam Tester 中找到 Constant monitoring 区域,然后点击 Allow constant monitoring on this server。插件会检查你的 Exim 配置、添加规则、重新构建并重启 Exim。如果任何步骤失败,它会恢复所有更改。成功后,你会看到 "Constant monitoring is allowed on this server: the Exim rule is in, Exim was rebuilt and restarted.",并且该区域会将规则显示为 Active。
  2. 客户在 cPanel 中打开 Monitoring 选项卡,点击域名旁边的 Turn on 并确认。此后发送的邮件会在一两分钟内出现在该选项卡中。

要为整台服务器停止此功能,请在同一区域点击 Disable monitoring on the whole server。

7. 升级

下载新版本并将其解压覆盖旧版本,然后再次运行安装程序:

cd /root
curl -fsSLO https://email-spam-tester.com/cpanel/latest.tar.gz
curl -fsSLO https://email-spam-tester.com/cpanel/latest.tar.gz.sha256
sha256sum -c latest.tar.gz.sha256
tar -xzf latest.tar.gz -C email-spam-tester-cpanel --strip-components=1
cd /root/email-spam-tester-cpanel && ./install.sh

最后应显示 "Updated. The registration, limits and feature settings are unchanged."。如果允许使用监控功能,安装程序还会将 Exim 规则更新到最新版本。

8. 卸载

cd /root/email-spam-tester-cpanel && ./uninstall.sh

此操作会从 Exim 中移除监控规则、关闭所有域名的监控功能,并从 cPanel 和 WHM 中移除该插件。最后会显示 "Removed. The key is kept in /var/cpanel/email_spam_tester (use --purge to delete it)."。如果还要删除密钥,请改为运行 ./uninstall.sh --purge。

DNS 记录永远不会被修改,包括客户通过插件按钮创建的记录。

9. 出现问题时

客户看不到图标。 该功能在客户套餐的功能列表中处于关闭状态。重新执行第 4 步,并检查其套餐实际使用的功能列表。

页面显示 "The server administrator has not activated Email Spam Tester in WHM yet"。 服务器尚未注册。执行第 3 步。

注册失败。 WHM 页面顶部的红色消息会说明原因。最常见的原因是服务器无法通过 HTTPS 连接到 email-spam-tester.com。运行第 1 步中的 curl 检查,该命令必须输出 200,并检查出站流量的防火墙规则。

测试显示邮件在 3 分钟内仍未到达。 邮件可能卡在队列中或被拒收。运行第 1 步中的端口 25 检查。如果没有任何输出或发生超时,说明你的提供商阻止了出站端口 25。请要求提供商开放该端口,或者通过中继服务器发送邮件。要查看 Exim 如何处理该邮件,请运行:

grep 't.email-spam-tester.com' /var/log/exim_mainlog | tail -5

客户也可以在 Email » Track Delivery 中查看该邮箱的投递情况。

cpanel.<domain> 上的页面有时会出现 502 错误。 这是 Apache 为 cPanel 服务子域名提供的代理导致的,它会影响所有 cPanel 页面,并非只有此插件受到影响。直接地址 https://<domain>:2083 不受影响。要修复此问题,请打开 WHM » Service Configuration » Apache Configuration » Include Editor,为所有版本选择 Pre VirtualHost Include,添加以下内容并保存:

<IfModule setenvif_module>
    SetEnvIfNoCase Host "^(cpanel|webmail|whm|webdisk|cpcalendars|cpcontacts)\." proxy-nokeepalive=1 proxy-initial-not-pooled=1
</IfModule>

然后应用更改:

apachectl configtest && /scripts/rebuildhttpdconf && /scripts/restartsrv_httpd

10. 支持

请发送邮件至 hi@email-spam-tester.com。如果安装失败,请附上 ./install.sh 的输出;如果测试结果看起来有问题,请附上报告链接。有关该插件的更多信息,请访问 https://email-spam-tester.com/cpanel-integration/。