1. 程式人生 > >Email原理

Email原理

email

E-mail與Internet

在專業的E-mail解決方案中,整個系統的各個組件通常都是來自同一家公司的軟件,你不能隨意更換個別組件,因為通常沒有“等效程序”可以更換。另一方面,Internet Email系統采取開放式設計,任何人都是可以用不同的軟件組合來架設一套郵件系統,並且能夠與其他interner Email系統交換信息,唯一前提是所有軟件都不惜遵守一組公開的標準與協議。這組協議制定了郵件的標準格式、郵件系統個角色的定位與任務以及郵件從發送方傳遞到接收方的詳細過程。Exchange本身不是一個完整的Interner Email郵件系統,它只是整個系統中的一個重要組件。大多數Email用戶只熟悉用來讀信、寫信的軟件,稱為“郵件用戶代理”(Mail User Agent,MUA),常見的MUA包括:mutt、elm、pine、netscape與outlook express。其任務是讓用戶能夠讀信、寫信、寄信。不過,MUA並非直接將Email送到收件人手中,而是由“郵件傳輸代理”(Mail Transfer Agent,MTA)代為傳遞。exchange扮演的角色正是MTA。

郵件系統的組成

當你寄信時,信件是交給郵局處理。同理,當你要求MUA送出一封郵件,它只能將該郵件交給一臺運行MTA軟件(例如exchange、postfix)的服務器。圖1-1是Email從發信者到收信者所經過的處理流程。MTA的任務是接受MUA的委任,將Email從一個系統遞送到另一個系統。並收下遠方MTA送來的郵件。每當MTA收到MUA的寄信請求,它會先判斷是否應該受理。通常,如果郵件是來自本地系統的用戶,或是本地網絡上的系統,或是任何特許可以通過它轉發(relay)郵件到其他目的地的網絡,MTA都會受理寄信請求。另一方面,MTA也會依據“收件人”來決定是否要收下郵件。如果收件人是本地系統的用戶,或是收件人位於它知道要如何轉遞(forword)的其他系統,MTA就會收下信息。

MTA收到郵件之後,它必須決定下一步做什麽。它有可能將郵件遞送給自己系統上的用戶,也有可能將郵件交給另一個MTA來繼續傳遞。對於要交給其他網絡的郵件,有可能會經過多個MTA接力傳遞。如果MTA無法遞送信息,也無法轉交給其他MTA處理,則退信給原發信者,或是發出通知函給系統管理員。一般,個人的MTA Server通常是由ISP控管;公司員工的,則可能由企業的信息系統部門控管。

技術分享

郵件終點站的MTA,在發現收件人是本地系統的用戶之後,必須將郵件交給“郵件投遞代理”(message delivery agent,MDA)。MDA可能將信息存放在普通文件夾內,也可能存入專門存儲電子郵件的特殊數據庫。不管是哪一種形式,任何用來長期保存郵件的機制,我們一律統稱為郵箱(message storage),或俗稱為“信箱”。

郵件被存入郵箱後,它就待在那裏,等待收件人將它收走。收件人使用MUA來取信、讀信。提供郵箱訪問服務的服務器軟件,並非當初收下信息的MTA,兩者的角色是分離的。MUA必須讓用戶成功通過身份驗證,才可取走郵箱裏的郵件,呈現給用戶閱讀。

由於Internet Email采用開放式標準,所以MTA、MDA、MUA等不同角色,可分別由許多不同的軟件來扮演。實現相同協議的不同包,可以彼此互相交流,而不管他們是在什麽系統上運行。如果將一個完整的Email郵件系統集中在一起,你可能會發現,處理SMTP的是一套軟件,處理POP/IMAP的是另一套軟件。但郵件系統中每一種角色,都有許多不同的軟件可以選擇。

本文出自 “為了明日” 博客,請務必保留此出處http://andyboge.blog.51cto.com/6809119/1969730

Email原理