Migrare una mailing list su Discourse (mbox, Listserv, Google Groups, ecc)

Che peccato enorme!

Pensavo che Google non ci avesse messo mano dal febbraio 2015, ma mi ricredo.

Sembra che ci sia stato un completo redesign nel 2020 e un aggiornamento del logo nel 2021.

Sto pensando di utilizzare le API di GMAIL e Discourse per convertire un thread di posta in un post su Discourse. Ho esaminato le API di Google e sono riuscito a recuperare le email, ma ho alcune domande al riguardo.

  1. Le email possono essere scaricate in formato raw, che è il valore codificato in base64 del “Messaggio originale” della mail. È lo stesso formato mbox o è diverso?
  2. Esiste un esempio di codice che mostri come aggiungere post e allegati a Discourse tramite API?

Interessante. È possibile utilizzare l’API di Gmail per accedere alle email dei Gruppi Google o hai semplicemente un account Gmail che contiene tutte le email inviate al gruppo?

Ti consiglio di salvare tutti i messaggi in singoli file *.eml. Dovrai decodificare il messaggio prima di salvarlo se l’intero messaggio (inclusi gli header delle email) è codificato in base64. Successivamente, segui le istruzioni da Migrate a mailing list to Discourse (mbox, Listserv, Google Groups, etc) (escludendo i passaggi relativi ai Gruppi Google). Lo script di importazione si occuperà dei post, degli allegati e molto altro.

1 Mi Piace

Sono un membro del gruppo, quindi posso recuperare le email utilizzando il mio indirizzo. L’intero messaggio, inclusi gli intestazioni, farà parte della stringa codificata.

Proverò il tuo approccio per l’importazione in Discourse, almeno per un thread.

1 Mi Piace

Beh, in tal caso potresti non aver nemmeno bisogno dell’API di Gmail. Collegare un client di posta come Thunderbird al tuo account Gmail ed esportare singoli messaggi o un file mbox dovrebbe essere sufficiente…

Ora mi farebbe davvero piacere sapere come funziona. Ero dell’idea che Google Groups non supporti NNTP.

1 Mi Piace

Non è NNTP, ma un’API REST.

3 Mi Piace

La mia casella di posta supera i 200 GB e, per recuperare email specifiche relative a un gruppo, dovrei forse scaricare tutti questi messaggi con Thunderbird. Inoltre, Thunderbird non mostra tutte le email dei Google Group; risultano tutte sotto la sola posta in arrivo. Sta scaricando solo 200 messaggi alla volta. Quindi non sono sicuro di quanto tempo potrebbe volerci per ottenere le email, ecc.

Esiste un modo alternativo per ottenere semplicemente i dati di un Google Group ed esportarli in formato mbox?

Ciao Gerhard Schlager,

Stiamo cercando di migrare i nostri gruppi Google a Discourse. Abbiamo seguito tutti i passaggi indicati nel documento, ma il processo crea solo la categoria in Discourse senza importare i dati. Apprezziamo molto se potessi rispondere a questa richiesta il prima possibile.

L’unico metodo che conoscevamo non funziona più. Se conosci alcun modo per ottenere i dati, allora dovresti farlo. Se conosci un metodo per ottenerli, dovresti probabilmente iniziare a raccoglierli il prima possibile, prima che anche quel metodo diventi inaccessibile.

Se i dati si trovano nella tua casella di posta, potrebbe essere possibile utilizzare l’API di Gmail per scaricarli. Sarà comunque complicato, poiché uno sviluppatore avrebbe bisogno di accesso a una casella di posta contenente i dati del gruppo Google per scrivere il codice.

A meno che non si tratti di un cliente enterprise che lo richiede, dubito che cdck (ovvero discourse.org) scriverà quel codice a breve. Puoi chiedere nel canale Marketplace. Probabilmente non lo considererei per meno di 2000 , e data la frustrazione che ho provato in passato con lo script di importazione dei gruppi Google, richiederei probabilmente 5000 . O naturalmente, qualcun altro potrebbe avere competenze migliori o più pazienza.

Un approccio che potrebbe funzionare è utilizzare Integromat per scrivere una conversione, supponendo che le applicazioni Google Groups e Discourse siano disponibili. In alternativa, è possibile utilizzare le chiamate HTTP per chiamare le REST API autonomamente.

Integromat è un sistema di integrazione e migrazione dei dati. È molto potente e può eseguire molte operazioni con poca o nessuna programmazione.

Ho provato Google Takeout rendendomi proprietario del nostro gruppo Google Workspace e sono riuscito a scaricare le conversazioni del gruppo Google. Sto ancora lavorando all’importazione.

Un paio di svantaggi di questo approccio.

  1. È necessario scaricare nuovamente tutti i dati se è necessario eseguire un aggiornamento incrementale.
  2. Non è possibile scaricare dati selettivi del gruppo, invece verranno scaricati i dati di tutti i gruppi per i quali l’utente dispone delle autorizzazioni di proprietario o responsabile.
  3. È necessario collaborare con l’amministratore di Google Workspace per abilitare il takeout poiché per impostazione predefinita è disabilitato.
3 Mi Piace

Ciao @Anjana_Raghavendra_P - sei riuscito a fare un’importazione semplice usando questo approccio?

Grazie mille!

Sì, sono in grado di scaricare il file mbox da Takeout e importarlo seguendo i passaggi menzionati nel post originale.

Successivamente, poiché utilizziamo il servizio PAAS di Discourse, abbiamo fornito il file al team tecnico di Discourse che è stato in grado di importare il contenuto nella piattaforma Discourse.

2 Mi Piace

Sono felice di sentirlo, grazie!

Ho riscontrato il problema di @sturdy2 quando in settings.yml, ho modificato la prima riga data_dir: /shared/import/data, dal suo valore predefinito.

Messaggio da portare a casa: non modificarlo in quanto si riferisce al percorso all’interno del docker di importazione, non sulla macchina principale.

Ho una domanda sul riavvio di un’importazione?

Non sono uno sviluppatore, ma sono riuscito a importare con successo due file mbox provenienti da un sistema chiamato Topicbox Group Email. Ho eseguito la mia importazione di prova in un’istanza temporanea di Discourse che ho configurato su Digital Ocean. E sono stato in grado di importare i miei due file mbox di esempio in categorie esistenti che avevo già creato in Discourse, grazie alle note sull’impostazione del campo personalizzato della categoria category.custom_fields["import_id"] = "mydir" di cui sopra.

Evvai! Ma se voglio importare altri file mbox, devo eseguire tutti i comandi menzionati nella FAQ 2.2, che indica che “eliminerà tutto”?

2 Mi Piace

Sono riuscito a impostare correttamente il mio “import_id” per due diverse categorie come importazione di test iniziale. Ha funzionato! I miei due file mbox sono stati importati nelle categorie esistenti che ho specificato.

Ho 18 categorie diverse con cui devo farlo alla fine. Non so nulla di Ruby. Posso creare un file che imposti il nome della directory per ciascuna delle mie diverse categorie in modo da non dover inserire manualmente ogni riga nell’interfaccia a riga di comando di Ruby?

2 Mi Piace

Sì. Cerca su Google “ruby for each”. E crea un array con alcune delle categorie.

1 Mi Piace

No, non devi. L’importatore supporta importazioni incrementali. Importa solo nuovi dati alla prossima esecuzione. Per favore, non eseguire i comandi menzionati in 2.2 a meno che tu non voglia ricominciare da capo.

Purtroppo al momento non è possibile. Devi assegnare a ciascuna categoria l’import_id se vuoi importare in categorie esistenti.

2 Mi Piace

Grazie @gerhard per tutto il tuo incredibile lavoro! Non sono uno sviluppatore, ma sono stato in grado di completare una migrazione da un sistema listserv chiamato Topicbox. Sono riuscito a ottenere file mbox da Topicbox per importarli in Discourse. Durante i miei tentativi ed errori, ho documentato tutto in un post del blog. Quindi, se va bene? Volevo incollare un link a quel post del blog per tutti gli altri utenti Topicbox che desiderano convertire a Discourse.

4 Mi Piace