UID уникальность почты IMAP


11

В нашей внутренней системе веб-почты мы хотели бы прикреплять заметки и контакты к определенным письмам. Чтобы сделать это, мы должны отслеживать каждую почту на нашем IMAP-сервере.

К сожалению, стандарт IMAP не обеспечивает уникальность UID почты в почтовом ящике (только в подпапках). Существует ли какой-либо инструмент / IMAP-сервер, который генерирует действительно уникальные UID? Или есть какой-то другой способ, как мы можем идентифицировать каждое письмо? ( Поле заголовка Message-ID не является уникальным, поскольку некоторые письма не содержат такого поля).

Дополнительные ресурсы: уникальный идентификатор в протоколе IMAP - Limilabs.com


1
если бы речь шла только о входящей электронной почте, было бы достаточно пользовательского MTA milter, который добавляет UUID?
нейтринус

Ответы:


10

Кортеж (имя папки, UIDVALIDITY папки, UID сообщения) отличает сообщение от всех остальных в учетной записи IMAP. Для любого данного сообщения этот кортеж может меняться между сеансами, поэтому вы можете отслеживать его Message-ID как резервную копию на случай, если это произойдет.

Да, это действительно так раздражает.


Но RFC-2822 говорит, что в сообщении ДОЛЖЕН существовать идентификатор сообщения, что означает, что вообще не может быть идентификатора сообщения
Romeno

1
Это верно, @Romeno. IMAP имеет недостатки, и Message-ID помогает только иногда.
ɈsәɹoɈ

6

Я не знаю, что вы имеете в виду, когда говорите, что UID не являются уникальными в почтовом ящике, только в подпапках. Под подпапками вы имеете в виду что-то кроме INBOX? В любом случае это звучит неправильно. Фактически UID уникальны в каждой папке, и не имеет значения, это INBOX или любая другая папка.

Что может случиться, что UIDs может измениться в период между сессиями. Обычно это происходит, если сервер IMAP теряет свои индексы и должен их перестраивать, или если почта переносится с одного сервера IMAP на другой и т. Д. ... Если это произойдет, вы, конечно, потеряете все связи между электронными письмами и дополнительными данными. (заметки или контакты).

Вы можете положиться на это: UID никогда не будет внезапно ссылаться на другое сообщение. Либо он останется действительным и ссылается на то же сообщение, на которое всегда ссылался, либо он станет недействительным.

Возможно, вы захотите проверить, как ваш конкретный сервер IMAP генерирует и поддерживает UID. Разные IMAP-серверы дают разные обещания о постоянстве значений UID. Даже в пределах одного сервера IMAP он может различаться в зависимости от используемого формата почтового ящика. Например, с Dovecot, ожидайте менее хрупкие UID с mdbox, чем с mbox или Maildir, потому что метаданные более тесно интегрированы с реальными электронными письмами с mdbox.

Я предлагаю использовать UID для ссылки на сообщения на сервере IMAP, Message-IDв качестве резервной копии. Message-IDне так хорош, потому что возможны дубликаты и (для большинства серверов IMAP) поиск Message-IDможет быть медленнее, но это лучше, чем полная потеря сообщений.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.