由上次已經有發表一篇 CentOS 6.5 安裝 Roundcube WebMail ,最近開始有時間在著墨在這一塊,並且將 LDAP 也加入整合
首先了解 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
你好,请教下,已经有可以使用的ldap服务器了,我们的gitlab认证就是用已有的ldap服务,还需要需要在roundcube服务器上再搭建一套ldap server吗
不用 :)
請問一下
roundcube的ldap通訊錄可以在roundcube webmail內顯示ldap member嗎
謝謝
後來我換公司後就沒有使用了,更詳細的功能面我可能無法回答你,Sorry。