Linux下架设自己的DNS(上)(7)

完成后﹐再建立 /var/named/siyongc.domain 这个档案﹕

$TTL 86400
$ORIGIN siyongc.domain.
@ IN SOA rh71.siyongc.domain. root.rh71.siyongc.domain. (
2001111601 28800 14400 3600000 86400 )
IN NS rh71.siyongc.domain.
IN NS lp64.dmz.domain.
IN MX 10 rh71.siyongc.domain.
IN MX 20 lp64.dmz.domain.

;; -- default address
@ IN A 192.168.100.23

;; -- linux servers --
rh71 IN A 192.168.100.23
IN MX 0 rh71.siyongc.domain.
IN MX 10 lp64.dmz.domain.
IN HINFO "Petium II 266""RedHat 7.1"
IN TXT "The internet gateway."

mdk IN A 192.168.100.24
IN MX 0 mdk.siyongc.domain.
IN MX 10 rh71.siyongc.domain.
IN HINFO "Petium II 266 dell""Mandrak 8.0"

;; -- Windows desktops --
acer IN A 192.168.100.20
IN MX 0 mdk.siyongc.domain.
IN HINFO "Petium III 800 acer""Windows ME"

emilie IN A 192.168.100.11
IN MX 0 mdk.siyongc.domain.
IN HINFO "Petium II 300""Windows 98"

;; -- cnames --
gw IN CNAME rh71
www IN CNAME rh71
ftp IN CNAME rh71
mail IN CNAME rh71


这裡﹐我们在正解记录档裡面看到几个新的记录类别﹐或许需要进一步讲解一下的﹕

因為我这个区域的记录分别由两台主机负责﹐所以我这裡指定了两个 NS 记录。这裡﹐如果您确定上一个 ORIGIN 是正确的话﹐那也可以偷懒﹕正如我上面解释过﹐如果名称后面不是以“.”结尾的话﹐它所属的 ORIGIN ( @ ) 就会自动的加在该记录名称后面﹔所以﹐您可以只写“ rh71 ”而不带小数点结尾﹐就会变成“rh71.siyongc.domain.”了﹐这个名称实际就是我所要的。不过﹐我建议您在设定 NS 的时候还是儘量使用 FQDN 為好。

接下来的 ‘ MX ’ 记录恐怕要花些时间解析﹕


MX 记录

MX 是‘Mail eXchange’的意思﹐它指定了负责该记录项(可以為 domain 也可以是 host )的邮件伺服器名称(最好使用 FQDN )﹐而且该名称必须是一个 A 记录(不建议使用 CNAME )。

在邮件系统中﹐只要邮件伺服器双方都知道对方的 IP 就可以进行邮件交换了。我们用 /etc/hosts 也可以做到名称查询的目的﹐但正如我们可以想像的﹕ineternet 有那麼多邮件伺服器﹐我们不可能一一為它们建立好 IP 对应。就算﹐我们可以这样做﹐如果对方要更换邮件伺服器呢﹖要维护这样一个对应殊非易事。既然﹐我们可以用 DNS 来查询主机和 IP﹐為什麼不使用这麼便利的系统呢﹖这也是 DNS 系统的应用原因啊~~~ 但问题是﹐各区域的邮件伺服器名称都不一样﹐我们不可能知道对方的邮件伺服器主机名称是什麼﹖就算知道﹐如果对方以后更换名称呢﹖

您看﹐即使我们使用了 DNS 系统来进行邮件路由﹐也不是这麼简单的事情。但是﹐使用 MX 记录就大大发挥了 DNS 系统的功能了﹕我们只要為每一个区域建立起 MX 记录﹐利用 DNS 查询得到的邮件伺服器名称(邮件路由查询中﹐DNS 只是其中一种方法)﹐这样﹐当邮件伺服器要和对方的区域进行邮件传递的时候﹐就可以通过 MX 记录得到对方的邮件伺服器名称﹐而不需预先知道要和哪台邮件主机沟通。在日后﹐就算对方更换名称﹐将 DNS 记录改改就可以﹐完全无需知会其它邮件主机﹔而外面的邮件伺服器也根本无需认知到这个改变。

这样的设计﹐无疑是非常灵活便利的﹗另外﹐使用 MX 还有一个功能﹕您可以用多个 MX 同时指定好几台邮件伺服器名称﹐从而提供备援或平行处理服务。在我这个例子中﹐我就分别為‘siyongc.domain’这个区域指定了两个 MX 记录﹕‘rh71.siyongc.domain.’和‘lp64.dmz.domain.’。但您有没有发现它们前面都有一个数字呢﹖这数字有什麼作用啊﹖

问得好﹗当外面的邮件伺服器通过 DNS 查询到我们的邮件伺服器﹐如果发现超过一台主机负责邮件交换的话﹐数值越低的就越先被查询。但有时候该主机没有回应呢﹖那麼就由下一个数值的主机负责了。这样有一个好处就是﹕就算第一台邮件伺服器出现故障﹐也不至於导致邮件交换功能瘫痪掉。我们通常会将各自的 MX 主机儘量分佈在不同的位置上(例如别的城市或国家的分公司主机)﹐假如万一发生专线﹑甚至 ISP 的问题﹐我们还能将邮件转往下一台 MX 主机。然而﹐在设计上﹐由於帐号和 client 端的设定因素﹐我们的邮件并非真的完全转到下一个 MX 主机接收﹐而是先将邮件暂时佇列( queue ) 在那台机器上﹐当原来的 MX 主机恢复连线之后﹐邮件会自动的从佇列主机那边送回来﹐这样就能避免邮件丢失或被退信。


Tips﹕虽然﹐我们通常喜欢用‘10’﹑‘20’﹑‘30’.... 这样的偏好值( preference ) 来分配 MX 记录﹐但只要您喜欢﹐用‘1’﹑‘2’﹑‘3’... 这样的顺序一样可以。不过﹐我建议您还是使用惯例啦。

现在很多大型邮件系统﹐都可以同时使用多台邮件主机来提供邮件交换服务﹐这时候您可以将 MX 的 preference 设為相同﹐然后利用 NIS 和 NFS 服务﹐将邮件同步到相同的帐号去。您已经在前面的章节裡面学会了 NIS 和 NFS﹐等日后学习邮件主机架设的时候﹐不妨玩玩看﹗


或许﹐您还发现我这裡為所有主机指定了 MX 记录﹐有些直接指向自己(如 rh71﹑mdk 等)﹐而有些则指向别的机器(如 lp64﹑acer 等)。在 Linux 机器上面﹐各主机本身就具备邮件交换功能(除非您将之移除了)﹐而 Windows 则除非额外加装﹐否则本身是没有邮件交换功能的。这裡的设定是﹐从外面通过 DNS 查询而寄往那些主机的邮件﹐都会转到 MX 上面指定的邮件伺服器。这在实际的网路环境中很常见﹐尤其您接触过“ mail hub ”这个概念。无论如何﹐我建议您应该帮负责 domain 的邮件伺服器本身设定一个偏好值最低的 MX 记录指向自己(但这不是硬性必须如此的)。

linux

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wyxgxg.html