我有一个从godaddy.com安装CentOS + MySQL的专用服务器。 最近我有一些非常奇怪的问题:我安装了一个PHP应用程序,它有一个线程查询MySQL数据库的电子邮件地址,然后通过sendmail命令发送电子邮件。 后来我停止了该线程,删除了程序源文件,并重新启动了我的服务器。
但是,我的服务器仍然发送了大量的电子邮件,现在就像垃圾邮件服务器一样工作。 在尝试打开我的网站时,我也看到了MySQL错误,这个错误有几次像“连接太多”。 我的看法是,有些东西在慢慢消耗掉MySQL连接,但从不断开,所以最终所有的连接都被占用了,我的网站也停止了运行。
以下是我所做的:
我在服务器上检查了我的cron作业,但没有发现任何与此问题有关的事情
我检查了/ 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
我停止了后缀服务。 那么在/var/spool/postfix/maildrop生成许多文件,如下所示:
1BCBEF280BE apache postdrop rwxr–r– 2 KB 8:01 PM
我再次检查了maillog文件,#2中描述的日志片断消失了。 不过每天仍然收到相同的电子邮件!
我还注意到马龙时间戳显示电子邮件是全天发送的,但总是在下午5点收到电子邮件。
感觉就像我删除的PhH程序仍在运行,并且每天发送邮件,尽pipepostfix已停止。
现在,我怀疑以下其中一种可能性:
我的PHP应用程序中的一些caching文件没有成功删除,他们仍然执行旧的查询 – > sendmail作业,sendmail不是由后缀处理
它看起来像apaches从某个地方拿起sendmail请求,然后将其转发给postfix。 但那个“某个地方”在哪里?
我完全困惑。 不知道该怎么做,但看我的服务器继续发送愚蠢的电子邮件。
请给我一些启示。 所有的提示/想法,高度赞赏!
===更新===我不知道为什么我甚至不能评论我的问题的答案…这里有一些更新:
我按照答案的build议刷新了邮件队列。 mailq返回空,但我的服务器仍然发出电子邮件!
还必须保持邮件服务运行。 PHP应用程序的其余部分仍然需要它。
我应该尝试的其他方向?
刷新postfix的队列:
postsuper -d ALL
sendmail的:
sendmail -q
这听起来好像电子邮件已经在sendmail后台中排队了。 它与最初发送电子邮件的PHP脚本无关。
即,当您运行脚本时,它会将所有电子邮件发送到Sendmail。 这些电子邮件将在邮件缓冲区中排队。 邮件假脱机程序正在尝试清除队列。 这就是为什么电子邮件即使在重新启动后也被发送的原因。
您应该尝试删除邮件缓冲区以清除队列
对不起,但不知道什么是最好的方法来做到这一点。
也许这将有助于: http : //www.kpsolution.com/blog/tips/how-to-clear-sendmail-queue/9/
任何人都知道如何?
祝你好运!