如何阻止外发电子邮件垃圾邮件

介绍

保护服务器不发送垃圾邮件的最有效方法是从一开始就阻止它。 在本文中,我们提供了几种技术来防止服务器发送不需要的垃圾邮件或垃圾邮件。 通常,不需要和不请自来的垃圾邮件通常会批量发送到不分青红皂白的收件人列表。 垃圾邮件通常用于商业目的,但可以通过僵尸网络或受感染计算机网络大量发送。

  1. 确保为服务器上的每个域使用所需的 DNS 条目,这对于提高电子邮件安全性应该是强制性的。
    • 防晒指数
    • DKIM
    • DMARC
  2. 始终在服务器上的每个 cPanel 和电子邮件帐户上使用强密码。 如果您使用默认所需密码强度设置,我们建议将其值设置为 60 或更大。
  3. 使每个网站上的插件、主题和软件保持最新,以避免任何妥协或漏洞。
  4. 当网站使用联系表格时,请使用 ReCaptcha 测试。 Recaptcha 是一种图灵测试,用于判断提交者是人类还是机器人。 强烈建议使用此方法,因为它可以防止自动化软件提交信息,这可能会使服务器充满不必要的请求。

采取的行动

即使采取了这些措施,您的服务器仍可能发送垃圾邮件。 如果您的客户无法发送或接收电子邮件,或者他们的电子邮件最终进入其他人的垃圾邮件文件夹,您可能会怀疑这种情况正在发生。 如果发生这种情况,我们建议采取本文中的以下步骤来消除此问题。

首先,必须追查垃圾邮件的来源。 在大多数情况下,它要么是现有的电子邮件帐户,要么是已经位于服务器上的特定 PHP 邮件脚本。 找到垃圾邮件帐户后,立即更改该帐户的密码。 如果脚本导致问题,请在服务器上找到其确切位置后禁用该脚本。 检测垃圾邮件来源的程序详述如下。 您需要访问 WHM 或 Interworx 才能完成调查。

cPanel 服务器

方法 1:使用 WHM 中的“邮件队列管理器”进行检测

从 WHM(主页 » 电子邮件 » 邮件队列管理器)导航到邮件队列管理器并输入搜索词条件。 最好选择过去 24 小时左右发出的电子邮件。 在大多数情况下,这将揭示垃圾邮件发送者。

提供搜索结果后,检查不断重复的消息或发件人。 此时,通过单击放大镜图标(查看消息)更仔细地检查该消息。

cPanel 邮件队列管理器(这些是为本文创建的模拟消息)

重点关注邮件标头中包含的以下部分:

  • 学科
Received: from username by mydomain.com with local (Exim 4.93)
 (envelope-from <[email protected]>)
 id 1l0Oht-000623-I8
 for [email protected]; Fri, 15 Jan 2021 18:30:01 +0530
From: "[email protected]>
To: [email protected]
Subject: Additional and easy income to earn today
X-PHP-Script: mydomain.com/index.php for xxx.xxx.xxx.xxx
X-PHP-Originating-Script: 1153:class-phpmailer.php
Content-Type: text/plain; charset=UTF-8

第 1 步:禁用垃圾邮件帐户

如果 From 中的电子邮件帐户名称和邮件主题听起来像垃圾邮件,您将需要尽快更改该电子邮件帐户的密码。 在您更改相关电子邮件帐户的密码后,持续发出的垃圾邮件应该在更改后的几分钟内停止,如果不是立即停止的话。

第 2 步:禁用邮件脚本

如果 From 中的信息为空白或未提供来自服务器的电子邮件地址,请查看 X-PHP-Originating-Script 或 X-PHP-Script 命令。 请付钱 close 注意邮件头中的部分,该部分看起来像是显示与垃圾邮件脚本相关的域名和特定的 IP 地址。

X-PHP-Script: mydomain.com/index.php for xxx.xxx.xxx.xxx

标头的这一部分给出了相关恶意脚本的具体名称。

X-PHP-Originating-Script: xxx:class-mailer.php

下一步是在服务器上找到该脚本的确切位置。 最好的方法是从 WHM 菜单中选择终端,输入以下命令(更改为与您正在处理的信息相对应),然后按 Enter.

find /home/username/public_html -type f -name 'class-phpmailer.php'

确保

  • 调整 /home/username/public_html 以适应服务器上域的文档根目录。
  • 调整 class-phpmailer.php 以匹配您之前找到的脚本名称。

提供命令的输出后,您可以继续并通过在终端中使用以下命令将权限限制为 0 来禁用该脚本。

chmod 000 /path/to/script

确保调整 /path/to/script 以匹配您运行的上一个命令给出的确切脚本位置。 请注意,此命令将禁用脚本的功能。 虽然这可能会导致网站出现问题,但整个重点都在于阻止垃圾邮件。

步骤 3:清除邮件队列

垃圾邮件停止后,您可以继续从邮件队列中清除来自该特定电子邮件地址的邮件,方法是返回邮件队列管理器,选中您要删除的每封电子邮件的复选框。

方法二:在终端使用Exim命令检测

第 1 步:确定冻结电子邮件的数量

我们首先需要找出有多少邮件被冻结在电子邮件队列中。 如果服务器主动发送垃圾邮件,队列中可能有数千条消息。 要继续前进,请通过 SSH 连接到服务器或使用 WHM 的终端选项。 输入以下命令并按 Enter. 输出应该是队列中的电子邮件数量。 请记下此编号以供以后参考。

exim -bpc

第 2 步:确定垃圾邮件发送者

现在,我们要找出这些消息的发件人是谁。 在同一终端中使用以下命令并按 Enter.

exim -bpr | grep "<" | awk {'print $4'} | cut -d "<" -f 2 | cut -d ">" -f 1 | sort -n | uniq -c | sort -rn

该命令的输出将类似于 example 下面显示每个发件人有多少冻结的邮件。

430 [email protected]
225
25 [email protected]
4 [email protected]
4 [email protected]
1 [email protected]
1 [email protected]

忽略任何缺少发件人电子邮件地址的行,因为它们代表通常位于冻结队列中的系统消息。 使用上面输出的信息,我们看到 [email protected] 电子邮件帐户发送了多条消息,这需要进一步调查。

第 3 步:调查垃圾邮件发送者

使用以下命令生成从 [email protected] 发送的队列中前十封电子邮件的列表。

exim -bp | grep '[email protected]' | head 10 

您会注意到几个类似的输出。 符号串 1l06xA-00014u-J8 表示消息 ID。

13h  2.5K 1l06xA-00014u-J8 <> *** frozen ***
          [email protected]

接下来,使用以下命令检查消息的标题。

exim -Mvh <message-id>

输出将包含大量信息,但重点关注以下部分。

From
Subject
To

如果邮件的主题听起来很垃圾,那么这很可能是垃圾邮件。 如果您确定该主题听起来不像是普通邮件,则“发件人”下方列出的电子邮件帐户很可能是您正在寻找的垃圾邮件发送者,因此您应该停止其正在进行的活动。

要阻止垃圾邮件发送者,您需要尽快更改 [email protected] 的密码。 连续发出的垃圾邮件应该在更改密码后的几分钟内停止,如果不是立即停止的话。 如果 From、auth_sender 或 auth_id 为空,请参阅上面的“方法 1 步骤 2:禁用邮件脚本”部分以停止垃圾邮件脚本。

现在是时候通过再次运行 exim 命令来检查并查看邮件队列中冻结邮件的数量是否已更改为原始数量

exim -bpc

通过多次使用此命令,您可以确定消息是否已停止到达队列。 在我们确定垃圾邮件已经停止后,从电子邮件队列中删除垃圾邮件,最好通过 WHM 中的“邮件队列管理器”清除它们。 如果您希望使用命令行清除所有消息,请使用以下命令之一来完成此任务。

exim -bp | awk '/^ *[0-9]+[mhd]/{print "exim -Mrm " $3}' | bash

or

exim -bp | exiqgrep -i | xargs exim -Mrm

InterWorx 服务器

方法一:终端检测垃圾邮件

第 1 步:确定冻结电子邮件的数量

在 InterWorx 服务器上消除垃圾邮件的第一步是找出队列中存在多少冻结消息。 要找出答案,请以 root 用户身份运行以下命令。

/var/qmail/bin/qmail-qstat

qmail-stat 命令提供了邮件队列中不同位置的邮件数量的可读明细。 qmail-qstat 必须以 root 或组 id qmail 运行。

您会注意到类似于下面看到的输出。

messages in queue: 76
messages in queue but not yet preprocessed: 0

如果此命令在队列中打印出 0 条消息,或者在某些情况下不打印其下的任何内容,则表示电子邮件队列不包含任何消息。 如果结果是一个数字,那么这就是在服务器的冻结队列中等待传递的消息数。 在这种情况下,我们希望更彻底地检查该队列。

第 2 步:调查消息

如果队列不为空,接下来您要做的是使用 qmail-read 命令查找有关每条消息的更多信息。 此命令查看队列中的所有消息,并向我们显示信封发件人、创建时间、队列 ID 以及每个收件人的当前传递状态。 现在,运行这个命令。

/var/qmail/bin/qmail-qread

这将提供与此类似的行的输出。

30 Jan 2021 03:34:30 GMT  #3676617  525  <[email protected]>

我们需要在行尾注明发件人的电子邮件地址,以便进一步排除故障。 ‘<>‘ 符号内的电子邮件和以井号’#’ 符号开头的消息 ID 是需要注意的主要属性。

队列列出了所有可用的消息。 包含最多邮件的发件人的电子邮件帐户是我们将审查的第一个帐户。 下面的命令将向我们展示如何详细查看每条消息的标头信息。 运行此命令以在服务器上查找消息。 用消息 ID 替换井号,然后按 Enter.

find /var/qmail/queue/mess/ -iname #

例子:

find /var/qmail/queue/mess/ -iname 3676617

此命令提供服务器上的位置,类似于下面的内容。

/var/qmail/queue/mess/22/3676617

最后一步是使用 cat 命令检查文件。

cat /var/qmail/queue/mess/22/3676617

示例输出:

Received: (qmail 24703 invoked by uid 1153); 30 Jan 2021 10:06:42 -0500
To: [email protected]
Subject: Thank You for Signing Up
X-PHP-Originating-Script: 1153:class-phpmailer.php
X-PHP-Script: mydomain.com/index.php for xxx.xxx.xxx.xxx
Date: Sat, 30 Jan 2021 15:06:42 +0000
From: mary <[email protected]>
Reply-To: [email protected]
Message-ID: <[email protected]>
X-Mailer: PHPMailer 5.2.22 
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8

检查主题和发件人输出。 如果您发现某个主题类似于典型的垃圾邮件,请查看“发件人”电子邮件帐户。 如果我们看到大量类似的电子邮件,我们应该更改电子邮件帐户密码。这将阻止任何活动的垃圾邮件离开服务器。

方法 2:使用邮件队列管理器

使用终端检测垃圾邮件发送者可能很复杂,因此这里是使用 Interworx 邮件队列管理器的说明。 登录到服务器的 Nodeworx 仪表板后,请按照以下步骤操作:

  1. 单击系统服务,然后是邮件服务器,然后是邮件队列。
  2. 找到队列部分。

    IW 邮件队列管理器

  3. 从下拉列表中选择远程、本地、待办事项或远程+本地。
    IW 邮件队列管理器
  4. 如果给定队列中没有消息,您将看到队列中没有消息。
  5. 如果给定队列中有消息,它们将显示在队列部分表中。
  6. 接下来,我们需要查看消息的内容。 这就是我们根据发件人/收件人确定邮件是否为垃圾邮件的方式。 在消息 ID 列中,单击您要查看的消息的编号。 该消息将显示在新窗口中。 如果您注意到来自同一用户的多条消息,您将需要更仔细地检查这些消息。 单击“查看消息”并关注每条消息的主题以及发件人。
  7. 如果“主题”听起来像垃圾邮件,则此邮件的发件人很可能是垃圾邮件帐户。 要阻止垃圾邮件,请尽快更改电子邮件帐户密码。
  8. 最后一步是删除队列中不需要的消息,方法是检查它们并“删除”您选择的内容。

无论您选择采用哪种方法,如果一切顺利,服务器最终应该不会收到持续的垃圾邮件。 我们还建议您稍后短暂监控服务器,以验证您已成功消除垃圾邮件问题。

结论

如果没有适当的工具,控制垃圾邮件可能既困难又耗时。 我们希望此信息将为管理员提供更好的方法来开始解决外发垃圾邮件问题。

我们以成为 Hosting™ 中最乐于助人的人而自豪! 我们的支持团队由经验丰富的 Linux 技术人员和才华横溢的系统管理员组成,他们对多种网络托管技术有着深入的了解,尤其是本文中讨论的技术。 如果您对此信息有任何疑问,我们将始终每天 24 小时、每周 7 天、每年 365 天回答任何与本文相关的问题。