笔记:大型ICP如何将qmail替换为postfix
假定你使用的是FreeBSD
- 在测试服务器上测试postfix配置文件,确认其能够与qmail提供同样的服务。
- 执行svc -d /services/qmail-smtpd,停止进信。
- 执行qmailctl flush,下发所有邮件,等待队列空。
- 重新编译一份world和kernel(建议:升级到FreeBSD 6.0-RELEASE,a.k.a.
RELENG_6_0
) - 执行
make installkernel
- 重新启动,进入单用户,
mount -u /
,mount -a
,mergemaster -p
,合并用户和组的修改。 - 进入
/usr/src
,执行make installworld INSTALL=install -C
- 执行
mergemaster -i
,合并全部配置文件的修改。这一步骤将还原mailer.conf
。 - 整理crontab,删除其中不合理的设置
- 使用find删除/bin, /lib, /libexec, /sbin, /usr/bin, /usr/sbin, /usr/lib, /usr/libexec, /usr/man, /usr/share中所有修改日期早于昨天的文件。这一步非常重要。
- 完全删除qmail:删除/var/qmail
- 删除全部ports:删除/var/db/pkg以及/usr/local;删除/command和/service
- 再次执行make installworld,以确认全部文件已经安装。
- 重新启动
- 现在,被qmail挠的遍体鳞伤的系统得以恢复健康。将测试好的包复制上来,pkg_add,安装配置文件。
- 重新启动系统。
- 观察进信日志(/var/log/maillog)。
要点:
0. 邮件系统上的时间准确性至关重要,你应该使用ntpd来确保这一点。典型的 /etc/ntp.conf
如下:
server 131.107.1.10 prefer
server 129.6.15.28
server 129.6.15.29
server 132.163.4.101
server 132.163.4.102
server 132.163.4.103
server 128.138.140.44
server 192.43.244.18
server 66.243.43.21
server 208.184.49.9
server 207.126.98.204
server 207.200.81.113
server 205.188.185.33
然后再到/etc/rc.conf中加入:
ntpd_enable="YES"
ntpd_sync_on_start="YES"
注意第二句会确保系统启动时时间得以正确更新。否则需要再执行一次ntpdate。默认情况下,ntpd会缓慢地使始终同步,加入这一设置之后,ntpd在获得正确时间之后会立即设置时间,随后回到默认的时钟校准状态。
- 通常,邮件服务器应保持健康的DNS连接。要做到这一点,推荐在本地执行一份bind作为cache:
cd /etc/namedb
sh make-localhost
然后,在/etc/rc.conf中加入:
named_enable="YES"
注意:默认的BIND配置只监听127.0.0.1,因此这不会引致远程攻击问题。另外,FreeBSD 6附带的bind版本已经相当安全。
postfix可以通过修改/etc/mail/mailer.conf来通过mailwrapper使用。我个人的经验,这种方式兼容性要更好一些。注意同时需要修改periodic.conf,方法参考port安装时显示的消息。
所有东西从ports安装。不要问我从port以外的方式或者在Linux上面怎么装,除非你愿意出一个合适的价格。
如果你的系统已经被qmail污染的乱七八糟,用下面的方法(在单用户模式)恢复/var/的清洁:
rm -fr /var/*
chflags -R 0 /var/*
rm -fr /var/*
mtree -deUf /etc/mtree/BSD.var.mtree -p /var
mtree -deUf /etc/mtree/BSD.sendmail.mtree -p /
newsyslog -C
邮件服务器通常是全冗余结构。由于优秀的设计,在替换为postfix之后,可以放心地撤下至少1/3的服务器而不致导致负载能力不足的问题。不要一次完成所有替换,特别是历史比较长的系统,以免发生问题时难以应付。
撰写这篇笔记是希望它能有用,也希望它有助于减少不理性的MTA的装机量,从而减少互联网上飞来飞去的垃圾邮件——除非你有兴趣维护像乞丐的百衲衣的千层补丁——但无论如何,把qmail换成postfix是一个降低运营和维护成本的好选择。