Duplicar una lista de correo de solo lectura en Discourse

:bookmark: Esta guía explica cómo crear un espejo de solo lectura de una lista de correo usando Discourse. Cubre la configuración del sitio necesaria, la configuración de la categoría y el proceso de suscripción.

:person_raising_hand: Nivel de usuario requerido: Administrador

Discourse puede funcionar como un archivo para una lista de correo al tiempo que permite a los usuarios registrados utilizar la mayoría de sus funciones. Esta guía te guiará a través del proceso de configuración de tu propio espejo de lista de correo.

:eyes: Míralo en acción en el espejo de la lista de correo de Ruby-Talk.

Resumen

  • Configurar los ajustes del sitio para el manejo de correo electrónico
  • Crear o modificar una categoría para la lista de correo
  • Suscribirse a la lista de correo
  • Comprender cómo funciona el proceso de duplicación (mirroring)

La siguiente guía utiliza dos direcciones de correo electrónico como marcadores de posición. Debes reemplazarlas con tus direcciones reales.

discourse@example.com es la dirección para los correos electrónicos entrantes en tu Discourse
mailing-list@foo.test es la dirección de envío de la lista de correo[1]

Configuración de los ajustes del sitio

  1. Si no utilizas un plan de alojamiento que preconfigure el correo electrónico entrante, configura el sondeo POP3 o el sondeo manual a través de la API para la cuenta asociada con tu dirección de correo electrónico de Discourse (ej: discourse@example.com).

  2. Habilita los siguientes ajustes del sitio:

    • email_in: Permitir correos electrónicos entrantes
    • enable_staged_users: Habilitar usuarios en espera (crucial para el proceso de duplicación)
  3. Ajustes opcionales:

    • Establece authorized_extensions a * o añade extensiones de archivo específicas para permitir los tipos de adjuntos que necesitas
    • Habilita always_show_trimmed_content para permitir que todos los usuarios vean el contenido recortado (oculto detrás de un botón image)
    • Habilita display_name_on_posts y deshabilita prioritize_username_in_ux para las preferencias de visualización de nombres

Creación o modificación de una categoría

  1. Crea una categoría nueva o edita una existente para las publicaciones de la lista de correo.

  2. Configura los permisos de la categoría:

    • Haz clic en la pestaña “Seguridad”, luego en “Editar permisos”
    • Elimina todos los permisos existentes
    • Añade “everyone” (todos) con permiso de “See” (Ver)

Cuando termines, debería verse así:

  1. Configura los ajustes de la categoría:

    • Haz clic en la pestaña “Settings” (Ajustes)
    • Habilita “Accept emails from anonymous users with no accounts” (Aceptar correos electrónicos de usuarios anónimos sin cuentas)
    • Establece “Custom incoming email address” (Dirección de correo electrónico entrante personalizada) en la dirección de correo electrónico de la lista de correo (ej: mailing-list@foo.test)
    • Habilita “Category mirrors mailing list” (La categoría refleja la lista de correo)
  2. Guarda los ajustes de la categoría.

Suscripción a la lista de correo

  1. Suscríbete a la lista de correo utilizando tu dirección de correo electrónico de Discourse (ej: discourse@example.com).

  2. Si la lista de correo tiene una interfaz web, asegúrate de que los siguientes ajustes estén activados:

    • La entrega de correo está habilitada
    • El modo resumen (Digest mode) está desactivado
    • Los correos electrónicos de recordatorio de contraseña están deshabilitados

Para Mailman 2:

  • “Mail delivery” (Entrega de correo) está en “Enabled” (Habilitado)
  • “Set Digest Mode” (Establecer modo resumen) está en “Off” (Desactivado)
  • “Get password reminder email for this list?” (¿Recibir correo electrónico de recordatorio de contraseña para esta lista?) está configurado en “No” (No)

Cómo funciona

Habilitar “Category mirrors a mailing list” (La categoría refleja una lista de correo) cambia cómo se procesan los correos electrónicos entrantes para esa categoría específica:

  • Se permiten los correos electrónicos generados automáticamente, incluso cuando block_auto_generated_emails está habilitado
  • Todos los usuarios pueden publicar por correo electrónico, ignorando el ajuste email_in_allowed_groups
  • Los correos electrónicos entrantes utilizan el Message-ID para encontrar publicaciones relacionadas, independientemente del ajuste find_related_post_with_key
  • La interpretación de Markdown se limita a los bloques de código encerrados entre triples comillas invertidas
  • No se envían correos electrónicos de rechazo para las publicaciones de la lista de correo

Preguntas frecuentes

P: ¿Puedo reflejar varias listas de correo?
R: Sí, crea una categoría separada para cada lista de correo y configúralas como se describió anteriormente.

P: ¿Pueden los usuarios responder a las notificaciones y publicar en la lista de correo?
R: No, las respuestas a las notificaciones se envían a Discourse, no a la lista de correo original. Los usuarios no pueden publicar directamente en la lista de correo a través de Discourse.

P: ¿Cómo puedo evitar que los usuarios publiquen en la categoría duplicada a través del correo electrónico?
R: Aunque la categoría permite la publicación por correo electrónico, puedes mantener privada la dirección de correo electrónico entrante para evitar publicaciones no autorizadas.


  1. es decir, las personas envían a esta dirección para publicar en la lista, y también aparece en las líneas Para:/CC: de los correos electrónicos enviados por la lista a los miembros ↩︎

31 Me gusta

¿Significa esto que “si algún usuario conoce la dirección de correo electrónico entrante, puede publicar en esta categoría”? ¿Se puede evitar esto sin decirle a nadie esa dirección?

Pero, presumiblemente, si alguien recibe una notificación por correo electrónico, puede responder. ¿Se envía esa respuesta a Discourse como una publicación o a la lista de correo?

2 Me gusta

Esas son buenas preguntas.

Sí, creo que es posible si conocen la dirección de correo electrónico entrante y falsifican la dirección From para que coincida con la dirección de las listas de correo.

Quiero decir que no, pero no estoy 100% seguro en esto. Así que, tal vez. Por favor, inténtalo y házmelo saber. Es posible que también requiera falsificar la dirección del remitente.

Definitivamente se envía a Discourse.

3 Me gusta

Tengo un sitio que está recibiendo un grupo de Google reenviado a una categoría con accept emails from anonymous y mirrors a mailing list configurados, pero aún así está rechazando correos con Email::Receiver::UserNotFoundError.

¿Hay algo más que pueda desencadenar esto?

2 Me gusta

¿Habilitaste usuarios en fase de pruebas?

4 Me gusta

No. Los usuarios en etapa estaban desactivados. Así que supongo que debe estar activado para que funcione? (Tiene sentido que lo esté…) Así que tal vez debería haber una verificación para eso cuando intentas activarlo?

2 Me gusta

No estoy seguro, pero es mi mejor suposición.

EDITAR: Solo hay un lugar donde se genera este error y se ve así:

raise UserNotFoundError unless SiteSetting.enable_staged_users

4 Me gusta

Tendré que probarlo, pero supongo que bastantes personas intentarán responder. Podría ser útil tener una o más de estas opciones:

  1. No enviar correo electrónico incluso si alguien está observando esta categoría. Posiblemente darles una notificación (o un mensaje único) diciendo que si desean la entrega por correo electrónico de esta lista, deben {hacer los pasos necesarios para suscribirse a la lista directamente}.

  2. Permitir que el administrador del sitio defina la dirección de respuesta cuando se envíe correo desde una categoría de espejo de lista de correo. (Por categoría, por supuesto). Entonces, los usuarios podrían suscribirse a esa lista sin entrega habilitada, recibir notificaciones de Discourse y, si responden, esa respuesta iría realmente a la lista original.

  3. Una opción de “redirigir respuestas a la categoría”, donde cuando alguien responde, se crea un tema enlazado en una categoría diferente. Por ejemplo, la categoría Lista de Anuncios es un espejo de lista de correo, y luego Discusión Sobre Los Anuncios para las respuestas. El título necesita algo de trabajo. :slight_smile:

3 Me gusta

¿Deja esto claro la guía @gerhard?

3 Me gusta

No, no lo hizo, pero ahora sí.

5 Me gusta

¡Gracias! Esto me confundió anteriormente, porque asumí que el manejo especial aquí también manejaba de forma especial a los usuarios en etapa de prueba de alguna manera (¿posiblemente creándolos solo para publicaciones en esta categoría?).

4 Me gusta

¿Se puede hacer esto bidireccional creando una cuenta en Discourse que sea miembro del Grupo de Google? Entonces, las publicaciones en los foros se enviarían al GG como si fuera solo otro usuario en la lista de correo (necesitaríamos rechazar todo el correo entrante de ese usuario para evitar un bucle). Pregunto esto como una forma de ejecutar Discourse y GG en paralelo a medida que los usuarios hacen la transición.

Estoy reflejando exitosamente una lista de correo de Google Groups, pero no reconoce las respuestas a los temas. Termino con publicaciones de Tema de Google 1 y luego, por separado, Re: Tema de Google 1. ¿Hay alguna forma de que reconozca los hilos de temas?