Mais conteúdo relacionado Semelhante a メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3 (20) Mais de 日本Javaユーザーグループ (12) メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/34. Zimbraとは
「どこからでも」
つかえる
「様々な端末から」
つかえる 「Webメール」です
「組み合わせて」
つかえる
4
5. Zimbraの特徴
§ オープンソース版と商用サポート版があり、商用版の一部機能を除きオープン
ソースで公開されています。
§ オープンソースプロジェクトの成果を活用しています。
• Jetty
• MySQL
• Lucene
• Postfix
• Clam AV
• SpamAssassin
• OpenLDAP
• Nginx
§ オープンソース版のソースコードは Zimbra Public License (ZPL) でライセ
ンスされています。
詳細は http://www.zimbra.com/license/ をご覧ください。
5
7. Zimbra Serverの構造
サポートプロトコル
Could
SOAP
POP
RSS
REST
LMTP
CalDAV
IMAP
Atom
ActiveSync
CardDAV
Service
Server side Ext
Zimbra Collaboration Server Zimbra Proxy
(Jetty + JVM + OS)
Storage Lucene MySQL Open External Zimbra
System Index LDAP Journaling
LDAP
Active
Directory
メールデータ
メールデータ 検索インデクス メタデータ 認証・設定 (外部認証)
ジーナリング
7
13. B.外部サービス資源の利用 (3)
機能
§ カレンダ予約時に、日時などの情報を WebEx (オンライン画面共有サービ
ス) の予約システムに登録し、WebEx のアクセス情報を、Zimbraの予定に
挿入する
• 画面共有のための URL の挿入
WebExサイト(外部サイト)
WebExメニューを追加
予約取りと、
詳細情報の自動挿入
13
16. Zimbra パッケージ比較 カスタマイズに関して
オープンソース版 有償版
(OSS Edition) (Network Edition)
カスタマイズ関連
Zimlet ⃝ ⃝
Server Side Ext. ⃝ ⃝
Web API ⃝ ⃝
WebMailリブランディング ☓ ⃝
ソースコード改編 ⃝ ⃝
(再配布の場合はソー (契約形態に依存)
スコードを含めること)
このほかにも、サポートプロトコル・機能・サポートなどでオープンソース版と有
償版には違いがあります。詳細は下記を参照してください:
http://www.zimbra.com/products/compare_products.html
16
17. Zimbra オープンソース版を試してみる
§ 方法1 : バイナリパッケージをダウンロードしてインストール
• インストーラに従って設定するだけなので簡単
• Zimlet、Server Side Extension、Web API がすぐ使える
§ 方法2 : ソースコードをチェックアウトしてビルド
• Eclipse 等からデバッガをかけながら実行が出来る
• サポートされていない OS 用のバイナリも作れるかもしれない
17
18. 方法 1. バイナリパッケージのインストール
§ サポート OS – RHEL6、SUSE 11、Ubuntu 10.04 / 12.04 (全
64ビット)
§ テスト環境でのシステム要件: 1GB RAM、5GB 空きディスク (バイ
ナリインストール場所として)
§ 手順
1. バイナリを http://www.zimbra.com/downloads/os-downloads.html からダウン
ロードして、解凍しておく
2. <解凍ディレクトリ>/install.sh を実行
§ 注意点
• /etc/hosts にサーバの IP、FQDN、ホスト名を登録しておいて下さい
• インストール中にドメイン名を聞かれます。DNS をローカルに立てておいてください。
ドメイン名の入力を省くこともできますが、その場合はメールをシステム内でしか送受
信できません
18
19. 方法 2. ソースコードからのビルド
§ サポートOS: バイナリ版と同じ
§ サポートOS以外でビルドが出来ているOS: MacOS
§ アウトプット
1. Sandbox 環境
2. バイナリパッケージ
§ 主な手順
1. p4 クライアントを Perforce 社のサイトからダウンロードしてインストールし
ておく
2. p4 サーバからソースコードをダウンロードする:
• サーバ名: codes.zimbra.com:2666
• ユーザ名: public
• パスワード: public1234
• クライアント名: public-view
• チェックアウト先: /home/public/p4 (あらかじめディレクトリを作っておく)
• チェックアウトブランチ: //depot/zcs/IRONMAIDEN/… (最新バージョン8)
3. ビルド
19
20. 方法 2. ソースコードからのビルド (続き)
§ Sandbox 環境のビルド
3. /opt/zimbra ディレクトリを作成し、ビルドするユーザへの書き込み権を与え
る
4. ZimbraServer ディレクトリに移動し、ビルド
$ ant reset-all
§ バイナリパッケージのビルド
3. パッケージビルド用のスクリプトを実行
$ /home/public/p4/BRANCH/ZimbraBuild/buildZCS.sh –t
4. ビルドが完了するとZimbraBuild/<arch>/ フォルダの下にバイナリパッケー
ジの tgz ができる
§ 備考
• あらかじめ Perl や ant をインストールしておくこと
• Sandbox環境のビルドについて、詳しくは ZimbraServer/docs/INSTALL-*.txt を参
照のこと
20
21. カスタマイズ実例
§ サーバ側に Web API を追加して、サーバの機能を拡張
§ Web クライアント側のUIを拡張
今日のサンプル: メールの中に
“Hello” という文字列があったら、
それにリンクをはる。
マウスオーバしたらツールチップを
表示する。
クリックしたら新しい API を呼ぶ
今日のサンプル: POSTされたリクエストの
新しいAPI
HTTP ヘッダを表示する
hello from sample-extension
Got HTTP headers:
Cookie: ZM_TEST=true; JSESSIONID=uye2ghe6t77mi6v4je378od2;
ZM_AUTH_TOKEN=0_0c8e2611caa9504e00fda777175aadaf677c1fa9_69643d33363a
36333739373364362d616132622d343432302d393339352d6466623963366430313033
323b6578703d31333a313336343532343335343631343b747970653d363a7a696d6272
Zimbra サーバ 613b
Host: localhost:7070
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Language: en-US,en;q=0.8
21 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.22
(KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22
22. Server Side Extension の作り方
1. Java クラスを書いてコンパイル
2. 所定の場所に jar をコピー
/opt/zimbra/lib/ext/<Extension名>/<ハンドラ名>
3. サーバ再起動
22
23. Server Side Extension
public class SampleExtension implements ZimbraExtension
{!
private static final String EXTENSION_NAME
= "sample-extension";!
public String getName() {!
return EXTENSION_NAME;!
}!
public void init() throws ServiceException {!
/* http handler */!
ExtensionDispatcherServlet.register(!
this, new SampleExtensionHttpHandler());!
!}!
!public void destroy() {!
ExtensionDispatcherServlet.unregister(this);!
!}!
}!
23
24. public class SampleExtensionHttpHandler extends
ExtensionHttpHandler {!
!
public void init(ZimbraExtension ext) !
throws ServiceException {!
super.init(ext);!
}!
!
public void doGet(HttpServletRequest httpReq, !
HttpServletResponse resp) !
throws IOException, ServletException { !
…!
}!
}!
24
25. Webクライアント側
§ 材料
• com_zimbra_helloworld.xml
§ 作り方
1. com_zimbra_helloworld ディレクトリを作成
2. com_zimbra_helloworld/com_zimbra_helloworld.xml ファイルを作成
3. com_zimbra_helloworld ディレクトリの直上で zmzimletctrl コマンド実行
$ zmzimletctl createZip com_zimbra_helloworld
4. com_zimbra_helloworld.zip をデプロイ
25
26. <zimlet name="com_zimbra_helloworld"
version="1.0" description="Hello World Zimlet">
<contentObject>
<matchOn>
<regex attrs="ig">hello</regex>
</matchOn>
<onClick>
<canvas type="window" props=""/>
<actionUrl target=“http://localhost:7070/
service/extension/sample-extension/
sampleextensionhttpHandler">
</actionUrl>
</onClick>
<toolTip>Click me!</toolTip>
</contentObject>
</zimlet>
26
27. カスタマイズの実例
§ Server Side Extension の実例
• ActiveSync プロトコル実装
• OpenID 認証プラグイン
• SAML 認証プラグイン
• バックアップ&リカバリ処理用モジュール
• HSM (メッセージファイル階層ストレージ) 処理モジュール
§ がりがりソースコードのカスタマイズ応用例
• メッセージストレージの置き換え; Posix ファイルシステムの代
わりに分散ストレージ用のインタフェースにオーバライド
27
28. 各種情報
§ サーバ側
• Zimbra で用意されている Web API
• SOPAP: http://files.zimbra.com/docs/soap_api/8.0.2/soapapi-zimbra-doc/api-reference/
index.html
• REST: http://wiki.zimbra.com/wiki/ZCS_6.0:Zimbra_REST_API_Reference
• Server Side Extension の作り方
• ソースコード ZimbraServer/docs/extensions.txt
§ Webクライアント側
• 標準の Web クライアントにタブやボタン等を追加する API
• http://wiki.zimbra.com/wiki/ZCS_6.0:Zimlet_Developers_Guide:Zimlet_API_Specifications
• Zimletギャラリー
• http://gallery.zimbra.com/
§ 質問・疑問
• Wiki http://wiki.zimbra.com/wiki/Main_Page
• フォーラム http://www.zimbra.com/forums/forum.php
28