上面的架構圖中包含兩組郵件系統、兩個客户端和一個DNS服務器,其中的郵件系統是企業中比較經典的架構形式,下面我將依據此圖來簡述郵件服務器的工作流程。
名詞解釋:
- MUA 接收郵件所使用的郵件客户端,使用IMAP或POP3協議與服務器通信,常見的有:outlook、foxmail;
- MTA 通過SMTP協議發送、轉發郵件,常見的有:sendmail、postfix、qmail;
- MDA 將MTA接收到的郵件保存到磁盤或指定地方,通常會進行垃圾郵件及病毒掃描;
- MRA 負責實現IMAP與POP3協議,與MUA進行交互;
- SMTP 傳輸發送郵件所使用的標準協議;
- IMAP 接收郵件使用的標準協議之一;
- POP3 接收郵件使用的標準協議之一;
- MailBox 用户郵箱;
- cyrus-SASL及courier-authlib 提供用户認證相關的支持。
- SQL 數據庫,用於存儲用户身份信息
前面的架構圖中,MUA想發送郵件,就要將郵件通過SMTP協議送到MTA上,MTA通常會要求用户認證身份(也可不認證),認證通常使用SASL,認證源可以是像上面的架構圖中那樣使用SQL數據庫也可以使用其他方式。MTA收到郵件後會檢查郵件目的地址的郵件域,此時會產生兩種情況。
情況一,目的郵件域是本服務器:
如果發現是本服務器的郵件域則將郵件送到MDA,由MDA將其投遞到用户的郵箱(MailBox)中。最後用户在MUA上使用POP3/IMAP協議鏈接MRA,MRA通常也會要求用户認證身份,其認證源同MTA一樣可以是SQL也可以是其他方式,若認證通過,則允許MUA讀取郵件信息。
情況二,目的郵件域非本服務器:
若是郵件域是其他郵件服務器的,則MTA會發送UDP報文向DNS服務器查詢郵件域對應的郵件主機,並最終解析出其IP地址,隨後MTA會查詢本服務器的轉發控制策略,若允許轉發,則將郵件轉發到該域對應的服務器上,最終會重複情況一中MTA收到郵件後的處理方式。