我需要从 sendmail 日志中获取relay=hostname.com

我需要从 sendmail 日志中获取relay=hostname.com

我需要获取

relay=sender.hostname.com

来自下面的 Sendmail 日志示例。

sendmail[0000]: 03O7cddddddd:  from=<[email protected]>, size=782, class=0, nrcpts=1, msgid=<[email protected]>, proto=ESMTP, daemon=MTA, relay=sender.hostname.com [10.0.0.73]

答案1

我可以使用以下命令来做到这一点。

grep "from=" mail.log | sed 's/.*relay=//'

使用以下 cmd 排序并选择前 10 个。

grep "from=" mail.log | sed 's/.*relay=//' | sort | uniq -c |sort -nr -k 1 | head -10

答案2

根据您的输出需要的“选择性”程度(即是否[ ... ]还包括尾部 IP 地址),以及该行是否可能有更多文本,并假设 GNUawk具有 3 参数match()函数,以下内容也可以工作:

awk '/from=/ {if (match($0,/.*(relay=[^[:space:]]+).*/,a)) printf("%s\n",a[1])}' mail.log

对于提供的示例输入,输出为

relay=sender.hostname.com

相关内容