邮箱服务配置
更改邮箱的操作需要重启 ONES 服务,会造成一分钟左右的不可用
配置参数
配置项 | 类型 | 示例 | 描述 |
---|---|---|---|
smtp_host | string | "smtp.qiye.163.com" | smtp服务器 |
smtp_port | int | 994 | smtp端口(TLS 加密) |
email_user | string | "xx@mail.ones.ai" | 发件邮箱 |
email_password | string | "xxxxxx" | 邮箱登录密码(在使用新浪邮箱、腾讯邮箱时填写【smtp授权密码】) |
email_from_name | string | "test" | 发件人姓名 |
email_tls_enable | boolean | true | 是否开启TLS,建议开启 |
操作步骤
准备配置
从 SMTP 服务提供商处获取配置参数,如有疑问请联系您的 SMTP 服务提供商
示例:
NetEase Free Enterprise Email (网易免费企业邮箱)
配置邮箱信息
登陆 ONES 服务器,进入当前运行中实例的安装目录
cd /data/ones/pkg/ones-example-3.14.xxxxx
将以下配置的<smtp_host> <smtp_port> <email_user> <email_password> <email_from_name> <email_tls_enable>
替换为从 SMTP 服务商中获取到的配置之后执行
./json-util -config config.json -key "smtp_host" -operator update -value <smtp_host> >/dev/null 2>&1
./json-util -config config.json -key "smtp_port" -operator add -valtype int -value <smtp_port> >/dev/null 2>&1
./json-util -config config.json -key "email_user" -operator update -value <email_user> >/dev/null 2>&1
./json-util -config config.json -key "email_password" -operator update -value <email_password> >/dev/null 2>&1
./json-util -config config.json -key "email_from_name" -operator update -value <email_from_name> >/dev/null 2>&1
./json-util -config config.json -key "email_tls_enable" -operator update -value <email_tls_enable> >/dev/null 2>&1
发件测试
使用 onesconfigure email
命令验证当前 config.json
中 SMTP 配置邮箱是否正确。该命令将向收件邮箱发送一封测试邮件,默认收件邮箱为:mail_test@ones.ai
外网环境:
./onesconfigure email
内网环境请指定收件邮箱:
./onesconfigure email --<收件邮箱>
如果发信成功您将会看到如下输出:
[root@localhost ones-example-3.14.xxxxx]# ./onesconfigure email
2023/05/26 17:42:56 send email from serverName: smtphz.qiye.163.com:994
2023/05/26 17:42:57 send email to [mail_test@ones.ai] success
重启容器
注意:执行以下命令将造成 ONES 服务暂时不可用
containerID=$(docker ps |grep $(./json-util -config config.json -operator select -key deploy_name) | grep '0.0.0.0:'$(./json-util -operator select -key port -config ./config.json)'->' | awk '{print $1}')
./onesconfigure update $containerID --restart
当观察到如下输出,则重启已经完成。稍等几分钟后 ONES 服务将可以正常访问,SMTP 服务配置完成
[root@localhost ones-example-3.14.xxxxx]# containerID=$(docker ps |grep $(./json-util -config config.json -operator select -key deploy_name) | grep '0.0.0.0:'$(./json-util -operator select -key port -config ./config.json)'->' | awk '{print $1}')
[root@localhost ones-example-3.14.xxxxx]# ./onesconfigure update $containerID --restart
[WARN] 2023/05/26 17:48:53 update apps
[INFO] 2023/05/26 17:48:57 restart container...
[INFO] 2023/05/26 17:49:07 restart container success, container_id=fb72e1948961
故障排查
电子邮件未发送
如果您使用./onesconfigure email
未成功发送邮件
检查配置是否正确
cat config.json | grep email_smtp_port
将输出和 SMTP 服务提供商处获取的配置参数比对
[root@localhost ones-example-3.14.xxxxx]# cat config.json | grep smtp
"email_smtp_port": <your-smtp-port>,
"email_smtp_server": "<your-smtp-server>",
"notify.email_smtp_port": <your-smtp-port>,
"notify.email_smtp_server": "<your-smtp-server>",
"smtp_host": "<your-smtp-server>"",
"smtp_port": <your-smtp-port>,排查网络环境,确保可以正确访问发件服务
使用如下命令获取邮箱最优适配参数推荐
获取推荐参数
./onesconfigure emailSuggest
该命令将自动测试配置参数是否存在错误,并在输出末尾打印推荐配置。例如:
Suggest config:
{
"email_from_name": "ONES.AI Test",
"smtp_host": "smtphz.qiye.163.com",
"smtp_port": 994,
"email_user": "<your-email-user>",
"email_user_name": "",
"email_password": "<your-email-password>",
"email_rfc_allow_plain_text_authentication": true,
"email_connect_security_encryption_type": "ssl",
"email_auth_login_type": "PLAIN"
}将
Suggest config
中的配置手动写入到config.json
文件,覆盖原有配置。再次使用onesconfigure email
进行发件测试。
云提供商阻止了到端口 25 的出口连接
如果您使用云提供商来托管您的 ONES 实例,并且您的 SMTP 服务器使用端口 25,则您的云提供商可能会阻止到端口 25 的出口连接。 这可以防止 ONES 发送任何外发邮件。您可以联系您的云提供商获取技术支持
如果上述方法都不能解决,请联系 ONES 工程师