IMAPメールのUID一意性


11

社内のウェブメールシステムでは、特定のメールにメモや連絡先を添付したいと考えています。これを行うには、IMAPサーバー上のすべてのメールを追跡する必要があります。

残念ながら、IMAP標準は、メールボックス内のメールのUIDの一意性を強制しません(サブフォルダーのみ)。本当にユニークなUIDを生成するツール/ IMAPサーバーはありますか?または、各メールを識別する方法は他にありますか?(一部のメールにはそのようなフィールドが含まれていないため、Message-IDヘッダーフィールドは一意ではありません)。

追加リソース: IMAPプロトコルの一意のID-Limilabs.com


1
受信メールのみの場合は、UUIDを追加するカスタムMTA milterで十分でしょうか?
ニュートリナス2014年

回答:


10

(フォルダー名、フォルダーUIDVALIDITY、メッセージUID)のタプルは、IMAPアカウントの他のすべてのメッセージと区別します。特定のメッセージについて、そのタプルはセッション間で変化する可能性があるため、これが発生した場合のバックアップとしてメッセージIDを追跡することをお勧めします。

はい、それは本当にその迷惑です。


しかし、RFC-2822によると、メッセージIDはメッセージ内に存在する必要がある(SHOULD)。つまり、メッセージIDがまったく存在しない可能性がある
Romeno

1
そうです、@ Romeno。IMAPには欠陥があり、Message-IDは時々しか役に立ちません。
ʇsәɹoɈ

6

UIDがメールボックス内では一意ではなく、サブフォルダー内でのみであると言ったとき、どういう意味かわかりません。サブフォルダとは、INBOX以外の意味ですか?いずれにせよ、それは間違っているように聞こえます。UIDは実際には各フォルダー内で一意であり、それが受信トレイや他のフォルダーであってもかまいません。

どのようなことができますが起こることのUIDは、セッション間で変更することができるということです。通常、これはIMAPサーバーがインデックスを失い、それらを再構築する必要がある場合、またはメールが1つのIMAPサーバーから別のサーバーに移行された場合などに発生します。これが発生した場合、もちろん、メールと追加データの間のすべての関連付けが失われます。 (メモまたは連絡先)。

これは信頼できます。UIDが突然別のメッセージを参照することはありません。有効なままで、常に参照しているのと同じメッセージを参照するか、無効になります。

特定のIMAPサーバーがどのようにUIDを生成および維持するかを確認したい場合があります。IMAPサーバーが異なれば、UID値の永続性についても異なる約束がなされます。1つのIMAPサーバー内でも、使用しているメールボックスのフォーマットによって異なる場合があります。たとえば、メタデータはmdboxを使用した実際の電子メールとより緊密に統合されているため、Dovecotでは、mdboxを使用すると、mboxまたはMaildirを使用した場合よりも脆弱性の低いUIDが期待されます。

Message-IDバックアップとして、UIDを使用してIMAPサーバー上のメッセージを参照することをお勧めします。Message-ID重複は可能であり(ほとんどのIMAPサーバーの場合)による検索Message-IDは遅くなる可能性があるため、あまり良くありませんが、メッセージの追跡を完全に失うよりはましです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.