《網路安全》 使用FreeBSD建立安全的郵件系統—imap/pop篇 張毓麟 前言 電子郵件根據使用者的動作而言,基本上可分為送信與收信兩方 面。發信通常使用郵件軟體(例如MS-OutLook或是Netscape-Messenger), 使用SMTP協定經由郵件伺服器的Sendmail程式發送;收信則有較多 的選擇,常見的是操作郵件軟體透過POP-3或是IMAP-4協定到郵件伺 服器上抓取信件。 在上(1713)期的中心通訊中,已經為大家介紹了具有身份認證 以及保密連線功能的Sendmail程式,可用於安全的發送電子郵件。 在本期的通訊中,我們將繼續探討使用者收信時的安全機制,以期 建立一個安全的郵件收發系統。 POP與IMAP有何不同? 以使用者的角度來看,POP與IMAP最明顯的差異在於郵件存放的方 法,以及郵件軟體抓取郵件以及保存郵件的行為。說明如下: POP:郵件軟體透過POP抓取郵件的時候,通常會把郵件全部下載到 使用者的PC上,然後把伺服器上的信箱清空,以便釋放空間。 如果使用者建立了不同的郵件夾作郵件分類,這些郵件夾會存 放在使用者的PC上,不會佔用到郵件伺服器的空間。這種做法 適合在伺服器上只擁有少量儲存空間的使用者。 IMAP:在使用IMAP協定抓取郵件的時候,一開始只會列出郵件的標 題,不會真正的下載郵件。直到使用者確定要讀取該郵件的時 候,才會將該封內容抓取到PC上顯示,而且並不會將伺服器上 的郵件刪除。如果使用者建立了不同的郵件夾作郵件分類的動 作,這些郵件夾會建立在伺服器上,而不是建立在使用者的個 人電腦上。因而可以發現,在郵件伺服器上擁有大量儲存空間 且方便長時間連線在網路上的使用者,便很適合使用IMAP協定 來收取郵件。 在FreeBSD的軟體庫中,已經包含有數種IMAP與POP的伺服器端軟 體,其中以卡內基美隆大學發展的Cyrus-IMAP(提供IMAP4/POP3協 定)、華盛頓大學發展的IMAP-UW(提供IMAP4/POP3協定),以及 QualComm通訊公司發展的Qpopper(只提供POP3協定)最為有名。以 下本文將以華盛頓大學的IMAP-UW作為範例,示範架設IMAP與POP的 伺服器端軟體。 軟體與程式庫安裝 下述所有的操作程序,請依照順序執行,並請留意大小寫的不同。 大小寫與空白的混淆,將造成操作上的失敗。 安裝cclient程式庫 cclient是由華盛頓大學所發展的一個泛用型信箱(mailbox)處 理程式庫。華盛頓大學所發展的一系列郵件相關軟體都需要這個程 式庫。下列指令,可以安裝具備保密連線功能的cclient程式庫。 # cd /usr/ports/mail/cclient # make WITH_SSL=YES install 安裝IMAP-UW伺服器軟體 IMAP-UW被收錄在軟體庫的電子郵件分類中,安裝的指令如下: # cd /usr/ports/mail/imap-uw # make WITH_SSL=YES install 上述指令會將imapd ipop3d ipop2d三支伺服器程式以及mlock這 個輔助程式安裝到/usr/local/libexec/目錄中(註:由於目前POP-2 協定幾乎已經不再使用,而由POP-3取代,因此在後文的設定中,將 不討論POP-2的相關設定)。 製作並安裝保密連線金鑰(key-pair) IMAP/POP與上一期所提到的Sendmail相同,在進行保密連線的時 候都需要一把連線金鑰,我們可以利用下列指令來製作金鑰: # cd /usr/ports/mail/imap-uw # make cert 此時,螢幕上會陸續出現一些關於伺服器狀態的相關問題,請用 英文依序回答即可,切勿使用中文或是其他語言,以免造成某些郵 件軟體運作不常。 在此需要特別留心的是,當出現Common Name(FQDN of your server) 這一道問題的時候,必須回答伺服器在網路上所登錄的全名,例如 後文圖片範例中出現的beta.wsl.sinica.edu.tw,否則日後使用者 操作保密連線時,郵件軟體會不斷跳出警告訊息,造成使用者的困 擾。 回答完所有問題之後,連線金鑰會被安裝到/usr/local/certs/ 目錄中,檔案名稱為imapd.pem,也會自動產生一個符號連結檔 (symbolic link)ipop3d.pem連結到imapd.pem。 調整系統設定 IMAP-UW伺服器軟體安裝完之後,並不能直接運作,還需要調整系 統部分設定項目,包括啟動IMAP/POP服務的/etc/inetd.conf檔案、 管理client連線範圍的/etc/hosts.allow檔案,以及管理使用者認 證的/etc/pam.conf檔案等,如下: /etc/inetd.conf設定: IMAP與POP服務可以由 /etc/inetd.conf內設定執行,請用vi或是 joe等文字編輯器,編輯/etc/inetd.conf檔案,並加入下列四行設定: pop3 stream tcp nowait root /usr/local/libexec/ipop3d ipop3d imap4 stream tcp nowait root /usr/local/libexec/imapd imapd pop3s stream tcp nowait root /usr/local/libexec/ipop3d ipop3d imaps stream tcp nowait root /usr/local/libexec/imapd imapd /etc/hosts.allow設定: 編輯/etc/hosts.allow可以對client端的連線ip作限制。一般來 說,為了方便使用者連線使用,會允許client端於任何地方連線。 請在/etc/hosts.allow檔案中加入下列兩行設定,以達成此項功能: imapd : ALL : allow ipop3d : ALL : allow /etc/pam.conf檔案: IMAP-UW伺服器軟體會參考/etc/pam.conf的設定,作為對使用者 認證方法的順序。請在/etc/pam.conf檔案中加入下列六行設定,以 便IMAP-UW伺服器軟體參照系統帳號來認證使用者: imap auth required pam_unix.so imap account required pam_unix.so try_first_pass imap session required pam_deny.so pop3 auth required pam_unix.so pop3 account required pam_unix.so try_first_pass pop3 session required pam_deny.so 檢查IMAP/POP功能是否已經啟動 首先,以下列指令重新啟動inetd以便提供IMAP/POP服務: # killall -HUP inetd 以下列指令檢查IMAP/POP是否在正確的port上準備提供服務: # sockstat -l 若螢幕上出現的訊息包含以下四行,則表示IMAP/POP已經在預定 的port準備提供服務: root inetd 123 6 tcp4 *:110 *:* root inetd 123 7 tcp4 *:995 *:* root inetd 123 8 tcp4 *:143 *:* root inetd 123 9 tcp4 *:993 *:* 請注意:上面的訊息中,第三與第四欄的值可能會有所變化,每 台機器都有可能不相同。若沒有出現這四個訊息,表示前述的操作 發生了錯誤,請檢查系統記錄檔/var/log/messages內的訊息,以 瞭解錯誤發生的詳細狀況。 設定使用者的郵件程式使用保密連線 在此以Microsoft OutLook Express以及Netscape Messenger為範 例,以圖例說如何設定明使用者抓取郵件時,受到保密連線的保護: Microsoft OutLook Express設定步驟 IMAP範例(如圖一):  [OutLookExpress]-->[工具]-->[帳號]-->[郵件]-->[內容]-->[進 階]-->[內送郵件-IMAP:993]-->[這個伺服器需要安全連線-SSL] (打勾) POP範例(如圖二): [OutLookExpress]-->[工具]-->[帳號]-->[郵件]-->[內容]-->[進 階]-->[內送郵件-POP3:995]-->[這個伺服器需要安全連線-SSL] (打勾) Netscape Messenger設定步驟: IMAP部分(如圖三): [NetscapeMessenger]-->[Edit]-->[Preference]-->[Mail&Newsgroups] -->[Mail Servers]-->[Incoming Mail Servers]-->[Edit]-->[IMAP] -->[Use secure connection (SSL)] (打勾) POP部分:   由於Netscape Messenger並不支援具有保密連線功能的POP3協定, 故無法在此為讀者進行示範。 結語 在此對於Netscape Messenger的使用者,筆者必須特別提出一點 叮嚀。雖然Netscape Messenger使用IMAP抓取郵件的時候有支援保 密連線功能,但是其內所附的『新進郵件檢查』功能,卻不支援保 密連線。如果使用Netscape Messenger的『新進郵件檢查』功能, 則您的通行碼將以明文(clear text)的方式在網路上傳送,造成 潛在的洩密危機。不幸的是,該功能在軟體安裝後是預設為啟用的。 因此筆者建議,在Netscape未修正此一問題之前,最好避免使用 Netscape Messenger作為您閱讀郵件的工具。 以上,就是在FreeBSD 4.3-STABLE版作業系統上,以華盛頓大學 所發展的IMAP-UW伺服器軟體,搭配系統內建的OpenSSL功能建構具 備保密連線的郵件伺服器的建構程序。當然,選擇使用合適的用戶 端郵件軟體,才能在使用者收取郵件及閱讀的過程中,達到保護郵 件安全的目的。