Espejar una lista de correo de solo lectura en Discourse

:bookmark: This guide explains how to create a read-only mirror of a mailing list using Discourse. It covers the necessary site settings, category configuration, and subscription process.

:person_raising_hand: Required user level: Administrator

Discourse can function as an archive for a mailing list while allowing registered users to utilize most of its features. This guide will walk you through the process of setting up your own mailing list mirror.

:eyes: See this in our action on the Ruby-Talk mailing list mirror.

Summary

  • Configure site settings for email handling
  • Create or modify a category for the mailing list
  • Subscribe to the mailing list
  • Understand how the mirroring process works

The following guide uses two email addresses as placeholders. You need to replace them with your actual addresses.

discourse@example.com is address for incoming emails on your Discourse
mailing-list@foo.test is the submission address of the mailing list[1]

Configuring site settings

  1. If you’re not on a hosting plan that pre-configures incoming email, set up POP3 polling or manual polling via API for the account associated with your Discourse email address (e.g., discourse@example.com).

  2. Enable the following site settings:

    • email_in: Allow incoming emails
    • enable_staged_users: Enable staged users (crucial for the mirroring process)
  3. Optional settings:

    • Set authorized_extensions to * or add specific file extensions to allow the attachment types you need
    • Enable always_show_trimmed_content to allow all users to see trimmed content (hidden behind a image button)
    • Enable display_name_on_posts and disable prioritize_username_in_ux for name display preferences

Creating or modifying a category

  1. Create a new category or edit an existing one for the mailing list posts.

  2. Configure category permissions:

    • Click the “Security” tab, then “Edit Permissions”
    • Remove all existing permissions
    • Add “everyone” with “See” permission

When you’re done, it should look like this:

  1. Configure category settings:

    • Click the “Settings” tab
    • Enable “Accept emails from anonymous users with no accounts”
    • Set “Custom incoming email address” to the mailing list’s email address (e.g., mailing-list@foo.test)
    • Enable “Category mirrors mailing list”
  2. Save the category settings.

Subscribing to the mailing list

  1. Subscribe to the mailing list using your Discourse email address (e.g., discourse@example.com).

  2. If the mailing list has a web interface, ensure the following settings:

    • Mail delivery is enabled
    • Digest mode is off
    • Password reminder emails are disabled

For Mailman 2, make sure:

  • “Mail delivery” is “Enabled”
  • “Set Digest Mode” is “Off”
  • “Get password reminder email for this list?” is set to “No”

How it works

Enabling “Category mirrors a mailing list” changes how incoming emails are processed for that specific category:

  • Auto-generated emails are allowed, even when block_auto_generated_emails is enabled
  • All users can post via email, ignoring the email_in_min_trust setting
  • Incoming emails use the Message-ID to find related posts, regardless of the find_related_post_with_key setting
  • Markdown interpretation is limited to code blocks enclosed in triple backticks
  • Rejection emails are not sent for mailing list posts

FAQs

Q: Can I mirror multiple mailing lists?
A: Yes, create a separate category for each mailing list and configure them as described above.

Q: Can users reply to notifications and post to the mailing list?
A: No, replies to notifications are sent to Discourse, not the original mailing list. Users cannot post directly to the mailing list through Discourse.

Q: How can I prevent users from posting to the mirrored category via email?
A: While the category allows email posting, you can keep the incoming email address private to prevent unauthorized posting.


  1. i.e. people send to this address to post to the list, and it also appears on the To:/CC: lines of emails sent by the list to members ↩︎

Last edited by @supermathie 2024-10-18T20:01:40Z

Check documentPerform check on document:
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?