本章目录
0 声明
1 简介
2 安装
3 配置
4 小测试
5 修改 From: 的地址
6 配置Fetchmail
7 修改exim的投递限制
8 综合测试
9 TODO
10 结束语
11 参考文献
0 声明
本文是在《通过exim建立家庭网络的邮件系统》一文的基础上修改的,作者:Jan
W. Stumpel, Oegstgeest, The Netherlands。
这篇章的地址是:http://211.167.66.225/~yzhao/lg-zh/lg-zh-issue8/stumpel.html
1 简介
我想现在一个再普通的单位,也会需要用到电子邮件。我所在的企业,已经到了无法离开email的地步——每当邮件服务器出现问题,我的电话都会被打爆。在M$平台上,邮件服务器市场基本上被两个软件占领:M$的Exchange和Lotus的Domino/Notes。这些软件所花费的费用,实在不小。而Unix平台上,我们有很多选择,而且都是免费的。
在Debian里面,我们不用Sendmail,也不用Qmail和Postfix,而是用Exim,这是Debian的缺省邮件服务器,连基本系统都附带了这个软件。理由我就不说了,反正,Debian推荐的,不会错。
1.1 我们将实现的功能
◆
局域网中的用户可以实现本地邮件的发送和转发。
◆ 发往局域网以外的邮件有正确From:<邮件地址>,以使外部的邮件能够正确的回复。
◆
电子邮件账号是所有本地子网用户所共享,但是要实现每个用户仅仅能够收到自己的邮件。
◆ exim作为邮件的收发代理(它比sendmail好配置的多)。
◆ mail作为linux端的邮件客户程序。
◆ Microsoft Outlook Express 作为Win2000端的邮件客户程序(同样你也可以使用其它的类似工具,比如Foxmail)。
◆ qpopper 作为POP3服务器, 用来把邮件从Linux系统中转移到Win2000机器上。
◆ fetchmail 用来从互联网上收取邮件。
我在两台机器上(分别安装Linux和Win2000系统)做的测试,当然,win9x/NT/XP都可以,而且两台机器都是Linux的话也当然可以。这个方案,应付一个中小型的办公室应该绰绰有余。
1.2 网络和命名
在这篇文章中我假定以下的名字(您实际应用时应该做写修改,以适应您的实际情况):
◆ 拥有者和系统管理员的名称 kanaka Leng。
◆ Linux机器名为 Debian。
◆ Win2000 机器名为 Notepad。 通常使用者为 ganghua Leng。
◆ kanaka 在 Debian 机器上的注册用户名为 kanaka。
◆ ganghua 在 Debian 机器上的注册用户名为 ganghua。
◆ ganghua 在 Notepad 机器上的注册用户名也为 ganghua。
她的在linux下的Debian机器和 Win2000上的口令也相同。
◆
我们公司的局域网通过宽带连接互联网,当然你通过普通拨号也可以。
◆ kanaka 和 ganghua 都使用电子邮件地址:kanaka@yeah.net。
◆ kanaka到POP3收信的口令为kanakapswd。
◆ ISP的发送邮件的邮件服务器为smtp.yeah.net。
◆ ISP的接受邮件的邮件服务器为pop3.yeah.net。
机器Debian和Notepad都属于一个域,域名为test.com。
这个域名是我们内部搞测试用的,我们并没有注册这个域名,
因而对于外部网络来说, 并不能直接识别这个域名。
此外,我还假设内部网络已经正常工作,
并且已经拥有使用daild实现的非永久拨号连接,或者宽带网连接。
在Debian机器上也没有安装DNS服务。/etc/resolv.conf中只是加入了ISP提供的两个DNS服务器的地址。同样的设置也要加在Notepad机器上的TCP/IP设置中。
1.3 邮件地址
在"To:"和"From:"中指定邮件地址是一封邮件的基本组成部分,
此外还有更多的内容。 举例来说:
To: ganghua Leng <kanaka@yeah.net>
'ganghua Leng'是一个"real-name part"(真实姓名部分)。
这是通过撰写电子邮件的程序加上的。
这个部分就是将邮件发送给ganghua本人的依据。 注意:如果在real-name
part中有句点存在, 邮件地址必须用"符号包围起来(例如:"kanaka
C.Leng")。 您可以用man mailaddr参考一下相关的帮助页。
2 安装
由于我们已经安装了Debian基本系统,而Debian基本系统里面含有exim和mail这两个软件,所以我们只需要安装这两个:fetchmail、fetchmailconf和qpopper。
#
apt-get install fetchmail fetchmailconf qpopper
其中,fetchmailconf是用来配置fetchmail的工具。
系统会有一些问题提问你。当问你是否以root身份运行system-wide
fetchmail时,答Yes。其他的都选默认值。
3 配置
3.1 配置Debian的hosts
Debian机器上的/etc/hosts文件内容如下:
127.0.0.1 localhost
192.168.1.1 Debian.test.com Debian
192.168.1.2 Notepad.test.com Notepad
3.2 配置exim
在Debian下,这一切都是由eximconfig程序来完成的。
#
eximconfig
程序将问到一些问题,你可以参考下面的回答:
◆ 你的系统是一个Internet主机(选择1,虽然你在局域网。这样你可以发邮件到互联网)。
◆ “显示的邮件域名”为test.com。
◆ 系统有其他的名称吗?你可以回答 Debian:localhost。
◆ 你不想转发任何非本地域的邮件。保持none,按回车。
◆ 你想转发的本地域地址为192.168.1.0/16。
◆ 处理向外转发的邮件的smarthost 地址为 smtp.yeah.net。
◆ 系统管理员的邮件为kanaka(非root)。
3.3 配置Win2000
3.3.1 hosts
在Notepad机器上的c:\winnt\system32\drivers\etc\hosts文件中的内容跟Debian机器中的/etc/hosts文件的内容一样。
127.0.0.1 localhost
192.168.1.1 Debian.test.com Debian
192.168.1.2 Notepad.test.com Notepad
3.3.2 邮件客户端
在Microsoft Outlook Express(或者你在Win2000使用的其他此类的邮件客户程序)。
必须都将Debian输入作为SMTP 邮件服务器和POP3服务器。 在“POP3账号名”和“POP3口令”输入框,
输入用户名ganghua和她在linux下的口令。 输入姓名为ganghua Leng;
电子邮件地址为 ganghua@test.com。
注意电子邮件地址必须以本地域做后面的地址。
4 小测试
通过上述的设置,本地的用户之间应该已经可以实现相互的发送和回复信件了。在Outlook
Express里面的测试我就不说了,我来说一下在Debian上面用mail来做测试。
#
mail kanaka
Subject:
This is my First test-mail!
Hi,kanaka,
This is the first time that I send a mail by exim.
.
Cc: kanaka@yeah.net
#
上面我们给本地的kanaka发了一封邮件,并抄送给了互联网上的kanaka@yeah.net。注意,要结束一封信的内容,在新的一行输入“.”就可以了。我在Win2000上用Outlook
Express就可以收到发给kanaka的信;而发给kanaka@yeah.net的信,我到freemail.yeah.net站点上去,也收到了。
现在test.com已经真正成为了一个具有邮件转发功能的本地域,而且可以发送邮件到互联网上的kanaka@yeah.net。但是,一个格式为From:kanaka@test.com的地址显然是无法被外部用户回复的,
因为对于外部网络来说, test.com是一个不存在的(因而不合法)的域名。因此,我们还需要修改From:的地址。
5 修改 From: 的地址
在往互联网上发送邮件的时候,为了他们可以正确的回复,我们必须把本地的From:地址格式改变成为一个合法的电子邮件地址。
借助于exim的"传送过滤器", 我们可以实现这一功能。
往外部转发的邮件经过这个传送过滤器以后, From:
中的地址就会被改变, 而对于本地邮件则没有什么影响。
下面的过滤器将实现这个恶作剧式的技巧,
首先我们确定我们要改变的地址永远包含在"<>"符号之内。
虽然不能完全保证, 但是通常的邮件程序:mail甚至Microsoft
Outlook Express都是生成这种格式的电子邮件地址。
5.1 创建outfit文件
我们来创建一个文件,/usr/bin/outfit,内容如下:
#!/usr/bin/perl
while (<STDIN>) {
if (/^From: /) {
s/<.*>/<'kanaka@yeah.net'>/;
print "$_"; last;
}
print "$_";
}
while (<STDIN>) { print "$_"; }
把这个文件放到/usr/bin目录中,命名为outfit,不要忘记把上面的电子邮件地址换成你自己的电子邮件地址!
然后,通过下面的命令chmod +x /usr/bin/outfit加上可执行的权限。
#
chmod +x /usr/bin/outfit
5.2 修改exim.conf
打开/etc/exim/exim.conf,找到下面一行:
driver = smtp
在它的下面加上两行,就成了:
driver = smtp
headers_remove = "sender"
transport_filter = "/usr/bin/outfilt"
通过上述对/etc/exim.conf文件的修改,无论何时发送一封电子邮件到本地域以外时,都可以被exim正确的投递了。如果你使用的是拨号网络,那么Exim(通过daild)每发送一次邮件,就会向外拨一次号。而我们公司的宽带24小时在线,所以邮件每次都是直接就发出去了。
6 配置Fetchmail
我们需要运行fetchmailconfig,来在你的主目录里产生一个叫.fetchmailrc的文件,否则你就不能使用fetchmail。
fetchmial将从互联网的邮件服务器上取回邮件(并转交给exim再做本地投递)。
#
fetchmailconfig
fetchmialconf must be run
under X
你看到了吧,它说fetchmialconf这个程序比如在X下面运行。唉!我们要把debian做服务器用,而服务器根本不需要安装X的,我们不会为了配置fetchmail再去安装一个X系统和一个窗口管理器吧!好吧,那么我们就手工写这个文件吧,其实也很简单。
由于我们是要把邮件接收到kanaka在本地的信箱里面,所以应该在kanaka的主目录里面产生这个.fetchmailrc,所以我们切换到kanaka用户,再进行操作:
# su
kanaka
$ cd
$ nano
.fetchmailrc
然后,输入以下内容,存盘退出即可:
set postmaster "postmaster"
poll pop3.yeah.net with proto POP3 user "kanaka@yeah.net" password "kanakapswd"
.fetchmailrc文件可以在不同用户之间相互拷贝,只要把文件的属主设置成相关的用户即可。不过把用户的邮件密码用明码写在这个文件中显然是一种不明智的方式。
或许应该有更好的方法,请大家告诉我啊,呵呵。
然后,使用fetchmail命令来把邮件从互联网上拖到本地来:
$
fetchmail
1 message for kanaka@yeah.net at
pop3.yeah.net (1648 octets).
reading message kanaka@yeah.net@pop3.yeah.net:1 of 1 (1648 octets) .
flushed
然后,你可以在win2000的Outlook Express里面,从本地接收这些邮件。
7 修改exim的投递限制
Exim 缺省的一次投递邮件的最大数量为100封。
你可以根据你们单位的实际情况,修改这个值。如果需要取消这个限制,就把它改为0,不过小心受到攻击:
smtp_accept_queue_per_connection = 0
8 综合测试
你可以在Debian上和Win2000上多发几封邮件,做一下测试。
9 TODO
在下一个版本中,我们将描述如何使用.forward文件,实现转发,把信件正确的投递邮件给某个用户,而不是一下子都发给kanaka。
我们还将描述,如何建立一个webmail系统。
10 结束语
本文是《Debian服务器设置入门》系列教程之第三章,建议您按照顺序阅读,有问题可以和作者kanaka联系。
11 参考文献
本文在开头就声明,本文是在《通过exim建立家庭网络的邮件系统》一文的基础上修改的,作者:Jan
W. Stumpel, Oegstgeest, The Netherlands。
这篇章的地址是:http://211.167.66.225/~yzhao/lg-zh/lg-zh-issue8/stumpel.html
之所以这样,是因为,这篇文章对我们来说太珍贵了,除了她,我没有找到其他关于exim的资料。
非常感谢原文作者,以及翻译者!
《Debian服务器设置入门》系列教程之第四章:Samba服务器
第四章 在Debian上配置Samba服务器
本章目录
1 介绍
2 背景介绍
3 安装
4 小测试
5 快速入门
6 配置
7 测试
8 TODO
9 结束语
10 参考文献
1 介绍
如果某一个单位,他们的桌面计算机必须使用M$
Windows平台的话,那么他们很可能不可避免的需要Windows服务器产品,比如Windows
NT Server或者Windows 2000 Server,甚至Windows 2000 Advanced Server。要知道,要合法的拥有这些服务器的软件(按照微软的所谓许可协议购买连接数)的话,再加上昂贵的硬件费用,可并不是一比小费用。如果有一个途径,可以让你在普通硬件的基础上,免费实现Windows
NT/2000服务器的功能,你说,何乐而不为呢?
——这就是桑巴,一个免费的,强大的,灵活的,轻便的,samba。
2 背景介绍
如果你不是从第一章开始看我的文章,那么我得介绍一下这些情况:
我的有一台安装了win2000的机器,叫做notepad,它属于workgroup这个工作组。
我的Debian GNU/Linux安装在一台普通的台式计算机上,机器名字叫debian,域名叫test.com。
3 安装
3.1 软件版本
由于我们用的sid的sources.list,所以得到的是2.99版+3.0Alpha版的samba。其配置方法与以前版本有些不同。
3.2 安装
安装过程非常简单:
# apt-get install samba
系统会问你,请参考这些答案:
用debconf配置samba吗?Yes。
输入工作组名,或者域名:workgroup。
使用口令加密?Yes。
以什么方式运行samba?我们选择默认的daemons方式,让他在后台监听。
创建samba口令库?Yes。
4 小测试
你也许不相信,但是现在,你已经可以在Windows的网上邻居里面看到这台名字叫Debian的Linux主机了!
找到网上邻居的workgroup组,你会发现她确实已经在那里了。怎么样,振奋吧!
不过,你会发现,无论你输入什么用户名和口令,都无法通过验证。那是因为,我们还没有告诉samba,验证哪些用户和口令。
5 快速入门
Samba只有一个配置文件!
那就是/etc/samba/smb.conf。
下面这个只有几行的smb.conf,就可以让samba为我们工作!
[global]
log file = /var/log/samba/log.%m
[tmp]
comment = Temporary file space
path = /tmp
read only = no
public = yes
6 配置
6.1 检查当前配置
我们的samba现在已经运行了,那么,它正在提供哪些服务呢?如果打开/etc/samba/smb.conf,你可能会觉得内容太多,看不过来了;那好,我们有个命令可以用:testparm。这个命令,可以让我们检查smb.conf的配置是否正确,而且还可以列出一个实际上有效的 smb.conf的内容:
# testparm
通过这个命令,你看到了吧,实际上发挥作用的配置,就是那么几行。
6.2 写一个最小的smb.conf
实际上,为了做实验,我们可以写一个更小的smb.conf,就向上一小节里面提到的那样。那个配置文件,可以让samba把/tmp共享,并且可以往里写文件。
好,我们不妨就采用上面这个文件吧,请你先将/etc/samba/smb.conf改名,比如改为smb.conf.backup,然后把上面的内容抄下来,保存为新的/etc/samba/smb.conf。
记住,要是修改后的smb.conf生效,需要重新启动samba:
# /etc/init.d/samba restart
6.3 创建用户
在我们创建用户之前,没有人能够访问samba服务器,就是说,在windows平台上,无论用什么用户名和口令,都无法访问网上邻居里面的debian这台机器。
我们需要在/etc/samba/目录下面,生成一个文件,名字叫:smbpasswd:
# touch /etc/samba/smbpasswd
然后,使用smbpasswd命令,添加samba用户:
# smbpasswd -a kanaka
New SMB password:
Retype new SMB password:
这时,kanaka就被写进了/etc/samba/smbpasswd文件,kanaka就可以从windows访问samba了。
7 测试
在你的windows里面,找到网上邻居的debian,用刚才创建的用户,访问它,并向tmp目录拷贝一个文件。怎么样,可以了吧。
8 TODO
这是本文的0.1版,纯粹针对初学者的。
在下一个版本,我将详细描述smb.conf的配置方法,来实现WinNT/2000服务器的功能。
9 结束语
本文是《Debian服务器设置入门》系列教程之第四章,建议您按照顺序阅读,有问题可以和作者kanaka联系。
10 参考文献
《Samba 配置》,地址是:http://www.linuxfocus.org/ChineseGB/March2002/article177.shtml
《使用 Linux 和 SAMBA替代Windows NT/2000 服务器》,地址是:http://www.linuxfocus.org/ChineseGB/May2002/article247.shtml
让我们一起感谢原文作者,以及翻译者!
《Debian服务器设置入门》系列教程之第五章:Samba服务器
第五章 在Debian上用Bind配置DNS服务器
本章目录
1 什么是DNS
2 为什么需要DNS
3 BIND介绍
4 配置
5 测试
6 TODO
7 结束语
8 参考文献
1 什么是DNS
初学者可能不理解DNS到底是什么,干什么用。我是在1998年大学毕业时才听说这个词的。那时我在聊天室碰到潍坊信息港的一个网管,我恬不知耻地说我也是个网管,他说也维护DNS吗?我说,DNS是什么?
——DNS,Domain Name Service,或者Domain Name Server,域名服务/域名服务器。
你在你的浏览器里面输入http://www.linuxsir.com之后,之所以可以上去,就是因为有了DNS。
简单地说,DNS把一串名字,转换成了IP地址。你可能会说:如果我直接使用IP地址,那就不需要DNS了吗?对!不过,请你接着往下看。
2 为什么需要DNS
2.1 互联网需要DNS
现在几乎整个互联网都是基于TCP/IP的。在这个世界里,不管你访问哪个网站、哪台机器,必须得知道它的IP地址才可以。好,我告诉你, 202.106.185.203这个地址,是新浪网的IP地址,你每次上网,都得再浏览器的地址栏里面输入http://202.106.185.203 才可以访问新浪。你可能会说:没问题,不就一串数字嘛,我记得住!可是,你想一下,在Internet上,有多少台主机啊!你可能会记住其中几台甚至几十台的IP地址,但是你肯定记不住全部。
正是由于IP地址不好记,人们才想了个办法,让你只需要记住名字,然后系统通过这个名字,到数据库里面去查找它的IP地址,然后再把查到的IP地址反馈给你,比如反馈给浏览器,最后,浏览器用这个由DNS给的IP地址去访问你想去的站点。
2.2 局域网需要DNS
那么,在局域网内部呢?需要DNS吗?
太需要了!你不要觉得,单位就这么几台机器,用hosts解析,不也一样吗?你可千万记住这个教训,当公司越来越大,hosts的维护量将大的惊人!我所在的公司,前不久就面临了这种尴尬。所以,一定要有一台DNS,然后在公司内部定义一个规范的主机命名规则,这才是个好网管,呵呵。
3 BIND介绍
Bind是使用最广泛的Domain Name Server,它是Berkeley
Internet Name Domain Service的简写,伯克里大学编写的。这个大学可真厉害,写了不少著名程序。
原本bind的版本一直在 4.8.x 4.9.x 左右,后来一口气跳到8.1.x,是因为大幅度改进了功能,并修复了漏洞。现在bind有两个版本在同时发展,bind
8.x 和 bind 9.x,最新版本是8.3.3和9.2.1。
3 安装
3.1 软件版本
目前debian的sid,同样提供了8版本的bind和9版本的bind,后者的软件包名字叫做bind9.deb,版本是最新的9.2.1版。
3.2 安装
安装过程非常简单:
# apt-get install bind9
4 配置
由于我们前面第三章在配置邮件服务器的时候,使用了hosts文件来解析IP地址,现在我们需要把它去掉,让系统通过DNS来解析它所需要的IP地址。
我们制作基本的配置。至于高级功能,我们将在本文的下一个版本里描述。
4.1 去掉hosts信息
如果你阅读过本文第三章,你就会知道,我有两台机器,一台笔记本电脑安装了win2000,名字叫notepad;另一台台式机装了Debian,机器名叫debian。他们都属于test.com这个域,这个域名没有在ISP那里注册,是我们内部用的。我分别编辑win2000机器上的\winnt\system32\drivers\etc\hosts这个文件和 debian机器上的/etc/hosts,去掉下面的这些行:
192.1.110.120 debian.test.com debian
192.1.110.122 notepad.test.com notepad
这时你可以在win2000机器上启动Outlook Express,做一下收取邮件的动作,它会说找不到debian.test.com——这就对了,因为hosts文件里面没有指向这个名字的IP地址,而且,我们也没有给win2000指定DNS服务器,所以它肯定找不到debian.test.com。
4.2 在客户机上设置DNS
在我的Win2000机器里面,在桌面上右击“网上邻居”选择属性,在出现的窗口中右击“本地连接”选择属性,然后双击TCP/IP,在右下角的“首选DNS”里面,输入192.1.110.120。这是我的 Debian机器在局域网上的IP地址。如果你用的是win98,那么情况差不多,在一个叫做DNS的标签里面设置首选DNS。我很久不用98了,差不多忘了。
如果你是个急性子,你会发现,诶?怎么设上了DNS了,我的Outlook
Express还是说找不到debian.test.com?呵呵,别急别急,我们的DNS服务器还没弄好呐!
4.3 在Debian上设置DNS
我们要事先把Debian机器的DNS指向它自己。修改/etc/resolv.conf,修改成:
search test.com
nameserver 192.1.110.120
你不会把我的IP地址也抄上吧,呵呵。
4.4 配置DNS服务器
4.4.1 应用环境
我们把实验环境重新描述一下。
◆一个C类网段地址 (本例中假定是192.1.110.0)
◆企业域名为 test.com,没有在ISP注册。(主域名服务器地址
192.1.110.120,主机名为 debian.test.com)
◆企业网通过路由器与Internet连接
假如你的应用环境与上述条件不同,也请往下看,本文会在上述例子的基础上针对以下情况作修正:
◆多个网段
◆封闭的内部网
◆只能访问局部公共网的情况(如169网、上海热线等)
我们将使用一个叫做rndc的工具,rndc可以用于启动、中止、重启动、刷新DNS数据、输出DNS数据等多种调试功能。
4.4.2 配置named.conf
DNS 服务器的主体是域名服务器进程
named ,named 启动后向DNS客户机提供域名解析服务,把域名转换成IP地址。
named 启动时需要读取一个初始化文件,缺省情况下是
/etc/bind/named.conf,这是bind的基本配置文件,不过这里面并不包含DNS数据。
注意,你也许会在网上找到一些教程,这些教程有的是以
bind 4.x为蓝本的,所以它的named.conf里面的注释符号是分号“;”,但是自动bind
8开始,语法变了。下面我们来说一下:
; 这是bind 4.x的注释,前面用分号
//不过从bind 8开始,有三种注释符号可以用:
C样式, C++样式, 或者shell样式:
/* 这是C样式的注释符号 */
// 这是 C++样式的注释符号
# 这是shell样式的注释符号
请你先把默认的/etc/bind/named.conf备份一下,我将给大家写一个简单的named.conf,用于做Caching-only的DNS配置。
// 指定 named 从
/var/cache/bind 目录下读取 DNS 数据文件。
// 这个目录用户可自行指定并创建,指定后所有的DNS
数据文件都存放在此目录下。
options {
directory "/var/cache/bind";
};
// 指定 named 作为 test.com
域的主域名服务器。
// db.test 文件中包含所有 *.test.com
形式的域名转换数据。
zone "test.com" in {
type master;
file "db.test";
};
// 指定 named 作为 192.1.110
网段地址转换主服务器。
// db.192.1.110 文件中包含了所有 192.1.110.*
形式的地址到域名的转换数据。
zone "110.1.192.in-addr.arpa" in {
type master;
file "db.192.1.110";
};
// 指定 named
作为127.0.0网段地址转换主服务器。
// db.127.0.0 文件中包含了 127.0.0.*
形式的地址到域名的转换数据。
//(127.0.0网段地址是局域网接口的内部
loopback 地址)
zone "0.0.127.in-addr.arpa" in {
type master;
file "db.127.0.0";
};
// 指定 named 从
db.cache 文件中获得 Internet 的顶层“根”服务器地址。
zone "." in {
type hint;
file "db.cache";
};
要注意第二和第三个区域中的网段地址是倒写的,另外,各个区域所使用的数据文件的文件名也是可以自行决定的。
请把上面的内容保存为你的/etc/bind/named.conf。
4.4.3 准备数据文件
上面的那个named.conf,相信你已经看明白了。那里面提到,在/var/cache/bind这个目录下面,应该有DNS数据文件db.test、db.192.1.110、db.127.0.0
还有 db.cache。下面我们就要建立这些文件。
4.4.3.1 建立 db.test 文件
根据 /etc/bind/named.conf 的定义,我们在
/var/cache/bind 目录下建立 db.test,其中应该包括所有在 test.com
域内的主机节点。但在机器数量较多时,为了调试方便,建议一开始只把几台节点的数据放入文件,待
named 正常工作后再把其他节点的数据补充进去。下面是 db.test的例子:
@ IN SOA debian.test.com. root.debian.test.com. (
200211131 ; serial, todays date + todays serial #
28800 ; refresh, seconds
7200 ; retry, seconds
3600000 ; expire, seconds
86400 ) ; minimum, seconds
NS debian.test.com.
MX 10 debain.test.com.
; 域名服务器列表
test.com. IN NS debian.test.com.
; 计算机名称和地址
localhost.test.com. IN A 127.0.0.1
debian.test.com. IN A 192.1.110.120
notepad.test.com. IN A 192.1.110.122
; 别名
www IN CNAME debian.test.com.
ftp IN CNAME debian.test.com.
其中第一行是 SOA
记录,定义了域名数据的基本信息,依次是 DNS 服务器名、DNS
管理员邮件地址,括号内的第一个数字是文件版本号,每次本文件内容修改后,必须更改此号。其余数字与DNS服务器直接的数据交换有关,在这里我们不需要改动。
括号后面有一条NS记录和一条MX记录,定义了域名服务器本身的域名和username@test.com
形式邮件地址所对应的邮件服务器名字。
在此以下是各种域名/地址转换数据,其中A记录是DNS域名到IP地址的记录,是必须有的。
CNAME定义了一些主机的别名,比如我们将debian.test.com作为公司的www和ftp服务器,所以我们提供了 www.test.com和ftp.test.com作为debian.test.com的别名,用户只需要根据习惯就可以访问公司的www、ftp服务器了,如果将来我们换用别的主机作www和ftp服务器,只需要修改CNAME记录就可,对用户没有影响。
注意: CNAME 记录最后的带域名的主机名后必须带一个“.”。
复制这个文件到bind的工作目录/var/cache/bind,这个目录是我们刚才在/etc/bind/named.conf里面定义的。
4.4.3.2 建立 db.127.0.0
文件
这是个反向
DNS数据文件。
反向数据文件是这样用的:知道 IP地址,查询主机名。每个网段分别有一个数据文件。
反向 DNS 数据文件中的主要部分是 PTR 记录,PTR
记录中的 IP 地址都只有主机号,named 会根据 named.conf
的定义自动加上前面的网络号,注意后面的主机名要附加一个“.”
对于内部网段 127.0.0 通常只有一个地址,即 127.0.0.1
loopback 地址,db.127.0.0 内容如下:
@ IN SOA debian.test.com root.debian.test.com. (
2002111300 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS debian.test.com.
1 IN PTR localhost.
把这个文件到复制/var/cache/bind目录下面。
4.4.3.2 建立 db.192.1.110 文件
把所有相同网段的主机 IP地址和主机名,都写在里面:
@ IN SOA debian.test.com root.debian.test.com. (
2002111300 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS debian.test.com.
; 所有主机都写在这儿
120 PTR debian.test.com.
122 PTR notepad.test.com.
同样,要把这个文件到复制/var/cache/bind目录下面。
4.4.3.3 建立 db.cache 文件
默认情况下,我们在安装bind9的时候,应该有个文件在/etc/bind/db.root,这个文件就是我们的想要的根的定义。由于我们在
named.conf中指定的文件名是 db.cache,所以我们把它复制为db.cache:
# cp /etc/bind/db.root /var/cache/bind/db.cache
5 测试
我们使用rndc这个工具来控制bind。
5.1 让新配置文件生效
因为我们刚才改了配置,所以,需要重新加载一下:
# rndc reload
然后还需要重新配置一下:
# rndc reconfig
如果有问题,你可以使用debian为我们准备的脚本重新启动bind:
# /etc/init.d/bind9 restart
5.2 在win2000机器上测试
在win2000上(就是我们的notepad.test.com),使用Outlook
Express,收发邮件。
看,正常了吧!证明,我们的win2000通过192.1.110.120这台DNS服务器,找到了debian.test.com这台机器的IP地址了。
5.3 测试工具介绍
在debian上,我推荐大家使用dig或者host来测试DNS设置,因为nslookup快要退休了,以后版本的软件可能不再提供nslookup这个工具了。要使用这些工具,需要安装dnsutils:
# apt-get install dnsutils
然后,就可以使用dig来测试DNS了:
# dig -x 192.1.110.120
第一次运行,可能比较慢,别着急,等一会。
6 TODO
这是本文的0.1版,纯粹针对初学者的,仅仅实现了最普通的功能。
在下一个版本,我将深入讲解DNS的设置。
7 结束语
本文是《Debian服务器设置入门》系列教程之第五章,建议您按照顺序阅读,有问题可以和作者kanaka联系。
8 参考文献
《在Linux上建立DNS服务器》,曹江华,2001年12月27日。地址是:http://www.ccidnet.com/html/tech/os/2001/12/27/92_3895.html
让我们一起感谢原文作者