Solução de problemas de conteúdo omitido em e-mails recebidos

Estou investigando alguns posts que tiveram conteúdo omitido após a importação de e-mails de uma lista de distribuição. Alguns e-mails envolvem títulos/seções com linhas de “~~~~~~~~~~~~~~~~”, e a primeira ocorrência disso em uma linha própria, junto com tudo o que vem abaixo, é omitida do post no Discourse.

Ao inspecionar o e-mail no post, posso ver o e-mail original codificado em base64 e, ao alternar para a aba Texto, vejo que ele foi decodificado sem omitir nada.

./launcher enter app
rails c
Post.find_by(id: 154678)
=> #<Post:0x000055b8da925e08
...

Usando o Rails, posso ver que a coluna raw para imediatamente antes da primeira “~~~~~~~~~~~~~~~~” e a coluna cooked, obviamente, contém o mesmo que raw, mas formatado para HTML. Tentei alterar algumas configurações relacionadas ao recorte de e-mails, mas não tenho certeza de como testar se essas alterações fazem diferença.

Pelo que entendi, usar a opção Rebuild HTML no post ou executar Post.find_by(id: 154678).rebake! no Rails pegará o conteúdo de raw e construirá o HTML, definindo cooked. Não sei, no entanto, se ele pegará o conteúdo de raw_email e o processará novamente, então não tenho certeza de como testar se as configurações alteradas estão tendo algum efeito.

Como devo instruir o Discourse a reprocessar o raw_email do post, caso rebake! não faça isso, para que eu possa ter certeza de que estou solucionando o problema corretamente?

Se você tiver alguma ideia sobre como evitar que o conteúdo seja omitido, elas são, claro, bem-vindas também.

Continuando a busca por tópicos relacionados, encontrei o recurso Teste Avançado em Emails, no Admin. Eu suspeitava que seria isso, mas ao usar esse recurso, confirmei que é a configuração trim incoming emails (recortar partes dos e-mails recebidos que não são relevantes) que está causando isso.

Com essa configuração desativada, obtenho os resultados corretos para esses e-mails, mas o rebaking não parece reprocessar os e-mails. Então, a questão permanece: como faço para dizer ao Discourse que ele deve reprocessar as postagens a partir de seus e-mails recebidos?

Ao vasculhar o repositório em busca de qualquer código relacionado ao processamento de e-mails, acabei encontrando a tarefa rake posts:refresh_emails, que aceita um ID de tópico opcional. Usando o seguinte comando, como o próprio nome sugere, os e-mails foram reprocessados e todas as postagens do tópico especificado foram refeitas.

cd /var/discourse
./launcher enter app
rake posts:refresh_emails['24961']

Isso forneceu as postagens daquele tópico sem recorte, como esperado, com a opção trim incoming emails desativada. Isso revelou outro problema que preciso resolver antes de prosseguir, mas isso não é objeto deste tópico. Para atualizar todos os e-mails em todos os tópicos, poderei usar a tarefa rake da seguinte forma.

cd /var/discourse
./launcher enter app
rake posts:refresh_emails