很明显,我不能给自己发一封电子邮件告诉自己,qmail不工作,至less不使用qmail。 你怎么会通知自己qmail没有运行?
最简单的方法可能是一个http post或wget到可以发送电子邮件的辅助服务器。
显然,如果你的邮箱是在这个服务器上,它不会工作,所以你需要使用另一个电子邮件地址。
例如,每分钟运行一次cron作业来检测qmail是否正在运行。 如果它没有运行,那么wget http://secondserver/alert.php
cronjob bash脚本。
#!/bin/sh SERVICE='qmail' if ps ax | grep -v grep | grep $SERVICE > /dev/null then echo "$SERVICE service running, everything is fine" else echo "$SERVICE is not running" wget http://secondserver/alert.php fi
alert.php
<?php $to = '[email protected]'; $subject = 'qmail not running'; $message = "qmail reported down"; $headers = "From: [email protected]\r\nReply-To: [email protected]"; $mail_sent = @mail( $to, $subject, $message, $headers ); echo $mail_sent ? "Mail sent" : "Mail failed"; ?>
这个解决scheme是一个糟糕的做法,但最简单。 我会投资于监控解决scheme,如Nagios。 有了一个适当的监测工具,你可以设置一个解决scheme,可以记住你什么时候下来。
这也是一个stream行的监测服务: http : //www.bijk.com/
DJ Bernstein写了qmail。 我赞成其他答案,但我必须评论:
许多运行qmail的人最终咬紧牙关,成立了DJ Bernstein的另一个晚期侏罗纪时期的项目来监视叫做daemontools的服务。 它将通过几乎任何东西,包括僵尸入侵,处理器过热和内存不良,保持qmail的工作。
它真的很好用 – 我怀疑守护神工具是守护神世界的克里斯·诺里斯。 [守护程序=我们现在称之为服务的原始名称]
不pipe你的操作系统或发行版本,都会有一个守护进程服务keepalive程序,你只需要添加qmail。 我们不相信任何人或任何东西,所以我们通过邮件服务器运行电子邮件,然后检查是否在合理的时间内到达。 这是唯一的方法来真正知道它是否正常工作。 监测一个服务只有正确的健康检查的50%。
这是值得阅读关于DJB。 我一直认为他真的很老,但不是那么多。
只需要添加一个附加的答案 – 如果邮件端口正在侦听邮件(假设这个邮件对其他服务器是开放的),则可以从另一个服务器进行testing – 如果邮件报告被阻塞,则可以通知您这一事实。
一种可能的方式是设置监控服务,如Nagios,并添加qmail进行监控。这样不仅可以通知您有关失败的qmail服务,但实际上,您也可以警告即将发生的故障,以便您可以采取必要的措施来防止实际发生的故障。
我喜欢巴勃罗的方法; 我使用类似的方式发送即时消息跟踪通过VPN连接到家庭计算机的IP地址移动(因为每次分配了不同的地址):
import xmpp xmpp_login = 'user' xmpp_domain = 'jabber.com' xmpp_pwd = 'content-purged' xmpp_server = 'www.jabber.com' xmpp_recp = '[email protected]' conn = xmpp.Client(xmpp_domain) conn.connect(server=(xmpp_server, 5222)) conn.auth(xmpp_login,xmpp_pwd) conn.send(xmpp.Message(xmpp_recp, "message body"))
显然,这需要一个XMPP(Jabber)帐户 – 你可以发送消息给自己,所以一个就足够了。