LinMinquan's Blog

Experience technology to change life

Discourse 邮件 G Suite 配置

环境:AWS EC2,  Discourse v2.2.0.beta3,  Ubuntu 16.04 64bit

之前的同事用的是公司G Suite的某个邮箱配置的。

DISCOURSE_SMTP_ADDRESS: smtp-relay.gmail.com
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: hi@mail.example.com
  DISCOURSE_SMTP_PASSWORD: "xxxxxxxx"
  DISCOURSE_SMTP_ENABLE_START_TLS: true           # (optional, default true)

但我用同样的邮件配置,在另一台AWS EC2上配置,却一直发不出邮件。看Discourse log,

Job exception: end of file reached
Job exception: 404 Error: 404 Not Found

我试着用腾讯企业邮箱,也发不出来,我记得是类似的错误,但参考了下面的教程后,报错不一样了,但我没有接着试,我转试 mailgun

使用腾讯企业邮箱配置 Discourse 邮件发送服务器

discourse+Ubuntu安装详解

mailgun 注册时,可以不马上绑定付款方式,配置自己的域名,然后授权的收件人(recipient),就可以发测试邮件了。mailgun 是可以正常发邮件的,而且可以在mailgun 后台看到 log,来查看邮件是否发送成功以及发送失败的原因。

后来才注意到 smtp-relay.gmail.com  这个url 有点奇怪,别人用的都是 smtp.gmail.com ,我试了用 smtp.gmail.com 后就正常了,可以发邮件了。

可 smtp-relay.gmail.com 是什么特别的服务器吗?原来这个 G Suit 专门给只发送邮件的使用场景用的服务器,

Send email from a printer, scanner, or app

https://support.google.com/a/answer/176600?hl=en

配置的话,要登录 G Suite Admin Console,界面是如下图所示

上图 Apps > G Suite > Gmail > Advanced settings > General Settings  > SMTP relay service

就会发现我同事设置了限定发送邮件的服务器的IP地址,且只能是从跟这个G Suit一样的子域名(我习惯拿自己域名测试)才可以发送,我加上了我EC2的IP,又弄了个公司域名的子域名。要注意的是,修改后,要点击保存。

Mail send from these IP addresses will be trusted as coming from your domains.

 


Share