標籤:郵件伺服器基本原理 mua mda mta mra
郵件伺服器基本原理講解
我想很多的人都發過電子郵件,只要我們有一個郵件用戶端,然後填上收件者地址,發信人地址,發信的內容等等就可以發送一封電子郵件了。當然我們現實生活中感覺到的電子郵件的傳輸可能很簡單,但是在其背後的實現機制卻非常的複雜。而且,由於早期技術的限制,要實現一個完整的郵件系統,需要的伺服器可能需要達到多種,因此,這種方式建立的郵件伺服器是非常繁瑣且不易維護的。後來人們為了方便,於是九江許多的功能整合在某一個軟體上,這樣只需要安裝這樣一個軟體,就可以實現許多郵件服務功能。這樣維護起來也方便多了。
在講郵件伺服器之前,我們先介紹幾種伺服器常用的組件概念:
MUA:Mail User Agent,郵件使用者代理,它主要的功能就是接受郵件伺服器上的電子郵件,以及提供使用者瀏覽和編寫郵件的功能。通俗的說就是一個郵件用戶端。
常見的MUA軟體有:
Outlook Express, Outlook
Foxmail
Thunderbird
Evolution
mutt(文本介面)
MDA:Mail Delivery Agent,郵件投遞代理,它主要的功能就是分析MTA所收到的信件的表頭和內容等資料,來決定這封郵件的去向。如果MTA所收到的這封信目標是自己,那麼就會將這封信轉到使用者的郵箱中去;如果不是,那麼就中繼(轉遞)出去。
常見的MDA軟體有:
procmail
maildrop
MTA:Mail Transfer Agent,郵件傳輸代理程式,它主要的作用是收取信件,接受郵件時使用的協議是SMTP(Simple Mail Transfer Protocol,簡易郵件傳輸通訊協定),監聽的連接埠號碼是25。當然我們一般所說的Mail Server就是指的是MTA,其實MTA僅僅指的是SMTP協議而已。
常見的提供MTA功能的軟體有:
比較老牌的sendmail
後起之秀postfix:這個軟體採用模組化設計,且安全,跟sendmail相容,且比他的效率高
qmail
Exchange(windows,非同步訊息協作平台)
當然我們後面所使用到的MTA軟體就是postfix了。
MRA:Mail Retrieval Agent,郵件檢索代理,使用者可以通過(POP3或者IMAP4)協議來收下自己的信件。當然POP3和IMAP4的收信方式是不同的,在這裡我介紹一下他們兩個的收信方式:
POP3的收信方式:
1、MUA(郵件用戶端軟體)透過POP3(Post Office Procotol Version 3,郵政服務合約)串連到MRA的110連接埠,並且MUA需要提供帳號和密碼來取得正確的授權。這個授權是由POP3協議到資料庫中來檢索帳號和密碼是否正確來取得授權的。因此MRA還需要和資料庫結合一起來工作,這個在後續再講到。
2、MRA確認帳號和密碼沒有問題後,會前往使用者的郵箱取得使用者的郵件,並傳遞給MUA軟體。
3、當所有的信件傳送完畢後,使用者郵箱(mailbox)內的資料會被清空
IMAP4的收信方式:
首先也需要通過帳號和密碼來取得授權才可以取得使用者郵箱(mailbox)內的郵件,但是他不僅將取得的郵件返回給MUA,並且將郵件儲存在~/使用者帳號/目錄下。這樣一來,使用者就可以永久查看郵件了。
因此,建立一個完整的郵件伺服器只要需要SMTP和POP3洗協議才行。
常見的MRA有:
cyrus-imap
dovecot
接下來我們介紹一個完整的郵件伺服器是如何工作的:
1、首先使用者利用MUA軟體寫好一封郵件,利用SMTP協議將其傳到本地SMTP伺服器(記住,這裡是本地SMTP伺服器,而不是目的端SMTP伺服器,在這裡我們將SMTP伺服器簡稱SMTPD)
2、當MTA收到郵件後,如果該郵件的目的端是本地的話,那麼MDA會將該郵件存放在使用者的郵箱裡(mailbox);如果不是本地的話,需要調用smtp用戶端(這裡簡稱smtp),MDA會將其轉寄給下一個MTA,如果是這種情況不加任何措施的話,那麼所有的人只要串連到本地,都可以發送郵件了,且MDA都會為其轉寄給下一個MTA,我們將這種傳遞方式叫做開放式中繼(open relay)。當然這種方式是不安全的,如果有人發送一些不健康的郵件或者不法郵件的話,那麼導致以下幾種不好的影響:
(1)、佔用MTA網路頻寬
(2)、被互連網定義為黑名單,因此,許多正常的郵件無法發出。
(3)、IP可能會被上級電訊廠商給封鎖掉等等不良因素
因此為了安全起見,需要使用者在使用MUA發送郵件之前,需要提供帳號和密碼取得授權,才可以發送郵件,這樣MTA就只為這些經過授權的帳號提供中繼,就可以正常轉寄郵件了。當然驗證帳號和授權的功能需要用到SASL( Simple Authintication Secure Layer, 簡單認證安全層)機制,SASL就是用來驗證帳號是否具有relay服務。當然它也是通過在資料庫上面檢索帳號和密碼是否正確來驗證的。因此,它也需要和資料庫一起結合使用。
3、本地SMTP伺服器調用smtp用戶端(smtp)與下一個smtp伺服器建立tcp串連,然後目標smtp伺服器收到郵件後,MDA會分析該郵件的表頭和內容,決定這封信的去向。如果目標是本地,則將其轉寄到使用者的郵箱下;如果不是,繼續向下一個MTA轉寄(之後的過程和這是一樣的)。
4、用戶端收取郵件,當然也需要通過帳號和密碼取得授權,通過與MRA建立串連,這裡就使用pop3。pop3會到資料庫檢索帳號和密碼是否正確,如果帳號和密碼沒有問題,就到使用者的郵箱下取得郵件,返回給pop3伺服器,在由pop3伺服器返回給用戶端。
本文出自 “linux學習之路” 部落格,請務必保留此出處http://xslwahaha.blog.51cto.com/4738972/1560462
郵件伺服器基本原理講解