![处理 Postfix 日志](https://linux22.com/image/527931/%E5%A4%84%E7%90%86%20Postfix%20%E6%97%A5%E5%BF%97.png)
我想对通过我的 postfix 服务器发送的电子邮件做一些统计。
我主要需要创建一份报告来计算通过这台机器发送的消息数量。
我在 ubuntu 9.10 上运行 postfix,但管理它的经验非常有限,因此如果有人可以概述如何从概念上完成上述操作,我将不胜感激。
如果我能够过滤/摸索,则可获得额外积分
- 邮件主题(大部分是简单的回复)
- 最终我想包含来自 Spamassasin 或 dspam 的垃圾邮件分数(当我配置/安装它们时)
SQL 没有问题,所以如果我可以获得时间戳、主题、消息 ID、主题、垃圾邮件分数的 csv,我就会知道如何进行;只需要从概念上组织从哪里获取这些信息(设置哪些选项和/或从哪些日志中提取)。
编辑:我还要求程序尽可能可靠 - 如果可能的话,我想过滤掉任何反弹和其他错误。
答案1
答案2
我使用了http://www.packetmischief.ca/network/monitoring/postfix/做这样的事情。对我来说效果很好,我把它包括在我的每周输出消息中一段时间,当我仍在验证服务器是否正常运行时,每日输出邮件。无法提供详细信息(已签署知识产权工作......)但它与该网站相比并没有太大变化,事实上,据我回忆,只需按照那里的信息就可以找到您最初寻找的内容(通过 snmp)。
如果您擅长使用 perl,您可以轻松地让它填充数据库。
至于“加分项”——主题不会记录在 postfix 的日志中(至少默认情况下不会)。我使用 amavisd-new,它会将垃圾邮件信息记录到日志中,因此在上面链接中引用的 perl 脚本中添加几行并让它获取分数是相当简单的。示例行如下所示:
10 月 23 日 01:29:58 hercules amavis[19936]: (19936-08) 垃圾邮件,->,是的,命中数=15.389 标签=0.1 标签2=3.5 终止数=3.5 测试=FH_HELO_EQ_D_D_D_D=1.117,HELO_DYNAMIC_IPADDR2=3.888,HTML_MESSAGE=0.001,MIME_QP_LONG_LINE=0.001,RAZOR2_CF_RANGE_51_100=0.365,RAZOR2_CF_RANGE_E4_51_100=0.467,RAZOR2_CHECK=1.729,RCVD_IN_BRBL_LASTEXT=1.644,RCVD_IN_PBL=3.558, RCVD_IN_RP_RNBL=1.284,RDNS_DYNAMIC=0.363,SPF_SOFTFAIL=0.972,隔离垃圾邮件-60473(maia-spam-quarantine)
答案3
我为 Postfix 日志编写了类似“grep”的脚本:https://github.com/brablc/postfix-tools/blob/master/pflogrep
它搜索一条线路并输出具有相同队列 ID 的所有线路,从而允许pflogsumm
对过滤数据提供正确的统计数据。