Migrar una lista de correo a Discourse (mbox, Listserv, Google Groups, etc)

La solución está literalmente en la publicación que está encima de la tuya. :wink:

Deberíamos arreglar el script. ¿Quizás puedas crear una PR que resuelva el problema para todos?

Gracias, eso lo solucionó, lamento lo sucedido. Como penitencia por mi incapacidad para leer, abrí Added duplication to name to prevent modification of frozen string exception by adam-skalicky · Pull Request #30325 · discourse/discourse · GitHub para ahorrarle a cualquier otra persona la vergüenza de hacer una pregunta tonta.

1 me gusta

¿Este script de importación hace que Discourse replique el encadenamiento de correos electrónicos de Mailman 2 de alguna manera (por ejemplo, usando la pequeña flecha de Discourse para indicar “In-Reply-To”) o es puramente cronológico (para cada hilo basado en Message-ID, In-Reply-To y References)?

1 me gusta

Sí, lo hace

3 Me gusta

Genial. A muchos de mis correos electrónicos de la lista de distribución les faltan las cabeceras In-Reply-To y References que deberían tener, por lo que podrían importarse como temas nuevos en lugar de simplemente respuestas. Si no recuerdo mal, el script utiliza esas cabeceras o las cabeceras del asunto (no ambas).

Creo que ya pregunté esto en el pasado, pero ¿hay alguna forma no manual de añadir estas cabeceras al archivo MBOX y/o reorganizar los correos electrónicos antes o después de importarlos a Discourse?

Ahora es posible fusionar temas y mantener el orden cronológico, así que tal vez esa sea la respuesta. Simplemente les faltaría la pequeña flecha de Discourse para indicar a quién respondía el mensaje.

1 me gusta

El script de importación de mbox tiene dos fases. La primera es la indexación y genera una base de datos SQLite. Podrías modificar los datos en SQLite antes de la importación, o modificar el script de Ruby.

Toda la magia de ordenar/agrupar por asunto o encabezados ocurre aquí:

Podrías añadir tu propia lógica de agrupación si sabes cómo quieres agrupar los correos electrónicos.

3 Me gusta

¡Tardará un tiempo antes de que siquiera considere algo tan complejo!

En https://bazaar.launchpad.net/~mailman-coders/mailman/2.1/view/head:/Mailman/Archiver/pipermail.py#L669, Pipermail de Mailman 2 parece buscar lo siguiente en orden de preferencia:

  1. In-Reply-To.
  2. References.
  3. El correo electrónico más antiguo con asunto coincidente.

Esa combinación de enfoques parece ideal. En el tercer caso, podría tener sentido que Discourse no utilice la flecha “en respuesta a”.

Según recuerdo, Hyperkitty de Mailman 3 no consideraba el asunto en absoluto, lo cual no era tan bueno.

2 Me gusta

Disculpe que me inmiscuya con una pregunta posiblemente tonta, pero no pude encontrar una respuesta clara aquí. Me gustaría saber si el proceso de importación crea un nuevo usuario de Discourse por cada correo electrónico, con deduplicación por supuesto, o si todos se registran como un único usuario del sistema. Tengo una lista de correo con 20 años de publicaciones y es bastante grande y difícil experimentar. Además, ¿qué pasa con las respuestas en la lista original? ¿Se enlazan en hilos?

Sí, los usuarios se crean, uno por dirección de correo electrónico.

Hola a todos,

Estoy intentando migrar desde Google Groups. Al intentar descargar los mensajes usando este comando script/import_scripts/google_groups.rb -g <nombre_del_grupo> -d <nombre_del_dominio> obtengo un stacktrace inmediatamente:

Fetching gem metadata from https://rubygems.org/.......
Resolving dependencies...
/usr/local/lib/ruby/gems/3.4.0/gems/childprocess-4.1.0/lib/childprocess.rb:6: warning: logger was loaded from the standard library, but will no longer be part of the default gems starting from Ruby 3.5.0.
You can add logger to your Gemfile or gemspec to silence this warning.
/usr/local/lib/ruby/gems/3.4.0/gems/selenium-webdriver-4.1.0/lib/selenium/webdriver/common/zipper.rb:23: warning: base64 was loaded from the standard library, but is not part of the default gems starting from Ruby 3.4.0.
You can add base64 to your Gemfile or gemspec to silence this warning.
/usr/local/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/runtime.rb:71:in 'block (2 levels) in Bundler::Runtime#require': There was an error while trying to load the gem 'webdrivers'. (Bundler::GemRequireError)
Gem Load Error is: cannot load such file -- base64

Puedo añadir un gem "base64" al script google_groups.rb para avanzar un poco más, pero luego veo esto:

Logging in...
/usr/local/lib/ruby/gems/3.4.0/gems/rubyzip-3.2.2/lib/zip/entry.rb:757:in 'File#initialize': No such file or directory @ rb_sysopen - /root/.webdrivers/root/.webdrivers/chromedriver (Errno::ENOENT)

¿Alguna sugerencia sobre cómo puedo avanzar con la descarga de los mensajes?

Edición: ¿Quizás hay una versión más reciente de este script? Los Grupos ya no usan /forum en su URL, ahora es la notación /g/ y hay otros cambios.