成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Postfix的投遞過(guò)程詳解

運(yùn)維 系統(tǒng)運(yùn)維
Smtp協(xié)議要求收下郵件的MTA,必須負(fù)責(zé)將郵件送到最終目的地--可能是本地系統(tǒng)的郵箱,也可能同一網(wǎng)絡(luò)上的其他主機(jī),這段工作過(guò)程稱為投遞(delivery)。本文就給大家重點(diǎn)講下Postfix的投遞的具體過(guò)程。

  在我們討論本地郵件的投遞過(guò)程之前,先讓我們理清“本地”、“外地”、“虛擬”這三種郵件的定義以及相關(guān)的MDA.

  Postfix的投遞代理程序

  postfix依據(jù)來(lái)信地址來(lái)決定是否要收下郵件以及如何選擇適當(dāng)?shù)腗DA來(lái)執(zhí)行后續(xù)的投遞任務(wù)。postfix會(huì)收下三種網(wǎng)域的郵件,分別是本地(local)、轉(zhuǎn)發(fā)(relay)以及虛擬(virtual),它們的定義與相關(guān)的MDA,如下:

  本地郵件

  若郵件終點(diǎn)站是mydestination參數(shù)所列出的網(wǎng)域之一,postfix就視其為本地郵件,由local MDA(或是你指定的其他程序)執(zhí)行投遞任務(wù)。本地郵件的收件者必須擁有本地系統(tǒng)(postfix server本身所在的主機(jī))的用戶賬戶,或是其名稱被定義在別名文件(傳統(tǒng)上是/etc/aliases)。本地郵件會(huì)被投遞到系統(tǒng)的郵件存儲(chǔ)目錄(通 常是/var/spool/mail/),或個(gè)人主目錄下的郵件文件(~/mail/)。

  轉(zhuǎn)發(fā)郵件

  若郵件終點(diǎn)站是relay_domains參數(shù)所列出的網(wǎng)域之一,postfix就視其為轉(zhuǎn)發(fā)郵件,由relay MDA來(lái)執(zhí)行投遞任務(wù)。一般而言,只有在postfix被當(dāng)成局域網(wǎng)絡(luò)的郵件網(wǎng)關(guān)使用,而同網(wǎng)絡(luò)上還有其他網(wǎng)域的郵件服務(wù)器時(shí),才會(huì)讓postfix收下 轉(zhuǎn)發(fā)郵件。也就是說(shuō),所謂的“轉(zhuǎn)發(fā)”,通常是指同局域網(wǎng)絡(luò)上的其他主機(jī),而relay其實(shí)是smtp MDA的翻版,只不過(guò)被刻意設(shè)計(jì)成特別適合傳信給局域網(wǎng)絡(luò)上主機(jī)而已。

  虛擬網(wǎng)域郵件

  一臺(tái)郵件服務(wù)器通常只服務(wù)一個(gè)范圍網(wǎng)域 (canonical domain);如果要同時(shí)服務(wù)多個(gè)網(wǎng)域,則額外的網(wǎng)域稱為虛擬網(wǎng)域(virtual domain)。虛擬網(wǎng)域的郵件由virtual MDA負(fù)責(zé)投遞。依據(jù)用戶是否有服務(wù)器的系統(tǒng)賬號(hào),虛擬網(wǎng)域的郵件還可分成“虛擬郵箱”與“虛擬別名”兩種。虛擬郵箱的收件人沒(méi)有系統(tǒng)賬戶,而且每一個(gè)虛 擬郵箱網(wǎng)域都有自己的郵箱目錄(mail spool),所有虛擬郵箱網(wǎng)域都必須列于virtual_mailbox_domains參數(shù)。另一方面,虛擬別名網(wǎng)域的收件人可以擁有本地或非本地系 統(tǒng)賬戶,postfix會(huì)改寫這類郵件的收件地址,然后交給smtp MDA遞送出去(如果新地址是非本地網(wǎng)域),或重新回到收件隊(duì)列(如果新地址是本地網(wǎng)域)。

  郵箱格式

  當(dāng)postfix投 遞本地郵件時(shí),郵件內(nèi)容會(huì)被傳送到postfix系統(tǒng)上的適當(dāng)郵箱。最常見(jiàn)的兩種郵箱格式,分別是傳統(tǒng)的mbox以及較新的 maildir。兩者都是使用一般的文件來(lái)儲(chǔ)存郵件內(nèi)容,差別在于文件內(nèi)部的組織安排有所不同。在postfix中,當(dāng)你設(shè)定任何郵件文件或目錄參數(shù)時(shí), 如果在路徑末端加注一個(gè)/符號(hào),表示你想使用maildir格式的郵箱。

  mbox格式

  傳統(tǒng)上,unix系統(tǒng)將同一位用戶 的所有郵件都塞在同一個(gè)文件里,像這樣的郵箱格式通常稱為mbox。郵箱文件里的每一封郵件,其第一行的前五個(gè)字符必定是“from ”。習(xí)慣上,為了方便表示,我們通常將它寫成“from_“,以下劃線字符強(qiáng)調(diào)空格的存在請(qǐng)勿將mbox文件內(nèi)用來(lái)分隔郵件的”from “字樣與郵件標(biāo)頭里的”from:“字段混為一談。郵件在mbox文件里的最后一行必定為空格。因此,一行空格接著一個(gè)from_字樣,就可視為下一封信 的開(kāi)始。

  postfix將郵件寫入mbox文件之前,會(huì)先使用信封上的寄件人地址與當(dāng)時(shí)的日期創(chuàng)建好from_文本行,并將該行字符串寫到 mbox文件的末端,然后才開(kāi)始填入郵件內(nèi)容。如果postfix發(fā)現(xiàn)郵件內(nèi)容本身有任何以“from”開(kāi)頭的文本行,它會(huì)在該文本行的開(kāi)頭加一個(gè) >符號(hào),避免該文本行被誤以為下一封信的開(kāi)頭。

  當(dāng)pop/imap server讀取mbox文件內(nèi)的郵件時(shí),第一步是掃描文件內(nèi)容,找出代表郵件開(kāi)頭的from文本行。在讀取郵件內(nèi)容時(shí),如果遇到下一個(gè)from_文本行 (或文件結(jié)尾),就可斷定當(dāng)前的郵件已經(jīng)讀完了。有些pop/imap server會(huì)主動(dòng)恢復(fù)">from"的原狀,但有些不會(huì)。

  由于 postfix和pop/imap server有可能會(huì)同時(shí)訪問(wèn)同一個(gè)mbox文件,所有它們必須使用“文件鎖定機(jī)制”(file locking)來(lái)確保訪問(wèn)權(quán)。在local投遞本地郵件之前,必須先將該文件加鎖,然后才能將郵件內(nèi)容寫入mbox文件。postfix支持多種鎖定機(jī) 制,視系統(tǒng)平臺(tái)而定。利用postconf -l命令可查看你的系統(tǒng)提供了哪些鎖定機(jī)制可供postfix使用:

  postconf -l

  如果想知道postfix在你系統(tǒng)上列出的各種鎖定機(jī)制的詳細(xì)信息,請(qǐng)把鎖定機(jī)制的名稱告訴man:

  man folck

  如 果你的系統(tǒng)平臺(tái)支持flock和fcntl,應(yīng)該就可以找到它們的在線說(shuō)明文件,因?yàn)檫@兩者都是操作系統(tǒng)或函數(shù)庫(kù)提供的功能,而任何系統(tǒng)平臺(tái)都支持的 dotlock機(jī)制,很可能找不到說(shuō)明文件,因?yàn)閐otlock只是程序之間一種不成文協(xié)議,不需要額外的函數(shù)庫(kù)。dotlock的原理很簡(jiǎn)單,舉個(gè)例子 就可以說(shuō)明清楚。假設(shè)postfix要訪問(wèn)user1郵件文件,它必須先檢查該文件的同目錄下是否存在一個(gè).user1.lock文件,如果存在,表示 user1郵件文件當(dāng)前被另一個(gè)進(jìn)程占用;如果.user1.lock文件步存在,postfix就自己產(chǎn)生一個(gè),讓其他進(jìn)程知道user1文件當(dāng)前正被 占用。在postfix關(guān)閉user1文件之后,要主動(dòng)移除.user1.lock文件,讓其他進(jìn)程可以使用user1郵件文件。dotlock鎖定機(jī)制 的缺點(diǎn)是它沒(méi)有強(qiáng)制性(任何進(jìn)程都可以不檢查,user1.lock是否存在而徑直訪問(wèn)user1文件),而且效率不佳。

  通常你可以不必?fù)?dān)心鎖定機(jī)制的細(xì)節(jié),也不必理會(huì)系統(tǒng)支持哪些類型的鎖定機(jī)制,因?yàn)閜ostfix能自動(dòng)做出最佳選擇。

  maildir格式

  maildir 郵箱格式不同于mbox之處,在于它使用目錄結(jié)構(gòu)來(lái)存儲(chǔ)郵件。maildir的設(shè)計(jì)原意為了解決mbox格式的可能性與文件鎖定問(wèn)題。例如,如果在郵件內(nèi) 容還沒(méi)完全寫入mbox文件之前,系統(tǒng)就死機(jī)了,這時(shí)候可能只有部分內(nèi)容在郵箱里。當(dāng)系統(tǒng)恢復(fù)運(yùn)行,MDA將郵件寫入郵箱時(shí),新的內(nèi)容會(huì)接在前次殘缺內(nèi)容 的后面,因而造成問(wèn)題。

  mbox格式的另一個(gè)缺點(diǎn),是發(fā)生在pop/imap server與smtp server試圖同時(shí)開(kāi)啟同一個(gè)郵箱時(shí)。如果雙方?jīng)]有使用相同的鎖定機(jī)制,郵箱文件可能因此受損。先前說(shuō)過(guò),保護(hù)文件的鎖定機(jī)制有好幾種,但是并非所有郵 件程序都使用鎖定機(jī)制。但如果使用maildir格式,則可以不使用文件保護(hù)鎖,因?yàn)槊恳环忄]件都是存放在單獨(dú)的一個(gè)文件里。因此,不用的郵件程序,不可 能同時(shí)訪問(wèn)同一個(gè)文件。

  一個(gè)maildir風(fēng)格的目錄,其下有三個(gè)子目錄:tmp/、new/以及cur/。這些子目錄與它們的上層目錄必須位于同一個(gè)文件系統(tǒng),習(xí)慣上,它們應(yīng)該放在用戶的主目錄的郵件目錄下

  在new/目錄下的郵件文件,是MDA已經(jīng)送達(dá)但是尚未被用戶閱讀的信,文件本身的修改時(shí)間,就是收下郵件的時(shí)間。郵件文件通常包含RFC 2822格式的郵件,而且不需要“from_"。

  用戶看過(guò)郵件之后,郵件文件會(huì)被轉(zhuǎn)移到cur/目錄。tmp/目錄供MDA將郵件內(nèi)容存儲(chǔ)成文件,在確定全部?jī)?nèi)柔都寫入文件之后,郵件文件會(huì)被搬到new/目錄。

  應(yīng)該選擇mbox還是maildir?

  這 個(gè)問(wèn)題沒(méi)有簡(jiǎn)單的答案。哪一種郵箱格式最適合你,取決于許多因素。mbox格式的好處是幾乎全世界都支持,但也正是因?yàn)樗形募i定問(wèn)題,而導(dǎo)致了 maildir格式的出現(xiàn)。而maildir格式在規(guī)模適合性方面也頗受質(zhì)疑,因?yàn)槟承┪募到y(tǒng)可能無(wú)法應(yīng)付太多的郵件文件。在效率方面,兩種格式各有各 優(yōu)缺點(diǎn):搜索、訪問(wèn)、刪除特定郵件時(shí),maildir的速度比較快;但是就MDA的投遞工作效率而言,直接將郵件內(nèi)容放入文本未(mbox格式)可能比較 快。實(shí)際上,你的選擇可能要看你所用的POP/IMAP SERVER而定,如果你架設(shè)的POP/IMAP SERVER只支持maildir格式,很顯然你沒(méi)有選擇的余地。postfix對(duì)兩種格式都支持,所以你只要考慮其他因素就行。如果你的環(huán)境讓你感覺(jué)到 為難,建議你測(cè)試兩種格式,盡量以接近實(shí)際的運(yùn)行環(huán)境和工作量來(lái)實(shí)驗(yàn),依據(jù)實(shí)驗(yàn)結(jié)果做出選擇。

#p#

  本地郵件的投遞操作

  若收件 地址的網(wǎng)域部分,是列在mydestination參數(shù)的所有網(wǎng)域之一,postfix就將其當(dāng)成本地郵件交給local MDA進(jìn)行投遞。你可以隨意在mydestination列出多個(gè)網(wǎng)域,但是本地的個(gè)別用戶會(huì)收到所有網(wǎng)域的郵件。舉例來(lái)說(shuō),如果 oreilly.com、ora.com和oreillymedia.com同時(shí)被列在mydestination參數(shù),則寄給 kdent@ora.com、kdent@oreilly.com或kdent@oreillymedia.com的郵件,最后都是進(jìn)入同一個(gè)本地郵箱。 為了避免收下不明用戶的郵件,所有本地收件人的名稱都必須列在local_recipient_maps參數(shù)所指的表中。此參數(shù)的默認(rèn)值是指向unix系 統(tǒng)的密碼文件與別名表,所以你通常不需要修改它。

  檢查郵件地址的人名部分時(shí),postfix先檢查別名表。如果發(fā)現(xiàn)相符的別名,則以該別名對(duì)應(yīng)的 名稱為新的收件人,重新提交郵件,當(dāng)成新郵件處理;否則,就試著將郵件傳給系統(tǒng)上的用戶。postfix先檢查當(dāng)?shù)赜脩羰欠裨O(shè)置了自己的.forward 文件,如果有,則依據(jù)其設(shè)定內(nèi)容來(lái)轉(zhuǎn)寄郵件;乳溝沒(méi)有,則將郵件放入用戶的郵箱。

  .forward文件

  .forward 文件讓用戶可以設(shè)置自己的別名。.forward文件的格式與別名文件的RHS-VALUE部分的格式一樣,甚至比其更寬松。比方說(shuō),別名文件的RHS- VALUE可以有多個(gè)以分號(hào)隔開(kāi)的值,.forward文件也沿用相同慣例,但同時(shí)也容許你將值分別寫在不同的行。

  .forward文件的擁有權(quán) 限必須是收件人的系統(tǒng)賬戶,而且通常放在用戶的主目錄下。你可以用forward_path參數(shù)來(lái)改變.forward文件的存放路徑。postfix提 供下列8大變量讓你表示.forward文件的存放路徑,這些變量的實(shí)際值,由投遞時(shí)的系統(tǒng)環(huán)境決定:

  $user 收件人得賬戶名稱(信息來(lái)源: /etc/passwd)

  $home 收件人得主目錄(信息來(lái)源: /etc/passwd)

  $shell 收件人得shell

  $recipient 收件人得完整郵件地址

  $extension 收件地址得人名部分得擴(kuò)展部分(不一定有),以+之類得分隔符與人名部分風(fēng)格開(kāi)。以 user1+labs@example.com為例,$extension等于user1。

  $domain 收件地址的網(wǎng)域部分。

  $local 收件地址的完整人名部分(包括擴(kuò)展部分在內(nèi)--如果有的話)。以u(píng)ser1+ labs@example.com為例,$local等于user1+labs。

  $recipient delimiter 收件地址得人名部分與擴(kuò)展部分之間得分隔符(通常是+)如果你增加對(duì)一個(gè)非標(biāo)準(zhǔn)得.forward文件得支持,可以參考下面得設(shè)定;

  forward_path = /home/$user/.forward /home/$user/other_forward

  別名投遞操作

  當(dāng) 別名文件指定了一個(gè)命令或文件時(shí),postfix必須先將自己得執(zhí)行身份改成別名文件擁有者,然后以該身份得權(quán)限來(lái)執(zhí)行命令,或?qū)⑧]件內(nèi)容寫入文件。唯一 的例外是別名文件擁有者為root時(shí),這時(shí)候postfix使用default_privs參數(shù)所指定的賬戶(默認(rèn)值為nobody)

  郵箱投遞操作

  當(dāng)postfix 將郵件投遞給一位本地用戶時(shí),它必須將郵件內(nèi)容寫入該用戶在系統(tǒng)上的郵箱。postfix默認(rèn)使用的郵箱格式是mbox,當(dāng)你安裝postfix時(shí),它會(huì) 依據(jù)你所用的Unix平臺(tái)類型來(lái)決定郵件存儲(chǔ)目錄的位置。mail_spool_directory參數(shù)可用來(lái)指定一個(gè)默認(rèn)之外的目錄,而目錄路徑的指定 方式會(huì)影響pstfix選擇何種郵件格式。舉例來(lái)說(shuō),假如你這樣設(shè)定:

  mail_spool_directory = /var/spool/mail

  這表示postfix應(yīng)該使用mbox格式將郵件存在/var/spool/mail目錄下。如果你想改用maildir格式,則必須在目錄名稱之后附加一個(gè)/符號(hào):

  mail_spool_directory = /var/spool/mail/

  你也可以要求postfix將郵件放在用戶的主目錄下。設(shè)定一個(gè)相對(duì)路徑給home_mailbox參數(shù),表示你想要哪一個(gè)文件來(lái)作為郵箱:

  home_mailbox = mbox

  在路徑名稱之后附加一個(gè)/符號(hào),表示postfix應(yīng)該使用maildir格式的投遞程序:

  home_mailbox = maildir/

  這會(huì)使得postfix將郵件投遞到用戶主目錄下的maildir/子目錄。

  注意: 使用maildir格式時(shí),postfix通常會(huì)自動(dòng)創(chuàng)建必要的子目錄與文件--如果用戶的身份權(quán)限足夠的話。不過(guò),基于安全上的考慮,如果上層目錄的權(quán)限模式為775,則local MDA不會(huì)創(chuàng)建任何額外的文件或目錄。

通過(guò)上面的文章詳細(xì)的描述,大家都應(yīng)該知道了如何用Postfix進(jìn)行投遞的過(guò)程。希望對(duì)你們有所幫助!
 

【編輯推薦】

  1. PostfixAdmin 配置過(guò)程講解
  2. Postfix的郵件隊(duì)列管理
  3. 如何安裝PostfixAdmin
  4. Postfixadmin安裝手冊(cè)
  5. 如何對(duì)Postfix進(jìn)行資源控制
  6. Postfix中的地址操作大全
  7. 教你如何設(shè)置Postfixadmin的自動(dòng)回復(fù)

 

 

  

責(zé)任編輯:趙鵬 來(lái)源: 互聯(lián)網(wǎng)
相關(guān)推薦

2010-05-25 18:19:41

postfix郵件

2010-06-09 18:17:20

Postfix郵件

2010-06-02 18:00:05

Postfix郵件

2011-01-19 17:30:21

Postfix郵件投遞

2011-01-19 09:55:27

postfix

2010-06-02 18:17:09

Postfix郵件

2010-05-14 15:43:32

MySQL數(shù)據(jù)庫(kù)

2011-02-21 10:13:38

Postfix

2011-02-21 13:26:47

Postfix郵件處理

2009-11-30 10:21:41

2009-10-10 15:54:55

RHEL 4配置Pos

2011-01-18 15:00:17

Postfix安裝

2011-02-21 13:08:37

postfix配置

2011-01-19 09:16:48

Postfix配置

2011-01-18 18:52:14

Postfix結(jié)構(gòu)

2010-06-02 17:07:25

Postfix 轉(zhuǎn)發(fā)

2011-01-19 09:57:48

Postfix控制

2011-02-21 11:14:47

Postfix配置

2011-01-19 13:39:38

Postfix郵件監(jiān)控

2010-07-20 16:19:46

配置Telnet服務(wù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 一级午夜aaa免费看三区 | 中文字幕乱码视频32 | 欧美成人一级 | 欧美成视频| 色啪网 | 九一视频在线观看 | 91精品国产欧美一区二区 | 婷婷色国产偷v国产偷v小说 | 欧美在线一区二区三区 | 自拍视频网 | 波多野结衣一区二区三区 | 久久久网 | 久久久久久国模大尺度人体 | 四虎影院一区二区 | 国产成人综合在线 | 91极品视频 | 日韩欧美国产精品一区二区三区 | 久久久久九九九九 | 国偷自产av一区二区三区 | 久久新| 久久中文视频 | 视频在线一区二区 | 美女天堂av| 草草视频在线观看 | 精品久久久久一区二区国产 | 亚洲精品一区二区三区免 | 亚洲在线 | 犬夜叉在线观看 | 成年人视频在线免费观看 | 国产91av视频 | 成人免费大片黄在线播放 | 日韩图区 | 国产成人免费视频网站视频社区 | 亚洲第一在线 | 狠狠综合久久av一区二区老牛 | 日韩在线免费 | 欧美成视频在线观看 | 欧美日韩国产三级 | 91精品国产综合久久久久久 | 中文字幕在线免费 | caoporn国产 |