5.2 KiB
邮件通知配置说明
1. 配置目的
Scert 的证书申请、续期、部署和校验任务完成后,可以通过第三方邮件服务 API 或 SMTP 服务发送通知。Scert 只实现出站通知客户端,不实现 SMTP、IMAP、POP3 邮件服务器端;HTTP 邮件 API 和 SMTP 出站通知均已接入。
2. HTTP 邮件服务配置
| 配置项 | 说明 | 默认值 |
|---|---|---|
email_http_enabled |
是否启用 HTTP 邮件通知 | false |
email_provider |
第三方服务标识 | 空 |
email_endpoint |
第三方服务基础地址,必须使用 HTTP 或 HTTPS | 空 |
email_http_path |
请求路径 | /api/email/send |
email_http_auth_mode |
none、bearer、hmac_sha256 或 session |
none |
email_http_login_path |
会话认证模式的登录请求路径 | /api/login |
email_http_credential_ref |
凭据引用,不填写明文 Token 或密钥 | 空 |
email_http_headers |
自定义请求头 JSON 对象 | {} |
email_endpoint 与 email_http_path 分开保存。例如 Smail 服务可以配置基础地址为 https://mail.example.com,请求路径使用 /api/email/send。
Bearer Token 或 HMAC-SHA256 的实际密钥必须由凭据存储管理,配置文件只保存 secret:// 等形式的引用。自定义请求头不能覆盖 Authorization、Cookie、Origin、Referer、Content-Type、Accept、X-CSRF-Token、X-Scert-Signature、X-Scert-Request-Id 和 X-Scert-Timestamp 等安全请求头。
3. Smail 接口适配说明
Smail 的发送接口为:
POST /api/email/send
Content-Type: application/json
请求体沿用 Smail 的英文字段名,包括 from、to、cc、bcc、subject、text、html 和 attrs。Scert 的通知发送器应将证书任务事件转换为邮件标题、纯文本正文和 HTML 正文。
Smail 当前接口需要登录会话 Cookie、smail_csrf Cookie、X-CSRF-Token 请求头和同源 Origin 请求头。Scert 的 session 认证模式会使用凭据存储中的账号和密码调用配置的登录路径,读取登录响应中的会话 Cookie,并在发送邮件时携带会话、CSRF 和同源请求头;密码不会写入请求日志、普通配置文件或错误信息。
4. 通知内容配置
| 配置项 | 说明 |
|---|---|
email_event_mode |
detailed 表示发送详细事件,unified 表示发送统一事件 |
email_include_deployment_details |
是否包含服务器部署明细 |
email_include_certificate_serial |
是否包含证书序列号 |
email_include_management_url |
是否包含管理后台链接 |
email_sender_name |
发件人名称,默认 Scert |
email_sender_email |
发件人地址,留空时使用超级管理员绑定邮箱 |
recipients |
收件人列表;未填写时自动使用超级管理员绑定邮箱 |
5. 超时与重试
| 配置项 | 说明 | 默认值 |
|---|---|---|
email_timeout_secs |
单次通知请求超时时间 | 10 |
email_retry_count |
失败后的重试次数 | 3 |
email_retry_intervals_secs |
每次重试前等待的秒数 | 30,120,600 |
重试间隔数量必须与重试次数一致。HTTP 通知发送器应将所有 2xx 响应视为请求成功,其他状态码进入重试或失败流程,并记录请求 ID 和最终错误。
6. 当前实现边界
当前阶段已完成邮件通知配置的保存、校验、初始化接口、CLI/Web 表单接入、HTTP 通知发送器和 SMTP 出站通知发送器。SMTP 支持 plain、starttls 和 implicit_tls 三种连接模式;生产环境建议使用 STARTTLS 或隐式 TLS。Smail 登录会话可通过 session 认证模式自动建立和刷新。
7. 当前开发状态补充
当前版本已经接入 HTTP 邮件通知发送器,支持以下能力:
- 按证书申请、续期、导入和部署结果生成通知事件。
- 按 Smail
/api/email/send接口格式发送 JSON 请求。 - 支持
none、bearer、hmac_sha256和session四种 HTTP 认证模式。 session模式支持配置登录路径;收到 HTTP 401、403 或对应业务错误码时,会在重试前重新登录并使用新会话发送。- 使用加密凭据存储读取 Bearer Token 或 HMAC 签名密钥,配置文件只保存凭据引用。
- 使用
X-Scert-Request-Id、X-Scert-Timestamp请求头,并禁止自定义请求头覆盖安全头。 - 将所有 2xx 响应视为成功,其他响应按重试配置处理。
- 证书工作流会在任务成功、失败或部署错误后触发通知;通知发送失败会写入 Scert 日志,不覆盖原证书任务结果。
SMTP 出站通知已经接入。初始化界面和 CLI 可以配置 SMTP 主机、端口、用户名、凭据引用、连接模式和明文认证开关;SMTP 密码只保存到加密敏感信息存储,配置文件仅保存 secret:// 凭据引用。明文连接认证默认拒绝,只有明确启用 SMTP 明文认证 后才允许。CLI 可使用 scert config set-secret --key notification.smtp_password 保存敏感值。SMTP 是出站连接,Scert 不需要开放 SMTP 入站端口。Smail 登录会话的自动适配已通过 session 模式接入,仍需在目标部署环境使用实际凭据进行上线前复核。