设置客服邮箱

嘿,各位,我刚看到这篇博文 https://meta.discourse.org/t/how-does-team-discourse-use-discourse/82176,其中有句话让我印象深刻:

任何人都可以发送邮件至 team@discourse.org,我们会将这些互动处理在一个中央 discourse 邮箱中,作为私信群组。

你们是怎么设置的?我非常想为 steering@somervilleyimby.org 这样做(我们目前使用 Google Group,感觉很笨拙)。我使用 Google Apps 来处理 somervilleyimby.org 收发的所有邮件,并使用 Mailgun 来处理 Discourse 的邮件(例如,jeff@somervilleyimby.org;这些邮件通过 discourse.somervilleyimby.org 发送/接收),所以我不太清楚如何设置。

有什么建议或者教程吗?我看到了 https://meta.discourse.org/t/configure-incoming-email-to-create-new-topics-or-group-messages/62977,但这只解决了一部分问题。

1 个赞

你好。你看了 Discourse as a private email support portal 吗?

5 个赞

太好了!这篇内容写得很好,但没有阐明我遗漏的关键要素:

我该如何将 steering@somervilleyimby.org 邮箱地址指向 Discourse 中的一个群组?

目前,somervilleyimby.org 域名已映射到 Google Apps 邮箱,我们有两个地址:

通过 Mailgun,我们 Discourse 的入站和出站邮件使用 discourse.somervilleyimby.org,并且配置良好。

但是,如何将主域名的邮箱地址接收到 Discourse 内部的群组中呢?

我意识到这可能超出了 Discourse 本身的范围,但我想也许有人会有想法,而且我怀疑是否存在单独的 person@discourse.org 地址,同时还有一个共享的 team@discourse.org 地址,该地址会进入 Team Discourse 的实例。

将电子邮件重定向到 someaddress@discourse.somervilleyimby.org 是否可行?

我也有这么想过,但还在努力弄清楚具体要怎么接线:thinking:

嗨 Jeff :slightly_smiling_face:

我不确定我是否完全理解你的意思,但在我的自托管站点上,我使用 mail-receiver 来处理传入的电子邮件,并在管理员设置中启用电子邮件接收,然后为我想要将内容发送到的组/类别设置一个电子邮件地址。

这些信息对你有帮助吗?

3 个赞

邮件接收器的问题在于它只能处理单个域名。

Jeff 目前为实例使用了一个子域名,但同时希望根域名下的邮箱也能被处理。

1 个赞

所以他需要在不同的子域上设置邮件接收器,然后将邮件从真实的域转发到 discourse 域。(这应该会分成一个单独的主题)

2 个赞

感谢大家,也很高兴能将这个问题单独列为一个主题。

@JammyDodger,这听起来确实能解决问题,@pfaffman 的建议关于我如何处理域名+子域名设置,听起来也很有道理。

如果有人好奇的话,子域名是 Mailgun 建议的最佳实践,如果你的域名邮件已经由其他实体(在本例中是 Google Apps)处理的话。

总而言之:邮件处理仍然非常困难。

2 个赞

所以我发现我可以使用 Gmail 路由规则将邮件重新路由到 steering@discourse.somervilleyimby.org,然后 Mailgun 会将其 POST 到我的 Mailgun 插件的端点 /mailgun/incoming,但它们会抛出 422 Unprocessable Entity 错误 :thinking:

看来我得深入研究一下插件代码了……

如果您不使用 Mailgun 来接收论坛子域名的邮件,我建议删除 Mailgun 的 MX 记录,并使用 为自托管网站配置直接投递入站邮件

因此,我正在使用 Mailgun 来处理此事,这显然使事情复杂化了。但实际上我也不想自己处理电子邮件,因为只有我一个人负责行政工作。

尽管如此,你们还是给我指明了正确的方向!

/me 叹气

当然,如果升级到 Discourse 3.x 没有完全破坏通过 Mailgun 插件接收电子邮件的功能,这一切可能都会简单一些 :disappointed:

我看到的错误

从日志中:

# env tab
hostname	discourse-app
process_id	9406
application_version	3030a538192252c9d29e4fb763d31810327f370a
HTTP_HOST	discourse.somervilleyimby.org
REQUEST_URI	/mailgun/incoming
REQUEST_METHOD	POST
HTTP_USER_AGENT	Go-http-client/2.0
HTTP_ACCEPT	*/*
HTTP_X_FORWARDED_FOR	<redacted>
HTTP_X_REAL_IP	<redacted>
time	2:59 pm
# info
Message (27 copies reported)

ActionController::InvalidAuthenticityToken (无法验证 CSRF 令牌的真实性。)
lib/middleware/omniauth_bypass_middleware.rb:74:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:366:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
lib/middleware/request_tracker.rb:228:in `call'

Backtrace

actionpack (7.0.3.1) lib/action_controller/metal/request_forgery_protection.rb:251:in `handle_unverified_request'
actionpack (7.0.3.1) lib/action_controller/metal/request_forgery_protection.rb:284:in `handle_unverified_request'
actionpack (7.0.3.1) lib/action_controller/metal/request_forgery_protection.rb:273:in `verify_authenticity_token'
activesupport (7.0.3.1) lib/active_support/callbacks.rb:400:in `block in make_lambda'
activesupport (7.0.3.1) lib/active_support/callbacks.rb:199:in `block (2 levels) in halting'
actionpack (7.0.3.1) lib/abstract_controller/callbacks.rb:34:in `block (2 levels) in <module:Callbacks>'
activesupport (7.0.3.1) lib/active_support/callbacks.rb:200:in `block in halting'
activesupport (7.0.3.1) lib/active_support/callbacks.rb:595:in `block in invoke_before'
activesupport (7.0.3.1) lib/active_support/callbacks.rb:595:in `each'
activesupport (7.0.3.1) lib/active_support/callbacks.rb:595:in `invoke_before'

Env

HTTP HOSTS: discourse.somervilleyimby.org
# backtrace
Message (26 copies reported)

ActionController::InvalidAuthenticityToken (无法验证 CSRF 令牌的真实性。)
lib/middleware/omniauth_bypass_middleware.rb:74:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:366:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
lib/middleware/request_tracker.rb:228:in `call'

Backtrace

actionpack (7.0.3.1) lib/action_controller/metal/request_forgery_protection.rb:251:in `handle_unverified_request'
actionpack (7.0.3.1) lib/action_controller/metal/request_forgery_protection.rb:284:in `handle_unverified_request'
actionpack (7.0.3.1) lib/action_controller/metal/request_forgery_protection.rb:273:in `verify_authenticity_token'
activesupport (7.0.3.1) lib/active_support/callbacks.rb:400:in `block in make_lambda'
activesupport (7.0.3.1) lib/active_support/callbacks.rb:199:in `block (2 levels) in halting'
actionpack (7.0.3.1) lib/abstract_controller/callbacks.rb:34:in `block (2 levels) in <module:Callbacks>'
activesupport (7.0.3.1) lib/active_support/callbacks.rb:200:in `block in halting'
activesupport (7.0.3.1) lib/active_support/callbacks.rb:595:in `block in invoke_before'
activesupport (7.0.3.1) lib/active_support/callbacks.rb:595:in `each'
activesupport (7.0.3.1) lib/active_support/callbacks.rb:595:in `invoke_before'

Env

HTTP HOSTS: discourse.somervilleyimby.org

我去看看有没有其他类似的报告,但如果你们有什么想法,我非常欢迎!

明白了!好的,很酷,所以首先,升级到 Discourse v3.x + 我过时的 Mailgun 插件挡了路。

无论如何,方法如下:

  1. 设置一个 Mailgun 接收路由 来接收传入电子邮件的地址或正则表达式模式
  2. 访问 Google 管理控制台
  3. 在左侧导航中,展开“应用”,然后展开“Google Workspace”,然后点击 “Gmail”(此链接可能有效?
  4. 点击 默认路由
  5. 创建一个路由,将主域上的地址或模式映射到您的 Mailgun 驱动的子域:
4 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.