启用接收和回复邮件

我正在使用 NetCore Cloud 作为电子邮件提供商,但我无法启用接收电子邮件或回复电子邮件,有什么办法可以使用 NetCore Cloud Email 实现此功能吗?

1 个赞

我正在与 @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 支持将这些电子邮件转发到以下任一选项:
    1. 另一个电子邮件地址
    2. Webhook

我已尝试的操作
我尝试将这些电子邮件转发到以下 Discourse 端点:
https://mydiscourse.com/admin/email/handle_mail
不幸的是,这导致了 404 Not Found 状态。

我的问题

  1. 在此配置中,谁负责处理入站电子邮件?它们应该由 Discourse 直接处理,还是电子邮件提供商需要以特定格式转发它们才能被 Discourse 处理?
  2. 我注意到有一个名为“Direct Email Receiving using mail-receiver”的选项。这是否是更适合我的设置的方法?

我想确保入站电子邮件得到正确处理,以启用“通过电子邮件回复”功能。您能否指导我如何使用 Netcore 正确设置此功能,或指向相关文档?

提前感谢您的支持!

1 个赞

这里有一点,netcore 就是之前被称为“pepipost”的东西——所以如果这让任何人想起什么,也许能帮助我们找到正确的方向。

提前感谢!

最简单的方法是为使用 Mail-Receiver 的自托管站点配置直接投递入站电子邮件

我相当确定您正在使用的端点是用于处理退信的,但我也可能弄错。

谢谢您的回复,使用此设置,我们将有一个端点可供电子邮件提供商用于发布数据?

@pfaffman 非常有帮助,谢谢。所以,撇开 netcore(又名 pepipost)不谈,听起来你的意思是,如果我们想要:

  • 电子邮件发送
  • 退信管理
  • 回复处理

无论我们使用 mailgun、sengrid 等,我们都必须 为使用 Mail-Receiver 的自托管站点配置直接发送入站电子邮件 - 是这样吗?你说这是“最简单”的方法,所以我很好奇,还有其他方法吗?

再次感谢您的回复,我们因此被阻止了好几天……

另外,在此通用社区发布,我们正在寻求确认,对于自托管环境中的完整电子邮件处理,是否需要为使用 Mail-Receiver 的自托管网站配置直接投递入站电子邮件

如果其他人能确认这确实是必需的,那将非常有帮助。

您还可以配置一个 Discourse 将轮询的 pop3 邮箱。邮件接收器更简单,并允许为组或类别邮箱使用任意地址。

1 个赞

感谢 @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 配置或某种阻止邮件被接受的限制有关。

    我已尝试的操作:

    1. 确保 reply.mamapedia.com 的 DNS 记录 (MX) 设置正确。
    2. 仔细检查了 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: /letsencrypt
    
    
    

    Cloudflare DNS 记录

    image

    image

    图片显示了一个网页,其中有一个标有“A”的字段、一个用于输入文本的字段、一个 IP 地址、一个表示“Proxied”的云图标以及一个“Auto”按钮,右侧有一个“Edit”按钮。(由 AI 标注)

    感谢您提供的任何帮助或见解。

1 个赞

我不知道,但这类错误总是与 DNS 问题有关。而且每次都涉及到 Cloudflare。上次,很久以前,我遇到那个转义错误,是因为服务器配置不当导致超时。

2 个赞

当我尝试通过 telnet 发送消息时收到此消息,但当我回复我的常规电子邮件提供商的通知时,它可以正常工作。

我建议您启用“通过电子邮件回复”功能,并在实际环境中进行测试,看看效果如何。

3 个赞

谢谢,@Canapin,也许你是对的,我会尝试回复任何电子邮件看看,希望能奏效。

我会发布更新。

1 个赞

以防万一有帮助,这是我正在使用的 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 仍然无法工作,但我现在可以成功接收回复了。再次感谢你们的指导!

2 个赞

很高兴最终奏效。- 我很好奇 postfix 配置中的什么会拒绝 telnet 邮件(它们可能因多种原因被拒绝,但给出的原因似乎不对)。

对了。它只接受 Discourse 能接受的邮件。

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