DNS中的MX记录说明了示例配置
电子邮件已经成为我们生活中的重要组成部分,因此,无论员工从事何种工作,员工通常将其30%的时间都花在阅读/发送电子邮件上。
有时我觉得检查电子邮件太频繁确实会影响工作效率(可能是因为它确实使我们偏离了当前的工作)。
关于此电子邮件的另一件有趣的事是,其中只有一半对接收电子邮件的人很重要。
每天发送的电子邮件估计高达1550亿个。
每天要交换大量邮件(我相信70%或者更多的邮件是垃圾邮件或者不需要的AD电子邮件)。
之所以谈论这些有关电子邮件的统计信息,是因为我们将在本文中讨论该主题。
我们将讨论一种重要的底层技术(当我说底层技术时,不要以为这种底层事物仅用于电子邮件。
我必须说一门重要技术的主要组成部分,它使电子邮件能够正常工作要求我们每个人在发送和接收电子邮件时有意或者无意地使用。
在本教程中,我们将讨论MX记录。
在深入了解配置细节之前,让我们了解一下向他人发送电子邮件时会发生什么情况。
DNS,就是为此目的启用电子邮件或者Internet的基础技术(我必须说一种基础技术)。
DNS位于互联网的核心。
我的理解是,如果我们详细了解DNS及其组成部分,我们将了解互联网的工作方式。
计算机如何到达所需的目的地。
如果我们是系统管理员,请在BIND中查找有关DNS区域文件的配置详细信息。
如果我们对了解区域文件及其内容感兴趣,则可以在下面的帖子中找到一些启示。
阅读:绑定DNS区域文件说明
因此,让我们回到我们的主题,即当我们向某人发送电子邮件时会发生什么...
SMTP(简单邮件传输协议)是管理Internet上所有邮件服务器的协议。
因此,如果我们想向某人发送电子邮件,则需要与该人的SMTP服务器对话(基本上,域的SMTP服务器将在发送电子邮件时与接收方SMTP服务器对话)。
下面提到的通常是发送EMAIL时发生的步骤。
步骤1:我们使用自己感兴趣的电子邮件客户端编写邮件。
电子邮件客户端可以是安装在计算机上的应用程序(例如MS Outlook,Mozilla Thunderbird),也可以是基于Web的电子邮件客户端(例如gmail.com,yahoomail等)(当我说基于Web的邮件客户端时,所有这些都是我们使用网络打开的浏览器,以接收和发送电子邮件)。
电子邮件客户端有时称为MUA(邮件用户代理)。
在讨论电子邮件时,我们经常会遇到这个术语。
如果我们使用的是Thunderbird或者Outlook之类的应用程序,则可能已经知道需要提供以下内容进行配置,以便可以发送和接收电子邮件。
- SMTP服务器和端口(用于发送电子邮件)
- IMAP(Internet邮件应用协议)/POP(邮局协议)服务器和端口(带有用户名和密码。用于接收电子邮件)
步骤2:在首选电子邮件客户端的帮助下编写电子邮件之后,电子邮件客户端将连接到SMTP服务器(在配置电子邮件客户端时提供的配置)。
假设SMTP服务器是mail.example.com。
一旦电子邮件客户端连接到mail.example.com SMTP服务器,它将把我们刚撰写的邮件转发到该服务器。
所有SMTP服务器(无论哪种服务器)在发送电子邮件时都可以理解一组特定的命令。
因此,当邮件客户端将邮件转发到SMTP服务器时,它将在这些定义明确的命令的帮助下提供我们编写的整个邮件。
SMTP服务器也称为MTA邮件传输代理(因为它是该组件,它负责接收邮件并将其传输到所需的收件人SMTP服务器)。
MTA或者SMTP服务器在默认端口25上运行。
因此,电子邮件客户端基本上要做的就是连接到SMTP服务器上的该25端口,并运行定义明确的命令集来发送电子邮件。
步骤3:现在,SMTP服务器(电子邮件客户端已连接到该服务器并转发了邮件),将尝试查找并找到收件人的SMTP服务器。
使用DNS查询完成此查找。
与发生的情况类似,当我们在Web浏览器上键入url(浏览器将发送DNS请求以解析我们键入的IP地址)时,SMTP服务器将执行DNS查询以获取SMTP服务器。
接收者。
假设我们要发送电子邮件至[email protected]。
在这种情况下,SMTP服务器将尝试查找负责域example.com的SMTP服务器,并将消息传递给用户x。
由SMTP服务器完成的DNS查找,以查找接收方SMTP服务器,以及目标域的DNS服务器如何答复查询(以及如何配置查询),这是本教程中我们关注的主要主题。
SMTP服务器查找的DNS记录类型称为MX记录。
一旦SMTP服务器使用MX记录查找找到目标接收者SMTP服务器,它将把邮件转发到该服务器(通过Internet)。
然后,SMTP服务器将邮件转发到负责该域的POP或者IMAP服务器(以便目标用户可以连接到POP/IMAP服务器并提取邮件。
)
如前所述,我们将不详细讨论SMTP,POP,IMAP,因为本文更着重于MX记录。
什么是DNS中的MX记录?
通过上面的讨论,我们可能已经了解了MX记录的实际含义。
域名系统(DNS)具有几种类型的资源记录,这些记录完全填充了名称到IP地址的转换(直接或者间接)。
最常用的资源记录如下。
- 记录(IP地址)
- CNAME记录(名称的规范名称。)。参考:DNS中的CNAME记录及其使用
- NS记录(用于指定负责该域的DNS服务器)
- PTR记录(用于反向查找)
类似于DNS中的上述资源记录,MX记录用于指定特定域的邮件服务器。
用简单的语言来说,一条MX记录应该返回电子邮件服务器的完全限定域名及其首选项值(我们将在一段时间内讨论有关此首选项值的更多信息。
)。
因此,在继续进行详细介绍之前,请记住以下两点。
- MX记录不具有更改邮件服务器端口号的功能(它将仅提供邮件服务器的名称,以便发送MTA SMTP服务器可以在默认端口号25上与其建立连接)。
- MX记录不提供以加权方式将流量分配到多个邮件服务器的功能。它仅提供在向域发送电子邮件时应尝试的邮件服务器的优先级。这意味着发送MTA尝试连接的顺序。
在我们的配置示例中,我们将使用BIND(目前使用率很高的DNS服务器之一)配置文件。
不要与我们在其他地方已经看到的配置相混淆,因为BIND区域文件提供了太多的快捷方式(它提供了多种方法和快捷方式来实现相同的结果)。
DNS区域文件中的MX记录是可选的资源记录。
这意味着,如果我们不为域提供电子邮件服务,则可以完全省略此记录。
它是可选的资源记录,不是强制性的。
$TTL 1h $ORIGIN example.com. @ IN SOA ns1.example.com. admin.example.com. ( 2014062401 12h 15m 2w 2h ) IN NS ns1.example.com. 1w IN MX 10 mail.example.com. ns1 IN A 10.0.0.23 mail IN A 10.0.0.24 www IN A 10.0.0.27
如前所述,如果我们是DNS的新手,则以上区域文件的内容可能会令人困惑。
因此,在继续之前,我建议我们阅读以下教程,以获取有关区域文件的基本概念。
阅读:BIND Dns区域文件的内容解释
现在,上面显示的example.com域文件中的MX记录如下所示。
1w IN MX 10 mail.example.com.
格式为ttl类rr首选项名称
1w:我们的MX记录为TTL。
这意味着缓存输出的任何SMTP服务器或者任何DNS客户端都只能将其缓存到一周。
在此缓存过期1周后,DNS客户端应再次从域的DNS服务器重新获取它。
如果我们不提供此ttl值(可以是300、1h,2h,1w,2w等),则我们的MX记录将采用默认的ttl值1h(在示例区域文件的开头提到了此值) )
任何资源记录,无论是什么内容,无论其开头是否具有自己的TTL值,都将采用区域文件的默认TTL值(通常在区域文件的开头提到)。
MX:资源记录的类型。
当我们为域(example.com)指定邮件服务器时,我们将在此处使用MX(因为它是MX记录)。
10:此MX记录的首选项值。
较低的数字表示较高的偏爱。
mail.example.com .:我们的邮件服务器的FQDN。
该FQDN在区域文件(如果它属于同一区域的一部分)中应具有A记录。
这就是我们在上面显示的example.com区域文件中为mail.example.com保留A记录的原因。
如果它不是同一区域的一部分(例如,我们为邮件服务器指定了mail.example.net或者mail.anything.com之类的名称),则该名称应该可以从外部解析为IP地址(A记录)。
现在,让我们看一下带有MX记录的区域文件的另一个示例。
$TTL 1h $ORIGIN example.com. @ IN SOA ns1.example.com. admin.example.com. ( 2014062401 12h 15m 2w 2h ) IN NS ns1.example.com. 1w IN MX 10 mail.example.com. IN MX 20 mail2.example.net. ns1 IN A 10.0.0.23 mail IN A 10.0.0.24 www IN A 10.0.0.27
在上面显示的示例中,我们对example.com域的MX记录如下。
1w IN MX 10 mail.example.com. IN MX 20 mail2.example.net.
因此,我们现在有两个邮件服务器,将负责接收域example.com(mail.example.com和mail2.example.net)的邮件。
mail.example.com是我们域example.com的一部分。
但是mail2.example.net不属于我们区域(属于example.net)。
因此,我们的区域文件中没有mail2的A记录。
如果我们的第二条MX记录类似于mail2.example.com,那么我们需要为mail2主机提供一条A记录(否则它将如何解析为IP地址)
在上面显示的示例中,mail.example.com的优先级号为10,而mail2.example.net的优先级号为20。
这意味着所有将邮件发送到example.com域的SMTP服务器都将首先尝试连接到mail.example.com(因为它具有较低的首选项号),并且如果未成功连接到它,则它将尝试使用mail2.example.net(因为它具有较高的首选项号)。
请记住。
.较低的优先级数字意味着较高的优先级,而较高的优先级数字意味着较低的优先级。
MX记录中的首选项编号
关于MX记录首选项编号,要记住的最重要的事情是...
首选项编号可以介于0到65535之间的任何值
选择任何有关DNS的书,我们将看到10的倍数的值,例如10表示较高的优先级,然后20表示较低的优先级,而30表示进一步的较低优先级,依此类推。
为什么遵循此约定?
使用优先级为10的高优先级邮件服务器的主要原因是,稍后,我们可以在DNS区域文件内添加另一个服务器,其值小于10(例如8、9或者其他任何值)。
如果较早的邮件服务器发生问题,这使我们可以再次修改高优先级的邮件服务器。
无需触摸任何其他MX记录就可以完成所有这些操作。
意味着只需去往带有新邮件服务器的另一个MX记录添加一个优先级为9的新邮件服务器(保持其他记录不变)。
这是唯一合理的参数,因为习惯上要求MX记录优先级数字从10开始。
使用MX记录的邮件服务器负载平衡
我们确实看到较低的优先级数字意味着较高的优先级。
现在,如果两个MX记录具有相同的优先级数字10,该怎么办?
在这种情况下,它们都具有相同的优先级,但这取决于客户端SMTP服务器。
所有主要的SMTP服务器(例如Sendmail,Postfix)都将在具有相同首选项号的MX记录之间进行随机选择。
这样的区域文件的示例如下所示。
$TTL 1h $ORIGIN example.com. @ IN SOA ns1.example.com. admin.example.com. ( 2014062401 12h 15m 2w 2h ) IN NS ns1.example.com. 1w IN MX 10 mail.example.com. IN MX 10 mail2.example.net. ns1 IN A 10.0.0.23 mail IN A 10.0.0.24 mail2 IN A 10.0.0.29 www IN A 10.0.0.27
我们可以使用DNS来实现邮件服务器负载平衡的另一种方法是让多个服务器具有不同的IP地址,以接受域的邮件。
假设我们有两个邮件服务器10.0.0.33和10.0.0.34,它们都可以接受example.com域的邮件。
现在,如下所示配置DNS和MX记录,以实现它们之间的负载平衡。
$TTL 1h $ORIGIN example.com. @ IN SOA ns1.example.com. admin.example.com. ( 2014062401 12h 15m 2w 2h ) IN NS ns1.example.com. 1w IN MX 10 mail.example.com. ns1 IN A 10.0.0.23 mail IN A 10.0.0.33 mail IN A 10.0.0.34 www IN A 10.0.0.27
在上面显示的示例中,我们只有一个MX记录,优先级号为10.
但是,我们有两个物理服务器,它们都将解析为mail.example.com。
这将适用于简单的DNS循环负载平衡。
我们看到,如果与主服务器的连接不成功,则SMTP服务器将尝试第二个优先级的邮件服务器(由MX记录报告给接收者域)。
但是,这完全取决于发送者使用的SMTP服务器。
例如,仅当根本无法访问较高优先级的邮件服务器时,某些SMTP服务器才会尝试较低优先级的MX记录。
有关DNS中MX记录的一些重要注意事项
- 仅当我们拥有多个MX记录时,DNS MX记录中的首选项编号才会显示出来。否则,将首选具有任何首选项号的单个MX记录
- MX记录的首选项编号的最小值可以为0到65535
- 如果邮件主机(我们添加为MX记录的FQDN)在区域内(例如,区域是example.com,而邮件MX记录是mailserver.example.com)。然后,邮件主机必须具有A记录。
- MX记录永远都不要指向CNAME。