分享 安装和配置 Postfix

Rei · April 23, 2015 · Last by moliliang replied at April 28, 2015 · 6440 hits
Topic has been selected as the excellent topic by the admin.

http://chloerei.com/2015/04/22/install-and-configure-postfix/

最近搭了一个邮件服务器,把过程记录下来。我已经尽量精炼语句,写出来还是超长,可能直接把人吓退了。确实是这样,自建邮件服务器的人力维护成本不低,一般可以先考虑 Mailgun 之类的服务,遇到第三方服务不好的地方(成本、QQ 送达率)再考虑自建。

这篇文章包含了 Postfix 这些方面配置:

  1. 基本配置
  2. aliases
  3. MX 记录
  4. SASL 验证
  5. SPF 记录
  6. DKIM 签名

过程用到 telnet 和 openssl 调试 smtp 对话,所以了解一些 smtp 协议更好。

如果需要深入学习,建议从这本书看起:Postfix 权威指南 http://book.douban.com/subject/1754499/

先加精,在慢慢看,但是我始终怀疑靠个人的力量真的能把邮件系统做到专业么?

#1 楼 @lgn21st 我小量测试一下,可以发进 QQ 邮箱了,这是一个优势。

#2 楼 @rei 这就是问题,我理解的 Email 系统是一个典型的当数量变大,问题就会变得很复杂的事情。

#3 楼 @lgn21st 用 Mailgun 发,一天几封也进不了 QQ 邮箱,因为在第三方服务自己的声誉是和其它用户共享的。

#4 楼 @rei 用 SendCloud 经过产品环境测试国内用户很稳定,Gmail 用户也可正常收件。

#4 楼 @rei 你用的 mailgun 服务不是固定 IP,是和他人共享的,就会有这个问题,升级到支持固定 IP 套餐可以解决,SPF 和 DKIM 都支持。

#5 楼 @victor 商业认证是一个门槛,模版审核限制了用途。

#6 楼 @quakewang 独立 IP 贵,现在 Web 服务器支出也只是 $25。另外发信数量没有上限,填了信用卡后感觉睡不着了。

其实 Postfix 已经完成了一些被认为是专业服务商做的工作:

  1. 发往不同 MTA 的邮件会有并发限制,从低额度起,逐渐提高。
  2. 发送失败的邮件会安排重试,逐渐增大重试间隔,多次失败后退信。
  3. 可以操作位于队列的邮件,这个 Mailgun 不提供。

Postfix 相比第三方服务没有的是:

  1. 监控面板。

#2 楼 @rei 小量和大量时,情况会不太一样的,看接收方的 ESPs limit 是按什么规则设定的。

#6 楼 @quakewang 固定 IP 在平时量少(低于 5000 封每天)时,接收方的 limit 比较低,偶尔突发(群发广告或通知)时,反而容易因为超过 limit 而拒收。对于这种情况,共享 IP 反而效果更好。

我猜测 @rei 自建的,情况会跟独立 IP 的比较像,等他分享大规模发送后的经验了。

#9 楼 @kgen Mailgun 发送失败都是 IP limit,有钱的话买独立 IP 也许能解决。我想到网站会越来越多功能结合 Email,觉得不如从量小的时候开始积累经验,节省第三方服务的支出。

#11 楼 @rei 嗯,如果网站和 Email 功能结合紧密的,又要考虑到成本和经验积累,自建的确是个好选择。

不过,我不太赞同独立 IP 可以解决 IP limit,我贴一段 Mailgun 的详细说明,从多种情况进行了分析:

Do I need a dedicated IP address?

It depends on various factors.

If you are sending a lot of email (greater than 50k per week), it is a good idea to have a dedicated IP in order to isolate your reputation. If you are sharing your IP, you are sharing your reputation with those other senders. In addition, ESPs limit the total volume per IP, per hour. If you are a high volume sender you should consider a pool of IPs. However, you will have trouble establishing your reputation if you are not sending enough volume consistently from an IP - in this case, a shared IP is preferred.

If your email sending is volatile with large spikes of volume, ESPs may assume those large spikes are spam. Also, if your overall volume is too low, they won’t acknowledge your reputation. Generally, if you are sending less than 5,000 emails per day, a shared IP may be the right solution.

The other thing to consider is using separate IPs for your bulk and transactional mail. There are a couple reasons for this:

Delivery of time-sensitive transactional emails may get queued behind a large batch of bulk/marketing emails. Your transactional mail will be affected by the reputation created by your bulk/marketing mail. Mailgun’s infrastructure mitigates some of the argument’s for a dedicated IP address. First of all, we are constantly monitoring our shared IP addresses for any reputation issues. We also allow you to schedule delivery of your emails by using the o:deliverytime parameter. This allows you to delay the delivery by using a time in the future and also allows you to jump other messages in your queue (say from a large bulk mailing) by using a delivery time of now.

#12 楼 @kgen Mailgun 还有个问题,排队也是跟所有人一起排的,最近发一些密码重置邮件,accept 之后过了几分钟才 deliver。

#13 楼 @rei 嗯,排队是个问题。 可以用 o:deliverytime 插队,(此处改了下,因为想想可能不能插别人的队)不过只能插自己的队,一个 IP 上的其他人在前面的话,邮件只能等了。

#14 楼 @kgen 看来我是属于被插的……

#15 楼 @rei 我想明白你为什么对 Email 实效性要求那么高了,因为 selfstore 可以不注册就购买的,所以过程要借助邮件。 我们是一定要注册的,所以全过程在系统里完成,邮件的时效性就要求低了,只要找回密码可以及时发送就行了。

#16 楼 @kgen 是的,一分钟收不到就要急了。其实支付完是重定向到下载页的,但是支付宝重定向前有几秒等待,心急的可能关掉了,这时候只有等邮件。

#17 楼 @rei 我觉得业务逻辑依赖邮件即时送达,这一点有待商榷,毕竟邮件到达率受到的影响因素太多了。

#17 楼 @rei 要不考虑一下,跳转去支付宝的页面打开在新窗口,原页面显示一个层两个按钮,完成支付,支付失败。这样就算关闭了支付完成的页面,回到原页面,点击完成支付,重新刷一下支付状态,就像给出下载链接了。

#18 楼 @lgn21st 从购买角度,免登录的体验不错,8 成订单都是不注册的情况下购买的。曾经考虑改成注册购买,问了些人都觉得没有现在的方式好。邮件送达率问题要我多费劲,处理好了就是竞争优势。

#19 楼 @kgen 这主意不错,再遇到这类问题我就用上。

#20 楼 @rei 明白了,我太容易向现实妥协了。

#21 楼 @lgn21st 如果有 Amazon 的内容量就要求顾客注册填生日地址前女友名字……

如果是新装的系统,推荐试试 iredmail,一键安装。什么 apache、postfix、mysql 或 postgresql、sasl、反垃圾、扫病毒、mailwebmail、web 管理等等一股脑都给装好了。 以前在 redhat 下给公司装过基于 qmail 的邮件系统,相当的麻烦。相比来说 iredmail 还是很省事的。

#8 楼 @rei 可以试试 mailgraph ,图形监视。

#24 楼 @beiersi 多谢推荐。

iredmail +1 省事多了。

iredmail + 最近刚做了一台 iredmail,需要去数据库手动更改管理员密码。。。

以前折腾过这个,配置起来真心不轻松

  1. 某(大)公司自建的邮件服务器,发出的邮件貌似被网易邮箱干掉的最多(仅供参考)
  2. 如何发出你的邮件 提到了一些「邮件到达优化」的内容
  3. 如果你有多个公网 IP,可以尝试分流绕过 IP limit?

发 qq 邮箱我直接用 qq 企业发。。。其他的用 mailgun

You need to Sign in before reply, if you don't have an account, please Sign up first.