Mes excuses à l’avance pour le ton de ce qui suit. J’ai l’air exaspéré, car je le suis un peu.
Par Michael Brown via Discourse Meta le 27 juillet 2022 à 14:06 :
Désolé, je rattrape mon retard maintenant, voici quelques réflexions, dont certaines ont déjà été abordées…
La difficulté ici est que ce qui est envoyé depuis Discourse est un message différent de celui qui est reçu. Il a des métadonnées différentes (à cette fin, À/De/Répondre à/Se désabonner/etc.) et un corps différent (il est personnalisé par utilisateur (je pense ? Cela n’arrive-t-il pas en mode liste de diffusion ?)).
Qu’est-ce que c’est exactement le message ? En considérant 5322 comme parole d’évangile :
Un message se compose de champs d’en-tête, éventuellement suivis d’un corps de message.
Le champ “Message-ID:” fournit un identifiant de message unique qui fait référence à une version particulière d’un message particulier.
[emphase de ma part]C’est cette “version particulière” qui me fait penser qu’il serait inapproprié de renvoyer un message entrant avec un Message-ID différent. Cependant, si vous changez votre point de vue de Discourse en tant que “Logiciel de forum” à Discourse en tant que “Logiciel de liste de diffusion”, alors cela a un peu de sens, donc je comprends votre point de vue.
Eh bien, malheureusement, cela dépend d’une lecture trop littérale, peut-être d’une lecture d’un contexte qui n’est pas là.
Chaque message électronique voit ses en-têtes modifiés au fur et à mesure que le système de messagerie le transmet. Sinon, des en-têtes Received: sont ajoutés à chaque étape, et plusieurs systèmes ajoutent divers en-têtes indiquant les résultats du filtrage anti-spam et les signatures. Rien de tout cela ne déclenche une modification du message-id, et en fait, le faire rendrait le message-id totalement dysfonctionnel.
Concernant le contenu, comme mentionné précédemment, presque toutes les listes de diffusion ajoutent du contenu au corps du texte, généralement un pied de page avec un lien vers la page d’administration de la liste ou un lien de désabonnement. Là non plus, cela ne déclenche pas de changement de message-id.
En fait, presque rien qui transfère un message ne change le message-id. Parce que cela casserait le suivi des conversations et la détection des doublons pour les clients utilisateurs finaux.
Je vois que vous continuez à citer ce que j’étais sur le point de citer ![]()
5322 dit aussi :
Il y a de nombreux cas où les messages sont “modifiés”, mais ces modifications ne constituent pas une nouvelle instantiation de ce message, et par conséquent, le message ne recevrait pas un nouvel identifiant de message. Par exemple, lorsque les messages sont introduits dans le système de transport, ils sont souvent précédés de champs d’en-tête supplémentaires tels que des champs de trace (décrits dans la section 3.6.7) et des champs renvoyés (décrits dans la section 3.6.6). L’ajout de tels champs d’en-tête ne modifie pas l’identité du message et, par conséquent, le champ “Message-ID:” original est conservé. Dans tous les cas, c’est le sens que l’expéditeur du message souhaite transmettre (c’est-à-dire s’il s’agit du même message ou d’un message différent) qui détermine si le champ “Message-ID:” change ou non, et non une différence syntaxique particulière qui apparaît (ou n’apparaît pas) dans le message.
Je suppose que cela se résume à la question : l’expéditeur du message change-t-il lorsque Discourse l’envoie ?
Je pense que vous avez mal lu les choses ici. Laissez-moi souligner :
Dans tous les cas, c’est le sens que l’expéditeur du message
souhaite transmettre (c’est-à-dire s’il s’agit du même message ou d’un message différent) qui détermine si le champ “Message-ID:” change
L’expéditeur est l’auteur, pas un MTA tel que Discourse.
Si j’envoie un message à Discourse par e-mail, je veux que mon message atteigne les lecteurs tel quel, sémantiquement parlant. Les éventuels ajouts comme les liens de désabonnement ne changent pas la sémantique de ce que j’ai dit dans mon message.
C’est toujours le même message.
Peut-être devrions-nous utiliser Resent-Message-ID et ses amis ?
Absolument pas. Ils sont destinés à un utilisateur qui renvoie un message. Par exemple, si je transférais un message à quelqu’un d’autre. Ils ne sont pas destinés aux relais de messagerie (comme les listes et Discourse).
Il a toujours été là, depuis 822. Mais comme vous le dites plus tard, oui, il a été mis à jour.
Aïe. Je pensais que c’était uniquement USENET à ce moment-là. Je me rétracte.
5322 parle aussi directement de la façon dont Discourse et Github l’utilisent :
Le champ “In-Reply-To:” peut être utilisé pour identifier le (ou les) message(s) auquel le nouveau message est une réponse, tandis que le champ “References:” peut être utilisé pour identifier un “fil de discussion” de conversation.
Peut-être un peu incorrectement, probablement en raison de l’absence d’un en-tête “Thread Identifier” approprié. Mais cette interprétation n’est peut-être pas ce que les auteurs de la RFC avaient l’intention… elle ne traite pas les messages avec une “Références” mais sans “In-Reply-To”.
Cela me dit que les deux champs couvrent la même information :
Referencesmontre un fil linéaire (généralement) jusqu’à l’OPIn-Reply-Tomontre le parent, et implique le même fil dans l’ensemble avec les messages précédents jusqu’à l’OP
La partie délicate est que nous n’envoyons pas un e-mail, nous en envoyons N - un par destinataire - afin que leurs métadonnées individuelles (Se désabonner, etc.) soient correctes.
Ce n’est pas délicat. Le sens des messages est le même, les personnalisations sont mineures et sémantiquement non pertinentes. Elles ne justifient pas de nouveaux identifiants de message distincts.
Et oui, j’ai vu des indications fortes lors des tests que la détermination du spam serait liée à un Message-ID. S’il était revu plus tard (même utilisateur ou utilisateur différent), il serait beaucoup plus susceptible d’être marqué comme spam.
Pouvez-vous montrer certains de ces exemples ? Parce que les message-ids permettent la déduplication à la fin de l’utilisateur. Et gardez à l’esprit que de nombreuses mesures “anti-spam” sont des ordures malavisées. Le nombre de choses que j’ai vues rejetées comme spam potentiel pour des raisons totalement fallacieuses… casser l’e-mail pour contourner un mauvais filtrage anti-spam est un mauvais choix.
À ce jour, je ne mets jamais en copie des personnes ayant des adresses GMail car le filtrage anti-spam de GMail me connaît et laisse tomber des choses. Si j’envoie uniquement à la liste, ils le reçoivent. Si je mets en copie leur adresse GMail, cela (a) le marque comme spam et (b) marque ensuite aussi le message de la liste de diffusion comme spam (même message-id !) L’utilisateur final ne voit pas mon message. Cette logique est totalement fallacieuse et irréparable.
Les avantages ici, pour être honnête, concernent entièrement le suivi correct des e-mails dans certains clients de messagerie, au détriment de la délivrabilité.
Soupir. Pour tous les clients de messagerie. Et une raison majeure pour laquelle les gens de Python disent qu’ils n’utiliseront pas Discourse est que le suivi des e-mails est cassé. Beaucoup de gens n’utilisent pas de forums, car chaque forum exige qu’ils le visitent. Les e-mails leur parviennent, ils peuvent utiliser leur lecteur préféré et leur éditeur préféré, et le suivi permet aux gens de voir clairement le déroulement de la discussion. Quand ça marche.
L’actuel
topic/#{topic_id}/#{post_id}.s#{sender_user_id}r#{receiver_user_id}le rend au moins cohérent pour un utilisateur dans sa boîte aux lettres. L’hypothèseMa plus grande préoccupation est la délivrabilité - il est déjà assez difficile de faire livrer les e-mails sans aucune visibilité de la part des principaux fournisseurs.
J’aimerais voir des preuves. Les listes de diffusion font cela correctement partout dans le monde. Discourse le casse définitivement et objectivement. J’essaie de le faire réparer.
Permettez-moi de réitérer les deux problèmes fondamentaux ici :
- L’OP
In-Reply-ToetReferencescitent un “message-id de” “topic” fictif “pré-OP”, donc aucun utilisateur de messagerie n’a un fil de discussion avec un message de départ (l’OP) - tout, y compris l’OP, ressemble à un suivi. - Les e-mails reçus via Discourse et les e-mails reçus directement par exemple via CC ont des message-ids différents bien qu’ils soient sémantiquement le même message ; cela casse le suivi et la déduplication.
Mais je vois un argument fort pour que Discourse se comporte davantage comme un logiciel de liste de diffusion en mode liste de diffusion. @martin, je crois que nous ne personnalisons pas le corps du message en mode liste de diffusion ? Pensez-vous qu’il soit judicieux d’adopter une approche plus stricte concernant la préservation et la réutilisation des Message-IDs en mode liste de diffusion ?
Il y a des gens chez les Pythonistes qui ont trouvé le “mode liste de diffusion” trop “feu de paille”. Ils veulent recevoir des e-mails pour des sujets ciblés, mais pas pour tout. La gestion des message-ids devrait être la même pour tout le côté e-mail.
Je suis une personne du type “mode liste de diffusion” sur discuss.python.org. Mais je l’ai activé ici (discourse.org) et je l’ai _immédiatement désactivé à nouveau. J’ai besoin d’un mode ciblé ici.