Resumo

  • A revisão 03 do Internet-Draft do grupo mailmaint, de 28 de outubro, escolhe POSIX pax para o pacote de dados pessoais e permite que uma exportação lógica ocupe várias partes legíveis separadamente.
  • Se uma pasta atravessa partes, seu uid e seus metadados precisam manter a identidade; o importador deve unir os itens. Ele também deve barrar caminhos perigosos e não pode aplicar no destino bits de modo, propriedade, atributos estendidos ou ACLs presentes no arquivo.

O dano começa com uma pasta duplicada

Uma migração pode fracassar sem perder um byte no transporte. Suponha que a pasta “Entrada” apareça em dois pacotes: mensagens antigas no primeiro, novas no segundo. Um importador que cria uma pasta para cada pacote entrega duas caixas de entrada. Outro que toma o primeiro pacote como exportação inteira deixa mensagens fora da busca. O usuário recebeu todos os downloads e ainda assim não recebeu a própria conta de volta.

O projeto especifica a costura. Cada parte carrega um archive.json próprio, com valores de part em sequência e indicação final. Uma pasta dividida possui um folder.json em cada parte; cada cópia lista somente os itens daquele volume, enquanto os demais campos devem ser idênticos. A lista de itens removidos se repete. O mesmo uid informa que os fragmentos pertencem à mesma coleção. A ordem é clara: o importador deve unir, não duplicar. O nome exibido não basta para provar identidade.

A revisão também fixa o recipiente. O formato pax, extensão de tar, comporta caminhos internacionalizados e metadados adicionais de tamanho. Só arquivos comuns e diretórios podem entrar. Caminhos são relativos, codificados em UTF-8, sem segmentos . ou ... Dois nomes diferentes podem colidir na extração quando o disco ignora diferenças entre maiúsculas e minúsculas ou normaliza Unicode. O exportador deve tentar gerar nomes distintos também nessas condições; o importador deve preferir rejeitar duplicatas a apagar silenciosamente uma delas. A escolha parece burocrática até o dia em que duas pastas viram uma por acidente.

Um arquivo não distribui privilégios

A seção de segurança impõe outra fronteira. Antes de gravar qualquer entrada, o receptor deve conferir os caminhos e rejeitar nomes absolutos, tentativas de subir diretórios e tipos especiais. Depois, deve criar os arquivos com seus próprios padrões. Bits de permissão, dono, atributos estendidos e listas ACL do pacote não podem ser aplicados. Isso protege a máquina que recebe os dados de um contêiner malicioso e impede que uma exportação dite a política local de acesso.

O mesmo raciocínio vale dentro dos aplicativos. Um convite pode conter participantes; um objeto pode trazer shareWith ou papéis. O rascunho avisa que controles de acesso da origem talvez não acompanhem os dados de modo confiável e que os campos importados podem ter sido alterados. O serviço novo precisa determinar se reconhece aquelas pessoas e quais direitos concede. Copiar o texto de um papel não é verificar a autoridade de quem o declarou.

Para contatos, tarefas e calendários nos formatos indicados, uid e updated devem ser preservados. Ao encontrar um uid existente, o importador não deveria reescrever um objeto suficientemente parecido só para atualizar o horário. Importações repetidas que parecem novas a cada vez criam duplicatas e conflitos. Mas a noção de “suficientemente parecido” depende da implementação. A especificação organiza uma sincronização em um sentido; não resolve todas as divergências entre duas contas que continuam mudando.

O pacote pode viajar sem compressão, com gzip ou com Zstandard. O destino precisa aceitar as duas primeiras formas e deveria aceitar Zstandard. O texto também chama atenção para tamanho total descomprimido, quantidade de entradas e tamanho individual: um download pequeno pode exigir trabalho desproporcional para ser aberto. A exportação reúne correspondências e convites de terceiros que não pediram cópia. Quanto mais fácil é levar tudo, maior precisa ser o cuidado com a autorização da saída e a leitura da chegada.

A revisão 02 ainda não assentava as novas regras de pax e divisão de pastas. O Datatracker registra um Internet-Draft do grupo de trabalho, não um RFC nem uma migração já observada. Protocolos para solicitar e transmitir o pacote ficam fora deste documento. A proposta descreve o que um arquivo deveria permitir; a experiência de troca de fornecedor ainda precisa ser medida.

Fontes