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