邮件主机名证书不匹配导致 sidekiq 队列过载,严重网站不稳定

这也许能帮你找到正确的:

dig +short smtp.mydomain.info|xargs -n 1 nslookup|grep name=

3 个赞

抱歉,它不起作用,错误仍然是:
SSL_connect returned=1 errno=0 state=error: certificate verify failed (Hostname mismatch)

使用版本 2.9.0.beta4 (0acbd63320) 时可以正常工作,我可以降级吗?

我创建了一个支持 start tls 的新临时电子邮件帐户,希望能在 2.9.0.beta5 发布之前修复它。

2 个赞

我遵循了上面的建议,将主机名设置为证书上的名称。

值得注意的是,在这种情况下,问题似乎只发生在启动器发起的重建之后,而不仅仅是升级。也许是启动器脚本有问题?

2 个赞

您能告诉我您是怎么做到的吗?
我快疯了,我无法在没有 SSL 和 TLS 的情况下使用端口 25 或 587 的 SMTP 服务器

谢谢

1 个赞

由于我的配置不需要 TLS,所以届时我可能无法帮助您。我认为唯一能做的就是使用提供有效证书的第三方电子邮件提供商,或者等待修复以允许绕过此问题。

1 个赞

你尝试过 Richard 的 dig 命令来查找你的 SMTP 服务器(它拥有证书)的主机名吗?

1 个赞

我的也不需要 TLS 和 SSL :slight_smile:

1 个赞

这里有类似的问题 https://meta.discourse.org/t/cant-receive-emails/224414/14。
基础镜像或外部库或 gem 是否有任何更改?

6 个赞

是的,没错,是同一个问题……大约两周前开始的。

1 个赞

可以都试试

DISCOURSE_SMTP_ENABLE_START_TLS: false
DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none

吗?

2 个赞

我尝试了最先想到的方法,但仍然是同样的错误

SSL_connect returned=1 errno=0 state=error: certificate verify failed (Hostname mismatch)
1 个赞

嘿,我尝试了这两种选项。它仍然不起作用:

  DISCOURSE_SMTP_ADDRESS: REDACTED
  DISCOURSE_SMTP_PORT: 25
  DISCOURSE_SMTP_USER_NAME: REDACTED
  DISCOURSE_SMTP_PASSWORD: REDACTED
  DISCOURSE_SMTP_ENABLE_START_TLS: false           # (optional, default true)
  DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none
  DISCOURSE_SMTP_AUTHENTICATION: "login"

我仍然收到 certificate verify failed (self signed certificate)

2 个赞

对我来说,这是一个长期存在的阻止性 bug……
我建议您创建一个新的临时电子邮件地址,该地址支持 SMTP TLS。

这可能与这个 gem 有关吗?

4 个赞

我遇到了完全相同的问题。昨天,当我通过重建升级到 2.9.0.beta4 (a5779a7d0b) 时,问题就开始出现了。我没有对 app.yml 或其他任何内容进行任何更改。只是重建了一下。

我现在有超过 1300 个失败的任务。

我在日志中看到了 SSL 错误(截图见下文),我想知道重建是否突然忽略了 DISCOURSE_SMTP_ENABLE_START_TLS 标志?

这是我的 app.yml 文件中“一直”有的内容:(再次强调,未做任何更改

  DISCOURSE_SMTP_ADDRESS: 172.17.0.1
  DISCOURSE_SMTP_PORT: 25
  DISCOURSE_SMTP_AUTHENTICATION: none
  DISCOURSE_SMTP_ENABLE_START_TLS: false           # (optional, default true)

编辑:这是我在主机(邮件服务器)的邮件日志中看到的内容。错误消息是新的,在重建之后开始出现。

重建前关于 Discourse 的最后一则邮件日志条目:

May 23 17:16:02 localhost postfix/smtpd[5247]: connect from discourse-docker[172.17.0.2]
May 23 17:16:02 localhost postfix/smtpd[5247]: 0D803B67FB: client=discourse-docker[172.17.0.2]
May 23 17:16:02 localhost postfix/cleanup[5279]: 0D803B67FB: message-id=<topic/421230/2413438.f609f9d756c226a154de43f4@forums.jag-lovers.com>
May 23 17:16:02 localhost postfix/smtpd[5247]: disconnect from discourse-docker[172.17.0.2] ehlo=1 mail=1 rcpt=1 data=1 quit=1 commands=5

重建后服务器上邮件日志中关于 Discourse 的第一条条目:

May 23 17:22:48 localhost postfix/smtpd[10929]: connect from discourse-docker[172.17.0.2]
May 23 17:22:48 localhost postfix/smtpd[10929]: SSL_accept error from discourse-docker[172.17.0.2]: -1
May 23 17:22:48 localhost postfix/smtpd[10929]: warning: TLS library problem: error:14094412:SSL routines:ssl3_read_bytes:sslv3 alert bad certificate:../ssl/record/rec_layer_s3.c:1528:SSL alert number 42:
May 23 17:22:48 localhost postfix/smtpd[10929]: lost connection after STARTTLS from discourse-docker[172.17.0.2]
May 23 17:22:48 localhost postfix/smtpd[10929]: disconnect from discourse-docker[172.17.0.2] ehlo=1 starttls=0/1 commands=1/2

此后,邮件日志中关于 Discourse 的条目看起来都一样。

截图:

4 个赞

我尝试从 Discourse Docker 容器内部使用 curl 发送消息。一旦我确保指定了明文 SMTP 和端口 25,我就可以通过主机正常发送电子邮件:

$ cd /var/discourse/
$ sudo ./launcher enter app
x86_64 arch detected.
root@discourse-app:/var/www/discourse# curl smtp://172.17.0.1 --mail-from discourse@mydomain.com --mail-rcpt myname@gmail.com --upload-file README.md
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  7077    0     0  100  7077      0   575k --:--:-- --:--:-- --:--:--  575k
root@discourse-app:/var/www/discourse#

这是主机电子邮件日志中该测试的样子:

May 24 16:53:49 localhost postfix/smtpd[25494]: connect from discourse-docker[172.17.0.2]
May 24 16:53:49 localhost postfix/smtpd[25494]: EB62CB5FCD: client=discourse-docker[172.17.0.2]
May 24 16:53:49 localhost postfix/cleanup[26008]: EB62CB5FCD: message-id=<>
May 24 16:53:49 localhost opendkim[1365]: EB62CB5FCD: can't determine message sender; accepting
May 24 16:53:49 localhost postfix/smtpd[25494]: disconnect from discourse-docker[172.17.0.2] ehlo=1 mail=1 rcpt=1 data=1 quit=1 commands=5

鉴于我在 app.yml 中指定了无 TLS 和端口 25,并且在昨天重建之前一直有效,这越来越表明最新的 Discourse 正在忽略我在 app.yml 中的 SMTP 配置。

2 个赞

@pfaffman 和/或 @codinghorror,顶一下。

你们觉得这是个 bug,还是其他什么问题?

1 个赞

@gunnar 我已将您的帖子移至此处,因为这正是您所描述的电子邮件问题。
我不确定“帖子已被占用”错误是否也由该问题引起,但您提供的有关电子邮件的详细信息属于问题。

2 个赞

对我来说,30天后仍然存在这个问题似乎很荒谬……
我不得不更换我的电子邮件提供商才能让我的论坛再次运行。

1 个赞

这很令人沮丧,但在我看来,有些 gem 不再支持忽略 b 无效证书和/或未加密传输。也许就这样了,通过这种方式发送邮件的日子已经结束了。但我自己没有遇到这个问题,所以我没有仔细查看,无法确定我是否正确。

2 个赞