高级 procmail 配方

高级 procmail 配方

我需要编写一个或多个稍微超出基础知识的 procmail 规则。我安装了 Bacula,并且希望将主题开头的所有邮件Bacula: Backup OK for移至名为backups-- 这些是很好的备份的文件夹中,因此我不需要定期阅读这些邮件,但我想保留它们以供后代使用。当然,这很容易。

现在是更难的部分。我需要知道备份确实正在运行(而不是ERROR在主题中失败),并且我不相信自己能够确保backups文件夹的未读邮件数量每天都在增加。所以我看到了几个不同的选择:

  1. 允许一封特定的“确定”消息发送到我的收件箱。例如,Bacula: Backup OK for FOO转到我的收件箱(理想情况下backups也是如此,这样我就可以删除收件箱中的副本,同时出于backups后代的原因仍然保留副本)。同时Bacula: Backup OK for BAR(以及除了FOO已经提到的之外的任何事情)总是会进入backups并且不会打扰我的收件箱。
  2. 使用帮助程序脚本变得更加聪明,该脚本可以跟踪上次成功备份的日期/时间,如果超过 24 小时没有注入新的邮件消息,警告出现问题。
  3. 或者以上两种情况都适用于极端偏执/现实主义者,因为糟糕的事情发生了:-)

答案1

我个人会重点关注#2。它不一定非常复杂,但解决方案可能确实需要根据您的需求进行定制。假设您有一个主机列表和一个 maildir 格式的文件夹,您可以通过类似的方式查看最近的消息

find $HOME/path/to/folder/backups -mtime 0 -print0 |
xargs -r0 awk '/^Subject: Bacula: Backup OK for / { a[$6] = FILENAME }
    END { split("FOO:BAR:BAZ:QUUX", t, /:/);
        for (h in t) host[t[h]]++;
        for (h in a) delete host[h];
        for (h in host) print "No backup for " host[h] }'

我喜欢这个脚本仅在缺少某些内容时发送报告,但随后您会遇到新的问题,即确保该作业最近已运行。也许您应该让它始终打印一些内容,并将“完成”邮件过滤到不同的文件夹......和/或添加一个监视脚本来监视此监视脚本。 (半开玩笑。关键是抽象 - 最后,一个监控脚本来监控所有其他监控脚本应该就是您主动监控自己所需的全部内容。)

相关内容