Discourse必须配置好SMTP才可以正常使用,不然没法验证邮箱,无法注册账号,很多人都被拦在这一步了!本文分享了正确的配置方法,同时还总结了大家经常遇到的问题。
在哪里配置SMTP?
Discouser的SMTP配置参数在/discourse/containers/app.yml这个文件中修改。以下是使用阿里云的邮件推送服务设置:
DISCOURSE_SMTP_ADDRESS: smtpdm.aliyun.com
DISCOURSE_SMTP_PORT: 465
DISCOURSE_SMTP_USER_NAME: mail@discourse.org.cn
DISCOURSE_SMTP_PASSWORD: "密码不给看"
DISCOURSE_SMTP_FORCE_TLS: true # (端口如果为465这项必须设置为true)
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (optional, default: true)
#DISCOURSE_SMTP_DOMAIN: discourse.example.com # (required by some providers)
DISCOURSE_NOTIFICATION_EMAIL: mail@discourse.org.cn # (发信from邮箱,和账号邮箱要一致)
#DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: peer # (optional, default: peer, valid values: none, peer, client_once, fail_if_no_peer_cert)
#DISCOURSE_SMTP_AUTHENTICATION: plain # (default: plain, valid values: plain, login, cram_md5)
准备好SMTP账号
不管你使用哪一家的邮件服务,请先确认相关账号参数正确,特别是密码。最好是在其他地方验证过的。
常见问题1:很多邮箱的SMTP密码是单独配置的,不要和邮箱账号密码混淆。
常见问题2:有些邮件推送服务是有白名单IP和域名限制的,这一点也要注意。
两个很重要的配置
- DISCOURSE_SMTP_PORT端口号,一般配置25和587都可以。注意:如果要使用465,必须配置DISCOURSE_SMTP_FORCE_TLS: true ,必须!很多人因为这个失败!很多人!真的,大概十万左右!如果没有配置会遇到报错“end of file reached”。官方其实不推荐使用465,说是什么机构说这个过时了,不安全之类的!
- DISCOURSE_NOTIFICATION_EMAIL必须和DISCOURSE_SMTP_USER_NAME一致。不然就会遇到报错:436 “MAIL FROM” doesn’t conform with authentication。
如何反复调试邮件服务器?
如果SMTP配置失败了怎么办?我们假设你已经完成了所有安装步骤,并且卡在 Web 界面无法激活管理员账号。
首先,用终端连接服务器,然后 cd /opt/1panel/apps/discourse
去到安装目录。
然后执行 ./discourse-doctor
命令,该命令会执行一个诊断程序,并且会让你提供一个邮件地址发送测试邮件。你可以根据发送结果的错误,在网上搜索,你到底是哪里配置错了。
然后,你需要修改你的 SMTP 设置,怎么修改呢?
在 1Panel 的可视化面板里,进入 /opt/1panel/apps/discourse/containers
这个目录,然后用文本编辑器编辑 app.yml ,直接编辑你之前的 SMTP 设置。其他安装方法也一样,在安装目录里找到/discourse/containers/app.yml这个文件即可。
编辑完成后保存,回到终端。
在终端中执行 ./launcher destroy app
然后等待执行结束。
再执行 ./launcher start app
等待执行结束。
如果你只是修改 SMTP,是不需要./launcher rebuild app
的,destroy 和 start 就能生效,并且速度更快。
然后,你可以重复执行 ./discourse-doctor
诊断进行调试。
如果你的站点可以访问,并且已经登录管理员账号。也可以在这里测试服务器配置。/admin/email/server-settings