Kristian
(Kristian)
1
我的 DigitalOcean Discourse Droplet 无法发送邮件。我收到的错误如下:
Delivered mail d8f9bf03-a3ce-4b42-8226-fc4f40a9c724@foo.barbar.com (5099.4ms)
Job exception: 504 5.7.4 Unrecognized authentication type [BL0PR0102CA0036.prod.exchangelabs.com]
我的设置如下:
DISCOURSE_SMTP_ADDRESS: smtp.office365.com
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: foo@bar.com
DISCOURSE_SMTP_PASSWORD: "mypassword"
DISCOURSE_SMTP_ENABLE_START_TLS: true # (可选,默认为 true)
我已从 Droplet 上尝试使用 telnet,没有报错:
telnet smtp.office365.com 587
可能是什么问题?我已经在本地使用 Python 测试过这些 SMTP 设置组合,可以正常工作,因此我认为问题不在设置上。
mik
2
你好,
尝试添加:
DISCOURSE_SMTP_AUTHENTICATION: login
并在 app.yml 的末尾添加:
- exec: rails r "SiteSetting.notification_email='foo@bar.com'"
Kristian
(Kristian)
3
你好 mik
exec 语句执行失败:
FAILED
--------------------
Pups::ExecError: rails r "SiteSetting.notification_email='foo@bar.com'" 执行失败,返回状态为 #<Process::Status: pid 2229 exit 2>
失败位置:/pups/lib/pups/exec_command.rb:112:in `spawn'
exec 执行失败,参数为 "rails r \"SiteSetting.notification_email='foo@bar.com'\""
9628e31c775b74ad0f3a555b6af27701aa40b1f8b86419fa44a7c389cc5e34ae
** 启动失败 ** 请向上滚动并查找更早的错误信息,可能不止一条。
./discourse-doctor 可能有助于诊断问题。
Kristian
(Kristian)
4
更新中省略了 exec 命令,但添加了:
DISCOURSE_SMTP_AUTHENTICATION: login
并未返回错误,我只看到:
Delivered mail be6d8718-5445-48cc-a120-6d6d1eab9eb7@discourse.bar.com (4307.2ms)
但我仍然没有收到邮件(已检查过垃圾邮件文件夹)。
mik
5
您可以尝试以下操作以找到正确的配置,并可能获得一些错误信息:
docker exec -t -i id_of_your_container /bin/bash
然后在容器内部执行:
apt install s-nail
echo "这是邮件正文,包含邮件内容" | s-nail -r "foo@bar.com" -s mysubject -S "smtp=smtp.office365.com:587" -S smtp-use-starttls -S smtp-auth=login -S smtp-auth-user="foo@bar.com" -S smtp-auth-password="xxxxxxxx" -S ssl-verify=ignore youremail@example.com
您可以更改不同的值(例如:smtp-auth=login)以尝试找到正确的配置。这样您可能会获得更精确的错误信息。
Kristian
(Kristian)
6
echo "这是消息正文,包含消息内容" | s-nail -r "foo@bar.com" -s mysubject -S "smtp=smtp.office365.com:587" -S smtp-use-starttls -S smtp-auth=login -S smtp-auth-user="foo@bar.com" -S smtp-auth-password="xxxxxxxx" -S ssl-verify=ignore youremail@example.com
我成功了,收到了邮件!不过由于我的密码以“!”开头,我必须将 smtp-auth-password="xxxxxxxx" 改为单引号。
我能看出与我的配置的唯一区别就是这个标志:
-S ssl-verify=ignore
我也需要添加这个标志吗?
感谢您的帮助!
mik
7
尝试添加:
DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none
在您的配置中,这与 ssl-verify=ignore 相同。
Kristian
(Kristian)
8
没有报错,但收件箱里仍然没有邮件
回顾一下,这是我现在配置的内容:
DISCOURSE_SMTP_ADDRESS: smtp.office365.com
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: info@foo.com
DISCOURSE_SMTP_PASSWORD: 'xxx'
DISCOURSE_SMTP_ENABLE_START_TLS: true # (可选,默认为 true)
DISCOURSE_SMTP_AUTHENTICATION: login
DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none
mik
9
请再次尝试添加(这与 s-nail 命令行测试中的 -r 选项相同):
- exec: rails r "SiteSetting.notification_email='foo@bar.com'"
电子邮件地址必须与您的账户一致。
同时请检查 app.yml 文件中的缩进,别忘了开头的“-”。格式为:两个空格,然后是“-”,再一个空格,接着是“exec…”:)
Capstan
(William Carter)
10
我也遇到了同样的问题。我同样在 Digital Ocean 上启动了一个运行 Discourse 的 Droplet。在尝试了所有这些建议并每次重建后(sudo ./launcher rebuild app),我使用了“sudo ./discourse-doctor”命令。
504 5.7.4 无法识别的认证类型 [BL0PR01CA0015.prod.exchangelabs.com]
在容器内使用 s-nail 对我来说也有效,没有任何问题。我尝试过不带"-S ssl-verify=ignore"参数,也能正常工作。有人能确认一下在 Digital Ocean Droplet 上安装的内容是否能正确发送邮件吗?
riking
(Kane York)
12
向您的邮件管理员查询 smtp_authentication 的有效值,并将 DISCOURSE_SMTP_AUTHENTICATION 设置为一个可用的值。
Kristian
(Kristian)
13
感谢所有帮助,我已经放弃并转向了另一个论坛解决方案。
Capstan
(William Carter)
14
这是微软,他们的说明如下,未指定 smtp_authentication:
你们不支持此类服务器吗?能否直接创建一个账户,连接到它,并告诉我们所需的设置?
DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none
这解决了我的问题,谢谢!