SMTP 和电子邮件模板
后台位置: System › Settings › Email (
/settings/email) — 标签页 SMTP 和 Email templates。投递日志:Overview › Support › Sent emails (/support/emails)。
功能说明
NexCMP 发送的电子邮件包括注册验证、“虚拟机就绪”(带初始密码)、账单、余额不足、续费、充值、工单回复等。所有邮件均通过您提供的单个 SMTP 账号发送。消息和模板支持 16 种语言,系统会自动使用客户对应的语言。
前提条件
| 项目 | 要求 |
|---|---|
| SMTP 服务器 | 任意提供商的主机、端口和凭据(您自己的服务器、Brevo、Amazon SES、Mailgun、Google Workspace 等) |
| 网络 | 从 NexCMP 服务器到 SMTP 主机及端口的出站 TCP(587 STARTTLS、465 TLS 或 25) |
| 发件人域 | 您控制的域,且已为该提供商发布 SPF 和 DKIM 记录以及 DMARC 记录 |
| 权限 | SMTP 账号必须被允许以 From 地址发送邮件 |
投递率
诸如“虚拟机就绪”之类的电子邮件包含密码。如果发件人域的 SPF/DKIM/DMARC 与 SMTP 提供商不匹配,邮件将会进入垃圾箱。页面会对此进行提醒。
准备电子邮件提供商
- 在提供商的面板中添加并验证您的发信域(例如
example.com)。 - 发布提供商显示的 SPF、DKIM 和 DMARC DNS 记录。
- 创建一个 SMTP 用户(或 API-SMTP 密钥)并记录主机、端口、用户名和密码。
在NexCMP中连接
- 打开 System › Settings › Email,切换至标签页 SMTP。
- 填写表单:
| 字段 | 示例 | 备注 |
|---|---|---|
| Host | smtp.example.net | SMTP 服务器 |
| 端口 | 587 | |
| Security | STARTTLS (587) | 选择提供商要求的模式 |
| Username | smtp-user | |
| 密码 | (hidden) | 只写:页面仅显示是否已设置 |
| From email | no-reply@example.com | 必须在提供商处获得授权 |
| From name | Example Cloud | 默认为您的品牌名称 |
| Reply-To (optional) | support@example.com | 客户回复的接收地址 |

- 点击 Save,然后点击 Send test 并输入您自己的地址。
设置存储在权限受限的文件中(smtp.json,模式0600),且只有后台工作进程nexcmp-vmd发送邮件;Web服务只负责将其加入队列。
验证
- 测试消息将到达收件箱(请同时检查垃圾邮件)。在邮件源码中,确认
dkim=pass和spf=pass。 - 打开Support › Sent emails:每条消息都有一个状态(已排队、已发送、已失败)以及投递结果。失败的消息最多会重试3次。
- 在门户中注册一个测试客户,并确认验证邮件已送达。
编辑邮件模板
Email templates标签页列出了按键名分类的每个模板,以及它所支持的语言(例如verify_email、reset_password、vm_ready、invoice_paid、low_balance、topup_received、ticket_reply、scale_up等)。
- 点击一个模板并选择一种语言。
- 编辑主题和正文。占位符会在邮件入队时被填充。
- 保存。此更改将立即生效于之后入队的邮件。

限制与注意事项
- 每台安装实例一个SMTP账号。除非另有配置,否则分销商的客户将通过同一账号接收邮件。
- 供应商发送限制适用;NexCMP除重试外不进行限速。
- 没有SMTP面板也能工作,但客户无法完成注册验证和密码重置。
故障排查
| 症状 | 原因 | 解决办法 |
|---|---|---|
| 测试邮件从未送达 | 凭据错误、端口被封、发件人未授权 | 检查journalctl -u nexcmp-vmd以获取SMTP错误;尝试使用带STARTTLS的587端口;向供应商核实From地址。 |
| 邮件进入垃圾箱 | SPF/DKIM/DMARC缺失或不匹配 | 发布供应商的记录并从该域名发送。 |
| Sent emails中显示“failed” | 供应商拒绝了该消息 | 打开该行查看供应商的响应。 |
| 保存后密码字段看起来为空 | 设计如此(只写) | 存储密码后,标签将显示“current: set”。 |