Ho trovato un bug interessante e oscuro riguardo al modo in cui le risposte ai post inviati alle mailing list che vengono specchiate su Discourse vengono archiviate.
Ho prove che le risposte a una mailing list possono essere archiviate in modo errato in una seconda mailing list (con un pubblico diverso) se l’e-mail iniziale è stata inviata contemporaneamente a entrambe le mailing list.
Immagina di far parte di due mailing list, A e B, iscritto con il mio indirizzo Gmail. Hanno potenzialmente diversi destinatari. Il server di posta invia una singola copia di un messaggio a coloro che sono iscritti a entrambe le mailing list, ma la riga To: indica che il messaggio è stato inviato alle liste A e B nella stessa e-mail. Questa e-mail arriva al mio indirizzo Gmail che, tramite un filtro, inoltra una copia a listA@mydiscourse.org.uk, con Gmail che sceglie una delle due liste nella riga To:. Gmail è impostato per inoltrare i post ad A a listA@mydiscourse.org.uk e i post a B a listB@mydiscourse.org.uk. Discourse è configurato con due categorie con questi due diversi indirizzi e-mail in ingresso di mirroring (listA@mydiscourse.org.uk e listB@mydiscourse.org.uk).
Il problema dell’invio di una sola copia da parte del server di posta e di Gmail è separato e non è oggetto di questo bug.
Dopo questo, una copia dell’e-mail inviata a me al mio account Gmail finisce per essere visualizzata nella categoria associata all’indirizzo di posta in ingresso listA@mydiscourse.org.uk dopo che Gmail l’ha inoltrata.
Tutto bene finora (a parte il fatto che è arrivata solo un’e-mail dal server di posta in primo luogo).
Ora, un utente separato, che fa parte solo della mailing list B, risponde a quell’e-mail al server di posta. Il server di posta invia quel messaggio a tutti gli iscritti alla mailing list B. Questo arriva al mio indirizzo Gmail con una riga To: che indica che è stato inviato alla lista B. Gmail lo inoltra a listB@mydiscourse.org.uk.
Ma poi Discourse lo archivia come se fosse stato inviato via e-mail a listA@mydiscourse.org.uk!
Ciò rivela quindi a coloro che hanno accesso alla lista A il contenuto di un post di un membro della lista B!
Sospetto che Discourse ignori il percorso che l’e-mail ha seguito per entrare in Discourse e l’abbia archiviata in base ai flag dell’ID del messaggio nelle intestazioni, aggirando così il percorso di ingresso.
L’e-mail originale, inviata ad A e B, ha un singolo ID del messaggio al suo interno e sospetto che si verifichi un archiviazione basata solo su quell’ID del messaggio.
Se il mittente originale avesse scritto due e-mail separate alla lista A e alla lista B, questo problema non si sarebbe verificato poiché i due messaggi avrebbero avuto i propri ID di messaggio.
Correzione suggerita: Se una categoria sta specchiando una mailing list e un messaggio arriva tramite l’indirizzo di mirroring che, dalle intestazioni, sembra essere in risposta a un altro post che si trova altrove su Discourse, allora è necessario creare un nuovo post (forse senza un genitore ovvio) nella categoria prevista, anziché far finire la risposta in una categoria associata a una mailing list diversa.