首先了解 Roundcube Addressbook 支援的類型有 LDAP、SQL、CardDAV
此篇主要記錄的是將 Roundcube 加入 LDAP Addressbook
準備
1. LDAP Server (這邊使用 OpenLDAP)
2. LDAP search user
3. 對 ldap 要有相當理解程度
設定 LDAP Addressbook
註: 預設在 defaults.inc.php 就擁有許多範例的設定,當然你也可以選擇註解掉,將設定寫在 config.inc.php
step1. 編輯 defaults.inc.php
$ vim /home/roundcube/config/defaults.inc.php
step2. 將 Addressbook type 由 sql 改為 ldap
$config['address_book_type'] = 'ldap';
step.3 建立一組 Global addressbook
$config['ldap_public']['Global'] = array(
'name' => 'Global Addressbook',
'hosts' => array('192.168.100.55'),
'port' => 389,
'user_specific' => false,
'base_dn' => 'ou=people,o=global',
'bind_dn' => 'uid=ldapview,ou=server,o=global',
'bind_pass' => 'ldapvw',
'writable' => 'false',
'search_fields' => array('mail','cn','mobile','telephoneNumber'),
'fieldmap' => array(
'name' => 'cn',
'email' => 'mail',
'jobtitle' => 'title',
'phone:work' => 'telephoneNumber',
'phone:mobile' => 'mobile',
'im:skype' => 'skype',
'im:line' => 'line',
'im:wechat' => 'wechat',
),
'scope' => 'sub',
'filter' => 'objectClass=inetOrgPerson',
'fuzzy_search' => true
);
參數詳解
'name' => Addressbook 顯示名稱
'hosts' => LDAP主機,可以用 array 來備援多主機
'port' => LDAP port 389 or 636
'use_tls' => 是否使用 TLS,默認為false
'ldap_version' => LDAP版本,默認為v3
'user_specific' => 若設定為 ture,將會使用 IMAP Login 帳號來驗證 DN
'base_dn' => 搜尋的 base 條件
'bind_dn' => 用來 search 的 view account
'bind_pass' => 用來 search 的 view password
'writable' => 預設為不允許回寫 LDAP
'search_fields' => Addressbook 搜尋列可用的條件
'fieldmap' => 要顯示的通訊錄資料,對應到 LDAP 的 schema,支援LDAP:limit 格式來顯示所有筆數
'scope' => 搜尋模式
'filter' => 用來過濾LDAP要撈的資料
'fuzzy_search' => 預設允許搜尋 true
從這邊設定好之後,由於php是立即生效,所以你可以在 Roundcube 立馬看到如下結果
基本上到這邊 LDAP 設定就完成了
但眼尖的人可能會發現到我在即時通訊內加入了 LINE、wechat 的欄位,這是在 Roundcube 內建所沒有的。
要自行新增 schema 顯示在通訊錄,首要條件是你的 LDAP 必須先有這些 schema 可以撈的到
再來就是 Roundcube 增加 schema 的部分
step4. 增加 Line 和 wechat schema
$ vim /home/roundcube/program/steps/addressbook/func.inc
在 func.inc 你可以看到 Roundcube 的 schema 都在這邊,熟php的你可以自行新增,甚至任意調整樣式
由於 Roundcube 在這裡就有預設的 即時通訊欄位,只要在子項目在加上 LINE、wechat 即可
'im' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'label' => $RCMAIL->gettext('instantmessenger'), 'subtypes' => array('aim','icq','msn','yahoo','jabber','skype','line','wechat','other'), 'category' => 'main'),
最後就會像上圖一樣撈的到 LINE + Wechat 囉
到這邊 Roundcube 是不是非常好用呢,身為 IT 你又必須擔心太好用而 Loading 過高,改天再來介紹 Roundcube LB 分散式架構。
參考資料:
LDAP Addressbook Server for Roundcube
LDAP Addressbook Field Mapping
Orignal From: Roundcube 整合 LDAP Addressbook 通訊錄,增加 LINE、Wechat schema
沒有留言:
張貼留言