Mi scuso in anticipo per alcuni toni qui sotto. Sembra che io sia esasperato, perché lo sono un po’.
Di Michael Brown tramite Discourse Meta il 27 luglio 2022 14:06:
Scusa, mi sto mettendo al passo ora, ecco alcuni pensieri, alcuni dei quali sono già stati affrontati…
La difficoltà qui è che ciò che viene inviato da Discourse è un messaggio diverso da quello in arrivo. Ha metadati diversi (a questo scopo, To/From/Reply-to/Unsubscribe/ecc.) e un corpo diverso (è personalizzato per utente (credo? Questo non accade in modalità mailing list?)).
Cos’è esattamente il messaggio? Trattando il 5322 come Vangelo:
Un messaggio è costituito da campi di intestazione, opzionalmente seguiti da un corpo del messaggio.
Il campo “Message-ID:” fornisce un identificatore di messaggio univoco che si riferisce a una versione particolare di un particolare messaggio.
[enfasi mia]È quella “versione particolare” che mi fa pensare che sarebbe inappropriato reinviare un messaggio in arrivo con un Message-ID diverso. Tuttavia, se cambi il tuo punto di vista da Discourse come “Software per Forum” a Discourse come “Software per Mailing List”, allora ha un certo senso farlo, quindi capisco da dove vieni.
Beh, sfortunatamente questo si basa su una lettura eccessivamente letterale, forse leggendo un contesto che non c’è.
Ogni messaggio e-mail vede i suoi header modificati man mano che il sistema di posta lo elabora. Se non altro, vengono aggiunti header Received: ad ogni passaggio, e diversi sistemi aggiungono vari header che indicano i risultati del filtro antispam e le firme. Nessuno di questi attiva una modifica del message-id, e infatti farlo renderebbe il message-id totalmente disfunzionale.
Per quanto riguarda il contenuto, come già accennato, quasi tutte le mailing list aggiungono contenuto al testo del corpo, solitamente un piè di pagina con un link alla pagina di amministrazione della lista o un link per annullare l’iscrizione. Anche questo non attiva una modifica del message-id.
Infatti, quasi nulla che inoltra un messaggio cambia il message-id. Perché ciò romperebbe il threading e il rilevamento dei duplicati per i client degli utenti finali.
Vedo che continui a citare ciò che stavo per citare anche io ![]()
Il 5322 dice anche:
Ci sono molte istanze in cui i messaggi vengono “modificati”, ma tali modifiche non costituiscono una nuova istanza di quel messaggio, e quindi il messaggio non riceverebbe un nuovo identificatore di messaggio. Ad esempio, quando i messaggi vengono introdotti nel sistema di trasporto, vengono spesso preceduti da campi di intestazione aggiuntivi come campi di traccia (descritti nella sezione 3.6.7) e campi rispediti (descritti nella sezione 3.6.6). L’aggiunta di tali campi di intestazione non cambia l’identità del messaggio e quindi viene mantenuto il campo “Message-ID:” originale. In tutti i casi, è il significato che il mittente del messaggio desidera trasmettere (cioè, se questo è lo stesso messaggio o un messaggio diverso) che determina se il campo “Message-ID:” cambia o meno, non alcuna differenza sintattica particolare che appare (o non appare) nel messaggio.
Suppongo che si riduca a questo: il mittente del messaggio cambia quando Discourse lo invia?
Penso che tu abbia frainteso le cose qui. Lasciami enfatizzare:
In tutti i casi, è il significato che il mittente del messaggio
desidera trasmettere (cioè, se questo è lo stesso messaggio o un messaggio diverso) che determina se il campo “Message-ID:” cambia
Il mittente è l’autore, non un MTA come Discourse.
Se posto su Discourse via e-mail, voglio che il mio messaggio raggiunga i lettori così com’è, semanticamente parlando. Qualsiasi aggiunta come link di annullamento iscrizione non cambia la semantica di ciò che ho detto nel mio messaggio.
È ancora lo stesso messaggio.
Forse dovremmo usare Resent-Message-ID e simili?
Assolutamente no. Sono per un utente che reinvia un messaggio. Ad esempio, se inoltrassi un messaggio a qualcun altro. Non sono per i relay di posta (come liste e Discourse).
C’è sempre stato, fin dall’822. Ma come dici più tardi, sì, è stato aggiornato.
Ahi. Pensavo fosse solo USENET a quel punto. Mi correggo.
Il 5322 parla anche direttamente del modo in cui Discourse e Github lo usano:
Il campo “In-Reply-To:” può essere utilizzato per identificare il messaggio (o i messaggi) a cui il nuovo messaggio è una risposta, mentre il campo “References:” può essere utilizzato per identificare un “thread” di conversazione.
Forse in modo leggermente improprio, probabilmente a causa della mancanza di un’intestazione “Thread Identifier” adatta. Ma questa interpretazione potrebbe non essere ciò che gli autori RFC intendevano… non affronta i messaggi con “References” ma senza “In-Reply-To”.
Mi dice che i due campi coprono le stesse informazioni:
Referencesmostra un thread lineare (di solito) fino all’OPIn-Reply-Tomostra il genitore e implica lo stesso thread nell’insieme con i messaggi precedenti fino all’OP
La parte complicata è che non stiamo inviando una e-mail, ne stiamo inviando N - una per destinatario - in modo che i loro metadati individuali (Unsubscribe, ecc.) possano essere corretti.
Questo non è complicato. Il significato dei messaggi è lo stesso, le personalizzazioni sono minori e semanticamente irrilevanti. Non giustificano message-id nuovi o distinti.
E sì, ho visto forti indicazioni durante i test che la determinazione dello spam sarebbe legata a un Message-ID. Se fosse stato visto di nuovo in seguito (stesso utente o utente diverso) sarebbe stato molto più probabile che venisse contrassegnato come spam.
Puoi mostrare alcune di queste istanze? Perché i message-id consentono la deduplicazione alla fine dell’utente. E tieni presente che molte misure “antispam” sono spazzatura fuorviante. Il numero di cose che ho rifiutato come potenziale spam per ragioni del tutto spurie… rompere l’e-mail per aggirare un errato filtraggio antispam è una scelta sbagliata.
Ancora oggi non metto mai in CC persone con indirizzi GMail perché il filtro antispam di GMail mi conosce e lascia cadere le cose. Se invio solo alla lista, le ricevono. Se metto in CC il loro indirizzo GMail, questo (a) lo contrassegna come spam e (b) poi contrassegna anche il messaggio della mailing list come spam (stesso message-id!). L’utente finale non vede il mio messaggio. Questa logica è del tutto spuria e irreparabile.
I benefici qui, ad essere onesti, riguardano interamente il threading corretto delle e-mail in alcuni client di posta a scapito della recapito.
Sospirando. A tutti i client di posta. E un motivo principale per cui le persone in Pythonland dicono che non andranno su Discourse è che il threading lato e-mail è rotto. Molte persone non usano forum, perché ogni forum richiede loro di visitarlo. Le e-mail arrivano a loro, possono usare il loro lettore preferito e il loro editor preferito, e il threading permette alle persone di vedere chiaramente il flusso della discussione. Quando funziona.
L’attuale
topic/#{topic_id}/#{post_id}.s#{sender_user_id}r#{receiver_user_id}almeno lo rende coerente per un utente nella sua casella di posta. L’assunzioneLa mia preoccupazione più grande è la recapito - è già abbastanza difficile far recapitare le e-mail quando non c’è visibilità da parte dei principali provider.
Vorrei vedere delle prove. Le mailing list fanno questo correttamente in tutto il mondo. Discourse lo rompe in modo definitivo e oggettivo. Sto cercando di farlo sistemare.
Lasciatemi ribadire i due problemi fondamentali qui:
- L’OP
In-Reply-ToeReferencescitano un fittizio message-id “pre-OP” del “topic”, quindi nessun utente e-mail ha un thread con un messaggio di partenza (l’OP) - tutto compreso l’OP sembra un follow-up - Le e-mail ricevute tramite Discourse e le e-mail ricevute direttamente, ad esempio tramite CC, hanno message-id diversi anche se sono semanticamente lo stesso messaggio; questo rompe il threading e la deduplicazione
Ma vedo un forte argomento per far comportare Discourse più come un software di mailing list in modalità mailing list. @martin Credo che non personalizziamo il corpo del messaggio in modalità mailing list? Pensi che abbia senso adottare un approccio più rigoroso riguardo alla conservazione e al riutilizzo dei Message-ID in modalità mailing list?
Ci sono persone in Pythonland che hanno trovato la “modalità mailing list” troppo caotica. Vogliono ricevere e-mail per argomenti mirati ma non per tutto. La gestione del message-id dovrebbe essere la stessa per tutto il lato e-mail.
Sono una persona da “modalità mailing list” su discuss.python.org. Ma l’ho attivata qui (discourse.org) e l’ho _immediatamente disattivata di nuovo. Ho bisogno della modalità mirata qui.