如何安装 pflogsumm 作为 Postfix 邮件日志分析器?

如何安装 pflogsumm 作为 Postfix 邮件日志分析器?

我在 Ubuntu 13.04 中使用 Postfix 邮件服务器。我想在我的服务器中安装 pflogsumm 并分析邮件日志。我该怎么做?

答案1

要在 Ubuntu 中安装 pflogsumm,请使用 CTRL+ALT+T 打开终端,然后输入

sudo apt-get install pflogsumm 

配置:

我们希望 pflogsumm 每天由 cron 作业运行并将报告发送到[email protected]。因此,我们必须配置我们的系统,使其在 24 小时内写入一个邮件日志文件,然后启动下一个邮件日志,以便我们可以将旧邮件日志提供给 pflogsumm。因此,我们像这样配置 logrotate(即轮换我们系统日志文件的程序):打开/etc/logrotate.conf并在行 # 之后附加以下节,可以在此处配置系统特定的日志:

在终端执行以下操作

sudo -i

nano /etc/logrotate.conf 

然后

/var/log/mail.log {
    missingok
    daily
    rotate 7
    create
    compress
    start 0
}

在 中有一个 logrotate 脚本/etc/cron.daily。此脚本每天在 06:00h 到 07:00h 之间调用。使用我们刚刚进行的配置,它将复制当前的 Postfix 日志/var/log/mail.log/var/log/mail.log.0压缩,压缩文件将是/var/log/mail.log.0.gz。它还将创建一个新的空文件,/var/log/mail.logPostfix 可在接下来的 24 小时内将日志记录到其中。

现在我们创建调用 pflogsumm 的脚本/usr/local/sbin/postfix_report.sh,并让它将报告发送到[电子邮件保护]

nano /usr/local/sbin/postfix_report.sh

脚本为

#!/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
gunzip /var/log/mail.log.0.gz

pflogsumm /var/log/mail.log.0 | formail -c -I"Subject: Mail Statistics" -I"From: pflogsumm@localhost" -I"To: [email protected]" -I"Received: from www.example.com ([192.168.0.100])" | sendmail [email protected]

gzip /var/log/mail.log.0
exit 0 

我们必须使该脚本可执行:

chmod 755 /usr/local/sbin/postfix_report.sh

然后我们创建一个 cron 作业,每天 07:00 调用该脚本:

crontab -e

然后

 0 7 * * * /usr/local/sbin/postfix_report.sh &> /dev/null

这会将报告发送至[电子邮件保护]。在电子邮件客户端中它看起来像这样:

在此处输入图片描述

欲了解更多信息及必读:点击这里

答案2

利用 cron.daily 获取每日报告,或者运行一行程序:

sudo apt install pflogsumm

sudo nano /etc/cron.daily/pflogsumm

添加此项/满足您的需求:

#!/bin/sh
test -x /usr/sbin/pflogsumm || exit 0

/usr/sbin/pflogsumm -d yesterday --problems_first /var/log/mail.lo* \
| mail -a 'From: Daily Postfix Report <[email protected]>' -s "EXAMPLE.NET Email Server - Daily Activity Report" [email protected]

这就是你所需要的。完毕。

但一定要测试一下:

执行上面编写的 cron.daily 脚本:
sudo /etc/cron.daily/pflogsumm

或者,你可以在 root 帐户下使用相同的行进行测试:

sudo su # become root

/usr/sbin/pflogsumm -d yesterday --problems_first /var/log/mail.lo* | mail -a 'From: Daily Postfix Report <[email protected]>' -s "EXAMPLE.NET Email Server - Daily Activity Report" [email protected]

您应该立即收到一封告知结果的电子邮件。

这将遵循日常的通过类似的电子邮件显示“昨天”的结果。

没有理由做任何比简单地使用 cron.daily 更花哨的事情 - 除非您有大量和/或很大的日志文件,或者想要每日统计数据以外的东西。

参考:


注意:Ubuntu 的未来版本(看Debian 12/Bookworm截至撰写本文时)将(可能)将邮件日志严格发送到journalctl(systemd journal),并且 Rsyslog 将不再默认安装。您只需将/var/log/mail.lo*上面的内容替换为以下内容:
journalctl --no-pager -a -u [email protected]

您可以选择只安装 rsyslog 并编辑配置,以便 mail.log 像过去一样转到 /var/log/。如果这样做,请确保将新的 mail.log 也添加到 logrotate。

参考:

相关内容