得る必要がある
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アドレスも含むかどうか)、行にさらにテキストがあるかどうかに応じて、GNUにawk
3引数match()
関数があると仮定すると、次のことも機能します。
awk '/from=/ {if (match($0,/.*(relay=[^[:space:]]+).*/,a)) printf("%s\n",a[1])}' mail.log
提供された入力例の場合、出力は次のようになります。
relay=sender.hostname.com