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

问题描述 投票:0回答:3

我在 /var/log/maillog 中过滤 postfix 日志时遇到问题。

我执行一个命令

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,延迟=7.2,

delays=0.05/0.01/6.6/0.53,dsn=5.3.0,status=bounced(主机www.haha.com[140.174.93.116]说:553 5.3.0 ...用户未知

(回复 RCPT TO 命令))

现在我需要将以下字段导出: tosaid: 导出到具有 2 列的文件中

有人帮助我或给我一些想法。

logging filtering postfix-mta
3个回答
9
投票

类似这样的事情吗?

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 删除行

    /var/log/maillog
  3. 创建一个新文件/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 
}

请注意,您应该彻底测试!


2
投票

我创建了一个 Perl 脚本:https://github.com/brablc/postfix-tools/blob/master/pflogrep

您可以使用 is 作为 grep:

pflogrep [email protected] /var/log/maillog

或者您可以将输出提供给

pflogsumm
并获得不错的统计数据:

pflogrep [email protected] /var/log/maillog | pflogsumm

0
投票

我找到了这个命令行工具:https://github.com/MatteoGuadrini/followmail

to 字段过滤:

followmail -t [email protected]

从字段中筛选:

followmail -f [email protected]

并以 CSV 或 JSON 格式打印:

 followmail -f [email protected] -t [email protected] --csv

 followmail -f [email protected] -t [email protected] --json
© www.soinside.com 2019 - 2024. All rights reserved.