本文將介紹 Linux/UNIX 類系統平臺上的開源 IMAP 和 POP3 伺服器 —— Dovecot,以及其在 NFS 作為存儲時解決緩存(caching)問題的方案 —— Dovecot Director。 您將看到如何配置 Dovecot Director 以及 Dovecot Director 是如何工作的。
What & Why Dovecot
Dovecot 這個名詞也許對於很多人都比較陌生,但是如果提到 Courier,Cyrus 或者 UW,那肯定很多人都有所耳聞。 沒錯,Dovecot 和他們一樣,都是 IMAP Server。
先簡單介紹一下 IMAP Server。 IMAP,Internet Message Access Protocol,以前也稱作「交互郵件HTTP://www.aliyun.com/zixun/aggregation/34570.html">訪問協定」, 是用作從本地郵件用戶端(如 Outlook,Thunderbird 等等)訪問遠端郵件。 而如今應用的越來越多的網路郵件如 Gmail,Hotmail 等新興郵件服務,同樣也支援 IMAP。
儘管 Dovecot 是個後起之秀,但卻來勢洶洶,如果嘗試在 Google 搜索 IMAP Server,Dovecot 是排在非常靠前的搜尋結果,從側面可知 Dovecot 之流行。 但到底為什麼選擇 Dovecot 呢?
1. 高安全性。 據 Dovecot 的作者聲稱,從 Dovecot 的設計和實現,安全性都是被高度關注和強調的。 這裡的安全性不單單指傳統意義的安全性漏洞,也包括軟體的可靠性。 而 Dovecot 高安全性的最佳佐證,就是「懸賞」。 Dovecot 作者從 2006 年開始,對於第一個能夠發現「remotely exploitable security hole」的人,獎賞 1000 英鎊,結果時至今日,這 1000 英鎊仍然沒有人得到。 這裡的「remotely exploitable security hole」並不是簡單的指軟體缺陷。 由此看出其安全性十分了得。 而作為可直接存取使用者資料和郵件的應用,如果存在被人非法訪問的漏洞,後果何其嚴重。
2. 高性能。 這裡的高性能並不是泛指 Dovecot 軟體本身運行多快,而是專指 Dovecot 在訪問郵箱時的高性能。 Dovecot 是通過對標準的郵件存儲格式 mbox 和 maildir 進行索引來做到的。 索引對使用者是透明的,在後臺悄悄的,並且是增量進行,也就是在每次有新郵件或者是使用者對郵件進行修改或刪除時進行,因此將索引的代價降至最低。 Dovecot 只對那些使用者用戶端經常用到的資訊,如郵件標題,郵件發送者等進行索引。 保證索引檔不過於太大。 在郵箱的郵件數很小的時候是看不出索引的好處的,但當郵件數量慢慢增大時,Dovecot 就顯示出他的優勢:每次打開郵箱,收發刪除郵件都非常快。 相比其他一些傳統主流的 IMAP Server 如 uwimap,就不支援索引,因此每當打開郵箱,需要掃描整個檔案系統,載入全部檔,放到記憶體,代價之大,可想而知。 另外索引和我們接下來討論的主題是緊密相關的。
3. 易於管理和擴充性。 Dovecot 具有非常多的外掛程式,使得配置十分方便和靈活。 比如用於使用者認證的 auth-mechanism,支援 plain,CRAM-MD5 等。 下面是例子:
10-auth.conf: auth_mechanisms = plain login cram-md5
又比如用於使用者密碼認證的 passworddb,支援 password-file,LDAP,SQL,Static 等。 下面是 SQL 的例子,非常簡單直觀:
dovecot-sql.conf: password_query = SELECT userid AS username, domain, password \ FROM users WHERE userid = '%n' AND domain = '%d'
又比如用於計算使用者當前所用的磁片配額(quota),Dovecot 同樣提供了外掛程式。 類似這樣的外掛程式還有非常多,而且配置非常簡單,使得學習和維護 IMAP Server 的成本降得很低。