1. 端口与加密协议的匹配 (最关键)
- 问题:国内云厂商(阿里云、腾讯云等)默认封禁了 25 端口。
- 解决方案:必须改用 465 端口。
- 必选配置:在 Discourse 中,使用 465 端口必须配合
DISCOURSE_SMTP_FORCE_TLS: true。如果只改端口不开启 TLS,连接会直接超时。
2. 密码与授权码的区别
- 问题:直接使用邮箱的登录密码往往会被拦截。
- 解决方案:必须在阿里云邮后台开启 SMTP 服务,并生成专门的 “客户端授权码”。
- 特殊字符风险:在 YAML 配置文件中,如果密码包含
$、#等特殊字符,容易导致环境变量解析错误。你最后改用的纯字符+数字组合是最稳妥的。
3. 三方对齐原则 (Alignment)
阿里云对反垃圾邮件校验非常严格,以下三个值必须保持一致,否则会报 553 错误:
DISCOURSE_SMTP_USER_NAME(登录账号:donotreply@xuyangyang.com)DISCOURSE_NOTIFICATION_EMAIL(发件人显示:donotreply@xuyangyang.com)DISCOURSE_DEVELOPER_EMAILS(管理员邮箱:建议也包含在同一域下,方便接收系统警报)
4. DISCOURSE_SMTP_DOMAIN 的作用
- 误区:认为它必须是 Discourse 的运行域名。
- 真相:它决定了 SMTP 握手时的
HELO身份。为了降低被标记为垃圾邮件的风险,设置为邮箱的后缀域名(xuyangyang.com)是最佳实践,这能让 SPF 检查更容易通过。
5. 身份验证方式
- 配置:
DISCOURSE_SMTP_AUTHENTICATION: login。 - 原因:虽然 Discourse 默认支持多种方式,但国内厂商对
login方式的兼容性最好。
验证建议
为了确保万无一失,建议你现在登录 Discourse 后台执行以下操作:
- 进入 设置 (Settings) → 邮件 (Emails)。
- 点击 发送测试邮件 (Send Test Email)。
- 如果能收到,说明配置完美闭环。