[Bug]: Email settings won’t save from UI

用户通过 pip install litellm[proxy] prisma 安装 LiteLLM Proxy,使用 UI Dashboard 配置邮件服务器时触发。多位用户在 LiteLLM 版本 1.80.16 至 1.89.2 上均复现该问题,部分用户同时遇到发送测试邮件后服务崩溃或回调测试失

[Bug]: Email settings won't save from UI

[Bug]: Email settings won’t save from UI

快速结论:该报错发生在 LiteLLM UI 仪表盘中,用户尝试通过 UI 保存 SMTP 邮件服务器设置时,虽然提示“设置已保存”,但刷新页面后设置丢失。优先排查加密密钥环境变量 LITELLM_MASTER_KEYLITELLM_SALT_KEY 是否被更改,或控制台是否出现加密/解密错误。

问题场景

用户通过 pip install litellm[proxy] prisma 安装 LiteLLM Proxy,使用 UI Dashboard 配置邮件服务器时触发。多位用户在 LiteLLM 版本 1.80.161.89.2 上均复现该问题,部分用户同时遇到发送测试邮件后服务崩溃或回调测试失败(报错:Service must be in list. Service=smtp_email not in typing.Union[...])。

报错原文

# 控制台出现加密/解密错误(用户报告):
Exception occured - 400: {'error': "Service must be in list. Service=smtp_email not in typing.Union[typing.Literal['slack_budget_alerts', 'langfuse', 'langfuse_otel', 'slack', 'openmeter', 'webhook', 'email', 'braintrust', 'datadog', 'datadog_llm_observability', 'generic_api', 'arize', 'sqs'], str]"}

原因分析

可能原因:

  • 加密密钥环境变量(LITELLM_MASTER_KEYLITELLM_SALT_KEY)在部署后被修改,导致之前加密存储的 SMTP 配置无法解密,UI 显示为空白或失效。
  • LiteLLM 后端在保存 email 设置时,使用的回调服务类型 smtp_email 未被正确注册到服务列表中,导致验证失败(错误码 400)。
  • 该问题在多个版本(1.80.16 至 1.89.2)中持续存在,可能为 UI 或后端接口的持久化机制缺陷。

环境排查

  • 确认 LiteLLM 版本(如 1.80.16, 1.81.0, 1.89.2),是否使用最新镜像或 pip 安装包。
  • 检查 Docker 镜像标签(如 1.81.13, 1.83.10, 1.85.1, 1.87.0)。
  • 确认环境变量 LITELLM_MASTER_KEYLITELLM_SALT_KEY 是否有过变更。
  • 查看浏览器控制台(Console)是否出现 JavaScript 加密/解密错误。
  • 检查数据库(Prisma)中 email 配置表是否正常写入记录。

解决步骤

  1. 检查加密密钥一致性:确保 LITELLM_MASTER_KEYLITELLM_SALT_KEY 自安装/配置后从未修改。若曾修改,需要恢复原始密钥或重新配置所有已保存的加密设置。
  2. 查看控制台日志:在 UI 界面打开浏览器开发者工具,检查 Network 请求保存 email 设置时返回的状态码和响应体,以及 Console 是否出现解密失败相关错误。
  3. 尝试通过 API 直接保存:使用以下示例 API 调用替代 UI 保存(将 {base_url} 替换为实际代理地址),验证 backend 是否正常工作:
    curl -X POST "http://{base_url}/email/settings" \
      -H "Authorization: Bearer {master_key}" \
      -H "Content-Type: application/json" \
      -d '{
        "smtp_host": "smtp.example.com",
        "smtp_port": 587,
        "smtp_username": "user@example.com",
        "smtp_password": "your_password",
        "smtp_sender_email": "noreply@example.com"
      }'

    如果 API 返回成功并持久化,说明问题仅限于 UI 层;若 API 也失败,则需检查后端处理逻辑。

  4. 升级到最新版本:由于问题在多个版本持续存在,可尝试升级到当前最新版(如 1.90.0 或更高),查看是否包含修复。
  5. 临时手动配置:如果 UI 无法保存,可改为手动修改配置文件(如 config.yaml 或环境变量),并在重启后确认生效。
  6. 回滚加密密钥:如果怀疑密钥变更导致解密失败,可尝试将 LITELLM_SALT_KEYLITELLM_MASTER_KEY 恢复为最初使用的值(若有备份),然后重启服务。

可优先尝试:确认 LITELLM_MASTER_KEYLITELLM_SALT_KEY 是否与初始安装时一致,并检查浏览器 Console 的加密错误信息。

验证方法

执行保存操作后,刷新页面(F5 或重新加载),检查 email 设置字段是否仍保留填入的值。同时点击“测试发送”按钮,确认不会触发服务崩溃或报错。也可在后台数据库查询 email 配置记录是否存在且内容正确。

参考来源

BerriAI/litellm #19221

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

celebrityanime
celebrityanime
文章: 9832

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注