我在/ var / log / maillog中过滤后缀日志时遇到问题。
我执行了一个命令cat maillog | grep bounced | grep said
并过滤了哪些邮件没有发送,其原因如下:
11月10日10:48:40 host-10-190-10-26 postfix / smtp [7075]:7AF986C13:to =,relay = gmail-smtp-in.l.google.com
[74.125.28.26]:25,延迟= 2.1,延迟= 0.04 / 0 / 1.9 / 0.2,dsn = 5.1.1,状态=退回(主机gmail-smtp-in.l.google.com [74.125。 28.26]说:
550-5.1.1您尝试覆盖的电子邮件帐户不存在。请尝试550-5.1.1仔细检查收件人的电子邮件地址
用于拼写错误或550-5.1.1不必要的空格。在550 5.1.1 http://support.google.com/mail/bin/answer.py?answer=6596
了解更多信息wv1si15262329pab.224 - gsmtp(回复RCPT TO命令)) 11月13日10:47:28 host-10-190-10-26 postfix / smtp [28250]:B0D491E80:to =,relay = gmail-smtp-in.l.google.com
[74.125.20.27]:25,延迟= 3,延迟= 0.02 / 0.02 / 2.8 / 0.23,dsn = 5.1.1,状态=退回(主机gmail-smtp-in.l.google.com [74.125。 20.27]说:
550-5.1.1您尝试覆盖的电子邮件帐户不存在。请尝试550-5.1.1仔细检查收件人的电子邮件地址
用于拼写错误或550-5.1.1不必要的空格。在550 5.1.1 http://support.google.com/mail/bin/answer.py?answer=6596
了解更多信息ce9si24575145pdb.68 - gsmtp(回复RCPT TO命令)) 11月13日10:49:41 host-10-190-10-26 postfix / smtp [28278]:525811E80:to =,relay = www.haha.com [140.174.93.116]:25,delay = 7.2,
延迟= 0.05 / 0.01 / 6.6 / 0.53,dsn = 5.3.0,状态=退回(主机www.haha.com [140.174.93.116]说:553 5.3.0 ...用户未知
(回复RCPT TO命令))
现在我需要导出以下字段:到和说:到一个带有2列的文件
有人帮助我或提出一些想法。
答案 0 :(得分:4)
这样的事情?
grep status=bounced /var/log/mail.log | sed -e 's/.*to=<//g' -e 's/>,.*said://g'
更新: 不太确定你的意思是“有列的东西”,但我修改了它,所以用分号分隔。这应该可以轻松导入任何办公室应用程序(如MS Excel)
grep status=bounced /var/log/mail.log | sed -e 's/.*to=<//g' -e 's/\(.*\)>,.*said:\ /\1;/g' > bounced_mail.csv
如果您愿意,请将答案标记为有用。
第二次更新:脱离我的头脑,一个快速而肮脏的解决方案(没有以任何方式测试!!)
将上面的代码粘贴到可执行文件 shellscript
从 /etc/logrotate.d/syslog
创建新文件 /etc/logrotate.d/postfix
具有以下内容:
/var/log/maillog {
prerotate
/path/to/shellscript.sh > /path/to/outputfile-$(date +%Y%m%d).txt 2> /dev/null
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
请注意,您应该彻底测试!
答案 1 :(得分:1)
我创建了一个Perl脚本:https://github.com/brablc/postfix-tools/blob/master/pflogrep
您可以使用is as grep:
pflogrep infractor@example.com /var/log/maillog
或者您可以将输出提供给pflogsumm
并获得更好的统计信息:
pflogrep infractor@example.com /var/log/maillog | pflogsumm