获取Postfix / var / log / maillog中的特定列

时间:2017-02-15 06:17:21

标签: postfix-mta logfile postfix logfiles logfile-analysis

我在我的本地使用Postfix。我正在编写一个脚本来每天获取延期/退回的邮件报告。如果我是正确的,通常日志会像日志文件中的列一样打印。

我的建议是我想要前一天的“to”,“status”,“说”以及它的消息为例“说:550无效的收件人”。而且事情是同样的日志被打印好几次,但是我需要从所有人那里获取类似日志中的任何一个。

2月13日13:40:35 ganga11 postfix / smtp [12098]:3371F2BF52:to =,relay = none,delay = 1.2,延迟= 0.84 / 0.01 / 0.27 / 0.07,dsn = 5.1.1,status =退回(主持人说:550 5.1.1未找到收件人。http://x.co/irbounce(回复RCPT TO命令))

2月13日13:40:35 ganga11 postfix / smtp [6923]:3371F2BF52:to =,relay = none,delay = 1.5,延迟= 0.84 / 0 / 0.46 / 0.19,dsn = 5.0.0,status =退回(主持人说:550没有这样的用户(grace@mmn.com(回复RCPT TO命令))

2月13日13:40:35 ganga11 postfix / smtp [29489]:3371F2BF52:to =,relay = none,delay = 1.3,延迟= 0.84 / 0.01 / 0.38 / 0.1,dsn = 5.0.0,status =退回(主持人说:550#5.1.0地址被拒绝。(回复RCPT TO命令))

Feb 13 08:14:45 ganga11 postfix / smtp [6736]:F093B2BCA3:to =,relay = none,delay = 6139,延迟= 6139 / 0.02 / 0.15 / 0,dsn = 4.4.1,status = deferred (连接到aaaaaa.co.in连接被拒绝)

2月13日13:40:36 ganga11 postfix / smtp [6940]:3371F2BF52:to =,relay = none,delay = 2.3,延迟= 0.84 / 0.01 / 0.17 / 1.3,dsn = 5.1.1,status =退回(主持人说:550 5.1.1未找到收件人。http://x.co/irbounce(回复RCPT TO命令))

2月13日13:40:35 ganga11 postfix / smtp [6923]:3371F2BF52:to =,relay = none,delay = 1.5,延迟= 0.84 / 0 / 0.46 / 0.23,dsn = 5.0.0,status =退回(主持人说:550没有这样的用户(raj@yahoo.in)(回复RCPT TO命令))

Feb 13 04:14:24 ganga11 postfix / smtp [6736]:F093B2BCA3:to =,relay = none,delay = 6139,延迟= 6139 / 0.02 / 0.15 / 0,dsn = 4.4.1,status = deferred (连接到xyzz.com Connection拒绝)

Feb 13 17:14:11 ganga11 postfix / smtp [6736]:F093B2BCA3:to =,relay = none,delay = 6139,延迟= 6139 / 0.02 / 0.15 / 0,dsn = 4.4.1,status = deferred (连接到bbbbb.com连接被拒绝)

1 个答案:

答案 0 :(得分:2)

这可能会对你有所帮助。

grep "postfix/smtp"

grep -P "status=(?\!sent)"过滤与SMTP相关的消息。

sed ...会过滤状态不是已发送的消息。

sort | uniq提取队列ID 收件人地址状态,并将其余视为状态消息

for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { if (v[j] > v[i]) { //... Thread.Sleep(100); Application.DoEvents(); } } } 过滤重复的条目。