Postfix监控与邮件和pflogsumm
版本1.0
作者:Falko Timme
本文介绍如何使用Mailgraph和pflogsumm工具监视Postfix邮件服务器。 Mailgraph每天,每周创建,每月和每年的图形发送,接收,退回,拒绝电子邮件和还垃圾邮件和病毒,如果垃圾杀手和ClamAV的集成到Postfix。 可以使用浏览器访问这些图形,而pflogsumm(“Postfix日志输入摘要”)可用于发送每封邮件的Postfix活动报告。
下面我将介绍如何安装和的Debian Sarge,Ubuntu的公鸭(6.06 LTS),和Fedora Core 5配置Mailgraph和pflogsumm。
我想先说说这不是建立这样一个系统的唯一途径。 实现这一目标有很多方法,但这是我所采取的方式。 我不会保证这将为您工作!
1初步说明
在本教程中,我的Linux系统的IP地址为192.168.0.100
,并将网站http://www.example.com
与文件根/var/www/www.example.com/web
和cgi-bin目录/var/www/www.example.com/cgi-bin
,我会将pflogsumm报告发送到邮箱地址postmaster@example.com
。
2 Debian Sarge
2.1邮件
Debian Sarge包含Mailgraph和pflogsumm的包,所以我们只需安装这些。 我们还安装rrdtool存储Mailgraph所需的数据来绘制图形:
apt-get install rrdtool mailgraph
你会被问到几个问题:
邮件是否开机?
< - 是的
邮件应该使用哪个日志文件?
< - /var/log/mail.log
清除RRD文件?
< - 是的
那么还有这个问题:
Count incoming mail as outgoing mail?
如果您已将内容过滤器(如垃圾邮件和病毒扫描)集成到Postfix中(如本教程中所示: 使用Postfix,Courier和MySQL(+ SMTP-AUTH,配额,SpamAssassin,ClamAV)的虚拟用户和域名 ),然后回答不要以为Mailgraph会计算您的电子邮件两次(因为Postfix会将邮件传递给amavisd,然后 - 成功扫描后 - 将邮件传递回Postfix)。 如果不使用内容过滤器,则回答“是” 。
在安装过程中,Mailgraph的系统启动链接会自动创建,Mailgraph也会自动启动,因此我们不需要手动启动。
现在我们必须将mailgraph.cgi
脚本(它绘制图形并创建我们的Web浏览器的输出)复制到www.example.com
网站的cgi-bin目录中:
cp -p /usr/lib/cgi-bin/mailgraph.cgi /var/www/www.example.com/cgi-bin
该脚本已经可执行,所以我们不需要chmod
它。 如果您在www.example.com
网站上使用suExec,则必须将mailgraph.cgi
选择为相应的所有者和组。
现在将浏览器指向http://www.example.com/cgi-bin/mailgraph.cgi
,您应该看到一些图表。 当然,在看到第一个结果之前,必须有一些电子邮件通过您的系统,所以请耐心等待。
一段时间后,您的图形可能看起来像这样(以下输出是自定义的,所以它看起来不像你的)
Daily Statistics.
Weekly Statistics.
Monthly Statistics.
Yearly Statistics.
请注意: Mailgraph将报告垃圾邮件和病毒,只有当您将Postfix中的内容过滤器(如amavisd)集成到配置为使用SpamAssassin和ClamAV来标记垃圾邮件和病毒邮件时。 如果您不这样做,您仍然会看到图形,但没有垃圾邮件和病毒报告。
2.2 pflogsumm
要安装pflogsumm,我们运行
apt-get install pflogsumm
我们希望pflogsumm每天由cron工作运行,并将报告发送到postmaster@example.com
。 因此,我们必须配置我们的系统,它写入一个邮件日志文件24小时,然后启动下一个邮件日志,以便我们可以将旧邮件日志提供给pflogsumm。 因此,我们配置logrotate(这是旋转系统日志文件的程序):打开/etc/logrotate.conf
并在其中添加行#系统特定日志
后,附加以下节;
vi /etc/logrotate.conf
/var/log/mail.log { missingok daily rotate 7 create compress start 0 } |
/etc/cron.daily
中有一个logrotate
脚本。 这个脚本是每天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小时内登录。
现在,我们创建脚本/usr/local/sbin/postfix_report.sh
,它调用pflogsumm并将其发送到postmaster@example.com
:
vi /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: postmaster@example.com" -I"Received: from www.example.com ([192.168.0.100])" | sendmail postmaster@example.com gzip /var/log/mail.log.0 exit 0 |
我们必须使这个脚本可执行:
chmod 755 /usr/local/sbin/postfix_report.sh
然后我们创建一个cron工作,每天在07:00h调用脚本:
crontab -e
0 7 * * * /usr/local/sbin/postfix_report.sh &> /dev/null |
这将把报告发送到postmaster@example.com
。 它在电子邮件客户端中看起来像这样: