Espelhamento de uma lista de discussão somente leitura no 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 curtidas

Isso significa que “se qualquer usuário souber o endereço de e-mail de entrada, ele poderá postar nesta categoria”? Isso pode ser evitado não contando esse endereço a ninguém, certo?

Mas, presumivelmente, se alguém receber uma notificação por e-mail, poderá responder. Essa resposta é enviada para o Discourse como uma postagem ou para a lista de e-mails?

2 curtidas

Essas são boas perguntas.

Sim, acho que é possível se eles conhecerem o endereço de e-mail de entrada e falsificarem o endereço From para que ele corresponda ao endereço da lista de e-mails.

Eu gostaria de dizer não, mas não tenho 100% de certeza sobre isso. Então, talvez. Por favor, tente e me diga. É possível que também exija a falsificação do endereço do remetente.

É definitivamente enviada para o Discourse.

3 curtidas

Tenho um site que está recebendo um grupo do Google encaminhado para uma categoria com aceitar e-mails de anônimos e espelha uma lista de e-mail definidos, mas ainda está rejeitando e-mails com Email::Receiver::UserNotFoundError

Existe algo mais que possa acionar isso?

2 curtidas

Você habilitou usuários em estágio?

4 curtidas

Não. Usuários em estágio estava desativado. Então, imagino que deva estar ativado para funcionar? (Faz sentido que esteja…) Então, talvez deva haver uma verificação para isso quando você tentar ativá-lo?

2 curtidas

Não tenho certeza, mas é o meu melhor palpite.

EDIT: existe apenas um lugar onde esse erro é gerado e ele se parece com isto:

raise UserNotFoundError unless SiteSetting.enable_staged_users

4 curtidas

Terei que experimentar, mas minha suposição é que muitas pessoas tentarão responder. Pode ser bom ter uma ou mais destas opções:

  1. Não enviar e-mail, mesmo que alguém esteja acompanhando esta categoria. Possivelmente, dar a eles uma notificação (ou uma mensagem única) dizendo que, se quiserem entrega de e-mail desta lista, eles devem {fazer o que for necessário para se inscrever diretamente na lista}.

  2. Permitir que o administrador do site defina o endereço de resposta quando o e-mail for enviado de uma categoria espelho de lista de e-mails. (Por categoria, é claro.) Então, os usuários poderiam se inscrever nessa lista sem entrega ativada, receber notificações do Discourse e, se responderem, essa resposta realmente iria para a lista original.

  3. Uma opção de “desviar respostas para a categoria”, onde, quando alguém responde, um tópico vinculado é criado em uma categoria diferente. Por exemplo, a categoria Lista de Anúncios é um espelho de lista de e-mails e, em seguida, Discussão Sobre os Anúncios para respostas. O título precisa de algum trabalho. :slight_smile:

3 curtidas

O guia deixa isso claro @gerhard?

3 curtidas

Não, não fez, mas agora faz.

5 curtidas

Obrigado! Isso me confundiu anteriormente, porque assumi que o tratamento especial aqui também tratava usuários em estágio de alguma forma (possivelmente criando-os apenas para postagens nesta categoria?).

4 curtidas

Isso pode ser feito bidirecionalmente criando uma conta no Discourse que seja membro do Google Group? Em seguida, as postagens nos fóruns seriam enviadas para o GG como se fosse apenas mais um usuário na lista de e-mails (precisaríamos rejeitar todos os e-mails recebidos desse usuário para evitar um loop). Pergunto isso como uma forma de executar o Discourse e o GG em paralelo enquanto os usuários migram.

Estou espelhando com sucesso uma lista de e-mails do Google Groups, mas ela não reconhece as respostas aos tópicos. Acabo com postagens de Tópico Google 1 e depois, separadamente, Re: Tópico Google 1. Existe alguma maneira de fazer com que ele reconheça as sequências de tópicos?