过滤postfix日志邮件已发送或退回

时间:2014-11-20 11:45:17

标签: logging filtering postfix-mta

我在/ 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列的文件

有人帮助我或提出一些想法。

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

如果您愿意,请将答案标记为有用。

第二次更新:脱离我的头脑,一个快速而肮脏的解决方案(没有以任何方式测试!!)

  1. 将上面的代码粘贴到可执行文件 shellscript

  2. /etc/logrotate.d/syslog

  3. 删除 / var / log / maillog
  4. 创建新文件 /etc/logrotate.d/postfix

  5. 具有以下内容:

    /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