4

私はヘルプデスクアプリケーションで働いています。そこでは、メールサーバーにクエリを実行し、そこで見つかったメールを解析するスタンドアロンスクリプトがあります。
私は次の問題に直面しています。どのメールがどのメールに返信されているかを信頼できる方法で把握するにはどうすればよいですか。
「[ticket:21312]」のような件名に何かを追加してそれを探すことはできますが、ユーザーが件名を変更した場合はどうなりますか?別の方法はありますか?カスタムメールヘッダーを設定してそれを探すことはできますか?そうしないと、ユーザーからの返信時にメールサーバー間でヘッダーが保持されませんか?アプリケーションから存在しないユーザーまたはクォータがいっぱいのユーザーにメッセージを送信し、サーバーが通常の標準メッセージ「....のメールデーモンができませんでした....」で応答した場合はどうなりますか?件名も変更され、既存のメールへの返信としてメッセージを正しく配置できません。

Gmailはどのようにそれを行いますか?そこでは、ほとんどすべての場合にメッセージが完全にソートされています。

4

3 に答える 3

7

ヘルプデスクの電子メール配管には、3つの基本的な方法があります。

a)件名のどこかにIDを含めます(実際には問題なく機能します)

b)本体のどこかにIDがあります

c) 「case-76236781980893@helpdesk.mycompany.com」のようなIDを持つ自動生成された電子メールエイリアスを使用します。これは、procmailやIDを選択するためのスクリプトなどで簡単に処理できます。

Gmailは、件名、In-Reply-Toヘッダー(定義されていない可能性があります)(ReferencesおよびOriginal-Message-IDヘッダーも同様)、およびさまざまなヒューリスティックの組み合わせを使用する場合があります。これらは非常にうまく機能しますが、もちろん必ずしも防弾ではありません。 、および実装に少し複雑です。おそらくnestscapeの元のスレッドアルゴリズムのようなものです。ただし、GmailはIn-Reply-Toヘッダーを使用せず、主に件名に依存しているとの報告もあります(この投稿のように)。

于 2009-12-27T20:30:22.627 に答える
2

あなたが言うように、カスタムヘッダーが失われ、件名が変わる可能性があります。両方を使う。存在する場合は、スレッドを識別できます。これを解決するためのより良い方法はわかりません。

于 2009-12-27T20:28:31.723 に答える
1

メッセージがMessage-ID-Headerで送信された場合、標準に準拠したメーラーは、In-Reply-ToIDを参照する-Headerを追加する必要があります。さらにReferences、このスレッドの以前のすべてのメールのリストが含まれている必要があります。

これはほとんどのメールクライアントで機能します。件名を使用する必要のある悪いクライアントに対して安全を確保するために、簡単な方法は「[issue:123]」を追加することです。2番目のフォールバックは件名を認識することです( 「Re:」すべてのバリエーションの一部)このため、正当な送信者のほとんどを知るのに役立つ可能性があります...

于 2009-12-27T22:51:22.117 に答える