我在我的本地使用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连接被拒绝)
答案 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();
}
}
}
过滤重复的条目。