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
Respostas:
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.
fonte
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-ID
um backup.Message-ID
não é tão bom porque duplicatas são possíveis e (na maioria dos servidores IMAP) a pesquisaMessage-ID
pode ser mais lenta, mas é melhor do que perder completamente o controle das mensagens.fonte