轉自http://www.open-open.com/lib/view/open1431592348122.html
自己覺得人家寫的特別清楚,特別鮮明,特地收藏!!
配置郵件服務器並不是一項簡單的工作,其過程不僅需要一定的技術能力,同時也需要大傢俱有一定的耐心,同時也需要大家非常細心。爲了能夠「看懂」並「最終實踐」這篇文章,大家還需要了解或掌握以下知識:
介紹服務
Postfix: 是一個標準的MTA「Mail Transfer Agent」服務器,它負責通過SMTP協議管理髮送到本機的郵件以及由本機發向外界的郵件。在本例中,Postfix會把郵件的本地投遞工作「接受到郵件之後將郵件存檔到本地磁盤」交給Dovecot的LMTP服務「Local Mail Transfer Protocol service」處理。當然,當大家想通過服務器向外界發送郵件時,Postfix還將負責驗證權限以確保服務器不被濫用。「很多郵件服務器根本沒有對SMTP做用戶驗證,這將導致任何匿名用戶都可以通過服務器向外界發送郵件,從而使得服務器變成垃圾中轉站」
Dovecot: 是一個非常優秀的IMAP/POP服務器用以接收外界發送到本機的郵件。通常,Dovecot的工作內容包括:驗證用戶身份以確保郵件不會被泄露。在本例中,Dovecot將負責所有的「身份驗證」工作,我們會配置Dovecot查詢本地的MySQL數據庫以確認用戶身份
MySQL: 不必多說,它將存儲所有的用戶信息,其中包括:需要監聽的域名信息、用戶郵箱地址、登錄密碼、郵箱別名「alias」等
工作原理
服務器接收郵件的過程
在開始講述本例的內容之前,我們先來看看Postfix+Dovecot+MySQL是如何相互協作以實現郵件服務器的各項功能。我們假設 張三通過oschina.net的郵箱[email protected] 發送一份郵件給 李四[email protected] ,則服務器接收郵件的過程大致如下圖所示:
2. oschina.net服務器會通過DNS查詢mydomain.com的MX記錄並找到Postfix所在的服務器
3. 郵件被髮送給Postfix
4. Postfix轉向MySQL求助,以查詢mydomain.com是不是需要處理的域名
5. MySQL返回確認信息給Postfix
6. Postfix將接受到的郵件投遞給Dovecot的LMTP服務以便做處理
用戶查收郵件的過程
上述例子中我們看到了服務器接收郵件的過程,接下來我們看看,當大家通過用戶名密碼登錄郵箱查看郵件時,會發生什麼事情:
1.郵件客戶端 to Dovecot:尊敬的Dovecot大人,您好!我闊以建立一個IMAP加密連接嗎?
2.Dovecot to 郵件客戶端:當然闊以。這是我的SSL證書,請您告訴我帳號和密碼!
3.郵件客戶端 to Dovecot:好滴!這是我的用戶名和密碼,千萬不要告訴別人哦!
4.Dovecot to MySQL:Hi 美女!請問下,這個用戶名和密碼是正確的嘛?
5.MySQL to Dovecot:好的,請稍後!呃……這個用戶名和密碼是正確的哦!
6.Dovecot打開存放在本地磁盤/var/mail/mydomain.com/llisi的mailbox
7.Dovecot獲取到最新的郵件及其他相關信息
8.Dovecot將郵件及其相關的其他信息通過IMAP協議發送給客戶端
用戶發送郵件的過程
查收了最新的郵件之後,李四[email protected] 發現張三給他發來了郵件。現在,李四回覆一封郵件給張三,會發生什麼事情:
1.郵件客戶端 to Postfix:尊敬的Postfix大人,您好!我闊以建立一個安全的SMTP連接嘛?
2.Postfix to 郵件客戶端:說人話!可以就是可以,幹嘛要說「闊以」啊!你丫賤啊,找抽啊!想建立SMTP連接可以,不過要加密。這是我的SSL證書,告訴我你的帳號和密碼,你個賤人!
3.郵件客戶端 to Postfix:對不起,大人,我錯鳥!這是我的帳號和密碼,不要告訴別人哦!
4.Postfix to Dovecot:Hi 帥哥,幫我查一下這個帳號和密碼!
5.Dovecot to MySQL:Hi 美女,這個帳號和密碼是正確的呢?!還是正確的呢?!還是……
6.MySQL to Dovecot:好啦,你乖啦!我查過啦,這個帳號密碼是正確的啦!表賣萌哦,Dovecot君!
7.Dovecot to Postfix:大鍋,則個帳號密碼斯正缺滴!
8.Postfix to 郵件客戶端:賤人,過來!你給的帳號密碼是正確的,允許你發送郵件!
9.郵件客戶端將編寫好的郵件通過SMTP協議發送給Postfix
10.Postfix將收到的郵件轉發給對方
以上,大家已經看到郵件收、發的整個過程