Dupliquer une liste de diffusion en lecture seule dans 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 « J'aime »

Cela signifie-t-il que « si un utilisateur connaît l’adresse e-mail entrante, il peut publier dans cette catégorie » ? Cela peut être évité en ne communiquant pas cette adresse à personne, n’est-ce pas ?

Mais, supposons que si quelqu’un reçoit une notification par e-mail, il puisse répondre. Cette réponse est-elle envoyée à Discourse sous forme de publication ou à la liste de diffusion ?

2 « J'aime »

Ce sont de bonnes questions.

Oui, je pense que c’est possible s’ils connaissent l’adresse e-mail entrante et usurpent l’adresse From pour qu’elle corresponde à l’adresse de la liste de diffusion.

Je voudrais dire non, mais je ne suis pas sûr à 100 % sur ce point. Donc, peut-être. Essayez et dites-moi. Il est possible que cela nécessite également d’usurper l’adresse de l’expéditeur.

Elle est définitivement envoyée à Discourse.

3 « J'aime »

J’ai un site qui reçoit un groupe Google transféré vers une catégorie avec accepter les e-mails des anonymes et reflète une liste de diffusion sont définis, mais il rejette toujours les e-mails avec Email::Receiver::UserNotFoundError

Y a-t-il autre chose qui pourrait déclencher cela ?

2 « J'aime »

Avez-vous activé les utilisateurs staged ?

4 « J'aime »

Non. Les utilisateurs mis en scène étaient désactivés. Je suppose donc qu’il doit être activé pour que cela fonctionne ? (Cela semble logique…) Il devrait donc peut-être y avoir une vérification à ce sujet lorsque vous essayez de l’activer ?

2 « J'aime »

Je ne suis pas sûr, mais c’est ma meilleure supposition.

EDIT : il n’y a qu’un seul endroit où cette erreur est levée et elle ressemble à ceci :

raise UserNotFoundError unless SiteSetting.enable_staged_users

4 « J'aime »

Je devrai l’essayer, mais je suppose que pas mal de gens essaieront de répondre. Il pourrait être agréable d’avoir une ou plusieurs de ces options :

  1. Ne pas envoyer d’e-mail même si quelqu’un surveille cette catégorie. Éventuellement, leur envoyer une notification (ou un message unique) indiquant que s’ils souhaitent recevoir des e-mails de cette liste, ils doivent {faire les démarches nécessaires pour s’inscrire directement à la liste}.

  2. Laisser l’administrateur du site définir l’adresse de réponse lorsque des e-mails sont envoyés depuis une catégorie miroir de liste de diffusion. (Par catégorie, bien sûr.) Ensuite, les utilisateurs pourraient s’abonner à cette liste sans livraison activée, recevoir des notifications de Discourse, et s’ils répondent, cette réponse irait réellement à la liste d’origine.

  3. Une option « rediriger les réponses vers la catégorie », où lorsqu’une personne répond, un sujet lié est créé dans une autre catégorie. Par exemple, la catégorie Announce List est un miroir de liste de diffusion, puis Discussion About The Announcements pour les réponses. Le titre nécessite un peu de travail. :slight_smile:

3 « J'aime »

Le guide le rend-il clair @gerhard ?

3 « J'aime »

Non, ce n’était pas le cas, mais c’est le cas maintenant.

5 « J'aime »

Merci ! Cela m’a précédemment confus, car j’avais supposé que la gestion spéciale ici gérait également d’une manière ou d’une autre les utilisateurs mis en scène (peut-être en les créant uniquement pour les publications dans cette catégorie ?).

4 « J'aime »

Est-il possible de rendre cela bidirectionnel en créant un compte sur Discourse qui est membre du Google Group ? Les publications sur les forums seraient alors envoyées au GG comme s’il s’agissait d’un autre utilisateur de la liste de diffusion (nous devrions rejeter tous les e-mails entrants de cet utilisateur pour éviter une boucle). Je pose cette question comme un moyen de faire fonctionner Discourse et GG en parallèle pendant que les utilisateurs effectuent la transition.

Je reflète avec succès une liste de diffusion Google Group, mais elle ne reconnaît pas les réponses aux sujets. Je me retrouve avec des publications de Google Topic 1 et ensuite séparément Re: Google Topic 1. Existe-t-il un moyen de faire reconnaître les fils de discussion ?