你好!我遇到了一个奇怪的问题,我按照指南设置了它,而且效果很好!但是,出站电子邮件出现了一些问题,我原本以为这不会受到任何影响。自从我启用 mail-receiver 后,Sidekiq 就会为每一次尝试发送的电子邮件(所有卡在 Retries 列表中的邮件)报出以下错误:
Jobs::HandledExceptionWrapper: Wrapped OpenSSL::SSL::SSLError: SSL_read: unexpected eof while reading
我的搜索结果表明这与 TLS 有关。我曾取消注释 .yml 文件中与 TLS 相关的行,但重新注释掉它们也没有解决问题。我尝试了指南中关于解决 Postfix 冲突的说明,但似乎我没有 Postfix?(指南中提到的 /etc/postfix 目录在我的实例上不存在,它也不将 postfix 识别为服务。)根据 netstat 的结果,只有 docker-proxy 在使用 25 端口。
我们使用 Gmail 作为出站 SMTP 服务,事实上,在此之前我们已经使用 Gmail 进行入站 POP3 轮询。我确实删除了许多指向 Google 的 MX 记录,但指南说要这样做。
这是我的 mail-receiver.yml,其中一些细节当然被隐藏了:
## 这是入站邮件接收器容器模板
##
## 修改此文件后,您必须重建
## /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: discourse.[mydomain].org
# 取消注释这些行(以及下面的 volume!)以支持 TLS
POSTCONF_smtpd_tls_key_file: /letsencrypt/discourse.[mydomain].org/discourse.[mydomain].org.key
POSTCONF_smtpd_tls_cert_file: /letsencrypt/discourse.[mydomain].org/fullchain.cer
POSTCONF_smtpd_tls_security_level: may
## 此 Discourse 实例的基础 URL。
## 这将是您的 Discourse 站点 URL。例如,
## https://discourse.example.com。如果您正在运行子文件夹设置,
## 请务必考虑进去(例如 https://example.com/forum)。
DISCOURSE_BASE_URL: 'https://discourse.[mydomain].org'
## 您 Discourse 论坛的主 API 密钥。您可以在
## 管理面板的“API”选项卡中找到它。
DISCOURSE_API_KEY: [myapikey]
## 用于处理入站电子邮件的用户名。除非您
## 重命名了 `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
电子邮件技术有点超出我的专业范围,所以任何建议我都将感激不尽,即使只是指出我在设置过程中遗漏了什么愚蠢的东西。谢谢!