自建 Moodle 发不出通知邮件,试了三种端口组合才找到对的那一个
自建的 Moodle 学习平台上线后,第一次卡住的地方不是课程内容,而是发不出邮件——学员完成课程后,系统本该自动发一封通知邮件,但邮件始终没有送达。检查了 Moodle 后台的邮件相关开关,确认站点邮件功能和网页设置都已经启用,问题依然存在。
反复尝试:换端口,还是不行
Moodle 的”外发邮件配置(Outgoing mail configuration)“页面里,SMTP 的配置一共涉及几个互相关联的参数:主机地址+端口号、加密方式(SMTP security)、认证类型(SMTP Auth Type)。第一轮尝试用的是默认端口 25,不加密——失败。切换到 587 端口,加密方式改成 TLS,认证类型改成 PLAIN——还是不行。
“邮件功能已启用”和”邮件真的能发出去”,中间隔着一整套必须精确匹配的参数组合
根因:SMTP 的这几个参数必须严丝合缝地对上
SMTP 发信配置里,端口号和加密方式不是随便搭配的——每个端口对应的是特定的加密协议:25 端口通常不加密,465 端口对应 SSL(连接建立时就直接加密),587 端口对应 TLS(先建立普通连接,再升级为加密)。这三种组合背后,邮件服务器只认自己配置好的那一种,客户端(这里是 Moodle)如果配错了端口和加密方式的搭配,服务器会直接拒绝连接或认证失败,报错信息往往不会直白地告诉你”端口和加密方式不匹配”,只会显示一个笼统的发送失败。
最终真正跑通的组合是 465 端口 + SSL 加密,配合邮件服务器要求的认证账号。前两次尝试之所以失败,本质上都是端口和加密方式的组合没有对上这台邮件服务器实际支持的配置。
修复
进入 Moodle 后台的”Server → Email → Outgoing mail configuration”,把 SMTP hosts 设置为 邮件服务器地址:465,SMTP security 选择 SSL,并填入邮件服务器要求的认证用户名和密码,保存后测试邮件发送恢复正常。
教训
- “邮件功能开着”不等于”邮件配置是对的”——Moodle 站内的邮件开关只是控制”要不要发邮件”,真正决定”发不发得出去”的是 SMTP 这几个参数的精确匹配,两者是完全独立的两件事,容易被放在一起排查而浪费时间;
- SMTP 端口和加密方式的对应关系值得记住:25 端口通常不加密、465 端口对应 SSL、587 端口对应 TLS——遇到”邮件发不出去”的问题时,先确认目标邮件服务器实际支持的是哪一种组合,而不是几个端口挨个试;
- 这类”参数组合必须精确匹配”的配置,失败时的报错信息往往帮不上忙——与其对着一个笼统的”发送失败”反复瞎试,不如直接找邮件服务提供方确认它期望的端口、加密方式和认证方式,能省下大量试错时间。