我感兴趣的是在邮件备份时不会像预期的那样中继邮件,也就是说发送延迟。 我在nagios尝试,没有任何解决scheme。 我试图用记事本,这不是所需的。
所需的解决scheme:如果邮件未发送“状态=已发送(250 Ok)”,则通过邮件提醒。 问题很简单,就是避免重复。 所以一旦发现警报,如果第二次检查没有发送任何警报涉及到这一点。
这怎么能做到?
也许后缀有一个自己的解决scheme?
SMTP不适用于实时和低延迟通信!
即使消息已离开服务器,但通常尚未向收件人INBOX发送,但仍可能正在处理远程垃圾邮件和/或AVfilter。
由于灰名单是相当有效和普遍的,即使是暂时的错误也不是问题。
简单地监视邮件队列的大小,取决于你的使用模式,只有队列超过100或1000的事件可能是关心和指示真正的问题…
如果你愿意在某个地方创build一个额外的文件/日志,处理重复应该是可以pipe理的。 例如,通过正常的步骤发送警报电子邮件,然后成功发送邮件之后,添加一个额外的行写入时间戳,也许一些其他信息到一个新的日志文件这样的脚本将工作:
echo $(date +%s),sent_queuealert >> /path/to/postfix/logs/sentalerts.log
这将存储unixdate戳和采取的行动。 现在,在if-else语句中写入日志文件中的一些额外的逻辑是控制消息是否被发送所需的全部内容,下面是一个简单的例子
#!/bin/bash lastalert=$(grep "sent_queuealert" ./sentalerts.log |tail -n1 |cut -d"," -f1) ctime=$(date +%s) dtime=$(expr $ctime - $lastalert) if [ "$dtime" -lt 250 ] then echo "Too soon to send" echo $(date +%s),skip_send >> sentalerts.log else echo "place holder for alert sender" echo $(date +%s),sent_queuealert >> sentalerts.log fi
这是一个非常粗糙的版本,但它应该很容易修改您的目的。 每隔几分钟使用cron运行相应的脚本将允许您检查日志文件,而不一定依赖于postfix中的内部机制。 在这个答案中有一些关于监控postfix的有趣信息。 将这些知识与某种时间戳记日志检查相结合可能会产生一个更优雅的解决scheme。
电子邮件监测应该从一些简单的事情开始:
一旦你已经掌握了基础知识,那就考虑扩展
postfix及其助手使用了多lessCPU