私はCENTOS 5.xでSendmailを使用していますが、これが簡単な問題だと思います。 =)特定の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行のコードを探しています。
- 特定のDSNのsendmailメールログを取得します。
- 電子メールを識別するメッセージID。 (
awk '{print $}'
使用になりそうですが?) - 各メッセージの詳細を返します(手順2で取得したメッセージIDのgrepかもしれません)。
答え1
バッシュから
dsn=5.7.1
$ grep $dsn /var/log/maillog | awk '{print $6}' | awk -F: '{print $1}'
返品:
p937blksdh3
あなたが投稿した行にあるメッセージIDのようです。
まあ、それはスレッドではありません。では、grep
メッセージの詳細はどこに保存されますか?