Postfix入門篇
一、 postfix入門
postfix是Wietse Venema在IBM的GPL協(xié)議之下開發(fā)的MTA(郵件傳輸代理)軟件。“postfix是Wietse Venema想要為使用最廣泛的sendmail提供替代品的一個(gè)嘗試。在Internet世界中,大部分的電子郵件都是通過sendmail來投遞的,大約有100萬用戶使用sendmail,每天投遞上億封郵件。這真實(shí)一個(gè)讓人吃驚的數(shù)字。Postfix試圖更快、更容易管理、更安全,同時(shí)還與sendmail保持足夠的兼容性。”
二、 postfix的特點(diǎn)
1. postfix是免費(fèi)的:
postfix想要作用的范圍是廣大的Internet用戶,試圖影響大多數(shù)的Internet上的電子郵件系統(tǒng),因此它是免費(fèi)的。
2. 更快:
postfix在性能上大約比sendmail快三倍。一部運(yùn)行postfix的臺(tái)式PC每天可以收發(fā)上百萬封郵件。
3. 兼容性好:
postfix是sendmail兼容的,從而使sendmail用戶可以很方便地遷移到postfix。Postfix支持/var[/spool]/mail、/etc/aliases、 NIS、和 ~/.forward 文件。
4. 更健壯:
postfix被設(shè)計(jì)成在重負(fù)荷之下仍然可以正常工作。當(dāng)系統(tǒng)運(yùn)行超出了可用的內(nèi)存或磁盤空間時(shí),postfix會(huì)自動(dòng)減少運(yùn)行進(jìn)程的數(shù)目。當(dāng)處理的郵件數(shù)目增長(zhǎng)時(shí),postfix運(yùn)行的進(jìn)程不會(huì)跟著增加。
5. 更靈活:
postfix是由超過一打的小程序組成的,每個(gè)程序完成特定的功能。你可以
通過配置文件設(shè)置每個(gè)程序的運(yùn)行參數(shù)。
6. 安全性
postfix具有多層防御結(jié)構(gòu),可以有效地抵御惡意入侵者。如大多數(shù)的postfix程序可以運(yùn)行在較低的權(quán)限之下,不可以通過網(wǎng)絡(luò)訪問安全性相關(guān)的本地投遞程序等等。
三、postfix的總體結(jié)構(gòu)
postfix由十幾個(gè)具有不同功能的半駐留進(jìn)程組成,并且在這些進(jìn)程中并無特定的進(jìn)程間父子關(guān)系。某一個(gè)特定的進(jìn)程可以為其他進(jìn)程提供特定的服務(wù)。
大多數(shù)的postfix進(jìn)程由一個(gè)進(jìn)程統(tǒng)一進(jìn)行管理,該進(jìn)程負(fù)責(zé)在需要的時(shí)候調(diào)用其他進(jìn)程,這個(gè)管理進(jìn)程就是master進(jìn)程。該進(jìn)程也是一個(gè)后臺(tái)程序。
這些postfix進(jìn)程是可以配置的,我們可以配置每個(gè)進(jìn)程運(yùn)行的數(shù)目,可重用的次數(shù),生存的時(shí)間等等。通過靈活的配置特性可以使整個(gè)系統(tǒng)的運(yùn)行成本大大降低。
1.postfix的郵件隊(duì)列(mail queues)
postfix有四種不同的郵件隊(duì)列,并且由隊(duì)列管理進(jìn)程統(tǒng)一進(jìn)行管理:
?。?) maildrop:本地郵件放置在maildrop中,同時(shí)也被拷貝到incoming中。
?。?)incoming:放置正在到達(dá)或隊(duì)列管理進(jìn)程尚未發(fā)現(xiàn)的郵件。
?。?) active:放置隊(duì)列管理進(jìn)程已經(jīng)打開了并正準(zhǔn)備投遞的郵件,該隊(duì)列有長(zhǎng)度的限制。
(4)deferred:放置不能被投遞的郵件。
隊(duì)列管理進(jìn)程僅僅在內(nèi)存中保留active隊(duì)列,并且對(duì)該隊(duì)列的長(zhǎng)度進(jìn)行限制,這樣做的目的是為了避免進(jìn)程運(yùn)行內(nèi)存超過系統(tǒng)的可用內(nèi)存。
2. postfix對(duì)郵件風(fēng)暴的處理
當(dāng)有新的郵件到達(dá)時(shí),postfix進(jìn)行初始化,初始化時(shí)postfix同時(shí)只接受兩個(gè)并發(fā)的連接請(qǐng)求。當(dāng)郵件投遞成功后,可以同時(shí)接受的并發(fā)連接的數(shù)目就會(huì)緩慢地增長(zhǎng)至一個(gè)可以配置的值。當(dāng)然,如果這時(shí)系統(tǒng)的消耗已到達(dá)系統(tǒng)不能承受的負(fù)載就會(huì)停止增長(zhǎng)。還有一種情況時(shí),如果postfix在處理郵件過程中遇到了問題,則該值會(huì)開始降低。
當(dāng)接收到的新郵件的數(shù)量超過postfix的投遞能力時(shí),postfix會(huì)暫時(shí)停止投遞deferred隊(duì)列中的郵件而去處理新接收到的郵件。這是因?yàn)樘幚硇锣]件的延遲要小于處理deferred隊(duì)列中的郵件。Postfix會(huì)在空閑時(shí)處理deferred中的郵件。
3. postfix對(duì)無法投遞的郵件的處理
當(dāng)一封郵件第一次不能成功投遞時(shí),postfix會(huì)給該郵件貼上一個(gè)將來的時(shí)間郵票。郵件隊(duì)列管理程序會(huì)忽略貼有將來時(shí)間郵票的郵件。時(shí)間郵票到期時(shí),postfix會(huì)嘗試再對(duì)該郵件進(jìn)行一次投遞,如果這次投遞再次失敗,postfix就給該郵件貼上一個(gè)兩倍于上次時(shí)間郵票的時(shí)間郵票,等時(shí)間郵票到期時(shí)再次進(jìn)行投遞,依此類推。當(dāng)然,經(jīng)過一定次數(shù)的嘗試之后,postfix會(huì)放棄對(duì)該郵件的投遞,返回一個(gè)錯(cuò)誤信息給該郵件的發(fā)件人。
4 .postfix對(duì)不可到達(dá)的目的地郵件的處理
postfix會(huì)在內(nèi)存中保存一個(gè)有長(zhǎng)度限制的當(dāng)前不可到達(dá)的地址列表。這樣就避免了對(duì)那些目的地為當(dāng)前不可到達(dá)地址的郵件的投遞嘗試。從而大大提高了系統(tǒng)的性能。
四、postfix的安全性
postfix通過一系列的措施來提高系統(tǒng)的安全性,這些措施包括:
1. 動(dòng)態(tài)分配內(nèi)存,從而防止系統(tǒng)緩沖區(qū)溢出;
2. 把大郵件分割成幾塊進(jìn)行處理,投遞時(shí)再重組;
3. Postfix的各種進(jìn)程不在其他用戶進(jìn)程的控制之下運(yùn)行,而是運(yùn)行在駐留
主進(jìn)程master的控制之下,與其他用戶進(jìn)程無父子關(guān)系,所有有很好的絕緣性。
4. Postfix的隊(duì)列文件有其特殊的格式,只能被postfix本身識(shí)別;
以上就是postfix的基本入門知識(shí),希望能夠?qū)Τ踝R(shí)Postfix 的人有所幫助。
【編輯推薦】