我的服务器正在发送垃圾邮件

我的服务器正在发送垃圾邮件

我有一台安装了 CentOS+MySQL 的专用服务器,该服务器来自 godaddy.com。最近我遇到了一些非常奇怪的问题:我安装了一个 PHP 应用程序,该应用程序有一个线程,该线程会查询 MySQL 数据库中的电子邮件地址,然后通过 sendmail 命令发送电子邮件。后来我停止了该线程,删除了程序源文件,并重新启动了服务器。

但是,我的服务器仍然会发送大量电子邮件,现在就像垃圾邮件服务器一样。当我尝试打开我的网站时,我还看到几次 MySQL 错误,提示“连接过多”。我的感觉是,有什么东西在慢慢消耗 MySQL 连接,但从不断开连接,所以最终所有连接都被占用,我的网站停止运行。

这是我所做的:

  1. 我检查了服务器上的 cron 作业,但没有发现任何与此问题相关的内容

  2. 我检查了 /var/log/maillog 并发现了以下典型片段:

    Mar 30 18:25:57 ip-<my-server-ip> master[2501]: process 8739 exited, status 0
    Mar 30 18:34:40 ip-<my-server-ip> postfix/pickup[7556]: D44BCF280BE: uid=48 from=<apache>
    Mar 30 18:34:40 ip-<my-server-ip> postfix/cleanup[9426]: D44BCF280BE: message-id=<20110330223440.D44BCF280BE@ip-<my-server-ip>.ip.secureserver.net>
    Mar 30 18:34:40 ip-<my-server-ip> postfix/qmgr[29799]: D44BCF280BE: from=<apache@ip-<my-server-ip>.ip.secureserver.net>, size=1661, nrcpt=1 (queue active)
    Mar 30 18:34:40 ip-<my-server-ip> postfix/pickup[7556]: EC91FF280C3: uid=48 from=<apache>
    Mar 30 18:34:40 ip-<my-server-ip> postfix/cleanup[9426]: EC91FF280C3: message-id=<20110330223440.EC91FF280C3@ip-<my-server-ip>.ip.secureserver.net>
    Mar 30 18:34:40 ip-<my-server-ip> postfix/qmgr[29799]: EC91FF280C3: from=<apache@ip-<my-server-ip>.ip.secureserver.net>, size=1928, nrcpt=1 (queue active)
    Mar 30 18:34:41 ip-<my-server-ip> postfix/smtp[9428]: D44BCF280BE: to=<[email protected]>, relay=p3smtpout.secureserver.net[208.109.80.54]:25, delay=0.34, delays=0.04/0.01/0.15/0.13, dsn=2.0.0, status=sent (250 Accepted message qp 12288 bytes 1821)
    Mar 30 18:34:41 ip-<my-server-ip> postfix/qmgr[29799]: D44BCF280BE: removed
    Mar 30 18:34:41 ip-<my-server-ip> postfix/smtp[9431]: EC91FF280C3: to=<[email protected]>, relay=p3smtpout.secureserver.net[208.109.80.54]:25, delay=0.32, delays=0.01/0.01/0.08/0.22, dsn=2.0.0, status=sent (250 Accepted message qp 7308 bytes 2085)
    Mar 30 18:34:41 ip-<my-server-ip> postfix/qmgr[29799]: EC91FF280C3: removed
    
  3. 我停止了postfix服务。然后生成了很多/var/spool/postfix/maildrop这样的文件:

       1BCBEF280BE  apache  postdrop    rwxr–r–  2 KB    8:01 PM
    

我再次检查了邮件日志文件,#2 中描述的日志片段消失了。但是每天仍然收到相同的电子邮件!

我还注意到 maillong 中的时间戳显示电子邮件是全天发送的,但总是在下午 5 点收到电子邮件。

感觉我删除的 PhH 程序仍在运行,虽然 postfix 已停止,但每天都有一些东西在发送电子邮件。

现在,我怀疑有以下可能性之一:

  1. 我的 PHP 应用程序中的一些缓存文件未被成功删除,它们仍然执行旧的查询->sendmail 作业,并且 sendmail 未被 postfix 处理

  2. 看起来 apache 从某个地方获取了 sendmail 请求,然后将它们转发到 postfix。但是那个“某个地方”在哪里呢?

我完全糊涂了。不知道该做什么,只能看着我的服务器继续发送愚蠢的电子邮件。

请为我指点迷津。非常感谢所有提示/想法!

=== 更新 === 我不知道为什么我甚至无法对我的问题的答案发表评论......这里有一些更新:

我按照答案的建议刷新了邮件队列。mailq 返回为空,但我的服务器仍然发送了电子邮件!

我还必须保持邮件服务的运行。PHP 应用程序的其余部分仍然需要它。

我还应该尝试其他什么方向吗?

答案1

要刷新 postfix 队列:

postsuper-d ALL

对于 sendmail:

发送邮件-q

答案2

这听起来像是电子邮件已在 sendmail 队列中排队。这与最初发送电子邮件的 PHP 脚本无关。

即当您运行脚本时,它会将所有电子邮件发送到 Sendmail。这些电子邮件将在邮件假脱机中排队。邮件假脱机程序现在正在尝试清除队列。这就是为什么即使在重新启动后电子邮件仍会被发送的原因。

您应该尝试删除邮件池以清除队列

抱歉,但不确定最好的方法是什么。

也许这会有所帮助:http://www.kpsolution.com/blog/tips/how-to-clear-sendmail-queue/9/

还有谁知道怎么做吗?

祝你好运!

相关内容