• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • Linux環境下郵件服務器軟件的比較(上)

    發表于:2007-07-02來源:作者:點擊數: 標簽:
    幾年以前, Linux 環境下可以選擇的可以免費郵件 服務器 軟件只有Sendmail,但由于Sendmail的 缺陷 ,一些 開發 者先后開發了若干種其他的郵件服務器軟件。當前,運行在Linux環境下免費的郵件服務器,或者稱為MTA(Mail Transfer Agent:郵件傳送代理)有若干

        幾年以前,Linux環境下可以選擇的可以免費郵件服務器軟件只有Sendmail,但由于Sendmail的缺陷,一些開發者先后開發了若干種其他的郵件服務器軟件。當前,運行在Linux環境下免費的郵件服務器,或者稱為MTA(Mail Transfer Agent:郵件傳送代理)有若干種選擇,比較常見的有Sendmail、Qmail、Postfix、exim及Zmailer等等。本文希望通過對幾種影響相對來說比較大的主流Linux環境下的MTA的特點進行闡述,并對其優缺點進行分析比較,給用戶提供一個選擇在Linux環境下運行的免費MTA的依據。

    一、與Sendmail一比高低----Postfix 介紹

    Postfix是一個由IBM資助下由Wietse Venema 負責開發的一個自由軟件工程產物,其目的是為用戶提供除Sendmail之外的郵件服務器選擇。Postfix力圖做到快速、易于管理、提供盡可能的安全性 ,同時盡量做到和Sendmail郵件服務器保持兼容性以滿足用戶的使用習慣。起初,Postfix是以VMailer這個名字發布的,后來由于商標上的原因改名為Postfix。

    1、主要設計目標

    Postfix工程的目標是實現一個郵件服務器功能,提供給用戶除sendmail以外的選擇。其設計目標包括:
    1)、性能, Postfix要比同類的服務器產品速度快三倍以上,一個安裝Postfix的臺式機一天可以收發百萬封信件。Postfix設計中采用了web服務器的的設計技巧以減少進程創建開銷,并且采用了其他的一些文件訪問優化技術以提高效率,但同時保證了軟件的可靠性。

    2)、兼容性。Postfix設計時考慮了保持Sendmail的兼容性問題,以使移植變得更加容易。Postfix支持/var[/spool]/mail, /etc/aliases, NIS, 及 ~/.forward等文件。然而Postfix為保證管理的簡單性,所以沒有支持配置文件sendmail.cf。

    3)、安全和健壯性。Postfix設計上實現了程序在過量負載情況下仍然保證程序的可靠性。當出現本地文件系統沒有可用空間或沒有可用內存的情況時,Postfix就會自動放棄,而不是重試使情況變的更糟。

    4)、靈活性。Postfix結構上由十多個小的子模塊組成,每個子模塊完成特定的任務,如通過SMTP協議接收一個消息,發送一個消息,本地傳遞一個消息,重寫一個地址等等。當出現特定的需求時,可以用新版本的模塊來替代老的模塊,而不需要更新整個程序。而且它也很容易實現關閉某個功能。

    5)、安全性。Postfix使用多層防護措施防范攻擊者來保護本地系統,幾乎每一個Postfix守護進程都能運行在固定低權限的chroot之下,在網絡和安全敏感的本地投遞程序之間沒有直接的路徑—一個攻擊者必須首先突破若干個其他的程序,才有可能訪問本地系統。Postfix甚至不絕對信任自己的隊列文件或IPC消息中的內容以防止被欺騙。Postfix在輸出發送者提供的消息之前會首先過濾消息。而且Postfix程序沒有set-uid。
    2、Postfix的相關特點

    1)、支持多傳輸域:sendmai支持在Inte.net, DECnet, X.400及UUCP之間轉發消息。 Postfix則靈活的設計為無須虛擬域(vistual domai)或別名來實現這種轉發。但是在早期的發布里僅僅支持STMP和有限度地支持UUCP,但對于我國用戶來說,多傳輸域的支持沒有什么意義。

    2)、虛擬域:在大多數通用情況下,增加對一個虛擬域的支持僅僅需要改變一個Postfix查找信息表。其他的郵件服務器則通常需要多個級別的別名或重定向來獲得這樣的效果。

    3)、UCE控制(UCE,unsolicited commercial email): Postfix能限制哪個主機允許通過自身轉發郵件,并且支持限定什么郵件允許接進。Postfix實現通常的控制功能:黑名單列表、RBL查找、HELO/發送者DNS核實?;趦热葸^濾當前沒有實現。

    4)、表查看: Postfix沒有實現地址重寫語言,而是使用了一種擴展的表查看來實現地址重寫功能。表可以是本地 dbm或 db文件等格式。

    3、Postfix體系結構及與Sendmail的比較

    Postfix是基于半駐留,互操作的進程的體系結構,每個進程完成特定的任務,沒有任何特定的進程衍生關系(父子關系)。而且,獨立的進程來完成不同的功能相對于“單塊”程序具有更好的隔離性。此外,這種實現方式具有這樣的優點:每個服務如地址重寫等都能被任何一個Postfix部件所使用,無須進程創建等開銷,而僅僅需要重寫一個地址,當然并不是只有postfix采用這種方式。

    Postfix是按照這種方式實現的:一個駐留主服務器根據命令運行Postfix守護進程,守護進程完成發送或接收網絡郵件消息,在本地遞交郵件等等功能。守護進程的數目由配置參數來決定的,并且根據配置決定守護進程運行的次數(re-used times),當空閑時間到達配置參數指定的限度時,自動消亡。這種方法明顯地降低了進程創建開銷,但是單個進程之間仍然保持了良好的隔離性。

    Postfix的設計目標就是成為Sendmail的替代者。由于這個原因,Postfix系統的很多部分,如本地投遞程序等,可以很容易地通過編輯修改類似inetd的配置文件來替代。

    Postfix的核心是由十多個半駐留程序實現的。為了保證機密性的原因,這些Postfix進程之間通過Unix的socket或受保護的目錄之下的FIFO進行通信。即使使用這種方法來保證機密性,Postfix進程并不盲目信任其通過這種方式接收到的數據。

    Postfix進程之間傳遞的數據量是有限制的。在很多情況下,Postfix進程之間交換的數據信息只有隊列文件名和接收者列表,或某些狀態信息。一旦一個郵件消息被保存進入文件,其將在其中保存到被一個郵件投遞程序讀出。

    Postfix采用一些通常的措施來避免丟失信息:在收到確認以前通過調用flush和fsync()保存所有的數據到磁盤中。檢查所有的系統調用的返回結果來避免錯誤狀況。

    大多數構建郵件服務器者都會選擇sendmail,公平的來講sendmail是一個不錯的MTA(Mail Transfer Agent),最初開發時Eric Allman的設計考慮主要放在了郵件傳遞的成功性。不幸的是,Sendmai開發時沒有太多的考慮Internet環境下可能遇到的安全性問題。Sendmail在大多數系統上只能以根用戶身份運行,這就意味著任何漏洞都可能導致非常嚴重的后果,除了這些問題之外,在高負載的情況Sendmail運行情況不是很好。
    4、安全性比較

    Postfix并非一定要以root的身份運行,而只需要一個主(master)程序以root身份運行,其生成進程來處理接入、發出及本地郵件投遞工作。通過使用一系列模塊部件,每個任務由一個單獨的程序來運行(這樣使審計變的容易一些)。例如發出郵件被卸載到一個隊列目錄,在這里“pcikup”程序取到該郵件然后將郵件傳遞給“cleanup”程序,其再將郵件傳遞給“trivial-rewrite”,其負責處理郵件頭,最后若郵件目的是別的系統則將郵件傳遞給“smtp”程序。而且相對于Sendmail來說Postfix也更容易設置chrooted環境。只要簡單地通過編輯master.cf(一般位于/etc/postfix內)文件即可實現,并且Postfix將運行chrooted,以限定在其定義的隊列目錄之下(通常位于/var/spool/postfix),同樣可以在master.cf中對Postfix的單一模塊設置進程限制。用戶可以限制Postfix以哪個用戶的身份運行,一般來說是以“postfix”用戶(概念上該用戶和Apache的nobody類似)運行,該用戶可以訪問特定的隊列目錄。Postfix其他的主要優點是起配置文件的清晰易懂性。


    5、與Sendmail的比較
    如Sendmail之類的郵件系統是按照一個單塊的結構設計實現的,該“單塊”程序實現所有的功能。當然這種結構有利于在系統的不同部分之間共享數據。但是這種結構容易出現一些致命的錯誤。而如Qmail的郵件系統上使用一種分層次的結構,按照固定得順序運行不同功能的子模塊進程,執行完畢之后就將其釋放。這種方法有良好的“絕緣”性,但是增加了進程創建開銷和進程間通信開銷。但是通過合理的規劃子模塊進程的運行順序可以將開銷保持在可以接受的范圍內。

    使用其他的MTA替代Sendmail是一件非常麻煩的事情,用戶往往又要花大量的時間去熟悉新的MTA的配置和使用。而使用Postfix,你可以利用很多以有的配置文件。如(aclearcase/" target="_blank" >ccess, aliases, virtusertable等等),只需要簡單的在master.cf中定義一下即可。此外,Postfix在行為上也很象Sendmail,用戶可以使用sendmail命令來啟動Postfix。

    當然,使用一個軟件來替代另外一個軟件需要解決特定的問題。部分原因是因為Postfix的安全特性,在配置Postfix時可能會遇到一些問題。最典型的問題是向root用戶發送郵件。Postfix一般不提高自身的權限(向root用戶發送郵件所必須的)來投遞郵件。用戶需要在別名文件中為root定義別名,如:root: someuser。這同樣會對若干個郵件列表模塊發生影響,特別是SmartList。一般來說實現郵件列表最好使用Majordomo,它易于配置。

    Sendmail一個很突出的問題就是可擴展性和性能問題。例如用戶若希望每天重新啟動Sendmail來實現自動更新配置文件(如為重定向郵件)就會出現問題。Sendmail生成新的進程來處理發送和接收郵件,這些進程會一直存在直到傳輸結束,之后Sendmail才能退出,這樣你的腳本程序將不能正確的重起Sendmail。而對于Postfix,用戶則只需要發出命令postfix reload即可,Postfix將會重新加載其配置文件。

    另外,對于有數以萬計的用戶的郵件服務器來說,使用文件來存儲如匹配用戶發出郵件地址(例如bob發出的信的發信人修改為)。對于大量用戶來講,該文件就會變的很巨大,從而影響系統的運行效率。而Postfix則可以和一個數據庫后臺集成起來(當前只支持MySQL)來存放其配置信息,數據庫方式要比文件方式在可擴展性方面強大很多。

    遵從IBM的開放源代碼版權許可證,用戶可以自由地分發該軟件,進行二次開發。其唯一的限制就是必須將對Postfix做的修改返回給IBM公司。因為IBM資助了Wietse的開發。
    二、Qmail

    Qmail的缺點就是配置方式和Sendmail不一致,不容易維護。而且Qmail的版權許可證含義非常模糊,甚至沒有和軟件一起發布。應用作者的話:若你希望分發自己修改版本的Qmail,你必須得到我的許可。

    Qmail 介紹
    qmail是有Dan Bernstein開發的可以自由下載的MTA,其第一個beta版本0.70.7發布于1996年1月24日,1997年2月發布了1.0版,當前版本是1.03。

    Qmail的特點
    安全性:為了驗證Qmail的安全性,Qmail的支持者甚至出資$1000懸賞尋找Qmail的安全漏洞,一年以后,該獎金沒有被領取,而被捐獻給自由軟件基金會。目前,Qmail的作者也出資$500來尋求Qmail的安全漏洞。

    速度:Qmail在一個中等規模的系統可以投遞大約百萬封郵件,甚至在一臺486一天上能處理超過10萬封郵件,起支持并行投遞。Qmail支持郵件的并行投遞,同時可以投遞大約20封郵件。目前郵件投遞的瓶頸在于SMTP協議,通過STMP向另外一臺互聯網主機投遞一封電子郵件大約需要花費10多秒鐘。Qmail的作者提出了QMTP(Quick Mail Transfer Protocol)來加速郵件的投遞,并且在Qmail中得到支持。Qmail的設計目標是在一臺16M的機器上最終達到每天可以投遞大約百萬級數目的郵件。

    可靠性:為了保證可靠性,Qmail只有在郵件被正確地寫入到磁盤才返回處理成功的結果,這樣即使在磁盤寫入中發生系統崩潰或斷電等情況,也可以保證郵件不被丟失,而是重新投遞。

    特別簡單的虛擬域管理,甚至有一個第三方開發的稱為vpopmail的add-on來支持虛擬POP域。使用這個軟件包,POP3用戶不需要具有系統的正式帳戶。

    使用ezmlm支持用戶自控制的郵件列表功能。
    郵件用戶和系統帳戶隔離,為用戶提供郵件帳戶不需要為其設置系統帳戶,從而增加了安全性。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>