В нашей внутренней системе веб-почты мы хотели бы прикреплять заметки и контакты к определенным письмам. Чтобы сделать это, мы должны отслеживать каждую почту на нашем IMAP-сервере.
К сожалению, стандарт IMAP не обеспечивает уникальность UID почты в почтовом ящике (только в подпапках). Существует ли какой-либо инструмент / IMAP-сервер, который генерирует действительно уникальные UID? Или есть какой-то другой способ, как мы можем идентифицировать каждое письмо? ( Поле заголовка Message-ID не является уникальным, поскольку некоторые письма не содержат такого поля).
Дополнительные ресурсы: уникальный идентификатор в протоколе IMAP - Limilabs.com
Ответы:
Кортеж (имя папки, UIDVALIDITY папки, UID сообщения) отличает сообщение от всех остальных в учетной записи IMAP. Для любого данного сообщения этот кортеж может меняться между сеансами, поэтому вы можете отслеживать его Message-ID как резервную копию на случай, если это произойдет.
Да, это действительно так раздражает.
источник
Я не знаю, что вы имеете в виду, когда говорите, что 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
может быть медленнее, но это лучше, чем полная потеря сообщений.источник