我在 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.log
Postfix 可在接下来的 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。
参考: