Spiegelung einer schreibgeschützten Mailingliste in 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 „Gefällt mir“

Bedeutet das, dass „jeder Benutzer, der die eingehende E-Mail-Adresse kennt, in diese Kategorie posten kann“? Dies kann verhindert werden, indem man niemandem diese Adresse mitteilt, oder?

Aber vermutlich kann jeder, der eine Benachrichtigung per E-Mail erhält, antworten. Wird diese Antwort als Beitrag an Discourse gesendet oder an die Mailingliste?

2 „Gefällt mir“

Das sind gute Fragen.

Ja, ich denke, das ist möglich, wenn sie die eingehende E-Mail-Adresse kennen und die From-Adresse so fälschen, dass sie mit der Adresse der Mailingliste übereinstimmt.

Ich möchte Nein sagen, bin mir aber bei dieser Frage nicht zu 100 % sicher. Also, vielleicht. Bitte probieren Sie es aus und lassen Sie es mich wissen. Es ist möglich, dass auch hier die Absenderadresse gefälscht werden muss.

Sie wird definitiv an Discourse gesendet.

3 „Gefällt mir“

Ich habe eine Website, auf der eine Google-Gruppe an eine Kategorie weitergeleitet wird, bei der E-Mails von anonymen Benutzern akzeptieren und Spiegelt eine Mailingliste eingestellt sind, aber dennoch E-Mails mit Email::Receiver::UserNotFoundError abgelehnt werden.

Könnte etwas anderes dies auslösen?

2 „Gefällt mir“

Haben Sie gestaffelte Benutzer aktiviert?

4 „Gefällt mir“

Nein. Staged users war aus. Ich nehme an, es muss eingeschaltet sein, damit es funktioniert? (Das ergibt Sinn…) Vielleicht sollte es eine Prüfung dafür geben, wenn man versucht, es zu aktivieren?

2 „Gefällt mir“

Ich bin mir nicht sicher, aber das ist meine beste Vermutung.

EDIT: Es gibt nur einen Ort, an dem dieser Fehler ausgelöst wird, und er sieht so aus:

raise UserNotFoundError unless SiteSetting.enable_staged_users

4 „Gefällt mir“

Ich werde es ausprobieren müssen, aber ich gehe davon aus, dass doch einige Leute versuchen werden zu antworten. Es wäre vielleicht gut, eine oder mehrere dieser Optionen zu haben:

  1. Keine E-Mail senden, auch wenn jemand diese Kategorie beobachtet. Möglicherweise eine Benachrichtigung (oder eine einmalige Nachricht) senden, die besagt, dass sie sich, wenn sie die E-Mail-Zustellung dieser Liste wünschen, {die notwendigen Schritte unternehmen müssen, um sich direkt für die Liste anzumelden}.

  2. Dem Website-Administrator erlauben, die Antwortadresse zu definieren, wenn E-Mails von einer Mailinglisten-Spiegelkategorie gesendet werden. (Natürlich pro Kategorie.) Dann könnten sich Benutzer für diese Liste anmelden, ohne die Zustellung zu aktivieren, Benachrichtigungen von Discourse erhalten und wenn sie antworten, würde diese Antwort tatsächlich an die ursprüngliche Liste gehen.

  3. Eine Option „Antworten in Kategorie umleiten“, bei der beim Antworten ein verknüpftes Thema in einer anderen Kategorie erstellt wird. Zum Beispiel ist die Kategorie „Ankündigungsliste“ ein Spiegel einer Mailingliste und dann „Diskussion über die Ankündigungen“ für Antworten. Der Titel muss noch überarbeitet werden. :slight_smile:

3 „Gefällt mir“

Macht der Leitfaden das deutlich @gerhard?

3 „Gefällt mir“

Nein, das hat es nicht, aber jetzt schon.

5 „Gefällt mir“

Danke! Das hat mich vorher verwirrt, weil ich davon ausging, dass die spezielle Behandlung hier auch gestufte Benutzer irgendwie speziell behandelt (möglicherweise nur für Beiträge zu dieser Kategorie erstellt?).

4 „Gefällt mir“

Kann dies bidirektional gemacht werden, indem ein Konto bei Discourse erstellt wird, das Mitglied der Google-Gruppe ist? Dann würden Beiträge in Foren an GG gesendet, als ob es nur ein weiterer Benutzer auf der E-Mail-Liste wäre (wir müssten alle eingehenden E-Mails von diesem Benutzer ablehnen, um eine Schleife zu vermeiden). Ich frage dies als Möglichkeit, Discourse und GG parallel zu betreiben, während Benutzer wechseln.

Ich spiegele erfolgreich eine Google Groups-Mailingliste, aber sie erkennt keine Themenantworten. Ich erhalte separat die Beiträge Google Topic 1 und dann Re: Google Topic 1. Gibt es eine Möglichkeit, die Erkennung von Themen-Threads zu ermöglichen?