當我們思考電子郵件的 Rely 問題時,我們總會不小的解決方案,例如︰只容許使用者透過某網絡來寄出郵件,而不容其它網絡下的電郵透過自己的電腦來寄出郵件。這在 postfix 系統下的參數如︰ mynetworks 就是用來處理這方面的問題。但是使用 mynetworks 卻不能解決一些使用者,他們不是固定地坐在辦公室的。管理者也不會知道他們在連接外寄電郵伺服器時所使用的網絡地址是什麼。更不可能把這些資料加到 mynetworks 的參數下。
當我們要數到 postfix 下的 smtp 認証的話,我們必須要討論 sasl 認証。因為 postfix 在 smtp 認証下,只支援 sasl 認証。
sasl 是由 cyrus 設定,而專門用來作為認証的通信協定。而最用得 sasl 精彩的,可以算是 OpenLDAP 伺服器,如果在 OpenLDAP 下如果你不使用 sasl 作認証的話,我們就會稱這只是簡單的認証,除非你使用 sasl 來作認証,這才可以把認証級數推高。
其實 amavisd 除了可以和 clamav 來聯手來檢查你的電郵外,亦可透過 spamassassin 來檢查你有沒有收到 spam 電郵。要作這樣的工作的話,當然你要安裝 spamassassin 這程式。
# apt-get install spamassassin
另外你也要再行設定你的 file:///etc/amavis/amavisd.conf 檔案。(因為這檔案太大了,所以請你好好找找這一檔案,找尋你需要修改的行。)
還記得 netvigator 的網絡政策吧!就是不容許客戶連接互聯網上的 smtp 埠,也就是如果你在公司內建立了一台高可信靠的 postfix 伺服器,但是你卻不容易地在家裡使用它。因為如果你是 netvigator 的網上行客戶,你就無法連接你的 postfix 的聆聽埠,那麼怎樣辦才好!?
倚我的見解是︰讓你的 postfix 伺服器多聆聽一個埠,那麼你的客戶端就可以多了一個連接上的選擇了,我所選擇的聆聽埠是 10 。
其實現代的病毒傳送,很多時都是透過電郵來傳送的,我們絕不可以小看使用電郵來散播病毒的威力。所以在我們設定 postfix 的時候,也應一起考慮安裝病毒的檢測工具。
當然有很多商業提供的病毒檢查軟件,其中也有很多是運行在 Linux 下的。但是如果你還是一個 OpenSource 的支援者,那麼 clamav 是你可以選擇的方案。
當我們要了解 postfix 如何把郵件傳送到互聯網上不同的電郵伺服器的時候,我們要先了解什麼是 DNS 中的 mx record 。
我們試試使用 dig 的指令來檢查一下 samba.hk 的 mx record 吧!
# dig -t mx samba.hk; <<>> DiG 9.2.4 <<>> -t mx samba.hk
;; global options: printcmd
;; Got answer:
其實 postfix 伺服器有時也不一定會依 DNS 中的 mx record 來發送郵件的。
例如︰曾經接過一個很特別的任務。當時國內對世界各地的互聯網通信都不是太好,因些有一間公司希望自己國內的廠房和寫字樓在寄出信件的時候,都把信件先寄到香港的 data center 後再從香港寄到世界各地。但是如果信件是寄到中國國內的,就不要把信件寄到香港來。
其實這裡有一個很特別的情況。我們試試再在 file:///etc/postfix/virtual 下加上這樣的一行。
@sambahk.com frankie
這時讓我們再執行 postmap 。然後寄一封信給 eval(unescape('%64%6f%63%75%6d%65%6e%74%2e%77%72%69%74%65%28%27%3c%61%20%68%72%65%66%3d%22%6d%61%69%6c%74%6f%3a%77%69%6e%6e%69%65%40%73%61%6d%62%61%68%6b%2e%63%6f%6d%22%3e%77%69%6e%6e%69%65%40%73%61%6d%62%61%68%6b%2e%63%6f%6d%3c%2f%61%3e%27%29%3b')) ,你可以看看這封信被寄到那裡。在這裡你可以看見你的電郵被寄到 frankie 的帳號下。這裡或許有幾點值得留意的,就是︰
其實電郵的保安問題一直受著關注。當然最出名的問題是 OpenRely 的問題和 Spam 這兩方面 。其實電郵在網絡上連送時有沒有被人截取,其實也是一個需要特別關注的問題。在這方面的解決方案,我們還是會使用 SSL 來作把電郵加密傳送的。
這裡我們就嘗試介紹一下如何設定 postfix 電郵系統下的 SSL 連接。
我們很多時會希望某個使用者帳號下的電子郵件,給另一使用者所收取。例如最出名的就是 postmaster 和 root 這個電郵帳號了。
為什麼不希望 root 下的電子郵件,直接被 root 所收取呢?其實這裡有一個很有趣的保安問題的。因為如果 root 使用它的帳號來使用 pop3 和 imap 伺服器下來收取郵件的話,那麼 pop3 和 imap 伺服器就會直接取得最高權力者的帳號資料了。如果不幸地給予攻擊的話,就會使最重要的資料外洩了,例如︰ root 的帳號密碼等。所以如 telnet 等的伺服器亦不會直接給予作遠端發入的。所以在正常情況下 root 的電子郵件都是給一個普通管理者帳號代收的。(所以在 qmail 安裝後,也會期望你先設定如 file:///var/qmail/alias 下的 dot-qmail 檔案。)