使用 LDAP 目錄協議實現 Domino 郵件路由

genusBIT發表於2009-04-13

Lotus Lotus Domino/Notes 系統作為郵件系統和協作應用平臺已經在眾多企業中長期存在, 因其可定製性、開發性、可擴充套件性等諸多優勢而成為使用者 IT 部門技術環境中的重要系統。

然而隨著近年來企業整合要求的不斷增長,尤其是企業統一認證需求的不斷提出, Domino 郵件系統中的使用者目錄(基於 names.nsf 資料庫)成為了一個重要的技術討論議題。和眾多獨立維護自身使用者帳號的應用不同,Domino 系統目錄本身是一個開放性的目錄,其對 LDAP 協議的遵循也允許其成為企業集中目錄的基礎。但很多使用者從技術現狀和管理角度出發,則更希望使用完全獨立的安全體系架構中的目錄伺服器來承擔這項任務,例如 IBM Tivoli Direcotry Server。因此我們必須找到對應的方法來使用 LDAP 協議來進行郵件路由以及應用認證、授權。

技術實現原理

早在 R5 版本,Domino 系統就支援 Directory Assistance 目錄服務(DA),通過配置外部的目錄服務條目(支援 LDAP 協議目錄或 Domino 基於 Names.nsf 的使用者目錄),實現利用外部目錄實現使用者的認證和應用的授權。但當時的 DA 並不能夠支援利用 LDAP 使用者、群組條目實現郵件路由的目標。實現郵件路由,就必須讓傳送郵件的 Domino 伺服器預先了解完整的郵件郵遞過程。

這些資訊中應包括目標使用者的 Domino 網路域名稱,Domino 伺服器名稱,Domino 郵件檔名稱,以及源伺服器與目標伺服器直接的連線路徑。 源伺服器和目標伺服器的連線是可以通過 Domino 目錄中的連線文件來體現,而目標使用者的網路域、伺服器、郵件檔案這三個要素由於都存在於使用者條目中,由於使用者資訊都以 LDAP 使用者條目的形式存在,所以在 Domino 目錄中無法表示,只有通過對 LDAP 使用者條目的屬性擴充套件來實現。這三個要素分別對應於 LDAP 的三個屬性(attribute):

  • MailDomain
  • MailServer
  • MailFile

因此要實現以 LDAP 為使用者目錄的郵件路由就必須完成以下的工作:

  • 配置外部的 LDAP 目錄伺服器
  • 配置 LDAP 使用者的條目的 schema,用以涵蓋需要的屬性
  • 配置 LDAP 群組條目 Schema
  • 建立 Domino 的目錄服務資料庫 da.nsf,將 Domino 的使用者目錄外部化
  • 在 Domino 系統中建立使用者郵件檔案,並按照 LDAP 使用者模式進行授權
  • 配置 Domino 使用者郵件位置重定向資料庫,用以自動判斷使用者郵件檔案位置 。
  • 配置過程

    在本例中,我們不再贅述 Domino 伺服器、IDS 目錄伺服器、WAS 應用伺服器及 IDS Web 管理模組的安裝和配置過程。我們將集中討論在郵件路由相關方面的設定和修改。

    LDAP 使用者條目配置過程

    首先我們需要的是確定每個使用者條目的 schema 和包含的屬性內容。根據我們上述原理的描述,每個需要進行使用者認證和郵件路由的使用者條目應包含以下的必要屬性。假設使用者簡稱為 ldapuser05:


    清單 1. ldapuser05 使用者條目所包含的必要屬性
                    
    dn: uid=ldapuser05,cn=users,dc=ibm,dc=com
    userid: ldapuser05
    userpassword: password
    maildomain: ibm
    mailserver: mail01
    mailfile: ldapuser05.nsf
    mail: ldapuser05@ibm
    mail: ldapuser05@ibm.com
    

    其中需要說明的是:dn,userid,userpassword 是使用者認證的基本屬性,maildomain,mailserver,mailfile,mail 是郵件路由需要的基本屬性;其中 mail 屬性可以設定多值,可以分別表示該使用者的 Notes 郵件地址和 Internet 郵件地址。

    那我們應該選用什麼 schema 或物件來承載這些屬性呢?啟動 IDS 伺服器和 WebSphere 應用伺服器,進入 IDS 的管理控制檯,選擇 shcema management,選擇 attribute management,如圖:


    圖 1. LDAP 使用者條目屬性管理
    LDAP 使用者條目屬性管理

    通過過濾條件檢視以 mail 為開始的所有屬性,我們可以看到這些屬性所歸屬的 Object class 都包含的 eDominoAccount,而 userid 和 userpassword 則均屬於 inetOrgPerson 如圖:


    圖 2. LDAP 使用者 shcema 選擇
    LDAP 使用者 shcema 選擇

    圖 3. LDAP 使用者 shcema 選擇
    LDAP 使用者 shcema 選擇

    為了配合本次的測試工作,我們還將和郵件相關的屬性設定為 eDominoAccount 的必要屬性,在 eDominoAccount 的屬性選擇介面中操作如圖:


    圖 4. LDAP 使用者必要屬性選擇
    LDAP 使用者必要屬性選擇

    又由於 sn、cn 也是 inetOrgPerson 的基本必要屬性,所以也需要新增,如圖:


    圖 5. LDAP 使用者必要屬性選擇
    LDAP 使用者必要屬性選擇

    由此,我們可以確定一個基本使用者的條目應以至少包含以下的內容:


    清單 2. ldapuser05 使用者條目的基本資訊
                    
    dn: uid=ldapuser05,cn=users,dc=ibm,dc=com
    objectclass: inetOrgPerson
    objectclass: eDominoAccount
    sn: ldapuser05
    cn: ldapuser05
    userid: ldapuser05
    userpassword: password
    mail:	ldapuser05@ibm
    mail:	ldapuser05@ibm.com
    maildomain: ibm
    mailserver: mail01
    mailfile: mail\ldapuser05.nsf
    

    我們可以直接通過管理介面,以 add an entry 的方式錄入上述的條目屬性從而新增一個使用者,如圖:


    圖 6. 新增一個 LDAP 使用者條目
     新增一個 LDAP 使用者條目

    我們也可以更加簡便地將上述資訊直接編輯為文字檔案,例如:user05.txt,通過指令方式載入資訊,如圖:


    圖 7. 新增一個 LDAP 使用者條目
     新增一個 LDAP 使用者條目

    Domino 配置過程

    讓我們再回到 Domino 伺服器的配置中,和傳統的配置外部目錄服務一樣,我們會使用 Directory Assistance 模板 da.ntf 建立 da.nsf,並在 da.nsf 中建立一個 LDAP 目錄服務的條目,其中 Domain 的名稱定義為 ibmldap,並且將 Group Authorization 的選項改為”yes”啟用,主要是為了後續對於群組郵件路由的支援。


    圖 8. 配置目錄服務 DA
     配置目錄服務 DA

    在具體 LDAP 的配置中,我們需要配置 LDAP 伺服器的位置,進行使用者資訊查詢所繫結的憑證資訊,為提高查詢效率,我們還需要指定搜尋的基準條件。當然建立的 da.nsf 需要在對應伺服器文件中的 Directory Assistance 資料庫名稱欄位中申明。


    圖 9. 配置目錄服務 DA
     配置目錄服務 DA

    接下來,我們當然還需要在 Domino 郵件伺服器上按照我們在 LDAP 條目中的定義,為 ldapuser05 這個使用者建立郵件檔案,並賦予相應的存取控制許可權。注意我們建立的郵件檔案所在伺服器和檔案位置,以及 Domino 伺服器所屬於的 Domino 網路域應和 LDAP 中的使用者條目的各項屬性保持完全一致。如圖:


    圖 10. 建立郵箱
     建立郵箱

    對我們手工建立的郵件檔案,我們還需要進行授權。針對上述 ldapuser05 的使用者的郵件檔案,我們需要增加的授權條目是 uid=ldapuser05/cn=users/dc=ibm/dc=com,其使用者型別為個人,許可權為管理者。請務必注意在 Domino 系統中使用“/“為間隔符而不是 LDAP 目錄中習慣使用的“,”。


    圖 11. 配置郵箱許可權
     配置郵箱許可權

    依照上述的配置,我們可以再重複新增幾個使用者,例如 ldapuser04 等。

    為使用方便,同時也可以進一步驗證 Domino 對於 LDAP 整合的效果,我們可以選擇 Domino WebAccess Redirect (iwaredir.ntf)模板作建立 mailred.nsf 作為使用者郵件檔案訪問的統一入口。Mailred.nsf 會根據使用者的登入情況自動判斷使用者郵件檔案的所在位置,因此我們也可以由此判斷 LDAP 中的配置資訊是否可以被 Domino 伺服器正確讀取。如圖:


    圖 12. 使用者郵箱重定向
     使用者郵箱重定向

    使用過程

    通過 mailred.nsf,ldapuser04 使用者經過認證後進入郵件處理介面。你可以看到對應的 URL 已經重定向到了正確的地址;點選新建郵件,ldapuser04 在 LDAP 中的真實身份,ldapuser04/users/ibm/com 也以 Domino 的格式正確地顯示;我們可以選擇使用者目錄,前期通過 da.nsf 配置的 ibmldap 作為一個獨立的地址本供查詢使用;我們通過字母 l 進行搜尋,可以獲得在 LDAP 目錄中所有以 l 為開頭的使用者資訊列表。如圖:


    圖 13. 使用者選擇
     使用者選擇

    選擇 ldapuser05,我們會看到直接就會顯示使用者的郵件資訊。由於我們為使用者配置資訊時,使用了多值的形式,即 ldapuser05@ibm 和 ldapuser05@ibm.com 都是合法郵件地址,而 ldapuser05@ibm 居前,因此係統優先使用 Notes 郵件格式作為選擇結果。如圖:


    圖 14. LDAP 使用者屬性的體現
     LDAP 使用者屬性的體現

    點選傳送,在 Domino 郵件伺服器控制檯上,可以清楚地看到郵件已經成功地傳遞到了對應的使用者,並儲存到使用者的郵件檔案中去了。如圖:


    圖 15. 郵件路由成功
     郵件路由成功

    圖 16. 郵件儲存到郵箱中
     郵件儲存到郵箱中

    看起來是大功告成了,但我們需要進一步考慮的是,是否 LDAP 協議也支援使用群組的方式進行郵件路由呢?讓我們繼續參看 LDAP 群組配置過程。

    LDAP 群組配置過程

    群組是多個使用者資訊的集合,在群組物件中,每個使用者的描述使用的屬性是 uniqueMember。在 LDAP 服務管理端,我們可以選擇對應的 objectClass 是 groupOfUniqueNames。如圖:


    圖 17. 配置 LDAP 群組 schema
     配置 LDAP 群組 schema

    依然我們可以通過 add an entry 新增一條群組條目 cn=ldapgroup01,cn=groups,dc=ibm,dc=com,其中包含連個使用者條目,uid=ldapuser04,cn=users,dc=ibm,dc=com 和 uid=ldapuser05,cn=users,dc=ibm,dc=com。如圖:


    圖 18. 新增 LDAP 群組條目
     新增 LDAP 群組條目

    LDAP 群組使用

    依然進入郵件收發介面,建立新郵件,選擇使用者。這次我們直接輸入“ldapgroup“作為字首,點選  新增 LDAP 群組條目 進行查詢,我們可以獲得所有以 ldapgroup 為開始的條目(包括使用者和群組)。如圖:


    圖 19. 選擇 LDAP 群組條目
     選擇 LDAP 群組條目

    選擇 ldapgroup01,準備好郵件內容,點選傳送。我們在伺服器控制檯上可以清楚地看到郵件已經成功地傳送到了群組中包括的兩個使用者那裡。如圖:


    圖 20. 群組郵遞成功
     群組郵遞成功

    至此,我們就 Domino 使用 LDAP 目錄協議進行郵件路由的配置過程結束。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14751907/viewspace-588826/,如需轉載,請註明出處,否則將追究法律責任。

相關文章