Desculpas antecipadas por parte do tom abaixo. Eu pareço exasperado, porque estou um pouco exasperado.
Por Michael Brown via Discourse Meta em 27 de julho de 2022, 14:06:
Desculpe, estou apenas me atualizando agora, aqui estão algumas reflexões, algumas das quais já foram abordadas…
A dificuldade aqui é que o que é enviado para fora do Discourse é uma mensagem diferente da que entra. Ela tem metadados diferentes (para este propósito, Para/De/Responder-para/Cancelar inscrição/etc.) e um corpo diferente (é personalizado por usuário (acho? Isso não acontece no modo lista de e-mails?)).
O que exatamente é a mensagem? Tratando 5322 como evangelho:
Uma mensagem consiste em campos de cabeçalho, opcionalmente seguidos por um corpo de mensagem.
O campo “Message-ID:” fornece um identificador de mensagem exclusivo que se refere a uma versão específica de uma mensagem específica.
[ênfase minha]É essa “versão específica” que me faz pensar que seria inapropriado reenviar uma mensagem recebida com um Message-ID diferente. Embora, se você mudar seu ponto de vista de Discourse como “Software de Fórum” para Discourse como “Software de Lista de E-mails”, então de certa forma faz sentido fazer isso, então entendo de onde você está vindo.
Bem, infelizmente isso depende de uma leitura excessivamente literal, talvez lendo um contexto que não está lá.
Todo e-mail tem seus cabeçalhos modificados à medida que o sistema de e-mail o processa. Se nada mais, os cabeçalhos Received: são adicionados a cada etapa, e vários sistemas adicionam vários cabeçalhos indicando resultados de filtragem de spam e assinaturas. Nenhum desses aciona uma modificação do message-id, e de fato fazer isso tornaria o message-id totalmente disfuncional.
Em relação ao conteúdo, como já mencionado, quase todas as listas de e-mails adicionam conteúdo ao corpo do texto, geralmente um rodapé com um link para a página de administração da lista ou um link de cancelamento de inscrição. Isso também não aciona uma alteração do message-id.
Na verdade, quase nada que encaminha uma mensagem altera o message-id. Porque isso quebraria o encadeamento e a detecção de duplicatas para clientes de usuário final.
Vejo que você continua citando o que eu estava prestes a citar ![]()
5322 também diz:
Há muitas instâncias em que as mensagens são “alteradas”, mas essas alterações não constituem uma nova instanciação dessa mensagem e, portanto, a mensagem não receberia um novo identificador de mensagem. Por exemplo, quando as mensagens são introduzidas no sistema de transporte, elas são frequentemente precedidas por campos de cabeçalho adicionais, como campos de rastreamento (descritos na seção 3.6.7) e campos reenviados (descritos na seção 3.6.6). A adição de tais campos de cabeçalho não altera a identidade da mensagem e, portanto, o campo “Message-ID:” original é retido. Em todos os casos, é o significado que o remetente da mensagem deseja transmitir (ou seja, se esta é a mesma mensagem ou uma mensagem diferente) que determina se o campo “Message-ID:” muda ou não, não qualquer diferença sintática particular que apareça (ou não apareça) na mensagem.
Suponho que se resume a, o remetente da mensagem muda quando o Discourse a envia?
Acho que você leu as coisas erradas aqui. Deixe-me enfatizar:
Em todos os casos, é o significado que o remetente da mensagem
deseja transmitir (ou seja, se esta é a mesma mensagem ou uma mensagem diferente) que determina se o campo “Message-ID:” muda
O remetente é o autor, não um MTA como o Discourse.
Se eu postar no Discourse por e-mail, quero que minha mensagem chegue aos leitores como está, semanticamente falando. Quaisquer adicionais como links de cancelamento de inscrição não mudam a semântica do que eu disse em minha mensagem.
Ainda é a mesma mensagem.
Talvez devêssemos usar Resent-Message-ID e amigos?
Absolutamente não. Eles são para um usuário reenviando uma mensagem. Por exemplo, se eu encaminhei uma mensagem para outra pessoa. Eles não são para retransmissores de e-mail (como listas e Discourse).
Sempre esteve lá, desde o 822. Mas como você diz mais tarde, sim, foi atualizado.
Ai. Pensei que fosse apenas USENET naquele ponto. Eu me corrijo.
5322 também fala diretamente sobre como o Discourse e o Github o usam:
O campo “In-Reply-To:” pode ser usado para identificar a mensagem (ou mensagens) à qual a nova mensagem é uma resposta, enquanto o campo “References:” pode ser usado para identificar um “thread” de conversa.
Possivelmente um pouco incorretamente, provavelmente devido à falta de um cabeçalho “Thread Identifier” adequado. Mas essa interpretação pode não ser o que os autores do RFC pretendiam… não aborda mensagens com “References” mas sem “In-Reply-To”.
Para mim, diz que os dois campos cobrem a mesma informação:
Referencesmostra um thread linear (geralmente) de volta ao OPIn-Reply-Tomostra o pai e implica o mesmo thread no agregado com as mensagens anteriores de volta ao OP
A parte complicada disso é que não estamos enviando um e-mail, estamos enviando N - um por destinatário - para que seus metadados individuais (Cancelar inscrição, etc.) possam estar corretos.
Isso não é complicado. O significado das mensagens é o mesmo, as personalizações são menores e semanticamente irrelevantes. Elas não justificam message-ids novos ou distintos.
E sim, eu vi fortes indicações durante os testes de que a determinação de spam estaria ligada a um Message-ID. Se fosse visto novamente mais tarde (mesmo usuário ou usuário diferente), seria muito mais provável ser marcado como spam.
Você pode mostrar algumas dessas instâncias? Porque os message-ids permitem a desduplicação no final do usuário. E tenha em mente que muitas medidas “antispam” são lixo enganoso. A quantidade de coisas que tive rejeitadas como spam potencial por razões totalmente espúrias… quebrar o e-mail para contornar a má filtragem de spam quebrada é uma má escolha.
Até hoje, nunca coloco pessoas com endereços GMail em cópia, porque a filtragem de spam do GMail me conhece e joga coisas fora. Se eu enviar apenas para a lista, eles recebem. Se eu colocar em cópia o endereço GMail deles, ele (a) o marca como spam e (b) também marca a mensagem da lista de e-mails como spam (mesmo message-id!). O usuário final não vê minha mensagem. Essa lógica é totalmente espúria e irrecuperável.
Os benefícios aqui, para ser justo, são inteiramente em torno do encadeamento correto dos e-mails em certos clientes de e-mail, em detrimento da entregabilidade.
Suspiro. Para todos os clientes de e-mail. E um grande motivo pelo qual as pessoas em Pythonland dizem que não vão para o Discourse é que o encadeamento do lado do e-mail está quebrado. Muitas pessoas não usam fóruns, porque cada fórum exige que elas o visitem. O e-mail chega até elas, elas podem usar seu leitor preferido e seu editor preferido, e o encadeamento permite que as pessoas vejam o fluxo da discussão claramente. Quando funciona.
O atual
topic/#{topic_id}/#{post_id}.s#{sender_user_id}r#{receiver_user_id}pelo menos o torna consistente para um usuário em sua caixa de entrada. A suposiçãoMinha maior preocupação é a entregabilidade - já é difícil o suficiente entregar e-mails quando não há visibilidade dos principais provedores.
Eu gostaria de ver evidências. Listas de e-mail fazem isso corretamente em todo o planeta. O Discourse definitivamente e objetivamente quebra isso. Estou tentando consertar.
Deixe-me reiterar os dois problemas básicos aqui:
- O
In-Reply-ToeReferencesdo OP citam um “message-id de tópico” “pré-OP” fictício, então nenhum usuário de e-mail tem um thread com uma mensagem inicial (o OP) - tudo, incluindo o OP, parece um seguimento. - Os e-mails recebidos via Discourse e os e-mails recebidos diretamente, por exemplo, via CC, têm message-ids diferentes, embora sejam a mesma mensagem semanticamente falando; isso quebra o encadeamento e a desduplicação.
Mas eu vejo um forte argumento para fazer o Discourse se comportar mais como software de lista de e-mails no modo lista de e-mails. @martin, acredito que não personalizamos o corpo da mensagem no modo lista de e-mails? Você acha que faz sentido adotar uma abordagem mais rigorosa em torno da preservação e reutilização de Message-IDs no modo lista de e-mails?
Existem pessoas em Pythonland que acharam o “modo lista de e-mails” muito intenso. Elas querem receber e-mails para tópicos direcionados, mas não para tudo. O manuseio do message-id deve ser o mesmo para todo o lado do e-mail.
Eu sou uma pessoa do tipo “modo lista de e-mails” em discuss.python.org. Mas ativei aqui (discourse.org) e _imediatamente desativei novamente. Preciso do modo direcionado aqui.