用 Postal 搭建邮件服务器
最近我用 Postal 搭建了一个邮件服务器,体验比想象中更好,迫不及待分享一下经验。
为什么要搭建邮件服务器
发邮件是 Web 服务常见的需求,例如账号验证,密码重置等等。一般情况下推荐使用第三方的邮件服务,因为自建邮件服务器声誉不足容易被判定为垃圾邮件。
不过第三方服务也存在一些问题:
- 价格昂贵。如果只是发送事务性邮件那么支出不高,而要做邮件列表等发送量大的功能时价格就不能忽视了。
- 共享声誉。第三方服务的邮件服务器是在一个 IP 池子里,送达率会被其他用户影响。
如果要做邮件发送量大的应用,并且希望自己维护邮件服务器的声誉,自建邮件服务器就有必要了。
Postal 简介
Postal 是一个全功能、开源的邮件服务器。它包括以下功能:
- 支持多个组织、服务器和授权用户。
- 支持发送和接收邮件。
- 支持 webhook。
- 完整的发送日志。
- 垃圾邮件过滤。
- 更多……
可以说第三方邮件发送服务提供的它几乎都提供了,就像自己托管的 Mailgun,Postmark。
对我来说 Postal 还有一个优点,那就是它是用 Ruby & Rails 开发的,要 hack 比较容易。
安装须知
Postal 有很详细的安装文档,我就不多做叙述。
要注意的是,搭建邮件服务器的前提是要找一个允许搭建邮件服务器的服务器提供商。使用量最大的 AWS、GCloud、阿里云等都不允许搭建邮件服务器。较小一点的 Linode、DigitalOcean 限制新用户搭建,但可以通过工单申请开通。所以安装之前,先查一下自己服务器提供商是否允许搭建邮件服务器(没有屏蔽 25 端口出站)。
第二个可能遇到的问题是 IP,有的 IP 曾经被垃圾邮件商利用过,已经进入黑名单,可能会被别的邮件服务商直接拒收。因此也不能选择对邮件发送毫无限制的服务器提供商。
如果能解决上面两个问题,按照官方文档就能顺利搭建邮件服务器了。
作为参考,我的邮件服务器目前放在 Linode(推广链接)。
使用心得
测试垃圾邮件匹配度
安装完成后先用 Mail Tester 测试垃圾邮件匹配度。
在 Mail Server -> Message -> Send Message 页面可以发送测试邮件。
尽可能解决 Mail Tester 列出的问题。
区分组织和服务器
Postal 支持多个组织和下属多个服务器,利用这个特性可以区分多个应用和多个环境:
设置入站路由
入站路由可以用来开发邮件评论回复等功能,也可以用来转发客服邮件。
设置发送限制
每个 mail server 可以设置单独的发送限制。根据应用的发送量设置一个限制,避免程序错误或者被机器滥用往外发送大量垃圾邮件,影响邮件服务器声誉。
总结
搭建邮件服务器是个开始,能否送达邮件才是关键。目前我应用的发送量很小,没有什么代表性,希望以后有机会能分享更多的数据和经验。
总的来说,Postal 强大的功能超出了我的预期,非常推荐用来搭建邮件服务器。