我正在使用 NetCore Cloud 作为电子邮件提供商,但我无法启用接收电子邮件或回复电子邮件,有什么办法可以使用 NetCore Cloud Email 实现此功能吗?
我正在与 @Abdelrahman_MoHamed 一起处理这个问题——我们认为我们的核心问题/障碍是我们正在尝试配置 netcore 以发送回复电子邮件(入站)到 discourse 进行处理。
我们无法弄清楚的是如何将该数据(入站解析的电子邮件)输入到 discourse 进行处理,我们在 netcore 中查看的配置屏幕在哪里:
我们认为我们应该输入一个类似于此的 URL:
https://forum.mamapedia.com/admin/email/handle_mail
然而,当我们查看 webhook 设置时,我们感到困惑,因为它似乎是 POST 请求。
此外,我们假设应该使用 webhook 来实现我们的目标。
您好,Discourse 社区:
我正在为我的 Discourse 实例配置“通过电子邮件回复”功能,需要一些澄清和指导。
我的当前设置
- 我正在使用 Netcore 作为我的电子邮件提供商。
- 对于入站电子邮件,我已在 Netcore 中配置了一个规则,以捕获所有符合以下格式的电子邮件:reply+*@mydiscourse.com。
- Netcore 支持将这些电子邮件转发到以下任一选项:
- 另一个电子邮件地址
- Webhook
我已尝试的操作
我尝试将这些电子邮件转发到以下 Discourse 端点:
https://mydiscourse.com/admin/email/handle_mail
不幸的是,这导致了 404 Not Found 状态。
我的问题
- 在此配置中,谁负责处理入站电子邮件?它们应该由 Discourse 直接处理,还是电子邮件提供商需要以特定格式转发它们才能被 Discourse 处理?
- 我注意到有一个名为“Direct Email Receiving using mail-receiver”的选项。这是否是更适合我的设置的方法?
我想确保入站电子邮件得到正确处理,以启用“通过电子邮件回复”功能。您能否指导我如何使用 Netcore 正确设置此功能,或指向相关文档?
提前感谢您的支持!
这里有一点,netcore 就是之前被称为“pepipost”的东西——所以如果这让任何人想起什么,也许能帮助我们找到正确的方向。
提前感谢!
最简单的方法是为使用 Mail-Receiver 的自托管站点配置直接投递入站电子邮件
我相当确定您正在使用的端点是用于处理退信的,但我也可能弄错。
谢谢您的回复,使用此设置,我们将有一个端点可供电子邮件提供商用于发布数据?
@pfaffman 非常有帮助,谢谢。所以,撇开 netcore(又名 pepipost)不谈,听起来你的意思是,如果我们想要:
- 电子邮件发送
- 退信管理
- 回复处理
无论我们使用 mailgun、sengrid 等,我们都必须 为使用 Mail-Receiver 的自托管站点配置直接发送入站电子邮件 - 是这样吗?你说这是“最简单”的方法,所以我很好奇,还有其他方法吗?
再次感谢您的回复,我们因此被阻止了好几天……
另外,在此通用社区发布,我们正在寻求确认,对于自托管环境中的完整电子邮件处理,是否需要为使用 Mail-Receiver 的自托管网站配置直接投递入站电子邮件。
如果其他人能确认这确实是必需的,那将非常有帮助。
您还可以配置一个 Discourse 将轮询的 pop3 邮箱。邮件接收器更简单,并允许为组或类别邮箱使用任意地址。
感谢 @pfaffman - 再次非常有帮助。所以我们正在继续使用邮件接收器,我们正在进行多站点安装。完成后,假设一切顺利,我们会回来查看。
您好 @pfaffman,再次感谢您的帮助。
我一直在尝试设置 Discourse 的 mail-receiver 容器来处理我的论坛邮件,但在测试时遇到了邮件被拒绝的问题。以下是问题的详细信息:
-
论坛域名: test.mamapedia.com (通过 Cloudflare 代理)
-
邮件接收器域名: reply.mamapedia.com
-
错误详情:
在使用 Telnet 测试邮件接收器时,我收到了以下错误:telnet reply.mamapedia.com 25 Trying 34.122.3.90... Connected to reply.mamapedia.com. Escape character is '^]'. 220 ESMTP server MAIL FROM: <abdohamoda636@gmail.com> 250 2.1.0 Ok RCPT TO: <test@reply.mamapedia.com> 554 5.7.1 <test@reply.mamapedia.com>: Recipient address rejected: Mail to this address is not accepted. Check the address and try to send again.邮件接收器日志: mail-receiver 容器日志显示了以下拒绝消息:
Dec 17 17:19:12 test-discourse-20241125-173103-mail-receiver postfix/smtpd[139]: NOQUEUE: reject: RCPT from 90.3.122.34.bc.googleusercontent.com[34.122.3.90]: 554 5.7.1 <test@reply.mamapedia.com>: Recipient address rejected: Mail to this address is not accepted. Check the address and try to send again?; from=<abdohamoda636@gmail.com> to=<test@reply.mamapedia.com> proto=SMTP Dec 17 17:19:12 test-discourse-20241125-173103-mail-receiver postfix/smtpd[139]: using backwards-compatible default setting smtpd_relay_before_recipient_restrictions=no to reject recipient "test@reply.mamapedia.com" from client "90.3.122.34.bc.googleusercontent.com[34.122.3.90]"观察:
- 日志中的错误消息表明收件人地址“test@reply.mamapedia.com”被拒绝。
- 问题似乎与 postfix 配置或某种阻止邮件被接受的限制有关。
我已尝试的操作:
- 确保
reply.mamapedia.com的 DNS 记录 (MX) 设置正确。 - 仔细检查了 mail-receiver 容器的配置,并确认
reply.mamapedia.com域已正确设置。
Mail-Receiver 配置文件
env: LC_ALL: en_US.UTF-8 LANG: en_US.UTF-8 LANGUAGE: en_US.UTF-8 ## 发送邮件到您的论坛的地址。通常情况下,使用与论坛本身相同的域名是完全可以的。 MAIL_DOMAIN: reply.mamapedia.com # 取消注释这些(以及下面的卷!)以支持 TLS POSTCONF_smtpd_tls_key_file: /letsencrypt/reply.mamapedia.com.key POSTCONF_smtpd_tls_cert_file: /letsencrypt/fullchain.cer POSTCONF_smtpd_tls_security_level: may ## 此 Discourse 实例的基础 URL。 ## 这将是您的 Discourse 站点 URL。例如, ## https://test.mamapedia.com。如果您运行的是子文件夹设置, ## 请务必考虑这一点(例如 https://example.com/forum)。 DISCOURSE_BASE_URL: 'https://test.mamapedia.com' ## 您 Discourse 论坛的主 API 密钥。您可以在管理员面板的“API”选项卡中找到它。 DISCOURSE_API_KEY: '#############' ## 用于处理传入电子邮件的用户名。除非您已重命名 `system` 用户, ## 否则应将其保留原样。 DISCOURSE_API_USERNAME: system volumes: - volume: host: /var/discourse/shared/mail-receiver/postfix-spool guest: /var/spool/postfix # 取消注释以支持 TLS - volume: host: /var/discourse/shared/standalone/letsencrypt guest: /letsencryptCloudflare DNS 记录



感谢您提供的任何帮助或见解。
我不知道,但这类错误总是与 DNS 问题有关。而且每次都涉及到 Cloudflare。上次,很久以前,我遇到那个转义错误,是因为服务器配置不当导致超时。
当我尝试通过 telnet 发送消息时收到此消息,但当我回复我的常规电子邮件提供商的通知时,它可以正常工作。
我建议您启用“通过电子邮件回复”功能,并在实际环境中进行测试,看看效果如何。
谢谢,@Canapin,也许你是对的,我会尝试回复任何电子邮件看看,希望能奏效。
我会发布更新。
以防万一有帮助,这是我正在使用的 mail-receiver.yml 文件内容。
我使用 Cloudflare SSL,因此由于 Cloudflare 提供 TLS,我将所有 TLS 行都注释掉了。
## 这是入站邮件接收器容器模板
##
## 修改此文件后,您必须重建
## /var/discourse/launcher rebuild mail-receiver
##
## 编辑时请务必*非常*小心!
## YAML 文件对空格或对齐错误非常非常敏感!
## 如有需要,请访问 http://www.yamllint.com/ 来验证此文件
base_image: discourse/mail-receiver:release
update_pups: false
expose:
- "25:25" # SMTP
env:
LC_ALL: en_US.UTF-8
LANG: en_US.UTF-8
LANGUAGE: en_US.UTF-8
## 发送电子邮件到您的论坛的地址。通常,使用与论坛本身相同的域
## 在这里是完全可以的。
MAIL_DOMAIN: mydiscourseinstance.com
# 取消注释这些(以及下面的卷!)以支持 TLS
# POSTCONF_smtpd_tls_key_file: /letsencrypt/discourse.example.com/discourse.example.com.key
# POSTCONF_smtpd_tls_cert_file: /letsencrypt/discourse.example.com/fullchain.cer
# POSTCONF_smtpd_tls_security_level: may
## 此 Discourse 实例的基础 URL。
## 这将是您的 Discourse 站点 URL。例如,
## https://discourse.example.com。如果您正在运行子文件夹设置,
## 请务必考虑这一点(例如 https://example.com/forum)。
DISCOURSE_BASE_URL: 'https://mydiscourseinstance.com'
## 您 Discourse 论坛的主 API 密钥。您可以在
## 管理面板的“API”选项卡中找到它。
DISCOURSE_API_KEY: xxxxxxxxxxxxxxxx
## 用于处理入站电子邮件的用户名。除非您
## 重命名了 `system` 用户,否则应保持原样。
DISCOURSE_API_USERNAME: system
volumes:
- volume:
host: /var/discourse/shared/mail-receiver/postfix-spool
guest: /var/spool/postfix
# 取消注释以支持 TLS
# - volume:
# host: /var/discourse/shared/standalone/letsencrypt
# guest: /letsencrypt
感谢大家提出宝贵的建议和支持!@pfaffman、@Jagster、@Canapin 和 @denvergeeks — 感谢你们的帮助。我想向大家更新一下,现在它已经可以工作了!我删除了所有旧的配置,将 Docker 升级到了最新版本,并确保正确添加了所需的 MX 记录。Telnet 仍然无法工作,但我现在可以成功接收回复了。再次感谢你们的指导!
很高兴最终奏效。- 我很好奇 postfix 配置中的什么会拒绝 telnet 邮件(它们可能因多种原因被拒绝,但给出的原因似乎不对)。
对了。它只接受 Discourse 能接受的邮件。
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.

