HowTos/SWAでアドレス帳を追加する方法

出典: ScalixWikiJP

Scalix Wiki -> How-Tos -> HowTos/SWAでアドレス帳を追加する方法

目次

できること・できないこと

Scalix Web Accessのアドレス帳では二つのアドレス帳「システムアドレス帳」と「連絡先」が用意されています。 残念ながら、デフォルトで用意されている「連絡先」フォルダ以外の連絡先アイテムフォルダからは検索することができません。

このアドレス帳はLDAPの検索機能を利用しているため、LDAPサーバに格納されているデータツリーであればアドレス帳として追加することができます。

設定ファイル

設定ファイル

次のファイルがScalix Web Accessの設定ファイルです(XX はサーバ名ごとに異なります)。

/var/opt/scalix/XX/webmail/swa.properties

このファイルを編集して、任意のLDAPサーバの情報を追加することにより、アドレス帳として利用することができます。

設定ファイルの説明

swa.propertiesの後半がアドレス帳の設定です。 以下の説明が記述されています。

# 追加のLDAPサーバの指定をここで行います。以下のような属性が有効です。
#
# サーバのホスト名あるいはIPアドレス (任意, default = localhost)
# swa.ldap.<n>.server=localhost
#
# LDAPサーバのポート番号 (任意, default = 389)
# swa.ldap.<n>.port=389
#
# ベースDN (必須)
# swa.ldap.<n>.baseDN=o=Scalix
#
# 種類 (必須)
# 備考: (1) これはそのエントリにタグ付けする名前です。
#           "personal"(連絡先)と"system"(システムアドレス帳)は予約されています。
#           それ以外であれば何でもよいです。
#       (2) 検索順を定義するために、swa.user.dirSearchOrderの設定値を参照します。
# swa.ldap.<n>.type=myldap
#
# LDAP検索フィルタ (必須)
# 備考: 名前の確認やアドレス帳の検索でユーザが入力する文字列を置き換えるために%sを使います。
# swa.ldap.<n>.filter=(|(givenname=*%s*)(surname=*%s*))
#
# LDAP検索スコープ (任意, default = one)
# 利用できる値: sub, one, base
# swa.ldap.<n>.scope=sub
# 
# 取得できる最大エントリ数 (任意, default 100)
# swa.ldap.<n>.addressSearchLimit=10
#
# タイムアウトするまでの最大時間(ミリ秒) (任意, default 10000)
# swa.ldap.<n>.timeout=30000
#
# LDAP認証方法 (任意, default = none)
# 利用できる値: none, simple
# swa.ldap.<n>.authType=none
#
# LDAPバインドDN (任意)
# 備考: メールアドレスによって識別できるユーザ名を置き換えるために%uを使います。
# swa.ldap.<n>.bindDN=cn=Administrator,o=Scalix
#
# LDAPサーバのラベル(アドレス帳名) (必須) あるいはリソースファイルのローカライズのためのID(任意)
# swa.ldap.<n>.displayName.resourceLabel=My LDAP
# swa.ldap.<n>.displayName.resourceID=my_ldap_resource_label
#
# 名前の確認の結果として表示名として表示される属性名 (任意, default = omcn)
# swa.ldap.<n>.checkNames.nameAttribute=displayName
#
# 名前の確認の結果としてメールアドレスとして表示される属性名 (任意, default = mail)
# swa.ldap.<n>.checkNames.nameAttribute=rfc822address
#
# 
# 属性の定義 (アドレス帳は少なくとも3列あることを期待している)
#
# LDAPの属性のラベル(必須)あるいはリソースファイルのローカライズのID
# swa.ldap.<n>.search.<m>.resourceLabel=FaxNumber
# swa.ldap.<n>.search.<m>.resourceID=fax_number_resource
#
# ヘッダを表示する(任意)
# swa.ldap.<n>.search.<m>.header=true
#
# 特別な列の認識 (任意)
# 利用できる値: name, email
# swa.ldap.<n>.search.<m>.type=name
#
# 列に割り当てるLDAPの属性 (必須)
# swa.ldap.<n>.search.<m>.dirAttribute=UID

設定ファイルの編集方法

まず、作業用のswa.propertiesファイルのコピーを取ってください。

# cp swa.properties swa.properties.new

このコピーを取ったswa.properties.newに対して編集を行います。

swa.ldap.1.で始まる設定はシステムアドレス帳で、swa.ldap.2.で始まる設定は個人の連絡先です。 そのため、アドレス帳を追加するためには<n>のnの値は3以降を使います。

次の設定は記述例です。

swa.ldap.3.type=exampleLdap
swa.ldap.3.server=ldap.example.com
swa.ldap.3.port=389
swa.ldap.3.baseDN=dc=example,dc=com
swa.ldap.3.filter=(|(cn=*%s*)(&(sn=*%s*)(mail=*))(&(gn=*%s*)(mail=*))(mail=%s*))
swa.ldap.3.scope=sub
swa.ldap.3.timeout=10000
swa.ldap.3.authType=none
swa.ldap.3.checkNames.nameAttribute=mail
swa.ldap.3.displayName.resourceID=
swa.ldap.3.displayName.resourceLabel=○○支店
swa.ldap.3.search.1.header=true
swa.ldap.3.search.1.type=name
swa.ldap.3.search.1.name.resourceID=addressbooksearch_label_name
swa.ldap.3.search.1.name.resourceLabel=Name
swa.ldap.3.search.1.dirAttribute=cn
swa.ldap.3.search.2.header=true
swa.ldap.3.search.2.type=email
swa.ldap.3.search.2.name.resourceID=addressbooksearch_label_email
swa.ldap.3.search.2.name.resourceLabel=Email Address
swa.ldap.3.search.2.dirAttribute=mail
swa.ldap.3.search.3.header=true
swa.ldap.3.search.3.type=
swa.ldap.3.search.3.name.resourceID=
swa.ldap.3.search.3.name.resourceLabel=部署名
swa.ldap.3.search.3.dirAttribute=ou

複数の設定を追加できるため、ベースDNを使い分けたり、検索フィルタで絞り込んだりすることで部署毎のアドレス帳を作成することが可能です。 searchの後ろの数字は列の番号です。Scalix 11.2以前では2までしか有効になりません。

フィルタ式やリソースラベル(resourceLabel)に日本語を記述したい場合にはUnicode Escape(\uXXXXの形式)で記述する必要があります。そのため、文字エンコーディングをUTF-8にして保存した上でJDKに含まれているnative2asciiで変換してください。

# native2ascii swa.properties.new > swa.properties.new-ue

swa.properties.new-ueの内容を確認して、日本語の文字がUnicode Escapeされていることを確認してください。 問題がなければ、このファイルをswa.propertiesにリネームしてください。

# mv swa.properties.new-ue swa.properties

ScalixのTomcatを再起動すると変更した設定が有効になります。

# service scalix-tomcat restart

native2asciiがシステムにインストールされていない場合、下記のスクリプトで代用できます。

#!/usr/bin/perl
use Unicode::Escape;
my $data="";
while(<>){
  $data.=$_;
}
my $escaper = Unicode::Escape->new($data, 'utf8'); 
my $escaped = $escaper->escape;
print $escaped;

このスクリプトの実行にはUnicode::Escapeモジュールのインストールが必要です。