国产一级一区二区_segui88久久综合9999_97久久夜色精品国产_欧美色网一区二区

掃一掃
關注微信公眾號

揭秘Postfix郵箱服務器高性能背后的秘密
2008-11-14   IT專家網

郵箱服務器是企業應用的最廣泛的信息化應用之一。現在企業中,十有八九都有郵箱服務器,而其中大部分企業郵件服務器又都是部署在Linux系統上的。因為基于Liunx的郵箱服務器系統,可以提供比較高的穩定性,而且又是免費的。所以,這兩個組合,就比較受企業的歡迎。

  在Linux操作系統上,可以部署的郵箱服務器種類比較多。如現在比較流行的有Sendmail郵箱服務器、Qmail郵箱服務器、Postfix郵箱服務器等等。不過筆者還是比較傾向于Postfix郵箱服務器。因為這個服務器比其他兩個服務器來說,具有更高的性能。筆者對這個郵箱服務器研究的比較深;也曾給多家企業部署過這個郵箱服務器。所以,非常了解這個郵箱服務器高性能背后的技術優勢。或許經過筆者的一番介紹之后,大家也會越來越中意Postfix郵箱服務器。

  秘密一:利用Deferred對列巧妙應付郵件風暴問題。

  在Postfix郵箱服務器中,是通過四個對列來管理郵件的。一是Maildrop對列,主要用來存放本地郵件,同時這個對列中的郵件也會被同步復制到Incoming對列中。二是Incoming對列,主要用來防止正在到達或者隊列管理進程未發現的郵件。三是Active對列,這個對列主要用來防止隊列管理進程已經打開并準備投遞的郵件,這個隊列往往具有長度的限制。四是Deferred隊列,往往郵箱服務器會把暫時不能夠發送的郵件存放在這個隊列中。Postfix郵箱服務器就是通過這四個隊列來應付郵件風暴的問題。

  當有新郵件到達時,Postfix郵箱服務器會先對自身進行初始化,初始化時Postfix郵箱服務器會同時接受兩個并發的連接請求(這個數字會隨著實際情況的變化而增長)。一般情況下,當郵件發送成功后,可以同時接受的并發連接的數據就會緩慢的增長至一個可以配置的值。不過,如果此時系統的硬件、軟件消耗已經達到系統的警戒水平的時候,系統就會停止自動增長。

  當郵箱服務器接受到的新郵件數量超過Postix郵箱服務器的處理能力,這就叫做郵件風暴。當出現這個郵件風暴的時候,Postix郵箱服務器會暫時停止去投遞Deferred隊列中的郵件,而是先去處理新接收到的郵件。因為相對來說,處理新接收的郵件要快的多,郵件的延遲要小于處理Deferred隊列中的郵件。當郵件風暴過后,Postix郵箱服務器空閑的時候,再回回去處理Deferred隊列中的郵件。如此的話,就可以減少郵件風暴對于接收郵件的影響。讓用戶在郵件風暴的過程中,仍然可以正常的接收郵件。

  秘密二:存儲不可到達的郵件地址,提高郵件分發的效率。

  有時候由于用戶無意中會輸錯郵件接收方的地址,又或者說,對方的郵件地址已經注銷等等原因,某些郵件始終無法發送到對方。這些郵件地址,就叫做郵件不可達。為了防止郵箱服務器多次嘗試向這些不可達的地址發送郵件,浪費了不必要的時間與資源。所以,Postix郵箱服務器會在服務器的內存中保存一個有長度限制的當前不可到達的郵件地址列表。

  若用戶發送的郵件地址在這個列表中,Postix郵箱服務器就會避免對這些地址進行多次的郵件發送嘗試,而直接返回郵件不可達的信息,從而大大的提高了系統的性能。

  不過,在使用這個功能的時候,需要注意幾個問題。

  一是這個郵件不可達地址列表是保存在服務器的內存中,而不是像其他配置文件,是存放在服務器的硬盤上。這就導致當服務器因為意外重新啟動的時候,內存中的這份郵件地址不可達列表會丟失。所以,所有時,當郵箱服務器重新啟動后,會明顯感到這個數據庫性能有所下降。等到運行一段時間后,性能反而會有所提升。這就使這個“內存中的郵件地址不可達列表”在其作用。

  二是這個郵件地址不可達列表有長度限制。具體多少長度,則會根據用戶的配置與服務器的資源不同而不同。當達到規定的長度是,則會根據先進先出的原則,把第一個進入這個列表的成員排除出去。這就可以保障,因為對方郵箱服務器一時的故障而造成郵件不可達的問題。

#p#副標題#e#

  秘密三:延遲暫時無法投遞的郵件,把資源用在刀刃上。

  在郵件發送的過程中,各種原因都會造成郵件暫時無法投遞。如對方郵箱已經滿了,或者對方的郵箱服務器出現了通信故障等等,都可能導致郵件的暫時不可達。若能夠合理的處理這個狀況,則對提高郵箱服務器的性能也具有一定的幫助。

  而Postix郵箱服務器,則是通過“時間郵票”的形式來處理這種暫時不可達的情況。當一封郵件第一次不能成功投遞給對方時,Postix郵箱服務器會給這封郵件貼上一個表示將來的時間郵票。而郵件隊列管理程序在處理的時候,發現一封郵件被貼有“時間郵票”,則會忽略它的存在。如此的目的,就是為了最快的處理那些可以達到的郵件,把資源用來刀刃上。

  當這個時間郵票到期的時候,Postix郵箱服務器會嘗試對這封郵件再次進行一次發送。若此時成功了,郵件就發出去了。相反,若不成功的話,則Postix郵箱服務器會再次給這封郵件貼上“時間郵票”。只是,此時這個郵票的過期時間要比第一次的過期時間長整整的兩倍以上。等到這個時間到后,原來的時間郵票就會作廢,Postix郵箱服務器會重新發送這封郵件。

  最后的結果只有兩個。一是郵件成功發送了,二是嘗過了若干次的機會之后,郵件還是不能夠發送出去,郵箱服務器就會放棄發送這封郵件。并把這封郵件的接收者地處存入到上面所講的內存中的郵件地址不可達列表;并會返還一個錯誤信息給發件人。當下次用戶再次發送這個郵件給用戶時,郵箱服務器可能就直接拒絕了,以提高郵箱服務器的整體性能。

  秘密四:本地郵件與外來郵件不同進程分工合作。

  郵箱服務器接收的郵件從廣義上來說,可以分為兩類。一類是本地郵件,也就是郵箱服務器內部帳戶的互發,一般就是員工發給員工。第二類是來自于網絡的郵件,也稱外來郵件,如來自于客戶或者供應商的郵件。

  在Postix郵箱服務器中,這兩類郵件時不同的進程分工合作的。如對于來自于服務器本身的郵件,主要是由Sendmail進程來負責的,然后再由Pickup進程對Maildrop中的郵件進行完整性檢測。而對于來自外部的郵件,則是由SMTPD進程負責,并且進行安全性檢測。網絡管理員還可以通過其他的一些方式,如UCE來控制SMTPD的行為。這兩個的區別主要在于,來自于內部的郵件一般認為是安全的,因為都來自于同一個服務器(有時會往往是在投遞的時候已經作了安全檢測,故可以保證本地郵件的安全性)。所以,沒有必要進行安全性檢測。相反,來自于其他服務器的郵件,可能有病毒,也可能是垃圾郵件,所以需要進行安全性的檢測。

  Postix服務器如此設計的目的有二。一是提高內部郵件轉發的效率;二是節省了對內部郵件進行檢測的時間與資源,把他們用在更需要使用的郵件身上。要知道,對于企業來說,內部員工的郵件轉發可能在占據郵箱服務器工作量的一半以上。如此的話,放棄對本地郵件的安全檢測,則其可以大幅度的提高本地郵件接收轉發的效率。同時,也可以提高外部郵件的安全檢測速度。

  Postix郵箱服務器不僅在接收郵件的時候,對本地郵件與外來郵件進行區別對待;而且,在發送郵件的時候,也是區別對待的。

熱詞搜索:

上一篇:交換機在企業應用中應該注意的四個重要問題
下一篇:詳解企業級核心交換機四大要素

分享到: 收藏
主站蜘蛛池模板: 曲沃县| 茌平县| 尚志市| 易门县| 宽甸| 桃园市| 丽江市| 垦利县| 凯里市| 洛南县| 六盘水市| 馆陶县| 佳木斯市| 和静县| 盐城市| 斗六市| 齐齐哈尔市| 板桥市| 普宁市| 昆明市| 固阳县| 双流县| 福安市| 公安县| 稷山县| 滦南县| 绥德县| 贡嘎县| 威远县| 金华市| 青岛市| 随州市| 文登市| 依安县| 逊克县| 措美县| 广西| 新密市| 乌拉特前旗| 同仁县| 阜新市|