Tuesday, May 31, 2005

IMAP Server Software

話說 IMAP Server 百百種... 唔! 好像也沒那麼多, 大概常見的就是 UW-IMAP, Cyrus-IMAP, Courier-IMAP, DBmail 這幾種.

UW-IMAP 用的是 Unix 標準的 mail box 格式, 缺點是一個 Folder 很大的時候就會出現爆炸性的延遲, 慢到頭暈. 再加上這種 mail box 的架構沒辦法搞 sub-folder, 或稱為 dual-used folder, 對 user 來說很不方便. (雖然有 patch 給 UW-IMAP 硬上 Maildir 格式的 Folder, 但也是很糟糕的解法)

Cyrus-IMAP 用的是他自己的特殊格式, 算是 Maildir 的變形. 不過麻煩的是它碰到 Subject 是沒編碼的 8bit 字串就會很機車的把 8bit 字串用 X 替換掉, 經常出現的就是一些中文標題變成一堆 XXX 好像是什麼 A 片宣傳品 :p

是有 8bit 的 hack 讓 Cyrus-IMAP 不會用 X 去替換 Subject 裡面的 8bit 字串, 但是測試發現遇到一些怪字串會爆炸, 可能是衝到它內部的控制碼. 雖然說 8bit subject 應該要編碼是RFC 說的啦, 但是不照 RFC 寫的東西還不少, 起碼一堆電子報都是亂來的, 可是又不能通通擋掉.

DBmail 因為後端要上 SQL 才能顯現他偉大的地方, 所以就沒多測試了... 環境還沒到需要隨便搬 SQL database 出來的地, 三四年內預估也不會長需要端 SQL 出來搞的程度. 再說, 這個 SQL server 沒 tune 好的話, 反而會變成瓶頸 :p

最 後說 Courier-IMAP, 這東西算是測試到現在最棒的了. 他使用標準的 Maildir 格式, 對於 8bit subject 是來者不拒 (個性好), 塞了 n*10 GB 的垃圾電子報還有一大堆亂七八糟的信件進去也面不改色通通吃下去 (不挑食), 再加上提供 mbox 轉 Maildir 的好工具可以快速的把一大堆 user 的舊信件轉過去... 嗯! 這陣子先平行測試看看, 沒爆炸的話應該就是挑這個上吧!

鎖起來! 鎖起來!

鎖起來! 鎖起來! 權限通通鎖起來! 密碼通通鎖起來! 哇啦哇啦, 全部鎖光光!

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!

為什麼沒有用 pam_ldap

前一個 post 我說我用 Cyrus-SASLauthd 去查 MS-Windows 2003 AD 上面的密碼. 為什麼不用 pam_ldap 呢? 這東西不是應該更好更有彈性嗎?

的確是這樣的, PAM 的確是我一開始就想到要用的 solution, 也是 MS 文件裡面所提到的工具. 不過經過很長一段時間的測試 (debug) 發現, pam_ldap 要跑的好的條件是 DN 裡面沒有中文... Orz

DN 就是 CN=ylchang, OU=office, DC=company, DC=com 這一串東西, 這樣的 DN 如果在英語系的環境裡面那當然是快樂天堂. 但是非常不幸的是, 那個朋友的公司裡面, CN 竟然帶中文字, 也就是他的 DN 看起來是長成 CN=張小毛, OU=office, DC=company, DC=com 這樣子, 這種樣子的 DN 不妙在哪裡呢?

因 為 pam_ldap 的作法是, 用 default binddn 先 bind 到 AD 上面, 然後依據 filter 的內容找出新的 DN, 再用新的 DN 試著 bind 到 AD 上面, 如果 bind 成功就算是密碼正確. 所以在上面的例子裡面, 第二次的 bind 就會把利用 default DN 查到的新 DN (CN=張小毛, OU=office, DC=company, DC=com) 拿來對 AD 做 bind, 可是在查找的過程中, 中文字串『CN=張小毛』已經在轉碼的過程給破壞掉了, 所以不論怎樣搞都沒有辦法利用新的 DN 去 bind AD 成功...

這部分我暫時找不出解法, 加上我的目的只是要確定密碼正確, 還不需要找出 home directory 之類的帳號資料, 所以就用 Cyrus-SASLauthd 上了. 等我有空在來看看 pam_ldap 對於內含中文的 DN 該如何解決.

FreeBSD Cyrus-SASLauthd + MS-Windows 2003 AD

我搞這東西是為了要 (幫某人) 做 Authenticated Relay 的整合, 他的 user 都建在 Windows 2003 AD 裡面, 想當然耳這個 email 服務也應該去參考到 AD 裡面的帳號密碼, 這樣才有一致性也才不會『擾民』... anyway, MS-Windows 真是沒有團隊精神的東西, 要他跟別人合作真是大工程.

LDAP Server: MS-Windows 2003 AD ( 管USER跟密碼 )
windows 2003 AD 的 ip 是 192.168.1.100 , 在 AD 上面開一個假的帳號: freebsd ( 密碼是 power123 )

SMTP server: FreeBSD 5.3-RELEASE-p15
上面裝了 postfix-2.2.2,1 + cyrus-sasl-saslauthd-2.1.20_1 + openldap-client-2.2.24

/etc/rc.conf
saslauthd_flags="-a ldap -c -t 30"

/usr/local/etc/saslauthd.conf
ldap_servers: ldap://192.168.1.100/
ldap_version: 3
ldap_bind_dn: CN=freebsd,OU=lab,DC=institute,DC=local
ldap_bind_pw: power123
ldap_group_scope: sub
ldap_search_base: OU=lab,DC=institute,DC=local
ldap_timeout: 10
ldap_filter: sAMAccountName=%u
ldap_default_domain: institute.local
ldap_auth_method: bind

以上的設定, AD 只用來管密碼, 不能像 pam_ldap 一樣可以管到帳號的資訊 (例如 home dir 之類的), 不過某人的需求只是去做 smtp 的 authenticated relay, 所以這樣就夠了.

重點是 ldap_auth_method: bind 這個設定, saslauthd 會用輸入的帳號與密碼去試著 bind 上 AD, 如果 bind 成功表示輸入的帳號密碼是對的, 就完成密碼認證的程序了.

Monday, May 23, 2005

To be or not to be: That is the question

這是 William Shakespeare 的 Hamlet 裡面的名句, 沒看過劇的也都聽過這句話 ^_*

螢幕上面停了一隻肥大的蚊子, 脹大的肚子裡面都是剛吸飽的我的鮮血. 我手拿強力電蚊拍指按開關, 拍上電網滋滋作響, 彷彿就是惡蚊的輓歌! 我這一拍打下去可以輕易的擊殺這隻肥大的惡蚊, 但是稍有閃失就是螢幕隨著手起拍落灰飛煙滅啊! 我遇到的雖然不是像劇中 Hamlet 那樣大的抉擇, 但是對窮人如我者, 也是很嚴重的心理挑戰.

這一拍, 到底打是不打呢? To be or not to be: That is the question...

下貓下狗

今天下午辦公室外面突然下起暴雨, 套句我老弟說的話『台北快要漂走了! 不要再下啦!』
到了下班時間突然雨停了, 就看到整個院區一大票人往外衝, 大家都想抓住這個好時間, 趕快跑回家! 平常我這層樓都很多人加班的, 結果今天不到七點竟然整層樓走光光剩下我一個, 實在太悲情了啊! 我也好想回家啊!
剛剛在網路上面亂逛, 看到有人在賣下貓下狗的風鈴: Raining Cat and Dog Bitsy Wind Chimes

新玩具入手 -- USB 音效卡

上週五我異常疲累的時候, 被某有錢人趁機勸敗成功, 買了一個很小的 USB 音效卡, 成功取代 Compaq N600c 內建的鳥蛋爆音+雜音卡... 能聽到無雜音的音樂真是太爽了呀!

不過這篇的重點是爆破! 要爆破的是那個勸敗的某有錢人, 他以前也是用 Compaq N600c/610c 的筆記電腦 (他有兩台喔! 可見是大錢輩!) 竟然能夠容忍 Compaq 的鳥蛋爆音+雜音卡, 直到最近某人換了 Toshiba S100 (對! 第三台 NB... $_$) 才跟我說, 原來電腦放音樂暫停的時候是完全靜音的... 真是有錢的木耳... Orz

Wednesday, May 18, 2005

英國年輕人"摒棄"傳統紅茶

從 BBC 中文網看來的: 英國年輕人"摒棄"傳統紅茶
我個人認為紅茶喝起來爽度的確不如綠茶或是烏龍. 比如說吃了油膩的台菜以後, 來杯烏龍茶去油解膩, 真是太棒了! 而精神不好的時候來一杯清新的綠茶, 冰的熱的都能提神醒腦.
文章最後面提到一個「白茶」不知道是啥東西...

Thursday, May 12, 2005

病毒信

通常病毒信是中毒的電腦自己送, 但有時候大概是去抓了設定或是被 redirect, 還是會經過 email server 來發病毒信. 如果 email server 沒有對自己內網出來的信做 virus filter 就會把病毒信 relay 出去. 嗯... 內網其實也是不可信任的... 最近接到很多 JP 來的病毒信有感而發寫下這篇.

Friday, May 6, 2005

看報紙看新聞

我住的旅館會給免費報紙 USA Today, 另外 Lobby 會有 Washington Post. 我通常晚上回旅館就會去 Lobby 跟工作人員要當天的 Washington Post 拿回房間, 這樣我就有兩份免費報紙可以看了 ^_^

我 覺得 USA Today 跟 Washington Post 都算滿正經的報紙, 不會報奇怪的八卦新聞, 他們的記者寫新聞也不像台灣新聞媒體記者加油添醋寫一大堆推測或是情緒性的個人意見進去, 只是平鋪直敘的把事情說明出來, 如果要評論就在另外類似社論的版面寫, 整份報紙看起來就很舒服.

在台灣我看報紙都是大略翻一下看看標題, 只有那種教作菜的家庭版文章才會仔細看看內文, 但是在這裡雖然每天開會都很累, 但是晚上回旅館看這兩份報紙順便打開電視看 local channel 的新聞報導卻不會增加疲勞度, 看完反而覺得精神很舒暢... 顯然是被台灣的新聞媒體虐待太久了.

回程這天沒看到 Washington Post, 因為一大早出發旅館還沒把報紙擺出來, 在飛機上只有 USA Today, 份量不夠過癮, 嗯... 有點可惜.

Monday, May 2, 2005

花名

昨天晚上因為時差的關係整晚睡睡醒醒的, 其中某次醒過來突然想到, 該不該幫自己娶個花名呢 :p
從學生時代寫論文或是上網打混到現在, 一直都是用中文音譯過去的英文拼音, 從來沒有想過要弄個花名來叫叫, 應該是強烈的時差還有數杯咖啡搞亂了腦袋...
花名要叫什麼好呢? 之前有聽人家講過, 說叫包 (paul) 的大都很自戀, 叫伊森的大都很自大, 叫奧畢德 (Ovid) 的大都很搞怪, 嗯~~~