我最近将 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
david
(David Taylor)
3
您是否正在运行最新版本的 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 上,但我已经多次核对过,密钥信息是正确的。
david
(David Taylor)
6
要测试容器之间的网络连接,您可以尝试进入容器,例如:
./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。非常感谢您为我指明了正确的方向。