我们的 Postfix 服务器上有一位邮件用户正在使用公司邮件向我们的竞争对手发送危害信息。
我被要求对该用户最近的行为做出报告。
有一些像 pflogsumm 和其他工具可以提取统计数据,但到目前为止我还没有发现任何有用的东西来获取用户的所有信息,因为数据分为多行。
我想要得到这样的东西:
对于已发送邮件
11/11/11 00:00:00 [email protected] -> [email protected]
11/11/11 00:00:01 [email protected] -> [email protected]
对于收到的邮件
10/10/11 00:00:00 [email protected] -> [email protected]
10/10/11 00:00:01 [email protected] -> [email protected]
我知道我可以自己编写一个脚本,但是匹配每封邮件的后缀 ID 并不是用简单的 grep 就可以完成的,而且我有很多邮件历史记录需要重新检查,分布在不同的文件中等等。
源日志是标准后缀格式,例如这个……
Sep 13 16:15:57 server postfix/qmgr[18142]: B35CB5ED3D: from=<[email protected], size=10755, nrcpt=1 (queue active)
Sep 13 16:15:57 server postfix/smtpd[32099]: disconnect from localhost[127.0.0.1]
Sep 13 16:15:57 server postfix/smtp[32420]: 58C3E5EC9C: to=<[email protected]>, relay=127.0.0.1[127.0.0.1]:10024, delay=1.4, delays=0.01/0/0/1.4, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=32697-04, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as B35CB5ED3D)
Sep 13 16:15:57 server postfix/qmgr[18142]: 58C3E5EC9C: removed
Sep 13 16:15:57 server postfix/smtp[32379]: B35CB5ED3D: to=<[email protected]>, relay=mail.anothercompany.com[123.123.123.163]:25, delay=0.06, delays=0.03/0/0.01/0.02, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 77D0EB6C025)
Sep 13 16:15:57 server postfix/qmgr[18142]: B35CB5ED3D: removed
答案1
下载 perl 脚本maillogconvert.pl并执行如下:
perl maillogconvert.pl standard < /var/log/mail.log > result.log
用法:
perl maillogconvert.pl [standard|vadmin] [year] < logfile > output
第一个参数指定邮件日志文件的格式:standard - 日志文件是标准的 postfix、sendmail、qmail 或 mdaemon 日志格式 vadmin - 日志文件是具有 vadmin 多主机支持的 qmail 日志格式
如果当前年份不正确(例如 2002),则第二个参数指定日志文件的时间戳年份。始终使用 4 位数字。如果未指定,则使用当前年份。
如果没有指定输出,它将转到控制台 (stdout)。
答案2
我创建了一个 Perl 脚本:https://github.com/brablc/postfix-tools/blob/master/pflogrep
你可以将其用作 grep:
pflogrep [email protected] /var/log/maillog
或者你可以将输出提供给pflogsumm
并获取良好的统计数据:
pflogrep [email protected] /var/log/maillog | pflogsumm
答案3
尝试“maillogconvert.pl”(perl 脚本),它包含在 AWStats 中(http://www.awstats.org/)。
答案4
对于已发送邮件
11/11/11 00:00:00 [email protected] -> [email protected] 11/11/11 00:00:01 [email protected] -> [email protected]
# awk '/[email protected]/ { print $1, $2, $3, $7, $8 }' /var/log/maillog
对于收到的邮件
10/10/11 00:00:00 [email protected] -> [email protected] 10/10/11 00:00:01 [email protected] -> [email protected]
# awk '/[email protected]/ { print $1, $2, $3, $7, $8 }' /var/log/maillog