MX记录
邮件交换记录 (MX record)是域名系统(DNS)中的一种资源记录类型,用于指定负责处理發往收件人域名的邮件服务器。MX记录允许设置一个优先级,当多个邮件服务器可用时,会根据该值决定投递邮件的服务器。简单邮件传输协议(SMTP)会根据MX记录的值来决定邮件的路由过程。
概述
资源记录是域名系统(DNS)的基本信息单元,它们由“记录类型”(例如A,MX,NS等)和“DNS类”(例如Internet,CHAOS等)来加以区分。每条记录都拥有一个有效期(TTL,time-to-live),每当这个时间耗尽后,它们所包含的信息必须从一个权威的名称服务器上进行更新。DNS中的资源记录是按照名称字段组织的,即DNS树中一个节点的完整网域名称 (FQDN)。而对于MX记录而言,这就是收件人的电子邮件地址的域名部分,即@后面的部分。也就是说,对于someone@example.com这个电子邮件地址,example.com会用做MX记录的查询。
MX记录中的資訊必需為「完整網域名稱」和「優先序值」。而其網域名稱必須能够對應到一個或者多個DNS中类型为A或者AAAA的地址记录, 且根据RFC2181,原则上禁止指向CNAME记录。此外,MX記錄不能直接設定為A或AAAA記錄來對應IP位址,這是DNS管理者常見的錯誤。[1]
当通过互联网发送电子邮件时,发送方的邮件传输代理(MTA,Mail transfer agent)将会向DNS发送请求,查询每个收件人的邮箱域名的MX记录。这个请求将会返回可以接受发往该邮箱域名的邮件交换服务器的列表,以及它们的优先级。接下来,发送方的传输代理将会尝试和这些服务器建立SMTP连接。
MX记录的机制允许为一个邮件域名配置多个服务器,并且允许管理员通过优先级指定尝试连接他们的先后顺序。这对于配置由多个邮件服务器构成的高可用性集群是非常有用的。
MX记录的机制无法改变邮件服务使用的端口号,也无法以不同优先级为权重来将邮件分发给不同的邮件服务器。但是,可以通过指定相同的优先级来将邮件等可能性地分发给多个邮件服务器。[2]
MX的偏好,距離和優先次序
根據RFC 5321, 越小的數字代表越高的優先次序[3]。這個字眼可能會令人困惑,所以“偏好數字”應該被視為“距離”為佳:更短的距離為更可取。早前的RFC(RFC 974)指出,當兩個服務器的首選號碼相同時,它們具有相同的“優先次序”,因此這兩個術語可以互換使用的。
備份MX
一個“目標伺服器”,即是通常是最優選的一個知道如何發送給相關用戶電子郵箱的伺服器。其他較低優先次序(數字較大的)的服務器,又名為“備份MX”或“次要MX”,通常將訊息保存並等待主服務器可用的時候再提取。 如果兩台服務器都在線或以某種方式相互連接,則備份MX通常只會短暫性地存放訊息,並立即將其轉發至主MX的伺服器上。備份MX多數只為充當存儲和轉發的郵件服務器。
優先次序
郵件會傳遞到以最小優先編號(最高優先級)的郵件交換伺服器,因此用於郵件傳遞的MX記錄應該具有最小的優先編號,通常為0。 例如使用0作為郵件路徑記錄,並使用10作為驗證您擁有您的域名。MX優先次序決定服務器應該被聯絡的順序(假設有多個服務器並具有不同的優先次序):最優先的服務器(以及最小優先編號)將首先被嘗試聯絡。基本上在DNS記錄中都會顯示其優先編號,但有時也會錯誤地標記為“優先”。
關於MX優先次序的一個常見的誤解是,它旨在增加郵件傳遞的可能性,但只有具備相同首選優先次序的MX伺服器才能提供此優勢,因為MX優先次序規定某些服務器應該首先被嘗試聯絡。 MX優先次序的另一個常見誤解是,為伺服器負荷過量情況下的“故障轉移”方法。雖然也可以這樣使用,但這是一種不好的資源管理技術,因為它故意造成過載,並沒有充分利用可用的硬件。只要為所有的伺服器分配相同的優先次序也一樣可以做的到,甚至可以幫助避免負荷過量情況,從而減少延遲來提高系統速度。
SMTP協議建立一個存儲轉發網絡,如果某個網域的所有郵件伺服器都處於離線狀態時,那麼發送郵件伺服器將會對發送往該網域的郵件進行排隊,以便稍後重試。但是,這些伺服器無法得知該網域早前離線伺服器的線上狀況。發送郵件伺服器只有在下次嘗試再傳送時才會發現該域是可用的。發送郵件伺服器的發送時間與最終抵達目的地伺服器之間的延遲時間可能由幾分鐘到幾天之間不等,這取決於發送服務器的重試排程。這才是唯一利用備用MX的解決辦法。這個方法就是利用次要MX伺服器外帶數據的方法得知主伺服器恢復上線的時間。因此,當主服務器離線時,訊息將會發送比在發送伺服器排列重新嘗試發送時有更好的地方。
以下列出一些不能或者不應該把備用的伺服器設為同等的優先次序的原因:
- 備用伺服器的擁有人不同於主伺服器
- 備用伺服器不能直接存取到主要郵件位置
- 備用伺服器不能分辨有效的收件人地址
- 備用伺服器的流量成本較高
- 備用伺服器有明顯的頻寬速度問題
- 備用伺服器的頻寬有高延遲的問題
参考资料
- RFC 2181, Section 10.3, Clarifications to the DNS Specification, R. Elz, R. Bush (July 1997)
- HOWTO - Configure Round Robin and Load Balancing (页面存档备份,存于), Page modified: February 28 2014., zytrax.com
- RFC 5321