...
LDAP Outlook通訊錄應用
LDAP 與通訊錄
LDAP 用來做通訊錄的查詢是個不錯的方法,但建置的過程會有些難度,尤其在不同的收信軟體上的通訊錄裡的欄位對應就會是個大問題。
紅字為指令,或需要你輸入的地方。藍字部份為設定檔內容。
本文若有部份隱藏內容看不到的話,請點擊文章最後面的 LDAP 系列文章即可看到完整的版本。
首先可參考這兩篇文章(LDAP入門、LDAP-使用雷鳥/Outlook 查尋通訊錄),有一點基礎的概念之後,我們就開始動手來規劃通訊錄了。
(1).下載 ldap 管理工具
LDAP Admin 官方網站
參照下圖的設定連入你的 ldap server
PS:在使用 LDAP Admin 輸入通訊錄地址這個欄位時,會有中文亂碼的問題。這是 LDAP Admin這個程式的 bug,目前沒有好的解法,只能用另一套程式或用 phpldapadmin來輸地址這個欄位才不會有中文亂碼的問題。
(2).開始規劃通訊錄
我是參考前面提到的兩篇文章的概念來規劃,簡單說,看你是要以公司來分類或是以性質來分類這樣而已。其實這樣的分類只是自己看了舒服而已,而在outlook通訊錄裡搜尋時卻不太起作用,因為它們搜尋時是搜尋某一個欄位(attribute value)為單位,而且能搜尋的欄位很有限,就那麼幾個。

參考上圖,例如:我規劃了 ou=bank ,可以把所有的銀行聯絡資料都放這兒底下,還有規劃了 ou=hotels 把飯店的資料都放這兒底下,還分不同公司來放。將圓山裡的聯絡人都放在 ou=hotels → ou=圓山大飯店 這底下,但是重點來了,我若要搜尋圓山大飯裡所有的員工資料時怎辦?並不是你這樣規劃好了,輸入搜尋關鍵字"圓山大飯店"就能列出所有的圓山飯店裡的員工,解決方法是你要在每一個員工的個人資料裡有一個"公司"的欄位 ,在這裡填上圓山大飯店,每一個人都要填,這樣才搜尋時才能找到所有的圓山的員工。只能用這種笨方法了,沒辦法,因為 Outlook / Outlook Express (這兩個是不同的軟體,不要搞混了)並沒有將它LDAP通訊錄搜尋的功能寫的很完整,只能這樣解決了。

上圖是 Outlook Express 在搜尋 LDAP 通訊錄時所能搜尋的欄位,就那麼5個欄位。組織就是公司的意思啦。

上圖則是 Outlook 在搜尋 LDAP 通訊錄時所能搜尋的欄位,英文的部份則是 LDAP 裡所對應的欄位。
底下則是 Outlook Express 通訊錄裡的欄位與 LDAP 對應欄位的對照表,以 Outlook Express 欄位為主整理出來的這張表格,而 Outlook 有些對應的欄位是不同的另外用紅字補充。綠字的部份為雷鳥 2.0.0.22 版有正確對應到的欄位
Outlook Express 通訊錄與 LDAP 的對應欄位
| Outlook Express 欄位 | LDAP attribute | Attribute Defined in Schema file | Member of Object |
|---|---|---|---|
| 名稱: | cn (Common Name)
在 outlook 裡的對應欄位則是 displayName 沒有比較好的解法,就是這兩個欄位都要填。 |
core.schema | objectPerson |
| 電子郵件地址: | core.schema | inetOrgPerson | |
| 職稱: | title | core.schema | organizationalPerson |
| 部門: | ou (Organizational Unit) 在雷鳥裡則為 departmenNumber Note: If no "ou" defined use "department". |
ou: core.schema department: extension.schema |
ou: organizationalPerson department: officePerson |
| 辦公室: | physicalDeliveryOfficeName | core.schema | organizationalPerson |
| 公司名稱: | o (Organization)
在 outlook 的對應欄位則是 company 請見後面的解法 |
core.schema | inetOrgPerson |
| 公司網頁: | URL, homeURL (這個homeURL我沒試成功) | extension.schema | officePerson |
| 名字: | givenName | core.schema | inetOrgPerson |
| Middle Name: | initials | core.schema | inetOrgPerson |
| 姓: | sn (Surename) | core.schema | objectPerson |
| 注意事項(N): | comment | extension.schema | officePerson |
| Netmeeting Server: | conferenceInformation | extension.schema | officePerson |
| Digital ID: | userCertificate | extension.schema | inetOrgPerson |
| Manager: | manager
Note: 需填入完整的 DN 才行,不能只填名字. |
cosine.schema | inetOrgPerson |
| Reports: | reports
Note: 需填入完整的 DN 才行,不能只填名字.Multiple entries allowed. |
extension.schema | officePerson |
| 公司 街名: | postalAddress
Note: Don't use address attribute. Netscape ignores it. |
core.schema | organizationalPerson |
| 鄉/鎮/市/區: | l (Locality) | core.schema | organizationalPerson |
| 縣/市(S): | st | core.schema | organizationalPerson |
| 郵遞區號: | postalCode | core.schema | organizationalPerson |
| 國家(地區): | c
Note: ISO 3166 two letter code. OpenLDAP will allow full length string. |
core.schema | officePerson |
| Outlook 裡對應的欄位為 co (friendlyCountryName) | cosine.schema | friendlyCountry | |
| 街名: | homePostalAddress
Note: The entire address is held in this field. Use "$" as a cairrage return: i.e.14 Cherry St.$Dallas TX 78999 |
cosine.schema | inetOrgPerson |
| Telephone: | LDAP attribute | Attribute Defined in Schema file | Member of Object |
| 公司 電話: | telephoneNumber | core.schema | organizationalPerson |
| 公司 傳真: | facsimileTelephoneNumber | core.schema | organizationalPerson |
| 住家 電話: | homePhone | cosine.schema | inetOrgPerson |
| 住家 傳真: | otherFacsimiletelephoneNumber | extension.schema | officePerson |
| 行動電話: | mobile | cosine.schema | inetOrgPerson |
| 呼叫器: | pager | cosine.schema | inetOrgPerson |
| IP電話: | IPPhone | extension.schema | officePerson |
| 雷鳥欄位 | LDAP attribute | Attribute Defined in Schema file | Member of Object |
| Notes: | description | ||
| work address: | postOfficeBox | ||
| Department: | departmenNumber | ||
以上內容參考這個網站內容所修改的 。 按我展開原英文表格的內容
因為 Outlook / Outlook Express 裡面有很多欄位是微軟自創的, LDAP 裡沒有這些欄位,所以我們還得要再新增這些欄位,上面表格中所提到的 extension.schema 就是新增一些欄位來讓 Outlook / Outlook Express 對應上。
問題:Outlook 與 Outlook Express 公司名稱欄位對應問題
公司名稱在LDAP裡分別對應,兩個不同的欄位 ( Outlook →company , Outlook Express→ o)
解法有二,挑其中之一的方法即可
解法1: 修改 core.schema
vim /etc/ldap/schema/core.schema
centOS: vim /etc/openldap/schema/core.schema
找到以下內容
|
attributetype ( 2.5.4.10 NAME ( 'o' 'organizationName' ) DESC 'RFC2256: organization this object belongs to' SUP name )
|
| 修改成如下內容 |
|
attributetype ( 2.5.4.10 NAME ( 'o' 'organizationName' 'company' ) DESC 'RFC2256: organization this object belongs to' SUP name ) |
這樣改的意思是, o 和 organizationName 和 company 這三個欄位是同一個東西,只是叫不同名字罷了,但卻可解決公司名稱對應不上的問題。
然後在填通訊錄資料時,只要在 o 這個欄位填上公司名稱,就可以在 Outlook / Outlook Express 都看得到。
PS:國家/地區 的欄位就不能比照這樣同名的方法設定,因為 'co' 這個 attribute 是在 schema 裡已經有被定義過了,它有它自己專屬的 OID 序號,所以沒辦法用 co 等同於 c 欄位的方法這樣設定,就只能兩個欄位都填上資料,才能在 Outlook / Outlook Express 都看得到。
解法2: 新增一個 schema
這個新增的 schema 可以是上表中提的 extension.schema 或是你們公司自定義的 schema。然後在你新增的 schema 裡面加一個欄位 attributetype 名為 company。
注意:這並不是個較好的解法,因為之後你在填通訊錄時必須要填兩個欄位,也就是 o 和 company 這兩個欄位都要填入公司名稱,才能在 Outlook / Outlook Express 都能看見公司名稱。
vim lemon.schema 公司自定義的 schema 部份參考內容
|
attributetype ( 1.3.6.1.4.1.24355.1.1.1.8 NAME ( 'company' ) SUP name ) objectclass ( 1.3.6.1.4.1.24355.1.1.1 NAME 'inetOrgPersonLemon' DESC 'RFC2798: Internet Organizational Person for Lemon Company' SUP inetOrgPerson MUST ( sn $ cn $ givenName ) STRUCTURAL MAY ( c $ co $ rdn $ otherFacsimiletelephoneNumber $ IPPhone $ URL $ comment $ reports $ conferenceInformation $ host $ company $ gidNumber $ homeDirectory $ sambaSID $ uidNumber ) |
底下是 lemon.schema 的完整設定參考內容
vim extension.schema 設定參考內容
按我展開extension.schema隱藏的內容(自動反白)
然後要記得在 slapd.conf 裡載入你新增的 schema
vim /etc/ldap/slapd.conf
centOS: vim /etc/openldap/slapd.conf
範例↓
include /etc/ldap/schema/lemon.schema
改完後記得重啟 ldap
/etc/init.d/slapd restart
centOS: service ldap restart
LDAP系列文章:
(1).LDAP + Samba PDC + PAM/NSS on Debian Lenny
(2).LDAP client + Samba BDC + PAM + NSS on Debian Lenny
(4).LDAP + Host 控管 on Debian Lenny
(5).LDAP client + SMB + NSS + PAM on Fedora
(6).LDAP 與通訊錄
No Comments. I want to comment on it