CentOS服务器 - 监控SMTP进程的数量,如果超过X则发送电子邮件?

时间:2012-07-10 18:10:47

标签: smtp centos ps

我的公司有一个共有的CentOS服务器,可以托管十几个网站。我们使用Plesk进行管理,但我个人主要通过终端工作。本周末,我们客户的某个域的电子邮件帐户遭到入侵,服务器开始发送垃圾邮件。我们因垃圾邮件被列入黑名单,导致我们的一些网站出现故障,而我却发现了正在发生的事情。

显然,我想再次避免这种情况发生。我没有首先设置服务器 - 在多个网站的同一IP上运行http主机和邮件托管可能不是最好的设置,因为只需要一个带有弱电子邮件密码的dumbass客户端来管理多个网站

作为一个短期修复,我想知道是否有可能让脚本监控SMTP进程的数量,如果它超过某个阈值就给我发电子邮件?当服务器发送垃圾邮件时,它运行了大约80个SMTP进程,这让我觉得它被用作垃圾邮件服务器。还有,任何长期处理这种情况的想法?服务器有一个8块IP的块。

感谢您的帮助,欢迎任何建议/意见。我是LAMP开发人员,而不是全职* nix管理员。我在想

每5分钟有一个cron作业触发器 pipe #ps -A输出到文件
读取文件并通过正则表达式计算字符串'SMTP'的出现次数 如果需要,发送电子邮件

但是dang,这似乎有些令人费解:/

1 个答案:

答案 0 :(得分:1)

搞定了。这是用于计算SMTP进程数的shell脚本,如果有超过10个,则发送一封带有count的电子邮件:

#!/bin/bash  <- change as appropriate for your shell
NUMSMTP = $(ps ax | grep 'smtp' | wc -l)
if [[ $NUMSMTP -gt 10 ]] ; then
    echo "the server has $NUMSMTP processes running" | mail -s "subject" admin@example.com
fi

通过cron计划通过crontab在/ etc / crontab上每五分钟运行一次,使用

*/5 * * * * /path/to/script.sh

赢了:)