注册、SMTP 认证邮件与 Turnstile
后台“系统设置 → 注册与 SMTP 认证邮件”负责注册验证码、密码重置和找回邮箱验证。它与用户正常发邮件所用的“出站发信通道”相互独立。
三个开关的关系
| 设置 | 作用 |
|---|---|
| 开放注册 | 是否允许访客创建新账号,包括本地注册和首次 OAuth 注册 |
| 邮箱验证后才能注册 | 是否要求本地用户名/密码注册先收取并验证邮件验证码 |
| 启用系统 SMTP | 是否用专用 SMTP 服务发送注册、重置密码和绑定邮箱等认证邮件 |
开启“邮箱验证后才能注册”时,系统 SMTP 必须配置完整。认证邮件发送失败时系统会返回失败,不会悄悄改用服务器直接投递。
注册页会实时读取这一公开策略。开启时邮箱栏显示“必填,需验证”,并在浏览器和服务端都拒绝空邮箱;关闭时显示为可选,用于以后找回密码。该公开响应禁止缓存,字段缺失或异常时前端采用“必须验证”的安全默认值。这个开关只控制本地用户名/密码注册;OAuth 首次创建账号仍由第三方身份与“开放注册”控制,不经过本地邮箱验证码步骤。
SMTP 字段怎样填写
| 字段 | 填写内容 |
|---|---|
| SMTP 服务器 | 服务商给出的 Submission 主机名,不带 http:// 或路径 |
| 端口 | 通常 SSL/TLS 用 465,STARTTLS 用 587,以服务商说明为准 |
| 加密方式 | 与端口匹配选择 SSL/TLS 或 STARTTLS |
| SMTP 用户名 | 服务商要求的登录名,可能是完整发件地址,也可能是独立账号 |
| SMTP 密码 | SMTP 专用密码或 API Key,不要填写网页邮箱登录密码,除非服务商明确要求 |
| 系统发件人地址 | 已在服务商验证并允许发信的完整地址 |
| 发件人显示名 | 收件箱显示的名称,例如“草丛 Mail” |
| 品牌名称、官网地址 | 写入验证码、重置密码和安全提醒邮件 |
密码保存后只显示“已配置”,不会返回明文。再次保存时留空表示保留原密码;填写新值才会轮换。密钥由服务器的 SENDCHANNEL_KEK_HEX 加密,部署后必须保持该值稳定并安全备份。
正确测试顺序
- 先关闭“邮箱验证后才能注册”,避免配置期间新用户卡在验证码步骤。
- 填完 SMTP 主机、端口、加密方式、用户名、密码和发件人地址。
- 在测试收件人栏填写一个能正常收信的外部邮箱。
- 点击“测试成功后保存”。系统先用当前表单中的候选配置发送测试邮件,成功后才保存;失败不会覆盖原配置。
- 确认测试邮件到达,并检查发件人、主题、正文链接和垃圾邮件分类。
- 再开启“邮箱验证后才能注册”,保存设置,并用新的测试账号完整走一次注册和找回密码。
单击普通“保存 SMTP 与注册设置”适合修改验证码时效或限额。首次接入或更换 SMTP 凭据时,优先使用测试按钮。
SMTP 发送失败怎么判断
| 现象 | 常见原因 |
|---|---|
| 连接超时 | 主机名或端口错误、服务器出站防火墙拦截、服务商区域地址填错 |
| TLS 握手失败 | 把 465 配成 STARTTLS,或把 587 配成 SSL/TLS;证书链异常 |
| 认证失败 | 用户名、SMTP 专用密码/API Key 错误,账号未开通 SMTP |
| 发件人被拒绝 | “系统发件人地址”不是服务商已验证地址,或发信域名尚未通过验证 |
| 服务商接受但收不到 | SPF/DKIM/DMARC 未完成、进入垃圾箱、服务商额度或频率限制 |
不要为阿里云、Resend 等服务商创建 MX 记录来解决“发送”问题。MX 决定谁接收发往该域名的邮件;认证邮件发送主要依赖服务商要求的发信域名验证、SPF 和 DKIM。若确实需要 MX,优先级通常可填 10,但应以接收邮件的实际方案为准。
与出站发信通道的区别
“系统 SMTP”只发送平台认证与安全邮件。“出站发信通道”负责用户从网页、IMAP/SMTP 客户端发出的业务邮件,可配置自定义 SMTP、Resend 或 SendFlare、发信域名、优先级和小时/每日额度。
两者互不替代。系统 SMTP 测试成功,不代表用户业务发信通道可用;业务通道测试成功,也不代表注册验证码能发出。
Turnstile 配置
在 Cloudflare Turnstile 创建组件时:
- 组件名称填便于识别的名称,例如“草丛 Mail 登录注册”。
- 主机名添加实际访问域名,只写主机名,不写
https://、路径或端口。 - 小组件模式建议使用“托管”。低风险访问可能自动通过,页面不一定弹出需要点击的挑战,这是正常行为。
- 将 Site Key 填入“站点密钥”,将 Secret Key 填入“密钥”。
- 两个值都填好后再启用,并保存人机验证设置。
Site Key 会发送给浏览器;Secret Key 只留在服务端。后台读取设置时不会回显 Secret Key,只显示是否已配置。
Turnstile 保护范围
启用后,系统会校验本地登录、注册、重发注册验证码、忘记密码、OAuth 登录发起以及 NodeLoc 绑定发起。OAuth 使用一次性服务端证明把浏览器挑战和回调流程绑定起来,不能只绕过页面直接请求回调。
Turnstile 采用故障关闭策略:密钥不完整、验证服务不可达或令牌无效时,请求会被拒绝。若管理员因此无法登录,可在服务器环境配置中临时显式设置 TURNSTILE_ENABLED=false 并重启后端。这个值会覆盖数据库中的启用状态;即使数据库设置暂时无法读取,显式关闭仍可用于救援。0、no 和 off 也表示强制关闭。空值或无法识别的拼写不会覆盖数据库中已经启用的保护;数据库设置查询失败时也会继续故障关闭。修好密钥或网络后移除该覆盖值、重启后端,再在后台确认启用状态。
为什么无痕窗口看不到需要点击的验证
“托管”模式会按风险自动决定是否显示交互。判断是否生效应看以下结果,而不是只看有没有复选框:
- 登录或注册页是否加载 Turnstile 组件。
- 未取得有效令牌时按钮是否保持不可提交或接口是否拒绝。
- 浏览器网络请求是否携带
turnstile_token。 - Cloudflare 控制台是否出现验证统计。
Turnstile 能显著提高批量注册和撞库成本,但仍需同时保留邮箱验证、登录与注册限速、发送配额、审计和封禁策略。