發信原本很簡單。TCP就是爲了這個目的而設計的。但它只能完成機器級別的收發信,不能完成業務級別的收發信。由於收信方在發信方發信時不必定在線,因此必須引入緩衝機制。結果就是郵件服務器的產生。服務器
說郵件的時候,必定要注意,說的是業務,用戶級別的郵件。或者說咱們大腦中的郵件。不是指郵件服務器要發的郵件。若是這麼理解的話,有些概念會理不清楚。spa
象smtp.163.com與mail.qq.com這樣的地址,只是尋址用的。用來尋找發信與收信的主機IP。既然有了尋址,有了緩衝,整個發信過程應該已經沒有問題了。爲何還要引入MX記錄呢?設計
由於收方可能有多臺收信機器,或者就算是一臺,也就是說,就算只有一個IP地址,它仍然存在一個發佈的問題。域名
可是DNS自己已是一個發佈系統,它經過域名發佈主機。只是這種發佈,只能發佈主機,一樣地,不能完成業務級別的發佈。也就是說,它不能完成郵件做爲一種業務與其它全部業務的區別發佈。單獨設計MX的目的是爲了將郵件發佈從其它一切業務發佈(其實DNS原本並不假設業務,只假設「DOMAIN」即域。至於「域」上面的業務,它並不區分)中獨立出來。im
從這個意義上講,DNS是具備必定業務區別能力的發佈系統。由於它至少區分了郵件業務與其它業務。qq
綜上,今天的電子郵件核心系統,實際上是由三部分組成的:協議
1,發與收信協議;mail
2,發與收信「服務器尋址」;co
3,郵件「業務尋址」。smtp
也就是說,有兩個層次的尋址。一是找機器,一是找服務(指郵件服務)。
服務器尋址是爲了完成核心繫統與用戶端的對接。業務尋址是爲了完成在DNS系統中的業務發佈(由於DNS本質上只是一個名稱式發佈系統,不能提供業務級別的語義)。
也就是說,MX記錄是在DNS系統中提供郵件業務尋址的一個子系統。是DNS系統的業務化。
關於DNS系統到底要不要業務化,回答是否認的。論據則是今天如此衆多的業務種類所有運行在原來那個簡單的DNS系統中,並無碰到任何問題。那麼郵件業務是如何獲得它的特殊性的呢?
由於它是一種域相關的業務。而域自己就是在DNS系統中定義的,因此最方便的發佈域業務的地方及時機就變成了域系統。在這個階段作業務發佈的成本最低。在任何以後的階段再去作這個事情,成本顯然高昂不少。