Mail-receiver 和/或 Discourse 无法发布电子邮件回复

我最近将 Discourse 从 AWS 迁移到了 DigitalOcean(DO):https://meta.discourse.org/t/migrate-from-aws-to-digital-ocean-with-2-containers-spaces-and-2-cdns/155445/3。一切运行良好,除了我的邮件接收器。

当我通过电子邮件回复并使用 ./launcher logs mail-receiver 检查日志时,得到以下信息:

运行环境:
RUBYGEMS_VERSION=2.7.7
MAIL_DOMAIN=reply.EXAMPLE.com
BUNDLER_VERSION=1.16.3
DISCOURSE_API_USERNAME=system
LANG=en_US.UTF-8
HOSTNAME=discourse-beta-ubuntu-s-4vcpu-8gb-nyc1-01-mail-receiver
RUBY_VERSION=2.3.7
GEM_HOME=/usr/local/bundle
PWD=/
HOME=/root
DISCOURSE_API_KEY=REMOVE
BUNDLE_PATH=/usr/local/bundle
BUNDLE_APP_CONFIG=/usr/local/bundle
TERM=xterm
BUNDLE_SILENCE_ROOT_WARNING=1
RUBY_MAJOR=2.3
SHLVL=1
RUBY_DOWNLOAD_SHA256=c61f8f2b9d3ffff5567e186421fa191f0d5e7c2b189b426bb84498825d548edb
PATH=/usr/local/bundle/bin:/usr/local/bundle/gems/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
DISCOURSE_MAIL_ENDPOINT=http://discuss.EXAMPLE.com.com/admin/email/handle_mail
DOCKER_HOST_IP=172.17.0.1
_=/usr/bin/env
正在将发送至 reply.EXAMPLE.com 的邮件投递给 Discourse
启动 Postfix

日志中显示状态为“sent”,但回复并未出现在 Discourse 中。对此有什么建议吗?这个问题仅在我从 AWS 迁移到 DO 后才出现。

<22>Sep 28 15:27:24 postfix/master[1]: 守护进程已启动 -- 版本 3.2.4,配置文件 /etc/postfix
<22>Sep 28 15:28:32 postfix/smtpd[82]: 连接来自 mail-vs1-f104.google.com[209.85.217.104]
<22>Sep 28 15:28:32 postfix/smtpd[82]: B56602F7524: 客户端=mail-vs1-f104.google.com[209.85.217.104]
<22>Sep 28 15:28:32 postfix/cleanup[89]: B56602F7524: 消息 ID=<b1642e591e436f0abeea7d2f34a48aa9@frontapp.com>
<22>Sep 28 15:28:32 postfix/qmgr[81]: B56602F7524: 发件人=<drew@XXXX.com>,大小=21558,收件人数=1(队列活跃)
<22>Sep 28 15:28:32 postfix/smtpd[82]: 断开与 mail-vs1-f104.google.com[209.85.217.104] 的连接,ehlo=1 mail=1 rcpt=1 data=1 quit=1,共 5 条命令
<23>Sep 28 15:28:32 receive-mail[91]: 收件人:replies+9009a1d55776827244f5c75332c2efa7@reply.EXAMPLE.com
<22>Sep 28 15:28:32 postfix/pipe[90]: B56602F7524: 收件人=<replies+9009a1d55776827244f5c75332c2efa7@reply.EXAMPLE.com>,中继=discourse,延迟=0.3,延迟详情=0.17/0/0/0.13,DSN=2.0.0,状态=sent(已通过 discourse 服务投递)
<22>Sep 28 15:28:32 postfix/qmgr[81]: B56602F7524: 已移除

我已通过运行以下命令检查了日志。看起来由于未知原因,出现了一些临时故障。

./launcher enter mail-receiver
mailq

-Queue ID-  --Size-- ----Arrival Time---- -Sender/Recipient-------
348432F7524*   11603 Mon Sep 28 16:01:06  mapmeister@XXX.net
                                         replies+429b18013a7bd110cab88a1a0f57f4cd@reply.XXX.com

95ED82F7526*   21757 Mon Sep 28 16:01:10  drew@XXX.com
                                         replies+9009a1d55776827244f5c75332c2efa7@reply.XXX.com

42A2C2F6EE0    21607 Mon Sep 28 15:25:32  drew@XXX.com
                                                           (temporary failure)
                                         replies+9009a1d55776827244f5c75332c2efa7@reply.XXX.com

324792F6EDF    23547 Mon Sep 28 15:23:22  drew@XXX.com
                                                           (temporary failure)
                                         replies+b42b43ae2bde8b6b951d46647f387b32@reply.XXX.com

D07792F7525    21712 Mon Sep 28 15:53:04  drew@XXX.com
                                                           (temporary failure)
                                         replies+9009a1d55776827244f5c75332c2efa7@reply.XXX.com

您是否正在运行最新版本的 mail-receiver 容器?您可能对这个主题感兴趣:

其他一些需要检查的事项:

  • 您的 mail_receiver 配置中的 API 密钥是否与 Discourse 管理 UI 中的某个 API 密钥匹配?
  • /admin/email/rejected 日志中是否有任何被拒绝的邮件记录?

你好,谢谢你的回复。

在 mail-receiver.yml 中,我设置了 base_image: discourse/mail-receiver:release,但没有看到关于 mail-receiver 过时的错误提示。我已经多次重新构建 mail-receiver。

/admin/email/rejected 页面中,我没有看到任何被拒绝的邮件。
我为 system 用户重新生成了一个具有所有权限的 API 密钥,并在 mail-receiver.yml 中使用了该密钥。我原本以为问题出在 API 上,但我已经多次核对过,密钥信息是正确的。

很好奇,我创建的 API 没有任何活动

要测试容器之间的网络连接,您可以尝试进入容器,例如:

./launcher enter mail-receiver

然后尝试运行:

wget -O - $DISCOURSE_MAIL_ENDPOINT

如果连接成功,您应该会看到:

wget: server returned error: HTTP/1.1 404 Not Found

如果未成功,请再次检查配置文件中的 DISCOURSE_MAIL_ENDPOINT 值。

我的愚蠢程度简直令人发指。我完全配得上一个巨大的笨蛋帽。

正在连接到 discuss.360velo.com.com (199.59.242.154:80)。

com.com… ???我搞错了 DISCOURSE_MAIL_ENDPOINT。URL 里多了个 .com,而且我本应该使用 https 而不是 http。非常感谢您为我指明了正确的方向。