Friday, May 27, 2005

又為了鳥蛋 MS 多做工 (MS-Exchange)

現在剛好有空就一次多寫一點吧 :p

MS-Windows 做的整個 domain 很喜歡用 company.local 這樣的名字當做內部的網域 (也就是 CN=username, OU=office, DC=company, DC=local 這樣的東西). 坦白說, 我很討厭看到 ooxx.local 這樣的東西... 對啊, 我就是看這字串不順眼...

如果只是拿來做 email server 的話 MS-Exchange 又是另外一個討人厭的東西 (不幸的是台灣現在用 MS-Exchange 的中小企業大概十之八九只是要有個 email server). 當然 MS-Exchange 不安全, 又很不耐打, 又容易中毒, 沒事塞門鐵剋防毒軟體還會自己罷工...

反正這些問題大家都已經很了解, 我要說的是他的 email 功能, 他根本不會有 client 的記錄資料在 mail header 上面 (不要拿 RPC 來當藉口呀, 應該要能把 RPC 資料貼到 X- 欄位上的).

而 且 email 往外送的時候, 會很自動的把 ooxx.local 貼到 From: 欄位上, 雖然有某個設定可以把 From: user@ooxx.local 改成 From: user@company.com 不過當 MIS 失手, 或是他自己發春的時候, 這個 From: 欄位就會出現 ooxx.local 這種惹人厭惡的噁心字串. 然後出去的信遇到會檢查 From Domain 的 server 就會因為 domain not exist 而被拒絕 (這種 server 還真不少)

我那個朋友 (對, 又是他... 他應該要去改運了) 就是遇到這種狀況, 一狗票從 MS-Exchange 出來的 email 都帶著 ooxx.local 的 domain 然後通通被丟到火星去了... Orz

為 了避免以後悲劇再次發生, 我就幫他想了一個 solution 出來. 就是 MS-Exchange 不在對外收發信件 (只是把 firewall 上面的 rule 改一下, 這很快, 我也很樂意看到 MS-Exchange 坐監牢 :p) 所有信件進出通通透過 MX Server, 就是一台 FreeBSD + Postfix 的機器.

在這個 postfix 的 /usr/local/etc/postfix/main.cf 裡面加上
sender_canonical_maps = regexp:/etc/mail/sender_rewrite.regexp

然後在 /etc/mail/sender_rewrite.regexp 裡面寫
/^(.+)@ooxx\.local$/ ${1}@company.com

這樣, 不管 exchange 怎麼發春, 用穩定的 postfix 做第一道防線! .... 嗯! Never trust MS!

No comments: