delphij's Chaos

选择chaos这个词是因为~~实在很难找到一个更合适的词来形容这儿了……

07 Jun 2011

总算找到时间把邮件系统迁移给做了

之前用的邮件系统是基于 postfix、Cyrus IMAPd、amavisd-new等软件在2006年搭建的,跑了5年多,作为不折腾会死星人,对这套系统一直有相当多的不满意,举例来说:

Cyrus IMAPd支持 foo+box@domain.tld,也就是如果foo用户的邮箱中存在’box’这个子目录时直接投递到那个子目录很有问题;

Cyrus IMAPd采用的是自己的邮箱格式。支持这种格式的只此一家;我虽然不是Maildir的fans,但Maildir是一种事实标准,而且处理起来工具也要多的多;

amavisd-new和postfix的集成原先是采取双MTA的方式进行的,这种做法会导致至少多一倍的磁盘I/O(好处是在系统过载的时候不影响进信),并且由于多了一个环节有可能引入更多的不确定性【1】;

当然其实更重要的还有:

为了便于备份而采用的 ZFS 快照和远程复制机制,以及,

原先的服务器和我的物理距离太远,为了访问速度必须要做迁移。

新的方案大致如下,有时间慢慢整理howto出来:

  1. MTA:postfix(未变)
  2. 目录服务:OpenLDAP(未变)
  3. 反垃圾套件:amavisd-milter + amavisd-new
  4. IMAP/POP3服务:dovecot
  5. OS:FreeBSD 8.2-ATWATER-p2
  6. 撤掉了队列前的 SenderID milter,这部分功能已经由 amavisd 实现了,而且事实上现在也很少有人在生产系统中用 SenderID/SPF 来阻止别人冒充自己发邮件。

现在还差一个队列前会话期间反垃圾的策略服务。之前采用的是 postfix-gps,找了一圈没有找到一个让人感觉靠谱的,所以准备找时间自己拿 twisted 重新写一个然后开源放出来。


【1】这个说法可能是有争议的。我认为以milter方式集成的好处是对方看到的是超时而不是已经将邮件收下,因此出现问题的机会要少一些。