跳到主要内容
版本:v3&v6

邮箱服务配置

更改邮箱的操作需要重启 ONES 服务,会造成一分钟左右的不可用

配置参数

配置项类型示例描述
smtp_hoststring"smtp.qiye.163.com"smtp服务器
smtp_portint994smtp端口(TLS 加密)
email_userstring"xx@mail.ones.ai"发件邮箱
email_passwordstring"xxxxxx"邮箱登录密码(在使用新浪邮箱、腾讯邮箱时填写【smtp授权密码】)
email_from_namestring"test"发件人姓名
email_tls_enablebooleantrue是否开启TLS,建议开启

操作步骤

准备配置

从 SMTP 服务提供商处获取配置参数,如有疑问请联系您的 SMTP 服务提供商

示例:

NetEase Free Enterprise Email (网易免费企业邮箱)

NetEase

配置邮箱信息

登陆 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未成功发送邮件

  1. 检查配置是否正确

    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>,
  2. 排查网络环境,确保可以正确访问发件服务

  3. 使用如下命令获取邮箱最优适配参数推荐

    1. 获取推荐参数

      ./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"
      }

    2. Suggest config中的配置手动写入到 config.json 文件,覆盖原有配置。再次使用 onesconfigure email 进行发件测试。

云提供商阻止了到端口 25 的出口连接

如果您使用云提供商来托管您的 ONES 实例,并且您的 SMTP 服务器使用端口 25,则您的云提供商可能会阻止到端口 25 的出口连接。 这可以防止 ONES 发送任何外发邮件。您可以联系您的云提供商获取技术支持


如果上述方法都不能解决,请联系 ONES 工程师