显然,我不能给自己发电子邮件告诉自己 qmail 无法正常工作……至少不能使用 qmail。您如何告知自己 qmail 无法运行这一事实?
答案1
最简单的方法可能是通过 http post 或 wget 发送到可以发送电子邮件的辅助服务器。
显然,如果您的邮箱位于此服务器上,它将无法工作,因此您需要使用其他电子邮件地址。
例如,每分钟运行一个 cron 任务来检测 qmail 进程是否正在运行。如果没有运行,则 wgethttp://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
警报.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";
?>
这个解决方案是穷人的办法,但也是最简单的。我会投资一个监控解决方案,比如 nagios。使用适当的监控工具,您可以设置一个可以在宕机时向您发送短信的解决方案。
这也是一种流行的监控服务:http://www.bijk.com/
答案2
DJ Bernstein 写了 qmail。我同意另一个答案,但我必须评论一下:
许多运行 qmail 的人最终还是下定决心,安装了 DJ Bernstein 的另一个侏罗纪晚期项目,用于监控名为 daemontools 的服务。它几乎可以在任何情况下保持 qmail 正常运行,包括僵尸入侵、处理器过热和内存不足。
它确实运行良好 - 我怀疑 daemontools 是守护进程世界中的查克·诺里斯。[守护进程 = 我们现在所称服务的原名]
无论您的操作系统或发行版是什么,都会有一个守护进程服务 keepalive 程序,您只需将 qmail 添加到其中即可。我们不信任任何人或任何事物,因此我们通过邮件服务器运行电子邮件,然后检查它们是否在合理的时间段内到达。这是真正了解它是否正常工作的唯一方法。监控服务只是正确健康检查的 50%。
关于 DJB 的文章值得一读。我一直以为他真的老了,但事实并非如此。
答案3
只需添加一个额外的答案 - 您可以从另一台服务器测试邮件端口是否正在监听邮件(假设这对另一台服务器是开放的) - 如果它报告它被阻止,那么它可以通知您这一事实。
答案4
我喜欢 pablo 的方法;我使用过类似的方法来发送 IM 风格的消息,跟踪通过 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)帐户 - 您可以“向自己”发送消息,因此一个就足够了。