分类: BSD
2006-06-23 10:41:44
第四课、配置邮件服务
??其实OpenBSD 2.8在系统安装完成之后,就已经安装且启动了邮件服务sendmail。我们在这里需要为
OpenBSD找一个比sendmail更加安全、更加容易使用和高效能的邮件服务程序,我们选择了qmail(利用
qmail加上vpopmail可以把系统用户和邮件用户分离,并且使用虚拟邮件域。再加上MySQL就可以实现邮件
用户的数据库口令校验,这是我选择qmail的原因)。
第一节、关闭sendmail
??因为qmail作为sendmail的替代服务程序,不能和sendmail一起工作,所以必须先关闭sendmail程序。
执行以下的命令关闭正在执行的sendmail程序。
Kill –9 `cat /var/run/sendmail.pid`
??同时,必须把sendmail相关的链接删除,并把senmail更名
chmod 0 /usr/sbin/sendmail /usr/sbin/sendmail.old
??最后还必须修改/etc/rc.conf文件,更改sendmail_flags以避免系统重新启动时sendmail自动启动。
sendmail_flags=”-q 30m” 改为 sendmail_flags=NO
第二节、安装qmail
??如果一直按照手册的例子进行练习,那么现在应该可以访问CD-ROM,如果系统曾经重新启动,那么
请按照第三课、第一节的内容来访问CD-ROM。
??进入/mnt/packages目录并安装qmail执行代码包:
cd /mnt/packages
pkg_add qmail-1.03.tgz
??安装的过程中会询问是否添加一些组和用户,默认选择Y,不用改变,直接回车继续就可以了。一定
要记录qmaild的uid和nofiles的gid,因为在以后的课程中启动smtp和pop的时候需要它们(例如qmaild的
uid是2850,nofiles的gid是32750)。Qmail被安装到/var/qmail目录。
第三节、配置qmail
??要配置和运行需要DNS正确运行,如果还没有配置DNS服务,请按照第二课的内容进行配置。
??首先执行以下的命令建立新的sendmail链接,以实现和sendmail的兼容:
ln –s /var/qmail/bin/sendmail /usr/sbin/sendmail
??然后建立基础的域信息,使用下面的命令来完成:
/var/qmail/setup/config-fast 01tech.nat
??当然,也可以通过/var/qmail/setup/config来设置基础域信息,不过既然DNS正常,为什么不使用更
快捷的方法呢?config的用法请参考/var/qmail/doc里面的文档。
??复制rc文件,并对其进行修改,让它和sendmail兼容:
cp /var/qmail/boot/home /var/qmail/rc
??qmail默认使用Mailbox,而sendmail默认使用Maildir,很多的程序都根据sendmail规则来编写,需
要使用Maildir,所以需要更改rc文件,作出以下的更改:
Mailbox 改为 Maildir
第四节、测试qmail
??安装和配置完成之后当然要测试一下qmail的运作是否正常了,执行以下的命令启动qmail服务:
csh –cf ‘/var/qmail/rc &’ > /dev/null &
??然后使用以下的命令查看是否存在qmail-lspawn ./Maildir。如果已经存在,则证明qmail服务已经
正常启动,如果没有找到,就需要按照第三节的内容重新配置。
ps -x
第五节、启动系统时自动运行qmail服务
??首先修改/etc/rc.conf文件,添加以下的内容:
qmail_flags=””
??然后修改/etc/rc文件,找到sendmail的启动代码,在后面添加以下的代码:
if [ “X${qmail_flags}” != X”NO” ]; then
echo –n ‘ qmail’; csh –cf ‘/var/qmail/rc &’ > /dev/null &
fi
第五课、分离系统用户和邮件用户
??我们使用vpopmail来分离系统用户和邮件用户,这样可以提高系统的安全性。而且vpopmail还可以
使用虚拟域名,也就是同一个IP的不同域名的邮箱。
第一节、展开源代码包
??进入/usr/src目录,并解压vpopmail-4.9.8源代码包,然后进入vpopmail-4.9.8目录:
cd /usr/src
tar zxvf /mnt/packages/vpopmail-4.9.8.tar.gz
cd vpopmail-4.9.8
??
第二节、使用MySQL支持
??如果您的系统没有提供MySQL支持,请跳过这一步。
??修改vmysql.h文件,找到其中的一行内容为:
#define MYSQL_PASSWORD “gipgap”
??把里面的gipgap替换成为可以访问MySQL的系统管理员口令123456:
#define MYSQL_PASSWORD “123456”
第三节、添加组和用户
??编译和运行vpopmail,需要vchkpw组和属于vchkpw组的vpopmail用户。使用以下的命令添加组和用户:
groupadd vchkpw
useradd –g vchkpw vpopmail
第四节、准备/etc/tcp.smtp文件
??要编译vpopmail需要有tcp.smtp文件,默认的存放路径是/etc目录,通过下面的命令产生该文件:
echo ‘127.0.0.:allow,RELAYCLIENT=””’ > /etc/tcp.smtp
第五节、运行配置程序
??运行配置程序configure,获取编译所需的编译器,外部环境等信息:
./configure --enable-default-domain=01tech.nat \
--enable-admin-email=zenz-hu@01tech.nat \
--enable-mysql=y \
--enable-sqlincdir=/usr/local \
--enable-sqllibdir=/usr/local \
--enable-large-site=y \
--enable-passwd=n \
--enable-hardquota=8000000
??解释一下各项的含义:--enable-default-domain=01tech.nat指定默认的邮件域是
01tech.nat;--enable-admin-email=zenz-hu@01tech.nat说明管理员的邮箱;--enable-mysql=y告诉编
译器要使用MySQL数据库作口令检查服务;--enable-sqlincdir=/usr/local和—enable-sqllibdir=/usr/local
告诉编译器到哪里寻找MySQL的头文件和库文件;--enable-large-site=y用于把域信息保存到MySQL数据库中,
但是如果有太多的虚拟域则不适宜采用本项;--enable-passwd=n告诉系统不在/etc/passwd口令文件中
查找邮箱用户的口令;--enable-hardquota=8000000限制每个用户的邮箱大小为8Mb。
第六节、编译并安装vpopmail
??只需要简单的命令,即可编译并安装vpopmail:
make
make install-strip
??安装后的vpopmail在/home/vpopmail目录下。
第七节、添加邮件域和更改postmaster口令
??现在的vpopmail还没有邮件域,即使在编译的时候指定了默认的邮件域也一样需要通过执行以下的
程序来添加邮件域:
/home/vpopmail/bin/vadddomain 01tech.nat
??系统会询问属于这个域的postmaster的口令并要求确认,输入123456作为口令吧(记住,这里使用的
任何口令都不应该在实际应用中出现,否则您的系统会有很大的安全问题)!
??如果在这个步骤出现错误提示,那么您很可能需要重新进行本课的练习了。
第八节、启动smtp和pop3服务
??要用户可以用smtp方式发送邮件以及使用pop3方式接受邮件,需要修改/etc/rc文件,在qmail启动代
码后面添加以下的代码:
if [ -x /home/vpopmail/bin/vchkpw ]; then
echo –n ‘ smtpd’
/usr/local/bin/tcpserver –u2850 –g32750 0 smtp \
/var/qmail/bin/qmail-smtpd 2>&1 > /dev/null &
echo –n ‘ popd’
/usr/local/bin/tcpserver 0 pop3 \
/var/qmail/bin/qmail-popup pop.01tech.nat \
/home/vpopmail/bin/vchkpw \
/var/qmail/bin/qmail-pop3d Maildir &
fi
??经过上面的修改,系统在每次重新启动之后,都会自动启动smtp和pop3服务了。
??vpopmail的管理手册在/home/vpopmail/doc目录中。