В нашей внутренней системе веб-почты мы хотели бы прикреплять заметки и контакты к определенным сообщениям. Для этого мы должны отслеживать каждую почту на нашем сервере IMAP.
К сожалению, стандарт IMAP не требует уникальности UID письма в почтовом ящике (только во вложенных папках). Есть ли какой-нибудь инструмент / сервер IMAP, который генерирует действительно уникальные UID? Или есть другой способ идентифицировать каждое письмо? (в ID сообщения поле заголовка не является уникальным, поскольку некоторые письма не содержат такого поля).
Дополнительные ресурсы: Уникальный идентификатор в протоколе IMAP - Limilabs.com
Кортеж из (имя папки, UIDVALIDITY папки, UID сообщения) отличает сообщение от всех остальных в учетной записи IMAP. Для любого данного сообщения этот кортеж может изменяться между сеансами, поэтому вы можете отслеживать его Message-ID в качестве резервной копии на случай, если это произойдет.
Да, это действительно так раздражает.
Я не знаю, что вы имеете в виду, когда говорите, что UID не уникальны в почтовом ящике, а только в подпапках. Под подпапками вы подразумеваете что-нибудь, кроме INBOX? В любом случае это звучит неправильно. Фактически, UID уникальны в каждой папке, и неважно, это INBOX или любая другая папка.
какой жестяная банка бывает, что UID могут меняться между сессиями. Обычно это происходит, если сервер IMAP теряет свои индексы и должен их перестроить, или если почта переносится с одного сервера IMAP на другой и т. Д. Если это произойдет, вы, конечно, потеряете все ассоциации между электронной почтой и дополнительными данными. (заметки или контакты).
На это можно положиться: UID никогда не будет сразу ссылаться на другое сообщение. Либо он останется действительным и будет относиться к тому же сообщению, на которое он всегда ссылался, либо он станет недействительным.
Возможно, вы захотите проверить, как ваш конкретный сервер IMAP генерирует и поддерживает UID. Различные серверы IMAP по-разному обещают постоянство значений UID. Даже в пределах одного сервера IMAP он может варьироваться в зависимости от того, какой формат почтового ящика используется. Например, с Dovecot ожидайте менее хрупких UID с mdbox, чем с mbox или Maildir, потому что метаданные более тесно интегрированы с фактическими сообщениями электронной почты с mdbox.
Я предлагаю использовать UID для ссылки на сообщения на сервере IMAP с Message-ID
в качестве резервной копии. Message-ID
не так хорошо, потому что возможны дубликаты и (для большинства серверов IMAP) поиск по Message-ID
может быть медленнее, но это лучше, чем полностью потерять сообщения.