本指南说明了如何使用 Discourse 创建邮件列表的只读镜像。它涵盖了必要的站点设置、类别配置和订阅过程。
所需用户级别:管理员
Discourse 可以作为邮件列表的存档,同时允许注册用户使用其大部分功能。本指南将引导您完成设置自己的邮件列表镜像的过程。
请在Ruby-Talk 邮件列表镜像 上查看我们的实际操作示例。
摘要
配置站点设置以处理电子邮件
为邮件列表创建或修改一个类别
订阅邮件列表
了解镜像过程的工作原理
以下指南使用两个电子邮件地址作为占位符。您需要将它们替换为您自己的实际地址。
discourse@example.com 是 Discourse 接收传入电子邮件的地址
mailing-list@foo.test 是邮件列表的提交地址[^1]
[^1]:即人们向此地址发送邮件以在列表上发帖,并且它也出现在邮件列表发送给成员的邮件的“收件人:/抄送:”行中
配置站点设置
如果您的托管方案未预先配置传入电子邮件,请为您与 Discourse 电子邮件地址关联的帐户(例如 discourse@example.com)设置POP3 轮询或通过 API 手动轮询 。
启用以下站点设置:
email_in:允许传入电子邮件
enable_staged_users:启用暂存用户(对镜像过程至关重要)
可选设置:
将 authorized_extensions 设置为 * 或添加特定的文件扩展名,以允许您需要的附件类型
启用 always_show_trimmed_content 以允许所有用户查看被截断的内容(隐藏在 按钮后面)
启用 display_name_on_posts 并禁用 prioritize_username_in_ux 以进行名称显示偏好设置
创建或修改类别
创建一个新类别或编辑一个现有类别用于邮件列表帖子。
配置类别权限:
点击“安全”选项卡,然后点击“编辑权限”
删除所有现有权限
添加“everyone”(所有人)并设置“查看”权限
完成后,它应该如下所示:
配置类别设置:
点击“设置”选项卡
启用“接受没有帐户的匿名用户的电子邮件”
将“自定义传入电子邮件地址”设置为邮件列表的电子邮件地址(例如 mailing-list@foo.test)
启用“类别镜像邮件列表”
保存类别设置。
订阅邮件列表
使用您的 Discourse 电子邮件地址(例如 discourse@example.com)订阅邮件列表。
如果邮件列表具有 Web 界面,请确保进行以下设置:
邮件投递已启用
摘要模式已关闭
密码提醒电子邮件已禁用
对于 Mailman 2 ,请确保:
“邮件投递”设置为“已启用”
“设置摘要模式”设置为“关闭”
“为此列表获取密码提醒邮件?”设置为“否”
工作原理
启用“类别镜像邮件列表”会更改该特定类别的传入电子邮件的处理方式:
即使启用了 block_auto_generated_emails,也允许自动生成的电子邮件
所有用户都可以通过电子邮件发帖,忽略 email_in_allowed_groups 设置
传入电子邮件使用 Message-ID 来查找相关帖子,而与 find_related_post_with_key 设置无关
Markdown 的解释仅限于包含在三个反引号中的代码块
不会为邮件列表帖子发送拒绝电子邮件
常见问题
问:我可以镜像多个邮件列表吗?
答:是的,为每个邮件列表创建一个单独的类别并按照上述说明进行配置即可。
问:用户可以回复通知并向邮件列表发帖吗?
答:不可以,回复通知会发送到 Discourse,而不是原始邮件列表。用户无法通过 Discourse 直接向邮件列表发帖。
问:如何阻止用户通过电子邮件向镜像类别发帖?
答:虽然该类别允许通过电子邮件发帖,但您可以将传入电子邮件地址保密,以防止未经授权的发帖。
31 个赞
mattdm
(Matthew Miller)
2021 年12 月 1 日 16:20
23
gerhard:
Every user can post within that category via email. The value of email_in_min_trust is ignored.
这是否意味着“如果任何用户知道传入的电子邮件地址,他们就可以发布到此类别”?可以通过_不将该地址告知任何人_来阻止这种情况,对吗?
但是,假设如果有人通过电子邮件收到通知,他们可以回复。该回复是作为帖子发送到 Discourse,还是发送到邮件列表?
2 个赞
gerhard
(Gerhard Schlager)
2021 年12 月 2 日 14:34
24
这些是很好的问题。
是的,我认为如果他们知道传入的电子邮件地址并且 伪造了“发件人”地址,使其与邮件列表地址匹配,那么就有可能做到。
我想说不行,但我对此不完全确定。所以,也许可以。请尝试一下并告诉我。有可能这也需要伪造发件人地址。
它肯定会发送到 Discourse。
3 个赞
pfaffman
(Jay Pfaffman)
2021 年12 月 2 日 16:12
25
我有一个网站,它将一个 Google 群组转发到一个类别,其中设置了“接受来自匿名用户的电子邮件”和“镜像邮件列表”,但它仍然因“Email::Receiver::UserNotFoundError”而拒绝邮件。
还有什么可能触发此问题吗?
2 个赞
pfaffman
(Jay Pfaffman)
2021 年12 月 2 日 16:56
27
不。分阶段用户已关闭。所以我想它必须开启才能工作?(这说得通……)那么,在您尝试启用它时,是否应该有一个检查?
2 个赞
RGJ
(Richard - Communiteq)
2021 年12 月 2 日 16:58
28
pfaffman:
所以我想它必须是开启的才能工作?
我不确定,但这是我最好的猜测。
编辑:这里有一个唯一的地方 会引发此错误,它看起来像这样:
raise UserNotFoundError unless SiteSetting.enable_staged_users
4 个赞
mattdm
(Matthew Miller)
2021 年12 月 3 日 04:18
29
I’ll have to try it out, but my assumption is that quite a few people will try to reply. It might be nice to have one or more of these options:
Don’t send mail even if someone is watching this category. Possibly give them a notification (or a one-time message) saying that if they want email delivery of this list, they should {do whatever steps it takes to sign up for the list directly}.
Let the site admin define the reply-to address when mail is sent from a mailing-list-mirror category. (On a per category basis, of course.) Then, users could subscribe to that list without delivery enabled, get notifications from Discourse, and if they reply, that reply would actually go to the original list.
A “divert replies to category” option, where when someone replies, a linked topic is created in a different category. For example, category Announce List is a mailing list mirror, and then Discussion About The Announcements for replies. The title needs some workshopping.
3 个赞
mattdm
(Matthew Miller)
2022 年1 月 14 日 00:33
32
谢谢!这之前让我很困惑,因为我以为这里的特殊处理也以某种方式特殊处理了分阶段的用户(可能只为发布到此类别而创建它们?)。
4 个赞
是否可以通过在 Discourse 上创建一个属于 Google Group 的帐户来实现双向通信?然后,论坛帖子将发送到 GG,就像它是电子邮件列表上的另一个用户一样(我们需要拒绝该用户的所有传入邮件以避免循环)。我之所以这样问,是因为我想在用户迁移过程中同时运行 Discourse 和 GG。
我正在成功镜像一个 Google Group 邮件列表,但它不识别主题回复。我最终会收到 Google Topic 1 的帖子,然后是单独的 Re: Google Topic 1 。有没有办法让它识别主题线程?