バウンスを検出するSMTPログを解析するためのツール
質問
当社のWebアプリケーションは電子メールを送信します。私たちにはたくさんのユーザーがいて、たくさんのバウンスがあります。たとえば、ユーザーが会社を変更すると、会社の電子メールは無効になります。
バウンスを見つけるために、ログパーサーでSMTPログファイルを解析します。ログはMicrosoft SMTPサーバーから取得されます。
550+#5.1.0+Address+rejected+user@domain.com
のように、いくつかのバウンスは素晴らしいです。バウンスには user@domain.com
があります。
ただし、 550 + No + such + recipient
など、エラーメッセージに電子メールがないものもあります。
ログを解析(ログパーサーを使用)して、どのメールが 550 + No + such + recipient
などの原因となったかを見つける簡単なRubyスクリプトを作成しました。
それを行うツールが見つからなかったことに驚いています。ログ分析用のZabbixやSplunkのようなツールを見つけましたが、そのような単純なタスクには過剰すぎるように見えます。
SMTPログを解析し、それらを引き起こすバウンスと電子メールを見つけるツールを知っている人はいますか?
解決
この記事はまさにあなたが探しているものです。これは優れたツールログパーサーに基づいています。
>ログパーサーは強力で多用途です 普遍的なクエリを提供するツール ログなどのテキストベースのデータへのアクセス ファイル、XMLファイル、CSVファイル、など 上の主要なデータソース Windows®などのオペレーティングシステム イベントログ、レジストリ、ファイル システム、およびActive Directory®。君は Log Parserにどのような情報を伝えるか 必要性と処理方法。 クエリの結果は テキストベースの出力でカスタムフォーマットされた、 または、それらをさらに持続させることができます SQL、SYSLOG、または 図表。ほとんどのソフトウェアは 限られた数を達成する 特定のタスク。ログパーサーは 異なる...それができる方法の数 使用されるのはニーズによってのみ制限される ユーザーの想像力。の worldはLogを備えたデータベースです パーサー。
他のヒント
私が見る限り、ログファイルの分析は、SMTPセッションレベルで拒否されたメールを検出する場合にのみ有効です。リモートMTAが配信用のメッセージを受け入れた後、配信に失敗した後に発生するバウンスはどうですか?
次のセットアップを使用して、リモートMTAへの配信後のすべてのバウンスを検出し、分類します。
-
すべての送信メールには、一意の戻りパスヘッダーが付与されます。 、受信者のメールアドレスと特定のメーリングを識別します。
-
returned-pathアドレスに返されたメールを受信する Apache James サーバー。
> -
Javaで開発され、toアドレスをデコードするApache James内で実行されるカスタムメーレットは、メールテキストを boogietools bounce studio でバウンスタイプを分類し、結果をデータベースに保持します。
非常にうまく機能します。永続的なハードバウンスと一時的なソフトバウンスを検出できます。これらは、スパム拒否、不在時の返信など、非常にきめ細かいバウンスタイプにさらに分類されます。
バウンスを特定するためにログを解析する必要はありません。ログだけを見ると、偽陰性と偽陽性の両方があります。
バウンスは、配信先のサーバーの下流で生成される場合があります。送信サーバーログでは、配信が成功したように見えます。
受信ログのバウンス(nullの送信者からVERPで処理されたアドレスの1つ)の単純なパターンマッチは不正確になります。理由はいくつかあります:
- 実際の失敗のバウンスと遅延警告が混在します。
- ほとんどの不在通知および同様の自動応答は、null送信者を使用して、バトリンボット症候群を防ぎます。
- 同様に、チャレンジ/レスポンスシステム(* spit * boxbe.comなど)は、null送信者を使用する傾向があります。
- VERP処理された送信者アドレスは、受信者ごとに永続的である場合、スパマーによって収集され、スパムターゲットまたはバックスキャターのいずれかとして戻ってきます。
したがって、悲しいことに、それを行う唯一の信頼できる方法は、バウンスメッセージ自体を調べることです。それらのほとんどには、「レポート/配信ステータス」があります。 RFC1894によるMIMEパート、および選択した言語に応じて、他のバウンス形式を支援するライブラリまたはモジュールがおそらく存在します。私が直接経験しているのは、Perl Mail :: DeliveryStatus :: BounceParserモジュールだけです。これは十分に機能します。
logParserが好きです。非常に特殊なものやカスタムなもの、または正規表現を使用して解析する必要がある場合、biterScriptingを使用します。実際には、私が始めたときに使用したサンプルスクリプトがいくつかあります。 1つは http://www.biterscripting.com/Download/SS_WebLogParser.txt にあります。 。
私はこの投稿にバウンスカウンタープログラムを作成しましたが、SMTPログは連続していないため、この方法は大量の送信者には実際には機能しないことが後でわかります。私のブログ投稿にそれについての詳細があります。 。