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 주소도 포함하는지 여부), 줄에 더 많은 텍스트가 있는지 여부에 따라, 그리고 GNU에 awk3인수 match()함수가 있다고 가정하면 다음도 작동할 수 있습니다.

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

제공된 예제 입력의 경우 출력은 다음과 같습니다.

relay=sender.hostname.com

관련 정보