使用Gmail作为邮件后端的正确方法及GCP部署应用安全问题咨询
问题1:GCP托管应用被判定为低安全性应用的原因
- 谷歌对「低安全性应用」的判定仅和应用访问Gmail的认证方式有关,和应用是否部署在GCP、是否和Gmail账号归属同一主体没有任何关联。
- 你当前的应用应该是直接使用Gmail账号+明文密码调用SMTP服务发信,这种认证方式不符合谷歌现代身份认证规范,无论部署在任何基础设施上,都会被识别为低安全性访问。
- 目前谷歌企业Workspace账号正在逐步下线「允许低安全性应用访问」功能,系统周期性自动关闭该选项是预设的安全策略,不属于异常情况。
问题2:配置为高安全性应用的方案
方案1:应用专用密码(小发件量快速适配)
改造成本最低,完全兼容现有发信逻辑:
- 先为你的企业Workspace Gmail账号开启两步验证(2FA,需Workspace管理员开放用户开启2FA的权限)
- 在谷歌账号「安全」设置页面生成专门用于邮件发送的应用专用密码,替换应用配置中原Gmail账号密码即可,不会触发低安全性应用校验,Django、Node.js的SMTP配置无需额外调整。
方案2:Gmail API + OAuth2认证(最高合规方案)
完全符合谷歌安全规范,无拦截风险:
- 在GCP控制台「API和服务」页面启用Gmail API,创建OAuth 2.0客户端ID,授权该客户端访问Gmail账号的发信权限,获取refresh_token。
- 对应框架配置调整:
- Django:使用
django-gmail-api-backend作为邮件后端,填入client_id、client_secret、refresh_token、发件人邮箱即可。 - Node.js:使用官方
googleapis包,调用gmail.users.messages.send接口发送邮件,替换原有SMTP发信逻辑即可。
- Django:使用
方案3:SMTP中继服务(Workspace专属优化方案)
利用GCP和Workspace的内部可信链路,改造成本极低:
- 在Workspace管理后台开启SMTP中继服务,白名单你GCP项目的出口IP地址段。
- 应用SMTP配置修改为
smtp-relay.gmail.com,端口选择587(TLS加密),无需填写账号密码,仅白名单内的IP可发信,无安全校验风险。
内容的提问来源于stack exchange,提问作者CSSer
相关产品推荐
相关产品推荐

