我可以使用什么命令在sendmail日志中搜索涉及特定收件人的所有邮件详细信息。

Modified on: Thu, 09 May 2019 16:20:02 +0800

CENTOS 5.x | Sendmail的

偶尔我需要搜索sendmail传递日志,以找出丢失邮件的情况。这通常涉及两个(或更多)步骤:

步骤1:搜索/ var / log / maillog以获取用户的电子邮件地址。例如grep -i“someuser@recipientdomain.com”/ var / log / maillog

通常会返回这样的内容:

  Jan 11 07:43:34 server-example sendmail[12732]: p937blksdh3: to=<someuser@recipientdomain.com>, 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

步骤2:然后我将获取唯一的消息名称(在本例中为p937blksdh3)并搜索它。例如:grep -i p937blksdh3 / var / log / maillog

我想将步骤1和2组合成一个单行,并让它自动执行相同的其他ID搜索。所以在一个命令中,我想做以下事情:

  1. 搜索sendmail maillog以获取特定字符串。
  2. 确定电子邮件的message-id(在上例中,这是p937blksdh3)。 (我猜是会使用awk'{print $}'?)
  3. 搜索相同的日志,但搜索消息ID(基本上grep -i p937blksdh3 / var / log / maillog在上面的例子中)
  4. 输出步骤3的结果。对其他消息ID重复此操作。
  5. 醇>
作者:Mike B

最佳答案

你可以做类似的事情。

`grep -i“中的

for i in `grep -i "someuser@recipientdomain.com" /var/log/maillog | awk '{print $5}'`; do grep -i $i /var/log/maillog; done

这将为您要查找的用户提供一行,然后选择该行的第5项(由空格分隔)。然后,对于该列表中的每个消息ID,将对包含消息ID的行进行grep。

如果要从消息ID的末尾删除:,可以执行类似的操作
    我在grep -i "someuser@recipientdomain.com" /var/log/maillog | awk '{print $5}' | sed 's/\://;做grep -i $ i / var / log / maillog;完成

希望有所帮助。

作者:Harry

相关问答

添加新评论