私は私のメールにさまざまなログメッセージが含まれているCentOSでメールフィルタリングのためにprocmailでfetchmailを使用しています。彼らは私のメッセージ(ログ)からエラー文字列を検索するのに役立ちます。毎日私に送信されるメールの数が固定されており、サーバーがクラッシュしてもメールを送信しないので、メールが欠落しているかどうかを確認する方法を知っている人はいますか?メールが欠落していることをどのように確認できますか?電子メールアラームを介して送信された場合?
procmail.log
fetchmailを使用してメールをインポートし、procmailを使用してメールを処理するときに特定のメールがまだ到着していないことを確認するには、ファイルを調べる必要があります。私のログファイルは次のとおりです。
From [email protected] Wed Dec 31 10:38:49 2014
Subject: example1 -> Incremental 1 -> DEV backup
Folder: /dev/null 235603
From [email protected] Wed Dec 31 10:38:50 2014
Subject: example2
Folder: /dev/null 5983
From [email protected] Wed Dec 31 10:38:50 2014
Subject: example3 -> Full Offline Backup DEV
Folder: /dev/null 40978
From [email protected] Wed Dec 31 10:38:50 2014
Subject: [OK] [ example4]
Folder: /dev/null
したがって、これらのメールは1日以内に受信され、各メールが到着したことを確認する必要がある特定の時間に到着する必要があります(ログファイルにあります)。今、これらのメッセージがログにあるかどうかを確認する方法が必要です。そしてfrom行でのみ検索が可能です。
ベストアンサー1
一種の定期的なログアナライザを実行して、受信する予定のすべてのエントリを受信していることを確認できます。たぶんそうかもしれません。
awk 'BEGIN {
e="[email protected]:[email protected]:[email protected]:[email protected]";
split(e, expected, /:/) }
/^From / { seen[$2]++ }
END { for (x in expected) if (!(expected[x] in seen)) print expected[x] " missing" }
' Mail/procmail.log
調査したい期間(過去24時間?)のログがあることを確認し、それをこのスクリプトに渡します。 「予想」レコードのいずれかが欠落している場合は警告します。
スクリプトは単にFrom
各ログ行の2番目のフィールドを見つけて抽出します。最後に にないレコードがseen
ある場合、各レコードについて警告メッセージが表示されます。expected
seen
crontab
スクリプトが出力を生成する場合は、このコマンドを実行して電子メールを受信できます。最新のログファイルを同時に(少なくとも大まかに)アーカイブして処理できるように、ログ循環スクリプトと一緒に実行することをお勧めします。これにより、タイムスタンプなどを確認するためにログファイルを解析する必要がなくなります。このログファイルの内容はすべて興味のある期間です。