Qmail是一款完全可以替代Sendmail邮件体系的新一代Unix邮件系统,相比Sendmail而言,它具有更高的安全性、可靠性及运行效率,并且安装配置都比较简单。qmail是自由软件,完全免费,遵从GPL版权声明,并且在internet上可以找到大量的qmail附加软件包来增强它的功能,因此,在各类邮件服务器解决方案中它拥有最旺的人气。
我用的操作系统是IBM Aix4.32,但在qmail源代码包的README文件里,只有aix4.2及其以前版本成功的测试记录。下面介绍一下我在aix4.32上的安装过程,这与别的unix操作系统上的安装有些区别。
我用的C编译器是gcc2.95.2,采用较流行的Maildir邮箱存储格式,使用系统用户作为邮件账户来满足最基本的收发邮件需求。通过访问http://www.qmail.org或mirror站点下载qmail的核心软件包qmail-1.03.tar.gz,在http://cr.yp.to/checkpwd/install.html下载pop3用户密码验证程序checkpassword-0.90.tar.gz。
先解压缩软件包并进入解压后的源代码目录:gzip -dc qmail-1.03.tar.gz|tar xvf -;cd qmail-1.03
仔细阅读INSTALL和FAQ文件,并开始按步就班的安装编译源程序。
1、建立/var/qmail目录: mkdir /var/qmail
2、按照INSTALL.ids文件中的方法一一建立qmail各后台进程所要用到的用户和组。如果是通过命令行的方式来建立用户和组的话,则需要修改/etc/security/login.cfg文件,在里面添加/bin/true做为合法的shell,这样有点麻烦,建议直接修改/etc/group和/etc/passwd两个文件来建立用户和组,更方便有效。
3、qmail默认的编译器是cc,而我用的是gcc,所以有必要使得qmail在安装时调用gcc来编译。有两种方式可以解决此问题,一种方式是给gcc建立一个名为cc的象征性链接文件:ln -s /path-to-gcc/gcc /usr/bin/cc;另一种方式是修改conf-cc和conf-ld文件,将其默认的编译器cc替换为gcc。
开始编译及建立Qmail 的目录结构:make setup check
这一步是我在安装时遇到的最大阻碍,编译出错不能通过。凭借我对unix下C编程的一知半解及根据编译出错提示,我修改了dns.c文件,删除第11行“extern int h_errno;”。重新编译,通过,在后来的使用过程中也没有发现有什么问题,正常。在其它的unix操作系统上安装qmail时不会出现这样的情况,但到底在aix上为什么会这样,我目前还不大清楚,希望高人指点。
4、在配置qmail前,请认真阅读INSTALL.ctl和FAQ。配置命令有两个,config和config-fast,config将试图对本机IP地址在DNS上进行反向解析,从而确定本机域名;如果反向解析失败,则配置也就失败。建议用类似./config-fast your.full.host.name这样的命令直接确定本服务器主机域名来配置。
5、阅读INSTALL.alias文件,这里有对添加邮件用户别名的一些介绍。但至少也要给一些不能接收邮件的系统帐户添加别名,并修改/var/qmail/alias目录下所有文件的访问权限来增加安全性。
# (cd ~alias; touch .qmail-postmaster .qmail-mailer-daemon .qmail-root)
# chmod 644 ~alias/.qmail*
6、有必要的话,可以先读一读NSTALL.mbox、INSTALL.maildir和INSTALL.vsm文件,这里介绍了有关qmail邮件存储格式和邮件投递方面的内容。
7、建立/var/qmail/rc。/var/qmail/rc是用来启动qmail的文件,很重要。拷贝/var/qmail/boot/home到/var/qmail/rc。
# cp /var/qmail/boot/home /var/qmail/rc
# chmod 755 /var/qmail/rc
我们采用Maildir邮箱存储格式,对rc文件做相应的修改,修改其中./Mailbox为./Maildir,修改后的内容如下:
exec env - PATH=""/var/qmail/bin:$PATH""
qmail-start ./Maildir splogger qmail
8、启动qmail: csh -cf ''/var/qmail/rc &''
最好将这条命令加到系统的启动文件中,以便以后在系统重启时自动启动qmail。参照TEST.deliver介绍的方法进行测试。
9、如果当前系统上已安装有sendmail并且在使用中,那么请参照SENDMAIL、REMOVE.sendmail、REMOVE.binmail等文件做好从sendmail向qmail的转移。别忘了安装qmail的sendmail外壳:
# ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
10. 安装checkpassword。它用于对pop3用户的密码验证,安装也很简单,过程如下:
gzip checkpassword-0.90.tar.gz
tar -xf checkpassword-0.90.tar
cd checkpassword-0.90
make
make setup check
11、编辑/etc/inetd.conf文件,设置qmail-smtpd,用于发信,如下所示(所有文字在同一行):
smtp stream tcp nowait qmaild /var/qmail/bin/tcp-env tcp-env /var/qmail/bin/qmail-smtpd
同样,添加qmail-pop3d,用于收信,如下所示(所有文字在同一行):
pop3 stream tcp nowait root /var/qmail/bin/qmail-popup qmail-popup your.domain.name /bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir
12、重新启动inetd:refresh -s inetd
13、创建邮件用户。在每个用户的初始目录下用命令/var/qmail/bin/maildirmake创建邮箱目录并赋予适当的权限,也可以建立一个Shell脚本程序来完成每个邮件账户的创建,下面是一个简单的例子,请创建好一个名为mailgrp的组,用于将邮件用户加入到此组,如果给此脚本程序命名为qmadd,则增加邮件账户的语法为:qmadd
if test $1
then
echo ""creating user $1 and its maildir directory...""
mkuser pgrp=''mailgrp'' $1
cd /home
chown $1 $1
cd $1
/var/qmail/bin/maildirmake Maildir
echo ./Maildir/ > .qmail
chown $1 Maildir
chown $1 Maildir/*
chown $1 .qmail
passwd $1
echo ""$1''s account has been created!""
else
echo ""Usage: qmadd username""
fi
14、测试。如果邮件服务器是用在internet上,别忘了DNS上的mx记录应指向本服务器的IP地址。在TEST.receive文件中介绍了一些对邮件收发的测试方式。在此我建议在windows客户机上用foxmail或outlook来做收发邮件测试,这样更为简便有效。另外要注意/var/qmail/control目录下一些文件的配置,rcpthosts文件用于对转发信的限止,me文件表示系统的正式域名,timeoutconnect文件用于设置SMTP连接超时时间等。
本文只是介绍了qmail最基本的安装配置,如果要使得qmail有虚拟域支持、邮件列表管理、自动回复、webmail、web方式管理、web方式用户注册等功能,那需要安装另外的附加软件包,相关资料大家可以在internet上查找,有很多,虽然这些资料大都是针对linux操作系统的,不过aix上的安装配置也大同小异,所以在这就不多做介绍了。