如何生成所有消息触发特定NDR的报告

CENTOS 5.x | 发送邮件

大家好,

我希望这是一个简单的问题。 =)我需要生成触发特定DSN代码的消息的报告摘要。 例如:

Jan 11 07:43:34 server-example sendmail[12732]: p937blksdh3: to=<[email protected]>, delay=00:00:00, xdelay=00:00:00, mailer=esmtp, pri=102537, relay=mta.recipientdomain.com. [12.34.56.78], dsn=5.7.1, stat=Service unavailable 

通常,我只是grep这个信息(如: grep -i“dsn = 5.7.1”/ var / log / maillog )。 但问题是,这只会返回上面的一行,不告诉我的消息的发件人。

理想情况下,我正在寻找一个可以做到以下几点的单线程:

  1. search特定DSN的sendmail maillog。
  2. 识别电子邮件的消息ID。 (我猜awk'{print $}'会被使用?)
  3. 返回每个消息的详细信息(大概是从步骤2中检索的消息ID)。

我是脚本/单行的n00b,所以我相信可能有一个更简单的方法来做到这一点。 有什么想法吗?

谢谢,

-M

以下将search你的dsn,如果它匹配dsn = 5.7.1它将打印msg-id和发件人:

 awk '{if($13 ~ /dsn\=5\.7\.1/)print $11 $7}' < /var/log/maillog 

我不确定你想要提取什么样的特定数据,而不是msg-id和发送者,但是你可以通过手动计算由空格分隔的字段来切换print $11 $7字段($ 11 $ 7)来select你想。

这是你以后?

埃里克

效率不高(2次扫描日志文件),但应该做的伎俩:

awk'/dsn=5.7.1/ {print $ 6}'/ var / log / maillog | while read ID; 做awk“/$ID.*from=/ {print \ $ 7}”/ var / log / maillig; DONE