内部域名服务
内部域名服务主要提供对域mycompany.vvv的解析,以及内部IP地址的反向解析。同时也向内部用户提供通常的DNS服务(对Internet域名的解析)。由于我们这里假设的域名无需局域网外部的用户访问,只提供给内部用户使用,因此不需要在internic注册,但该域名能够为内部网络用户使用的一个前提是,这些用户必须将该服务器(这里指的是192.168.0.3)设置成第一个域名服务器。
按照我们前面介绍的方式安装完的Linux,缺省情况下没有启动域名服务,你可以使用ntsysv命令,将192.168.0.3的域名服务设置成自启动。找到named项,并在其前面标注一个*号。重起服务器或运行/etc/rc.d/init.d/named start后,域名服务启动。
域名服务所涉及到的配置文件主要包括/etc/named.conf和/var/named目录下的文件。在/etc/name.conf中注明了该域名服务器所需解析的域,以及每个域所对应的配置文件。
缺省的情况下,Redhat 6.2将域名服务配置成为一个Caching only域名服务器,它可以为局域网的用户提供Internet域名的解析服务,我们还希望它可成为mycompany.vvv的主域名服务器,同时还应该提供对子网192.168.0.0/255.255.255.0的反向解析。这里反向解析服务可以将IP地址变换成域名,如果没有配置好反向解析服务,可能会造成诸如telnet,FTP连接到服务器时耗时很长的问题。修改后的/etc/named.conf如下:
options {
directory "/var/named";
};
zone "." {
type hint;
file "named.ca";
};
zone "mycompany.vvv"{
type master;
file "named.mycompany";
};
zone "0.0.127.in-addr.arpa"{
type master;
file "named.local";
};
zone "0.168.192.in-addr.arpa"{
type master;
file "named.192.168.0";
};
options {directory "/var/named";}指明了所有域名数据文件的存储目录,每一个zone表示一个域,而其对应的file 字段所注明的文件则表示了该域的数据文件。注意反向域名zone的表示方式,就是子网地址的反序表示,在这里/var/named/named.mycompany和/var/named/named.192.168.0是需要我们新建的主域名文件和子网文件。这两个文件的内容如下:
/var/named/named.mycompany
@ IN SOA ns.mycompany.vvv.
admin.mycompany.vvv. (
2000110601 ; serial
28800 ; refresh
14400 ; retry
3600000 ; expire
86400 ; default_ttl
)
@ IN NS ns.mycompany.vvv.
@ IN MX 10 ns.mycompany.vvv.
ns IN A 192.168.0.3
mycompany.vvv. IN A 192.168.0.4
gw IN A 192.168.0.1
fp IN A 192.168.0.2
www IN A 192.168.0.4
database IN A 192.168.0.5
tom IN A 192.168.0.11
alex IN A 192.168.0.13
mail IN CNAME ns
请注意文件中的完整域名后面的“.”,没有这个点的名字所表示的是省略了完整域名中的“.mycompany.vvv”部分。第一行中的“admin.mycompany.vvv.”是管理员的邮箱,没有“@”符号。第八行说明了该域的主域名服务器,第九行说明了该域的邮件服务器,“10”表示邮件服务器的相对优先级,数字越小表示邮件就越先交给它处理,这里我们因为负载不大的原因将DNS服务和E-mail服务放在同一台服务器上,所以它仍然是“ns.mycompany.vvv.”。之后各行说明了每个名字所对应的IP地址,其中“mycompany.vvv.”由于最后有个“.”,它所表示的意思就与其他几个不同,它表示完整域名为“mycompany.vvv”的主机的IP地址为“192.168.0.4”,在后面我们也看到主机www.mycompany.vvv的IP地址也是“192.168.0.4”,同一台机器可以有不同的名字,这也是虚拟主机上常见的情况。最后一行的CNAME表示ns.mycompany.vvv还有一个名字叫做mail.mycompany.vvv。
/var/named/named.192.168.0
@ IN SOA ns.mycompany.vvv. admin.mycompany.vvv. (
2000110601 ; serial
28800 ; refresh
14400 ; retry
3600000 ; expire
86400 ; default_ttl
)
@ IN NS ns.mycompany.vvv.
1 IN PTR gw.mycompany.vvv.
2 IN PTR fp.mycompany.vvv.
3 IN PTR ns.mycompany.vvv.
4 IN PTR www.mycompany.vvv.
5 IN PTR database.mycompany.vvv.
11 IN PTR tom.mycompany.vvv.
13 IN PTR alex.mycompany.vvv.
这个文件也很好理解,从第9行开始所表示的就是IP地址到完整域名的对应关系。
你可以使用pico这个工具来编写这两个文件,如pico /var/named/named.192.168.0。一旦完成这两个文件,你就可以重新启动域名服务,以使改动生效。以后每次更改域名数据文件,都应该重启域名服务进程。其方法是:/etc/rc.d/init.d/named restart。之后你可以ping 一下这些主机的域名,看看是否正确,如ping www.mycompany.vvv看看IP地址是否为192.168.0.4,如果网关已经设置正确,你还可以ping一下Internet上的域名,看看Caching only域名服务是否工作正常。
内部邮件系统
当需要在企业内部进行邮件交换时,我们会用到Linux下的邮件系统。Redhat 6.2所附的邮件系统为sendmail,但为了能够获得更高的安全性和易用性,我们这里将讨论qmail这套mail服务器软件的安装和设置,同时也介绍如何让它支持虚拟主机和Web管理。qmail曾经支撑国内最大的Webmail系统,所以它的性能对于中小型企业来讲应该是完全足够的了。
qmail-1.03.tar.gz
ftp://ftp.ntnu.no/pub/unix/mail/qmail/qmail-1.03.tar.gz
vpopmail-4.8.9.tar.gz
http://www.vpopmail.cx/vpopmail-4.8.9.tar.gz
qmailadmin-0.35.tar.gz
http://www.vpopmail.cx/qmailadmin-0.3.5.tar.gz
ezmlm-0.53.tar.gz
http://www.ezmlm.org/pub/patches/ezmlm-0.5.3.tar.gz
autorespond-1.0.0.tar.gz
http://www.vpopmail.cx/autorespond-1.0.0.tar.gz
ucspi-tcp-0.88.tar.gz
首先我们可以将这些软件copy到一个临时目录中如/usr/local/src。并在该目录中将它们解压缩:
# tar xzf qmail-1.03.tar.gz
# tar xzf vpopmail-4.8.9.tar.gz
# tar xzf qmailadmin-0.35.tar.gz
# tar xzf ezmlm-0.53.tar.gz
# tar xzf autorespond-1.0.0.tar.gz
# tar xzf ucspi-tcp-0.88.tar.gz
1.建立qmail目录:
# mkdir /var/qmail
2.增加qmail运行所需要的组和用户:
# /usr/sbin/groupadd nofiles
# /usr/sbin/useradd -g nofiles -d /var/qmail/alias alias
# /usr/sbin/useradd -g nofiles -d /var/qmail qmaild
# /usr/sbin/useradd -g nofiles -d /var/qmail qmaill
# /usr/sbin/useradd -g nofiles -d /var/qmail qmailp
# /usr/sbin/groupadd qmail
# /usr/sbin/useradd -g qmail -d /var/qmail qmailq
# /usr/sbin/useradd -g qmail -d /var/qmail qmailr
# /usr/sbin/useradd -g qmail -d /var/qmail qmails
3.在目录/usr/local/src/qmail-1.03中编译安装qmail:
# make setup check
4.设置E-mail服务器的服务域信息:
# ./config-fast ns.mycompany.vvv
5.为了能够收到postmaster@ns.mycompany.vvv、mailer-daemon@ns.mycompany.vvv、root@ns.mycompany.vvv特殊账号的信件,并将它们统一到一起,可以进行如下操作:
# (cd ~alias; touch .qmail-postmaster .qmail-mailer-daemon .qmail-root)
# chmod 644 ~alias/.qmail*
6.确定并修改qmail的启动脚本,同时我们使用qmail的maildir机制来存储信件:
# cp /var/qmail/boot/home /var/qmail/rc
# pico /var/qmail/rc
将其中的qmail-start ./Mailbox splogger qmail
改为qmail-start ./Maildir/ splogger qmail
7.删除系统中的sendmail,为了兼容一些要使用sendmail的程序,可以连接qmail的sendmail模拟程序到原来sendmail程序的位置:
# chmod 0 /usr/lib/sendmail
# chmod 0 /usr/sbin/sendmail
# mv /usr/lib/sendmail /usr/lib/sendmail.bak
# mv /usr/sbin/sendmail /usr/sbin/sendmail.bak
# ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
8.将qmail的启动命令加入到系统的启动脚本中,让系统可以在每次启动时自动启动qmail服务:
加csh -cf /var/qmail/rc &
到 /etc/rc.d/rc.local
9.修改inet.conf,以便可以用qmail发信。增加下面的内容到inet.conf:
smtp stream tcp nowait qmaild /var/qmail/bin/tcp-env tcp-env /var/qmail/bin/qmail-smtpd
至此qmail本身已经完成安装,但目前它所能处理的邮件型为tom@ns.mycompany.vvv,我们希望它可以处理诸如tom@mycompany.vvv或tom@sell.mycompany.vvv等多个域名后缀的邮件,这就需要qmail支持虚拟主机。同时,我们还可以为它增加邮件列表、自动回复等功能,并可以通过Web界面进行管理,也能使用户可以通过Web进行更改自己的密码的操作。
1.安装tcpserver进行连接安全管理。在目录/usr/local/src/ucspi-tcp-0.88下运行如下命令:
# make
# make setup check
2.要让qmail服务器作为客户端的发送邮件服务器(SMTP),需要指定qmail可以提供邮件转发服务的IP地址段,这里假设我们允许qmail服务器本身及192.168.0.0/255.255.255.0的用户可以使用它进行邮件发送,需要做如下操作:
# echo "127.0.0.:allow,RELAYCLIENT=""" > /etc/tcp.smtp
# echo "192.168.0.:allow,RELAYCLIENT=""" >> /etc/
tcp.smtp
# /usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
3.安装邮件列表管理软件(ezmlm),在/usr/local/src/ezmlm-0.53下面运行:
# make
# make man
# make setup
4.安装E-mail自动回复插件,增加该插件后用户可以设置邮箱的自动回复功能。在/usr/local/src/autorespond-1.0.0中运行如下命令:
# gcc -Wall -o autorespond autorespond.c
# cp autorespond /usr/local/bin/
5.为使qmail支持多个虚拟域的邮件服务,需要安装vpopmail,在/usr/local/src/vpopmail-4.8.9中运行如下命令:
# /usr/sbin/groupadd vchkpw
# /usr/sbin/useradd -g vchkpw vpopmail
# ./configure --enable-roaming-users=y
# make
# su
# make install-strip
其中--enable-roaming-users是vpopmail的一个在互联网上很有用的功能,它可以使qmail服务器只给在该服务上有账号的用户提供SMTP的邮件发送服务,通过拨号上网的用户IP地址每次都有可能不一样,这样就不能通过IP地址来控制可以使用SMTP服务的用户,如果完全开放,
就可能会有非授权用户利用它来发送spam邮件。--enable-roaming-users=y设置之后,拨号用户需要首先通过pop3收取信件,通过pop3的验证后,系统就将用户目前的IP地址列入可以提供发送邮件服务的列表中。在一段时间之内用户可以使用它发送邮件,超过一定的时间,该IP失效,除非重新通过pop3认证,否则qmail就不会为该IP提供SMTP服务。如果设置了--enable-roaming-users=y,你还需要编辑root的crontab,使用命令:
# crontab -e
内容如下:
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=admin@mycompany.vvv
10,25,40,55 * * * * /home/vpopmail/bin/clearopensmtp 2>&1 > /dev/null
它的意思是说每小时的第10、第25、第40和第55分钟执行clearopensmtp命令。
Vpopmail的基本用法如下:
增加域mycompany.vvv,系统会询问postmaster@mycompany.vvv这个管理账号的密码。
/home/vpopmail/bin/vadddomain mycompany.vvv
增加用户tom@mycompany.vvv
/home/vpopmail/bin/vadduser tom@mycompany.vvv
删除用户tom@mycompany.vvv
/home/vpopmail/bin/vdeluser tom@mycompany.vvv
删除域mycompany.vvv
/home/vpopmail/bin/vdeldomain mycompany.vvv
更改tom@mycompany.vvv的密码
/home/vpopmail/bin/vpasswd tom@mycompany.vvv
6.在系统的启动脚本/etc/rc.d/rc.local中添加如下的内容,使用tcpserver来管理qmail的SMTP和POP服务:
env - PATH="/var/qmail/bin:/usr/local/bin"
tcpserver -H -R -x /etc/tcp.smtp.cdb -c20 -u503 -g503 0 smtp
/var/qmail/bin/qmail-smtpd 2>&1 > /dev/null &
env - PATH="/var/qmail/bin:/usr/local/bin"
tcpserver 0 pop3 /var/qmail/bin/qmail-popup ns.mycompany.vvv
/home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir &
上表中请注意绿色部分,“-u503 -g503”中的数字应该和/etc/passwd中的alias的用户id和组id一致,这里的/etc/passwd文件的相关部分如下:
alias:x:503:503::/var/qmail/alias:/bin/bash
qmaild:x:504:503::/var/qmail:/bin/bash
qmaill:x:505:503::/var/qmail:/bin/bash
qmailp:x:506:503::/var/qmail:/bin/bash
qmailq:x:507:504::/var/qmail:/bin/bash
qmailr:x:508:504::/var/qmail:/bin/bash
qmails:x:509:504::/var/qmail:/bin/bash
请确保“pop3”这个服务名称在/etc/services中有对应的项。“ns.mycompany.vvv”就是服务器的完整域名,请根据你网络的情况修改。
7.最后安装一个Web管理界面,可以让管理员和用户自己管理域或自己的邮箱。在目录/usr/local/src/qmailadmin-0.35下运行如下命令:
# ./configure --enable-cgibindir=/home/httpd/cgi-bin --enable-vpopuser=vpopmail --with-htmllibdir=/usr/loc