淺析郵件伺服器原理

上面的架構圖中包含兩組郵件系統、兩個客戶端和一個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收到郵件後的處理方式。

Leave a Reply

Your email address will not be published. Required fields are marked *

Captcha Code