Azure雲部署Postfix郵件系統(一)
毫無疑問,雲計算是今年和今後幾年IT界最重要的概念之一,而隨著雲的提出,各種應用也不斷出現,在雲計算領域,各大著名IT廠商都推出自己的特有“雲”。在一個新技術的探索階段,在雲計算的模式最終成熟之前,任何一方任何一家廠商甚至是個人開發者都有權利來解釋它將來的雲計算的模樣。在這些概念與實踐中,微軟Azure是不能被業界漠視的,畢竟,在PC操作系統領域、在辦公軟件領域、在開發工具領域,在許多軟件界相關的領域,微軟都是最重要的力量,它切切實實地出現在我們工作生活的應用中。這可能也是微軟走向雲端最可炫耀的資本:雖然雲計算是一種新興的計算模式,但它走向成熟是一個演變的過程,它的技術應用也並不是在瞬間橫空出世,雲不能建造在空中樓閣之一,雲計算必定是從歷史中走來。
用微軟自己給Azure下的定義,它是一個雲計算操作系統平臺,可以為開發者提供按需定制的計算服務和基於微軟數據中心的Web應用程序。已推出將近兩年的Windows Azure platform融合了許多微軟應用。其中包括Windows Azure、SQL Azure和Windows Azure platform AppFabric。Windows Azure可看成一個雲計算服務的操作系統;SQL Azure是雲中的數據庫;AppFabric是一個基於Web的開發服務,它可以把現有應用和服務與雲平臺的連接和互操作變得更為簡單。通俗點來說,微軟想通過Azure來打通一條從本機到互聯網的通道,而本機的常見應用在Azure的協調下可以很好地應用到網間,微軟首席架構同Ray Ozzier的描述令人想入非非:“我們已經提出了一項以改變規則的技術,將帶來新的機遇,Web開發者和企業開發者將會一樣。Azure雲計算服務平臺將符合微軟所做出的承諾,開放性及互操作性,我們將承諾改變經營模式及用戶以往所建立的習慣。最重要的是,它使我們的客戶選擇的權力部署在以雲計算為基礎的互聯網服務上,或通過服務器,或把它們混合起來以任何方式提供給需要的業務。”微軟想通過Azure團結更多的開發人員,將旗下的基於Web服務的.net在這個平臺上盤活,另外,數據庫服務系統SQL也是其中的一枚很重要棋子,並且,現即時通訊與搜索領域推廣的Live 服務也納入其中,當然,還少不了基於Web的其他服務。
雲平臺示意
Azure目的
以雲為名義,Azure很容易令人想到亞馬遜的雲平臺,和Google的雲應用平臺App Engine,微軟此次出手的力度自然絲毫不遜於賣書的亞馬遜和搜索大哥Google,因為在非開源的開發工具市場,微軟的號召力還是無人能敵的,其老的Visual Studio系列和新的.net系列成為很多程序員的飯碗,現在Azure通過網絡繼續向開發人員們拋出橄欖枝。
Azure是一個讓開發者通過微軟現有的開發建立web應用程序的雲計算平臺,還可以通過微軟數據中心部署在該平臺上。看一下它們的特性,就不難分析它的目的了。
首先,它給現存的應用程序增加Web服務便利,而且為後續的管理提供了方便,可以用最少的必備資源在Web建立、修改和部署應用程序,此外,為基於海量存儲、批處理、高強度大容量計算等無前提的執行服務,這就使得開發者或用戶可以快速廉價地建立、試驗、調試、和部署Web服務。而對於金融危機當前的形勢下,這種方法不僅削減建立和擴建資源必需成本,還使IT管理成本削減。並且微軟開出了自己的第一張免費清單,對於技術方面對於開發人員免費,微軟把Azure建成為開放平臺。
具體步驟:
1. 準備工作
為了避免發生端口沖突、程序沖突等現象,應將系統自帶的sendmail服務停用,並將默認啟動狀態設為關閉。由於Postfix系統兼容並沿用了Sendmail的部分設置,因此建議保留Sendmail軟件包,而不是直接卸載。
除此以外,因在下一章中需要Postfix支持SASL認證(通過軟件包cyrus-sasl),所以應確認已安裝好相關軟件包。
2. 源碼編譯及安裝
1) 創建運行組、用戶
為了加強郵件服務的權限控制,需要創建專門的運行組賬號postfix和postdrop,以及用戶賬號postfix。運行用戶不需要直接登錄到系統,也無需創建宿主文件夾。
2) 解包
將下載的postfix源碼包解壓,釋放到/usr/src/目錄下,並切換到展開後的源碼目錄。
3) 配置
Postfix軟件包的配置步驟使用“make makefiles”進行,具體配置選項可以參考源碼目錄中README_FILES/文件下的說明文件。例如,若要使Postfix支持發信認證,可參考文件SASL_README中的相關信息。
其中,編譯參數CCARGS和AUXLIBS的作用如下:
? CCARGS參數:為編譯器提供額外的擴展參數。例如,啟用SASL認證,並指出cyrus-sasl認證程序的頭文件位於/usr/include/sasl/。
? AUXLIBS參數:為編譯器指出位於標準位置之外的額外函數庫。例如,cyrus-sasl認證程序的庫文件位於/usr/lib/sasl2/。
註:1. 如果配置寫錯誤,需要重新配置,首先輸入“make makefies clean”命令清除。
2.如果配置失敗,可能是缺少db*-devel包。
4) 編譯並安裝
註:如果編譯失敗,除了缺少ncurses-devel包之外,可能還缺少cyrus-sasl*包。
執行make install命令以後,最後階段會需要設置一些安裝參數,一般直接按回車鍵接受默認或自動識別的配置即可。完成安裝以後,應執行postconf –a命令檢查所支持的認證方式,若輸出結果中未包含“cyrus”,則應檢查配置步驟,糾正錯誤後重新進行配置、編譯並安裝。
3. Postfix服務控制
Postfix郵件系統的控制主要通過/usr/sbin/postfix命令進行,結合start、stop、check、reload選項分別實現啟動、停止、檢查、重載服務的操作。
需要註意的是,實際監聽服務的進程名並不是postfix,而是master。
當重新調整郵件服務配置以後,可以通過check選項進行基本的語法檢查,檢查無誤後再通過reload選項來重載服務。
n 主要目錄和配置文件
1. 主要目錄
? /etc/postfix:包括postfix服務的主配文件、各類腳本、查詢表等。
? /usr/libexec/postfix/:包括postfix服務的各個服務器程序文件。
? /var/spool/postfix/:包括postfix服務的郵件隊列相關的子目錄,每個隊列子目錄用於保存不同的郵件。常見的幾個子目錄及用途如下所述:
u incoming(傳入):存放剛接收到的郵件。
u active(活動):存放正在投遞的郵件。
u deferred(推遲):存放以前投遞失敗的郵件。
u hold(約束):存放被阻止發送的郵件。
u corrupt(錯誤):存放不可讀或不可分析的郵件。
? /usr/sbin/:包括postfix服務的各種管理工具程序,這些程序文件名以post開頭。主要的幾個程序文件及其用途如下所述:
u postalias:構造、修改和查詢別名表。
u postconf:顯示和編輯main.cf配置文件。
u postfix:啟動、停止postfix郵件服務,要求有root用戶權限。
u postmap:構造、修改或者查詢查詢表文件(記錄如別名等映射關系的文件)。
u postqueue:查看郵件隊列,一般用戶也可以使用。
u postsuper:管理郵件隊列,要求有root用戶權限。
2. 主要配置文件
Postfix郵件系統的主要配置文件包括main.cf、master.cf,都位於/etc/postfix/文件夾下。其中,main.cf是postfix服務的配置文件,設置郵件服務器時以修改此文件的內容為主;而master.cf是主程序master的配置文件,一般不需要修改。
在主配置文件main.cf中,可以調整的各種配置參數有近千個。大部分的配置參數都被自動設置了默認值,如果在main.cf文件中沒有對應的設置,那麽postfix服務器將使用默認值來啟動及運行。因此,只需要修改很少的幾個配置參數,就可以滿足基本郵件服務器的要求了。
使用postconf工具可以輔助配置過程,不帶任何選項時將列出當前postfix服務器啟用的所有配置參數,若添加“-n”選項則只列出使用非默認值的配置參數。
為了避免配置參數過多帶來的幹擾,提高易讀性,建議對main.cf配置文件進行適當的簡化,只保留與默認配置不同的參數。
3. Postfix的日誌文件
Postfix郵件服務的日誌文件位於/var/log/maillog,該文件中記錄了本機中的郵件進出相關的信息,包括郵件服務的啟動、出錯、與其他SMTP服務器的會話信息等。在維護郵件服務器的過程中,經常會使用帶“-f”選項的tail命令來跟蹤日誌變化。
當日誌內容較多時,還可以使用egrep命令進行過濾,只查看包含reject、error、fatal等較重要的記錄。
n 配置SMTP發信服務
在整個電子郵件系統中,postfix基於SMTP協議提供郵件傳遞服務,並負責將郵件分發到用戶的郵箱空間。對postfix服務的配置主要通過修改主配置文件/etc/postfix/main.cf來進行。
在main.cf文件中,以“#”號開頭的行表示註釋信息,其他行表示有效設置。設置行的格式與為shell變量賦值的形式非常類似,采用“配置參數=值”的形式,其中等號兩邊的空格可有可無。當某個配置參數包含多個值時,使用逗號或空格進行分隔,也允許換行進行分隔,但行首至少應有一個空格。
1. 設置main.cf,並啟動服務
在上述配置中,將mydestination的值設置為“$mydomain,$myhostname”,表示將@benet.com和@mail.benet.com域作為本地目標域,允許投遞到本地郵箱空間。各用戶的郵件將被保存到宿主目錄下的Maildir/文件夾中。
郵箱空間用來存放每個用戶的電子郵件內容。在postfix服務器中,支持兩種最常見的郵箱存儲方式:Mailbox、Maildir(當指定的存儲位置最後一個字符為“/”時,自動使用Maildir存儲方式)。
? Mailbox:同一個用戶的所有郵件內容存儲為單個文件,通常保存在/var/spool/mail/目錄下,文件名與用戶名相同。Mailbox存儲方式比較古老,當郵件數量較多時會降低查詢和管理的效率。
? Maildir:使用目錄結構來存儲用戶的郵件內容,每一個用戶使用一個文件夾,每封郵件都作為一個獨立的文件存放。Maildir方式的存取速度和效率要好一些,對於管理郵件內容也更加方便,大多數較新的郵件服務器都采用這種方式。
2. 添加郵箱賬號
Postfix服務器默認使用本機中的系統用戶作為郵件賬號,因此使用時只需要添加Linux用戶賬號即可。測試時,可以添加兩個郵件賬號xiaoqi和lisi,並為其設置密碼。
3. SMTP發送郵件測試
將postfix服務器交付使用之前,最好先在本機測試一下發信功能是否正常。命令行中的測試工作可以通過telnet命令進行。例如:可以連接到郵件服務器的25端口,並輸入相關的SMTP命令,以郵件賬戶[email protected]作為發件人,給[email protected]發送一封測試郵件。
郵件發送並投遞成功以後,可以到服務器中lisi用戶的宿主目錄下進行查看,新接收到的郵件保存在Maildir/new/目錄中。
通過以上測試結果,不難發現已經能夠通過postfix服務器發送並投遞郵件了,但是還只能在服務器本機查看收到的郵件。若要使收件人能夠從其他主機查收郵件,還需要進一步安裝POP3或IMAP服務器,以提供郵件的下載服務。
n 配置POP/IMAP收信服務
Dovecot是一個安全性較好的POP3/IMAP服務器軟件,響應速度快而且擴展性好。Dovecot默認也使用Linux的系統用戶,並通過PAM(Pluggable Authentication Module,可插拔認證模塊)機制進行身份認證,只有通過認證後才允許用戶收取郵件。
1. 編譯安裝Dovecot軟件包
1) 預先創建運行用戶
2) 源碼編譯安裝
註:在編譯安裝之前,先確認pam-devel包是否安裝。如果沒有安裝,必須先安裝成功後,然後再配置。
3) 添加為系統服務dovecot
2. 建立配置文件,並啟動服務
1)建立配置文檔
Dovecot的配置文件位於/etc/dovecot/目錄下,主配置文件為dovecot.conf,默認並沒有此文件,需要參考樣例目錄重新創建。為了方便以後的擴展配置,建議將各種樣例配置文件都復制到/etc/dovecot/目錄下。
若要支持系統用戶認證,還應建立相應的PAM認證文件/etc/pam.d/dovecot,具體內容請參考/etc/pam.d/目錄下的其他文件。
2)調整主配置文件
為了降低初學難度,這裏只使用系統用戶認證,而並不使用SSL等安全機制。因此需要修改主配置文件dovecot.conf,將“!include conf.d/*.conf”行改為“!include conf.d/10-auth.conf”,並禁用SSL機制,允許在驗證時使用明文的用戶名和密碼。除此之外,還需要指定郵箱格式及存儲位置。
4) 啟動dovecot服務,並確認監聽狀態
Dovecot默認已配置為監聽POP3/IMAP郵件協議,因此啟動dovecot服務後,可以查看對TCP端口143、110的監聽。
3. POP3接收郵件測試
使用telnet連接到Dovecot郵件服務器的110端口,輸入POP3操作命令,以郵箱賬戶[email protected]的身份查收郵件內容。測試過程如下所述:
通過以上測試結果,不難發現用戶已經能夠通過Dovecot服務器收取郵件。該服務器具備了SMTP發信功能、POP3/IMAP收信功能,一臺簡單的郵件服務器的設置就基本上大功告成了。
n 測試發信、收信功能
1. 設置郵箱賬號
在點擊上圖中的“測試賬戶設置”後,會彈出如下圖所示的窗口,並自動測試。如果顯示狀態都為“已完成”,說明設置沒問題。
2. 發送測試郵件
3. 接受郵件測試
在測試收信、發信的過程中,若出現失敗的情況,應及時查看/var/og/maillog郵件進出日誌,並根據相關信息分析、排查故障。
n 郵件系統的角色
? MTA(Mail Transfer Agent,郵件傳輸代理):一般被稱為郵件服務器軟件。MTA軟件負責接收客戶端軟件發送的郵件,並將郵件傳輸給其他的MTA程序,是電子郵件系統中的核心部分。
? MUA(Mail User Agent,郵件用戶代理):一般被稱為郵件客戶端軟件。MUA軟件的功能是為用戶提供發送、接收和管理電子郵件的界面。
? MDA(Mail Delivery Agent,郵件分發代理):MDA軟件負責在服務器中將郵件分發到用戶的郵箱目錄。MDA軟件相對比較特殊,它並不直接面向郵件用戶,而是在後臺默默的工作。有時候MDA的功能可以直接集成在MTA軟件中,因此經常被忽略。
n 郵件通信協議
? SMTP(Simple Mail Transfer Protocol,簡單郵件傳輸協議):主要用於發送和傳輸郵件。MUA使用SMTP協議將郵件發送到MTA服務器中,而MTA將郵件傳輸給其他MTA服務器時同樣也使用SMTP協議。SMTP協議使用的TCP端口為25。對於支持發信認證的郵件服務器,將會采用擴展的SMTP協議(Extended SMTP)。
? POP(Post Office Protocol,郵局協議):主要用於從郵件服務器中收取郵件。目前POP協議的最新版本是POP3。大多數MUA軟件都支持使用POP3協議,因此該協議應用最為廣泛。POP3協議使用的TCP端口號為110。
? IMAP(Internet Message Access Protocol,互聯網消息訪問協議):同樣用於收取郵件。目前IMAP協議的最新版本是IMAP4。與POP3相比較,IMAP4協議提供了更為靈活和強大的郵件收取、郵件管理功能。IMAP4協議使用的TCP端口號為143。
總結!雲風暴愈演愈烈........
Azure雲部署Postfix郵件系統(一)