細(xì)說(shuō)Exim4郵件服務(wù)器的工作原理
Exim4被設(shè)計(jì)成能高效地、不間斷地在Internet上運(yùn)行,而且能處理各種混合郵件。Exim4是如何投遞郵件和接收郵件的呢?有何安全機(jī)制能確保郵件的安全呢?這節(jié)將簡(jiǎn)單介紹Exim4的工作原理。
Exim4 處理的每封郵件都以一個(gè)16位字符的名稱(chēng)標(biāo)識(shí),該標(biāo)識(shí)由三部份組成,以"-"號(hào)分隔,如:1GS3YU-0000zG-Nd。這些字符是經(jīng)過(guò)base編碼 的,第一部份的原始信息是接收郵件的時(shí)間,第二部份的原始信息是接收郵件的進(jìn)程id,第三部份的信息與配置文件中l(wèi)ocalhost_number的設(shè)置 相關(guān)。標(biāo)識(shí)名與時(shí)間和進(jìn)程相關(guān),有效保證了標(biāo)識(shí)名的唯一性。
Exim4通過(guò)基于TCP/IP的SMTP協(xié)議從其它主機(jī)收取郵件。 Exim4接收郵件后,會(huì)把郵件分成兩個(gè)文件保存在spool目錄,在我的機(jī)器上就是/var/spool/exim4/input/目錄。這兩個(gè)文件的 命名規(guī)則是郵件標(biāo)識(shí)后加-D和-H。以-D結(jié)尾的文件保存著郵件正文的信息,以-H結(jié)尾的文件保存郵件的頭信息。在一些操作系統(tǒng)上,同一目錄下包含太多的 文件會(huì)造成性能問(wèn)題,所以Exim4也可通過(guò)設(shè)置split_spool_directory選項(xiàng),在input目錄下再創(chuàng)建62個(gè)子目錄來(lái)保存郵件信 息。這62個(gè)子目錄以單個(gè)字母和數(shù)字命名(26個(gè)小寫(xiě)字母+26個(gè)大寫(xiě)字母+10個(gè)數(shù)字共62個(gè)數(shù)字和字母)。這樣的設(shè)置,使郵件的排隊(duì)只在子目錄下進(jìn) 行,而不是一個(gè)目錄所有郵件。所以即使在郵件量不大的情況下也能效提升郵件系統(tǒng)的性能。
接收的郵件會(huì)停留在spool目錄直到郵件被傳遞到接收者或被管理員刪除。如果郵件不能被傳遞,則郵件會(huì)被打上"frozen"標(biāo)記,并且不會(huì)再?lài)L試投遞 該郵件。但管理員可以設(shè)置 ignore_bounce_errors_after和timeout_frozen_after選項(xiàng),指定一定時(shí)間后解除郵件的"frozen"狀 態(tài)。
當(dāng)Exim4處理郵件時(shí)會(huì)把處理過(guò)程的日志信息保存在/var/log/exim4目錄下。其中mainlog日志記錄了大量的信息,從中我們可以跟蹤 Exim4處理郵件的過(guò)程。在一個(gè)大負(fù)載的服務(wù)器上,生成大量的日志信息會(huì)影響服務(wù)器的性能,所以我們也可以用 no_message_logs參數(shù)禁止日志功能。
router和transport是Exim4傳遞郵件過(guò)程中兩個(gè)重要的環(huán)節(jié), router負(fù)責(zé)處理郵件地址,并把郵件傳遞給不同的transport作進(jìn)一步處理,transport負(fù)責(zé)把spool中的郵件傳遞到目的地,完成投 遞過(guò)程。有兩種的transport,一種是本地transport,它的目的地是文件或者本機(jī)管道(pipe);另一種transport是遠(yuǎn)程 transport,它的目的地是遠(yuǎn)程主機(jī)。如果一封郵件有多個(gè)接收者,則它可能會(huì)通過(guò)多個(gè)transport進(jìn)行投遞。
router和transport都有不同的driver,實(shí)現(xiàn)不同的功能。
router drivers:
*
accept,
*
dnslookup,
*
ipliteral,
*
iplookup,
*
manualroute,
*
queryprogram,
*
redirect,
transport drivers:
*
appendfile,
*
autoreply,
*
lmtp,
*
pipe
*
smtp
看了Exim4郵件服務(wù)器的工作原理,相信大家對(duì)Exim4郵件服務(wù)器有了全方面的了解,以后我會(huì)為大家講解更多關(guān)于Exim4的知識(shí)。
【編輯推薦】