メッセージングプラットフォーム zimbra の紹介とその活用術 - jjug...

30
© 2013 VMware Inc. All rights reserved JJUG ナイトセミナー メッセージングプラットフォーム Zimbra の紹介とその活用術 2013327

Upload: java

Post on 26-Jun-2015

2.957 views

Category:

Technology


3 download

DESCRIPTION

2013/3/27でのJJUG ナイトセミナーの講演「メッセージングプラットフォーム Zimbra の紹介とその活用術」の紹介です。

TRANSCRIPT

Page 1: メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3

© 2013 VMware Inc. All rights reserved

JJUG ナイトセミナー メッセージングプラットフォーム Zimbra の紹介とその活用術

2013年3月27日

Page 2: メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3

2

目次

1. Zimbra Collaboration Server の概要 2. カスタマイズ 3. オープンソース版をさわってみる 4. まとめ

Page 3: メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3

3

目次

1. Zimbra Collaboration Server の概要 2. カスタマイズ 3. オープンソース版をさわってみる 4. まとめ

Page 4: メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3

4

Zimbraとは

「Webメール」です

「どこからでも」 つかえる

「様々な端末から」 つかえる

「組み合わせて」

つかえる

Page 5: メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3

5

Zimbraの特徴

§ オープンソース版と商用サポート版があり、商用版の一部機能を除きオープンソースで公開されています。

§ オープンソースプロジェクトの成果を活用しています。 •  Jetty •  MySQL •  Lucene •  Postfix •  Clam AV •  SpamAssassin •  OpenLDAP

•  Nginx

§ オープンソース版のソースコードは Zimbra Public License (ZPL) でライセンスされています。 詳細は http://www.zimbra.com/license/ をご覧ください。

Page 6: メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3

6

Zimbraの特徴

§ 自由度の高いシステム構成、スケーラビリティ •  「1台に全機能をインストール」から「数百台規模の分散構成」まで

§ 柔軟な拡張性 •  ZimletによるUI機能拡張 •  Server Side Extension

• コアのカスタマイズ

Page 7: メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3

7

Zimbra Serverの構造

SO

AP

RE

ST

PO

P

LMTP

Zimbra Collaboration Server (Jetty + JVM + OS)

CalD

AV

IMA

P

RS

S

Atom

サポートプロトコル

CardD

AV

ActiveS

ync

Storage System

MySQL Lucene Index

Open LDAP

External LDAP

Active Directory

メタデータ 検索インデクス メールデータ

Zimbra Journaling

認証・設定 (外部認証) メールデータ ジーナリング

Zimbra Proxy

Server side Ext

Could Service

Page 8: メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3

8

1. Zimbra Collaboration Server の概要 2. カスタマイズ 3. オープンソース版をさわってみる 4. まとめ

Page 9: メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3

9

カスタマイズでできること A.  Zimbra システム内のデータの相互利用 B.  外部サービス資源の利用 C.  Zimbra のデータを外部サービスに提供

カスタマイズのためのメカニズム §  Zimlet §  Server Side Extension §  Web API

Zimbra のカスタマイズ

Page 10: メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3

10

メール、アドレス帳、カレンダー等のデータを他の画面から参照

例)メール画面から予定を参照

A. Zimbra システム内のデータの相互利用

本文中の日付にマウスオーバーするだけで、その日の予定をカレンダーデータから取得してポップアップ表示

Page 11: メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3

11

B.外部サービス資源の利用(1)

メール本文に含まれる住所を検出して、その場の地図をポップアップ表示 署名に住所が書いてあればCopy&Paeteなしで直接地図を確認できます。

Page 12: メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3

12

B.外部サービス資源の利用 (2)

ファイルの保存、送付にDropboxを活用 Zimbraの一機能であるかのように連携 Dropbox連携ボタンを追加

添付ファイルを簡単にアップロード

添付の代わりにリンクを挿入

Page 13: メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3

13

B.外部サービス資源の利用 (3)

機能 § カレンダ予約時に、日時などの情報を WebEx (オンライン画面共有サービス) の予約システムに登録し、WebEx のアクセス情報を、Zimbraの予定に挿入する • 画面共有のための URL の挿入

WebExサイト(外部サイト)

   予約取りと、 詳細情報の自動挿入

WebExメニューを追加

Page 14: メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3

14

Zimbra内のデータを外部サービス、アプリケーションで利用 §  SOAP API でZimbra内のデータを取得 § 独自サービス、アプリでデータを活用

C.Zimbra のデータを外部サービスに提供

ブランドトップ ポータルページ

Zimbra Server

ポータル内に新着通数、受信箱、今日の予定を埋め込み表示 スマートフォン、

タブレット用アプリを作成

Page 15: メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3

15

1. Zimbra Collaboration Server の概要 2. カスタマイズ 3. オープンソース版をさわってみる 4. まとめ

Page 16: メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3

16

Zimbra パッケージ比較 ~ カスタマイズに関して ~

オープンソース版 (OSS Edition)

有償版 (Network Edition)

カスタマイズ関連  Zimlet ◯ ◯  Server Side Ext. ◯ ◯  Web API ◯ ◯ WebMailリブランディング  ☓ ◯ ソースコード改編 ◯

(再配布の場合はソースコードを含めること)

◯ (契約形態に依存)

このほかにも、サポートプロトコル・機能・サポートなどでオープンソース版と有償版には違いがあります。詳細は下記を参照してください: http://www.zimbra.com/products/compare_products.html

Page 17: メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3

17

Zimbra オープンソース版を試してみる

§ 方法1 : バイナリパッケージをダウンロードしてインストール • インストーラに従って設定するだけなので簡単 • Zimlet、Server Side Extension、Web API がすぐ使える

§ 方法2 : ソースコードをチェックアウトしてビルド • Eclipse 等からデバッガをかけながら実行が出来る • サポートされていない OS 用のバイナリも作れるかもしれない

Page 18: メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3

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 をローカルに立てておいてください。ドメイン名の入力を省くこともできますが、その場合はメールをシステム内でしか送受信できません

Page 19: メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3

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.  ビルド

Page 20: メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3

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 を参照のこと

Page 21: メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3

21

カスタマイズ実例

§ サーバ側に Web API を追加して、サーバの機能を拡張 § Web クライアント側のUIを拡張

      Zimbra サーバ

新しい

AP

I 今日のサンプル: メールの中に “Hello” という文字列があったら、それにリンクをはる。 マウスオーバしたらツールチップを表示する。 クリックしたら新しい API を呼ぶ

今日のサンプル: POSTされたリクエストのHTTP ヘッダを表示する hello from sample-extension Got HTTP headers: Cookie: ZM_TEST=true; JSESSIONID=uye2ghe6t77mi6v4je378od2; ZM_AUTH_TOKEN=0_0c8e2611caa9504e00fda777175aadaf677c1fa9_69643d33363a36333739373364362d616132622d343432302d393339352d6466623963366430313033323b6578703d31333a313336343532343335343631343b747970653d363a7a696d6272613b 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 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 Connection: keep-alive Accept-Encoding: gzip,deflate,sdch

Page 22: メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3

22

Server Side Extension の作り方

1.  Java クラスを書いてコンパイル 2.  所定の場所に jar をコピー

/opt/zimbra/lib/ext/<Extension名>/<ハンドラ名>

3.  サーバ再起動

Page 23: メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3

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);!!}!

}!

Page 24: メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3

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 { ! …! }!}!

Page 25: メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3

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 をデプロイ

Page 26: メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3

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>

Page 27: メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3

27

カスタマイズの実例

§ Server Side Extension の実例 • ActiveSync プロトコル実装 • OpenID 認証プラグイン • SAML 認証プラグイン • バックアップ&リカバリ処理用モジュール • HSM (メッセージファイル階層ストレージ) 処理モジュール

§ がりがりソースコードのカスタマイズ応用例 • メッセージストレージの置き換え; Posix ファイルシステムの代わりに分散ストレージ用のインタフェースにオーバライド

Page 28: メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3

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

Page 29: メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3

29

おわりに

Zimbra開発コミュニティーを設立予定

2013年夏の設立に向けて準備中

Zimbra周りの開発に関心を持っていただけた方はご連絡ください

[email protected] [email protected]

Page 30: メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3