Ghost进阶:邮箱配置避雷

更新时间:2022年8月28日00点02分


发送邮件类型

Ghost站点产生两种邮件类型,一种是通过SMTP发送的事务性邮件,用于会员注册/登录确认、管理员密码重置等;另一种是通过API发送的批量型邮件,用于Newsletter新闻通讯:文章批量推送到订阅会员的邮箱。目前批量邮箱仅支持Mailgun的API,尽管官方表示后续将提供更多接入,但这是一个长期以来就有的需求,恐怕短时间内不会得到开发。

如果要用Mailgun以外的邮箱发批量邮件,只能结合Zapier或自己开发外件,这里有一个例子,需要许多额外的工作。

为什么不能用SMTP发送批量邮件?

首先一般邮箱服务商有限制,不允许用户同时发送大量邮件;另一方面大多数收件人的邮箱也会过滤从未知域名、未知IP发送的大量邮件,甚至包括合法的电子邮件服务提供商,一经检测大量发送,会被当作垃圾邮件,并将IP拉入黑名单。这是一种保护措施。

Mailgun开通过程中遇到的问题

Mailgun是一家提供发送、接收和跟踪电子邮件的服务商,每个月有发送1000封的免费额度,我在注册过程中碰到一些问题:

  1. Mailgun账号激活需要手机号验证,+86号码无法接收到验证码,联系服务人员可以帮助解决;
  2. Mailgun初始在一个沙盒域中,只能向已验证的邮箱地址发送测试邮件,用户仍然需要绑定自己的域名(配置DNS记录)和信用卡才能离开沙盒;
  3. 对于新注册的账号,Mailgun也许会有一些额外的限制:一个小时只能发送100封,联系服务人员,提供一些描述:包括如何使用邮箱、用户的网站信息等,以及保持一段时间正常的发信记录才能解除限制。
  4. Mailgun的注册优惠有试用30天基础计划,可以免费发送5000封邮件,提醒一下一旦绑定信用卡,将自动切换为付费计划并在30天到期后进行预付款,我就这样被扣了十五刀:( 可以手动降级到Flex Plans,每个月1000封以下免费,超出每1000封/1美元。
  5. Mailgun发件区域有欧洲和美国两个选项,注意在Ghost设置API时也要切换到对应区域。
  6. 尤其值得一提的是,163邮箱收不到邮件,不仅收不到Mailgun邮件,很多国外邮箱发的都收不到。

Mailgun邮箱也可用来配置SMTP邮箱,由于非固定公网IP通常会被列入DNSBL(域名邮箱黑名单)中,非固定公网IP托管的邮箱不能稳定的发送邮件,Mailgun可以用作域名邮箱的中继发件服务器,这方面Amazon SES是更好的选择,每个月62000 封邮件的额度,遗憾的是,Ghost没有兼容。

SMTP事务邮箱设置的问题

假设你已配置了SMTP邮箱,例如:

"mail": {
	"from": "'Name' <name@example.com>",
	"transport": "SMTP",
	"options": {
		"service": "Email",
		"host": "YOUR-SERVER-NAME",
		"port": 465,
		"secure": true,
		"auth": {
			"user": "YOUR-SMTP-ACCESS",
			"pass": "PASSWORD"
		}
	}
}

可以是任何支持SMTP的邮箱,Outlook、163mail、域名邮箱...

初次安装Ghost,首次访问从注册管理员账号开始,Ghost会用上述name@example.com地址向注册邮箱发送一封激活链接,到目前为止一切正常。

但后续会员账户的激活或登录等等事务邮件,后端并不会从这个地址发送,而是默认noreply@host.name.tld,后缀来自于配置中的主站url,假使已修改为youname@outlook.com,后端将会用noreply@outlook.com发送一封确认的链接,SMTP无法验证上述邮箱,发送失败。这个问题很早以前就有反馈了,但一直没有得到修复,我认为是开发团队有意为之的,如果博主使用第三方邮箱,例如outlook、则noreply@outlook.com显然不是博主拥有的,客观上限制了博主用这类服务商的邮箱当作博客事务性邮箱;如果已有自己的专属域名邮箱(企业邮箱),那只需要在自己的服务器添加noreply这个别名即可,也无怪乎官方文档里只有了Mailgun、Amazon SES这两种配置的说明,有一定的误导性,容易让人误以为只要支持stmp的邮箱都可以。


Ghost是一套开源的(博客)建站平台,这是一个持续更新的系列,用来列举一些官方文档和公开网络上尚未详细说明的问题与解决办法,您可以用标签 #Ghost 或搜索找到所有相关的文章。