J’ai trouvé un bug intéressant et obscur concernant la façon dont les réponses aux publications sur les listes de diffusion qui sont mises en miroir sur Discourse sont classées.
J’ai la preuve que les réponses à une liste de diffusion peuvent être incorrectement classées dans une seconde liste de diffusion (avec un lectorat différent) si l’e-mail initial a été envoyé aux deux listes de diffusion en même temps.
Imaginez que je sois membre de deux listes de diffusion, A et B, abonné avec mon adresse Gmail. Elles ont des lectorats potentiellement différents. Le serveur de liste envoie une seule copie d’un message à ceux qui sont sur les deux listes de diffusion, mais la ligne To: indique que le message a été envoyé aux listes A et B dans le même e-mail. Cet e-mail arrive à mon adresse Gmail qui, via un filtre, transfère une copie à listA@mydiscourse.org.uk, Gmail choisissant l’une des deux listes dans la ligne To:. Gmail est configuré pour transférer les publications à A vers listA@mydiscourse.org.uk et les publications à B vers listB@mydiscourse.org.uk. Discourse est configuré avec deux catégories avec ces deux adresses e-mail de mirroring entrantes différentes (listA@mydiscourse.org.uk et listB@mydiscourse.org.uk).
Le problème de l’envoi d’une seule copie par le serveur de liste et Gmail est distinct et n’est pas l’objet de ce bug.
Après cela, une copie de l’e-mail qui m’a été envoyée à mon compte Gmail se retrouve affichée dans la catégorie associée à l’adresse de mirroring entrante listA@mydiscourse.org.uk après que Gmail l’ait transférée.
Tout va bien jusqu’ici (mis à part le fait qu’un seul e-mail est arrivé du serveur de liste en premier lieu).
Maintenant, un utilisateur distinct, qui n’est que sur la liste de diffusion B, répond à cet e-mail au serveur de liste. Le serveur de liste envoie ce message à tous les membres de la liste de diffusion B. Cela arrive à mon adresse Gmail avec une ligne To: indiquant qu’il a été envoyé à la liste B. Gmail le transfère à listB@mydiscourse.org.uk.
Mais ensuite, Discourse le classe comme s’il avait été envoyé par e-mail à listA@mydiscourse.org.uk !
Cela révèle donc à ceux qui ont accès à la liste A le contenu d’une publication d’un membre de la liste B !
Je soupçonne que Discourse ignore la voie par laquelle l’e-mail est entré dans Discourse et l’a classé en fonction des indicateurs d’ID de message dans les en-têtes, contournant ainsi la voie d’entrée.
L’e-mail original, envoyé à A et B, contient un seul ID de message et je soupçonne que le classement basé uniquement sur cet ID de message se produit.
Si l’expéditeur original avait rédigé deux e-mails distincts aux listes A et B, ce problème ne se serait pas produit car les deux messages auraient eu leurs propres ID de message.
Correction suggérée : Si une catégorie met en miroir une liste de diffusion et qu’un message arrive via l’adresse de mirroring qui semble, d’après les en-têtes, être une réponse à une autre publication qui réside ailleurs sur Discourse, alors une nouvelle publication doit être créée (peut-être sans parent évident) dans la catégorie attendue, plutôt que la réponse ne se retrouve dans une catégorie associée à une autre liste de diffusion.