sendmail是最重要的郵件傳輸代理程式程式。Sendmail作為一種免費的郵件伺服器軟體,已被廣泛的應用於各種伺服器中,它在穩定性、可移植性、及確保沒有bug等方面具有一定的特色,且可以在網路中搜尋到大量的使用資料。一般情況下,我們把電子郵件程式分解成使用者代理程式,傳輸代理和投遞代理。 使用者代理程式用來接受使用者的指令,將使用者的信件傳送至信件傳輸代理。而投遞代理則從信件傳輸代理取得信件傳送至終端使用者的郵箱。郵件傳輸是從伺服器到伺服器的,而且每個使用者必須擁有伺服器上儲存資訊的空間(稱為信箱)才能接受郵件(發送郵件不受這個限制)。可以看到,一個郵件傳輸代理程式的主要工作是監視使用者代理程式的請求,根據電子郵件的目標地址找出對應的郵件伺服器,將信件在伺服器之間傳輸並且將接收到的郵件緩衝或者 提交給最終投遞程式。有許多的程式可以作為信件傳輸代理,但是sendmail是其中最重要的一個,事實證明它可以支援數千甚至更多的使用者,而且佔用的系統資源相當少。不過,sendmail的配置十分複雜,且無驗證,沒有防範垃圾機制,沒有防病毒機制。當sendmail程式得到一封待發送的郵件的時候,它需要根據目標地址確定將信件投遞給對應的伺服器,這是通過DNS服務實現的。sendmail首先確定這個地址是使用者名稱+機器名的格式,然後,通過查詢DNS來確定需要把信件投遞給某個伺服器。DNS資料中,與電子郵件相關的是MX記錄。
MUA (mail user agent 郵件使用者代理),用於使用者端發送郵件或者閱讀郵件。linux有mutt這個工具 MTA (mail tranfer agent 郵件傳輸代理程式 ),相當於一個郵局,server端的軟體,主要的功能有,接收MUA發來的郵件和把郵件發送給下一個MTA,可以說是一個郵件路由(mail router),server端的軟體就屬於MTA,現在開源的有sendmail,postfix,qmail等 。
MDA (mail devilery agent 郵件投遞代理),主要是將MTA所接受的郵件,依照郵件的目的地將此郵件放到本機帳號下或者是給下一個MTA,一般就是指mail這樣的命令。
郵件的協議:
發信: SMTP (simple mail tranfer protocol 簡易郵件傳輸通訊協定) 連接埠號碼 TCP的25連接埠,在發信時,MUA會主動串連MTA的port 25,然後經由SMTP協議發送出去,SMTP分為接受SMTP和發送SMTP,它不管兩端主機的配置或者系統等,只要兩邊SMTP協議OK就可以發送郵件
收信: POP (post office protocol 郵局協議),來串連到MTA,以讀取或者下載郵件,現在常用的版本是POP3,連接埠為110 IMAP (internet message access protocol 網路報檔案協議),能在下載郵件前先下載郵件標頭資訊,以可以讓使用者選擇性下載 連接埠 143。
首先來測試一下環境
這裡我用的centos的系統,預設似乎是安裝過了sendmail的,並且是啟動過的。
接著安裝dovecot:yum install dovecot
啟動dovecot: service dovecot start
這時是可以發信件的,為了測試可以先添加兩個帳號user1、user2,然後向其發送一份郵件
由日誌看出,發送成功了,真的發送成功了嗎,要看user1能否收到這封標題為1的內容為12387681498649821的郵件,為了驗證,要切換到user1,進行收信