Aqui está um script Perl que define a data do arquivo como o valor na linha Date: no cabeçalho da mensagem. link
Uso: fix_msg_dates.pl < caminho para o diretório de mensagens >
-Rick
Estou executando dois servidores de e-mail diferentes usando o Postfix e o Dovecot. Alguns dos meus usuários têm contas em ambos os servidores e às vezes transferem e-mails de um para o outro por meio de seu cliente de e-mail. Quando isso acontece, o e-mail é exibido no novo servidor com o carimbo de hora de quando foi transferido, em vez do horário original.
Suponho que isso acontece porque o e-mail está voltando para a fila do Postfix, como se fosse uma nova mensagem. Existe uma maneira que eu possa manter o timestamp original?
Isso está usando o IMAP e os e-mails são armazenados no formato Maildir nos dois servidores.
Aqui está um script Perl que define a data do arquivo como o valor na linha Date: no cabeçalho da mensagem. link
Uso: fix_msg_dates.pl < caminho para o diretório de mensagens >
-Rick
Você está usando o armazenamento do Maildir com o IMAP? Se assim for, deve ser possível apenas mover as mensagens para as novas pastas. Também deve ser possível usar um cliente de email para copiar entre as duas pastas IMAP.
É importante que as mensagens tenham um cabeçalho de data, pois geralmente é a data preferida. Alguns clientes preferirão a data de entrega. Se tudo mais falhar, eles podem usar a data em que a mensagem apareceu na pasta. Enquanto as mensagens tiverem um cabeçalho de data, as datas devem permanecer as mesmas.
O envio de e-mails entre os dois servidores reinjetará as mensagens no fluxo de mensagens e resultará na substituição dos cabeçalhos de data.
EDIT: Minha experiência com o Dovecot e o Thuderbird indica que, enquanto os cabeçalhos Date existirem, a data não mudará quando um arquivo for movido usando o IMAP. Se os cabeçalhos Date estiverem ausentes, a data será definida para a data em que o arquivo aparecer no Thunderbird. O valor de data interno IMap é especificado na seção 2.3.3 do RFC-3501 Internet Message Access Protocol. Com base na minha leitura do RFC, esperaria que o cabeçalho da data de entrega fosse o cabeçalho significativo.
Se você estiver movendo arquivos usando o IMap, o Postfix é irrelevante, pois não está envolvido. O postfix só será envolvido se as mensagens estiverem sendo enviadas pelos servidores.
Descobri minha resposta aqui: link
Ao transferir e-mails de um servidor para outro, um cliente IMAP deve usar o comando APPEND . Este comando tem um parâmetro de data opcional que comunica o "interno" ou "recebido" para o novo servidor. No entanto, sendo este um parâmetros opcionais, os clientes não são obrigados a enviá-lo e, se deixado de fora, a especificação informa que deve ser padronizado para a hora atual. Foi o que aconteceu no meu caso, o cliente de e-mail não relatou o horário interno original.
A discussão também esclarece que o Dovecot usa o registro de data e hora no arquivo para relatar o horário interno. Então, se eu quiser corrigir o tempo recebido após o fato, eu poderia definir o registro de data e hora no arquivo e, em seguida, excluir os arquivos de cache.