使用 Debian Backports 升级 Debian Sarge 邮件服务器

原创作品,转载请注明出处。

上个月在 Debian Sarge 上架设了学校的邮件服务器,并写了一篇 Debian Sarge 邮件系统配置全攻略,虽然用 Debian Sarge 架设的邮件服务器非常稳定,但是有一点总会让人感觉上不爽,那就是软件都比较过时。昨天无意中从 Mono 项目的网站上发现了 Debian Backports 这个宝藏,有了它,我们在 Sarge 上也可以使用最新版本的软件了。正好前天何老大发布了 Extman 0.2.0 正式版,今天又发布了 Extmail 1.0.1 正式版,于是打算一起将整个系统升级到最新版本。在升级的过程中,当然遇到了许多小小的挫折,不过,最后终于都解决了。下面就是升级过程的总结。

使用 Debian Backports 的好处是,你不需要将整个系统都升级到最新版本,只需要将你需要到升级的软件进行升级就可以了。这里我们只升级 Amavisd-new,SpamAssassin,ClamAV,Postfix,Courier 和 maildrop 就可以了。

首先我们需要配置 apt 源,在 /etc/apt/sources.list 中添加:

deb http://www.backports.org/backports.org/ sarge-backports main contrib non-free

然后执行

apt-get update

更新源,然后执行:

apt-get -t sarge-backports install amavisd-new spamassassin clamav clamav-daemon

就可以更新 amavisd-new 等软件了。

旧版本的 amavisd-new 采用的是一个单独的配置文件,而新版本的 amavisd-new 采用的是多个小的配置文件,配置上更灵活。但是升级后,系统会提示你原来的配置文件 amavisd.conf 被改名为了 amavisd.conf.disabled,而新的配置文件在 /etc/amavis/conf.d 目录中,在你没有删除 amavisd.conf.disabled 之前,amavisd-new 是不会启动的。新的配置文件的内容配置跟旧的没什么太大差别,只是分成了许多小文件,但默认杀毒和垃圾邮件过滤是没有打开的,如果要打开这两个功能,需要修改 /etc/amavis/conf.d/15-content_filter_mode 文件,将其中相应的部分的注释符号去掉即可。

然后检查 AllowSupplementaryGroups 是否在 /etc/clamav/clamd.conf 中,没有的话,就加上它。然后用 root 帐号执行:

adduser clamav amavis

另外,如果你在 spamassassin 中使用 Bayes 的话,一定要加上 bayes_auto_expire 0 这个选项(加到 /etc/spamassassin/local.cf 中即可)。

更新完 amavisd-new 这几个软件之后,重启这些服务,然后到 mail.log 日志中查看是否工作正常,如果没有什么问题,就可以升级 Postfix 了。

Debian Backports 中的 Postfix 是 2.3.6 版(目前来说),比 Debian Sarge 中的 Postfix 新好多,不过更新很简单,只需要执行:

apt-get -t sarge-backports install postfix postfix-mysql

就可以了,这里不需要安装 postfix-tls 了,因为新版本的 postfix 中已经包含了 tls 功能。因此,安装完后,执行:

dpkg --purge postfix-tls

卸载掉旧版本的 postfix-tls。之后,重启一下 postfix 服务,然后通过客户端发送一下邮件看看有没有问题,如果正常的话,就可以下一步了。

这里需要注意,千万不要更新 libsasl2 和 libsasl2-modules 到 Debian Backports,否则 SMTP 验证功能将无法使用,而且回退到原来的版本很困难。只能下载原来的 sarge 中的版本,然后用 dpkg 命令强制覆盖安装才行,我在这里浪费了 3 个小时的时间才把这个问题搞定。

接下来升级 Courier:

apt-get -t sarge-backports install courier-authdaemon courier-authlib courier-authlib-mysql courier-pop courier-pop-ssl courier-imap courier-imap-ssl

这个新版本中,courier-authmysql 包已经被 courier-authlib courier-authlib-mysql 所取代,因此安装完之后,卸载掉原来的 courier-authmysql 即可。

dpkg --purge courier-authmysql

升级时需要注意,/etc/courier/authdaemonrc 新版本跟旧的版本有些差别,最好使用新版本,不过记得要将 authmodulelist 的值改为 authmysql:

authmodulelist="authmysql"

其它值不需要修改。

/etc/init.d/courier-authdaemon 文件的新版本跟旧版本也不同,也使用新的版本。不过也要修改两处:

$daemonscript start
        
log_end_msg 0

修改为

$daemonscript start
        
sleep 1
        
ln -f /var/run/courier/authdaemon/socket /var/spool/postfix/var/run/courier/authdaemon/socket
        
log_end_msg 0

$daemonscript stop
        
log_end_msg 0

修改为

rm /var/spool/postfix/var/run/courier/authdaemon/socket
        $
daemonscript stop
        
log_end_msg 0

然后重新启动 courier-authdaemon 服务,这是为了保证 Postfix 能够读取 courier-authdaemon 的 socket。

如果 imap 和 pop 服务也测试没有问题的话,那接下来就可以升级 maildrop 了。

Debian Backports 中的 maildrop 是 2.0.2(目前来说),比 Sarge 里的那个 maildrop 好太多了,默认就支持 courier-authdaemon 认证了,不需要自己编译,配置也简单的多。执行:

apt-get -t sarge-backports install maildrop

就安装好了,接下来,需要修改 /var/run/courier/authdaemon 目录的属性,默认这个目录是属于 daemon.daemon 的,并且属性是 770,这里我们需要将它修改为 775:

chmod 775 /var/run/courier/authdaemon

否则,maildrop 将无法读取 /var/run/courier/authdaemon/socket,也无法投递邮件了,在日志中会发现这样的错误:

(user unknown. Command output: ERR: authdaemon: s_connect() failed: Permission denied Invalid user specified. )

我在这个地方也浪费了 1 个小时的时间。

之后,将 /etc/postfix/master.cf 中的

maildrop  unix  -       n       n       -       -       pipe
 
flags=DRhu user=vmail argv=/usr/bin/maildrop -w 90 -d ${recipient}

改为:

maildrop  unix  -       n       n       -       -       pipe
 
flags=DRhu user=vmail argv=/usr/bin/maildrop -w 90  -d ${user}@${nexthop} ${recipient} ${user} ${extension}${nexthop}

,然后删除 /etc/maildropmysql.config 即可。重启 postfix,如果邮件能够正常投递,那么整个邮件系统的升级就完成了。

关于 extmailextman 的升级,参考何老大的升级说明就可以了。这里就不再重复了。

另外,rrdtools 也可以升级到 Debian Backports 版本,升级之后,extman 中的图形日志将会有反锯齿效果,当然不升级也不会有什么影响。

原创作品,转载请注明出处。

标签: Linux, Mail

« 上一篇 | 下一篇 »

只显示10条记录相关文章

发表评论

评论 (必须):