Exclusividade UID de e-mails IMAP

11

Em nosso sistema interno de webmail, gostaríamos de anexar notas e contatos a determinados e-mails. Para fazer isso, precisamos acompanhar todos os emails em nosso servidor IMAP.

Infelizmente, o padrão IMAP não impõe a exclusividade do UID de um email em uma caixa de correio (apenas em subpastas). Existe alguma ferramenta / servidor IMAP que gera UIDs verdadeiramente únicos? Ou existe outra maneira de identificar cada e-mail? (o campo de cabeçalho ID da mensagem não é exclusivo, pois alguns emails não contêm esse campo).

Recursos adicionais: ID exclusivo no protocolo IMAP - Limilabs.com

SecStone
fonte
1
se for apenas sobre o recebimento de e-mails, uma lista MTA personalizada que adicione UUID seria suficiente?
Neutrinus 26/10/2014

Respostas:

10

Uma tupla de (nome da pasta, pasta UIDVALIDITY, mensagem UID) distingue uma mensagem de todas as outras em uma conta IMAP. Para qualquer mensagem, essa tupla pode ser alterada entre as sessões. Portanto, convém rastrear seu ID da mensagem como um backup, caso isso aconteça.

Sim, é realmente tão irritante.

ʇsәɹoɈ
fonte
Mas RFC-2822 diz que Message-ID deve existir em uma mensagem que significa que não pode haver Message-ID em tudo
Romeno
1
É isso mesmo, @Romeno. O IMAP é falho e o ID da mensagem apenas ajuda às vezes.
precisa saber é o seguinte
6

Não sei o que você quer dizer quando diz que os UIDs não são exclusivos em uma caixa de correio, apenas em subpastas. Por subpastas, você quer dizer algo diferente de INBOX? De qualquer forma, parece errado. De fato, os UIDs são únicos em cada pasta e não importa se é a INBOX ou qualquer outra pasta.

O que pode acontecer é que os UIDs podem mudar entre as sessões. Geralmente isso acontece se o servidor IMAP perder seus índices e precisar recriá-los ou se o email for migrado de um servidor IMAP para outro, etc ... Se isso acontecer, é claro que você perderá todas as associações entre emails e dados extras. (notas ou contatos).

Você pode confiar nisso: um UID nunca se refere repentinamente a uma mensagem diferente. Ele permanecerá válido e se referirá à mesma mensagem a que sempre se refere, ou se tornará inválido.

Você pode verificar como seu servidor IMAP em particular gera e mantém UIDs. Servidores IMAP diferentes fazem promessas diferentes sobre a persistência dos valores de UID. Mesmo em um servidor IMAP, isso pode variar dependendo do formato da caixa de correio em uso. Por exemplo, com o Dovecot, espere UIDs menos frágeis com o mdbox do que com o mbox ou o Maildir porque os metadados estão mais bem integrados aos e-mails reais do mdbox.

Sugiro usar UIDs para se referir a mensagens no servidor IMAP, com Message-IDum backup. Message-IDnão é tão bom porque duplicatas são possíveis e (na maioria dos servidores IMAP) a pesquisa Message-IDpode ser mais lenta, mas é melhor do que perder completamente o controle das mensagens.

Celada
fonte