web-dev-qa-db-ja.com

IMAPメールのUID一意性

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

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

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

11
SecStone

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

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

10
ʇsәɹoɈ

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

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

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

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

IMAPサーバー上のメッセージを参照するには、UIDを使用してMessage-IDバックアップとして。 Message-IDは、重複が可能であり、(ほとんどのIMAPサーバーの場合)Message-IDは遅いかもしれませんが、メッセージの追跡を完全に失うよりはましです。

6
Celada