HowTos/Active Directoryの連絡先(contact)の同期

出典: ScalixWikiJP

Scalix Wiki -> How-Tos -> HowTos/Active Directoryの連絡先(contact)の同期

この文書はScalix Wiki - HowTos/AD-Contact-Sync (米国サイト)を参考にしています。

目次

Active DirectoryとScalix間における連絡先(contacts)の同期

ScalixとActiveDirectory2003との間の連絡先情報の同期方法についての質問がしばしば寄せられます。

ScalixとExchangeとの同時運用においえて、ScalixのユーザがExchangeのグローバルアドレスリスト(GAL)の連絡先(contact)に、ExchangeのユーザがScalixのディレクトリのインターネットユーザとして設定されていなければなりません。(要するにScalix、Exchangeのアドレス帳に双方のアドレスが載っていなければなりません。)

このHowToでは上記設定をおこなう際における混乱を解決するためのものです。 Scalix、Exchange、LDAP、SMTPのルーティングを理解している方を前提としており、簡潔な説明となっています。

間違った記述や訂正などについてはchris -att- scalix -dott- comのアドレスへ知らせてください。

必要条件 & 想定環境

必要条件

  • Scalixサーバへのroot(管理者)レベルでのアクセス
  • Active Directoryへの管理者アクセス
  • LDAPについての全般の知識

想定環境

  • ExchangeとScalix間で共通のメールドメインを運用する。(ExchangeとScalixを同時運用しない場合は、ScalixとExchange間のドメイン転送などを考慮する必要はありません。)

基本的な情報

ここでの目的はExchangeサーバのユーザ情報からScalixのインターネットユーザを作成することです。 作成するすべてのインターネットユーザはExchangeとScalix共通の単一のものになります。

ScalixサーバはScaxlix外のアドレスを組み込む設定も考慮されています。 この機能により、Scalixサーバ、あるいはsendmailのローカルアドレスには存在しない外部のアドレスへのメールのルーティングも可能となります。 しかしながら、これらの機能を有効にするにはActive Directoryの適切な設定が不可欠になります。 通常、Exchangeサーバは管理しているドメインのメールを、管理外の別のマシンへ配送しません。 この設定を変更するため、Exchangeサーバ側の設定において次のLDAP属性が必要となります。

  • proxyAddresses --> 転送(forward)されるRFC822形式のアドレスリスト
  • targetAddress --> 転送ドメイン(transport domain)の最終的にルーティングされるアドレス

Exchangeサーバは通常管理しているドメインに対するメールを自動的に他のサーバへ転送(forward)しません。 したがって、ExchangeサーバとScalix間で転送ドメイン(transport domain)を設定する必要があります。 このHowToではscalix.demoというドメインとそのScalixのユーザとExchangeのユーザを例にあげ、説明していきます。 この例では転送ドメイン(transport domain)はtransport.scalix.demoになります。 転送ドメイン(tranport domain)の機能は、ExchangeサーバにExchangeで管理されているアドレスへのメールをExchange以外のサーバへ転送 させるためのものです。

基本的方法 - マニュアルテスト

作業を開始するには、まずActive Directoryへの連絡先(contact)の作成とScalix管理コンソール(Scalix Administration Console:SAC)にてインタネットユーザ(Internet User)を作成しなければなりません。Active Directoryの連絡先とScalixのインターネットユーザの作成後、Exchange、Scalix双方のサーバへメールが送信できることを確認してください。確認ができたら、omldapsyncを実行し作成した連絡先(contact)とインターネットユーザの情報の同期の自動化をおこなうことができます。同期が終了したら、好みのLDAPブラウザ(Softerra、JXplore、lbeなど)を利用してユーザとユーザの属性(attribute)を確認してください。Active Directoryの属性(attribute)で重要になるのが、targetAddress、mail、proxyAddressになります。テストの連絡先(contact)を作成し、それぞれの属性(attribute)が同期していることを確認してください。

Scalixのユーザを作成するためのActive Directoryの連絡先

  • 例に使用するメールのアドレスはscalixuser@company.com
  • Scalixユーザとなるscalixuser@transport.company.comという2番目のアドレスを設定します。
  • Active Directoryへ連絡先(contact)を作成し、この2番目のアドレスを連絡先(contact)に設定します。
  • Exchangeのグローバルアドレスリスト(GAL)にこのエントリが反映されたことを確認し、OutlookとExchange上で作成した連絡先(contact)を選択し、正常にメールが送信できることを確認してください。
  • transport.company.comドメインのメールがScalixサーバへ正常に送信されるようにExchangeでSMTPコネクタを設定しなければならないかもしれません。

Active Directoryの連絡先(contact)のアドレスの確認

  • ADSI EDITがインストールされていることを確認してください。あるいは、任意のLDAPブラウザでActive Directoryへアクセスしてください。
  • ADSIがインストールされていない場合はWindows Server Support Toolsをインストールしてください。インストール方法は次のURLで説明されています。 http://go.microsoft.com/fwlink/?LinkId=62270
  • ADSIで任意の連絡先(contacts)を開き、メールアドレス @company.comが"proxyAddresses"に設定され、転送アドレス(transport address)がtargetAddressに設定されていることを確認してください。
  • 適切に設定されている場合は"Active Directory ユーザとコンピュータ"において、その連絡先(contact)オブジェクトのプロパティ->全般タブ->"電子メール(M)"は@transport.company.comになっています。

転送ドメイン(transport domain)のためのSMTP connectorの設定

  • Exchangeシステムマネージャを開いてください。
  • コネクタを選択し、右クリックで新規作成->SMTPコネクタを開いてください。
  • 「このコネクタから次のスマートホストにすべてのメールを転送する(F)」"Forward all mail through this connector to the following smart hosts"を選択してください。
  • すぐ下の入力覧にScalixサーバのサーバ名かIPを入力してください。
  • Exchangeサーバをローカルブリッジヘッド(Local Bridgehead)として追加してください。 (追加(D) -> サーバの選択 -> OK)
  • アドレススペースのタブをクリックしてください。
  • 追加(D) -> SMTPの選択 -> 電子メールドメイン(E)の入力欄にtransport.scalix.demoを入力 -> OK
  • 「これらのドメインへのメッセージの中継を許可する(L)」"Allow Messages to be relayed to these domains"にチェックしてください。
  • OKをクリックしてSMTPコネクタの設定を保存してください。

Scalixユーザへの転送アドレス(transport addresses)の自動追加

Internet Address Mappingを追加する

IAM(Internet Address Mapping)関連のコマンドを利用してメールアドレスを自動で生成することができます。

[root@integration scalix-11.0.1-GA]# omshowiam -s all
1                                  scalix.demo         "C" <G.S>

[root@integration scalix-11.0.1-GA]# omaddiam -s 2 -D transport.scalix.demo -N '"C" <G.S>'
omaddiam : Orn to Internet Address Mapping successfully added.

[root@integration scalix-11.0.1-GA]# omshowiam -s all
1                                  scalix.demo         "C" <G.S>
2                                  transport.scalix.d  "C" <G.S>

アドレスのマッピングが終了すると、 ユーザの2番目のアドレスを自動で追加することができます。 実際に追加するにはommoduコマンドを-Aオプションをつけて実行します。

[root@integration scalix-11.0.1-GA]# omshowu -m all
sxadmin /integration/CN=sxadmin
sxqueryadmin /integration/CN=sxqueryadmin
Premium User /integration/CN=Premium User

[root@integration scalix-11.0.1-GA]# omshowu -m all | while read line; do omshowu -n "$line" | grep "Internet Address"; done
Internet Address : sxadmin-integration@scalix.demo
Internet Address : sxqueryadmin-integration@scalix.demo
Internet Address : "Premium User" <Premium.User@scalix.demo>

[root@integration scalix-11.0.1-GA]# omshowu -m all | while read line; do ommodu -n "$line" -A; done
ommodu: The user was modified successfully
ommodu: The user was modified successfully
ommodu: The user was modified successfully

[root@integration scalix-11.0.1-GA]# omshowu -m all | while read line; do omshowu -n "$line" | grep "Internet Address"; done
Internet Address : "sxadmin" <sxadmin@scalix.demo>="sxadmin" <sxadmin@transport.scalix.demo>
Internet Address : "sxqueryadmin" <sxqueryadmin@scalix.demo>="sxqueryadmin" <sxqueryadmin@transport.scalix.demo>
Internet Address : "Premium User" <Premium.User@scalix.demo>="Premium User" <Premium.User@transport.scalix.demo>

マニュアルテスト

いままでの作業を終了下時点で、メールはマニュアル(telnetなど)で送信可能になっており、正常に宛先に届かなくてはなりません。 確認は次のようにおこないます。

もし、うまくいかない場合は次のことを確認してください。

  • Scalixのユーザに2つのアドレスが設定されていること
  • ExchangeのSMTPコネクタが適切に設定されていること
  • Active Directoryの連絡先(contact)オブジェクトのtargetAddressとproxyAddressesが適切に設定されていること
  • ExchangeサーバとScalixサーバのネットワークが接続されていること
  • ExchangeサーバからScalixサーバの25番ポートへtelnetでアクセスできること
  • 今までの説明に従って適切に設定できていること

自動同期の設定

自動同期ではomldapsyncの使い方に慣れていることが必要不可欠になります。 omldap関連のコマンドについてはomldapsyncやomldaputil、その他個別のコマンドのmanページを参照してください。 omldapsyncコマンドはBashスクリプトであり、スクリプト内部で呼び出されるomldaputilはバイナリコマンドです。

同期アグリーメントタイプ(sync agreement type) 22についてのドキュメントはほとんどありません。 詳細は次のドキュメントを参照してください。 http://www.scalix.com/wiki/index.php?title=HowTos/Advanced_omldapsync

同期アグリーメントタイプ(sync agreement type)が21(Exchange5.5向け)を利用し、omldapsyncに利用する同期アグリーメントを設定してください。(何度も言うようですが、同期に関するロジックについてはこのドキュメントの範疇外です。)

Active Directoryの準備としてScalixに基づいて設定される連絡先(contact)を保管するOU(組織単位:Organization Unit)を作成してください。

下記の設定を除き通常と同様に同期の設定(sync.cfg)をおこないます。


設定の変更点

  • 同期アグリーメントタイプ(sync agreement type)を22に設定します。
  • EX_ATTRのパラメータにobjectGUID、otherTelephoneとmailを追加します。Telephone-Office2とrfc822Mailboxは削除します。
  • EX_GUIDとLDAPCT_BIN_ATTRのパラメータにobjectGUIDを設定します。
  • EX_MV_ATTRに複数の属性を設定できるように設定します。今回はobjectClassとproxyAddressesを設定します。
  • IM_GUID=omGlobalUniqueIdを記述します。
  • 転送ドメイン(transport domain)用にIM_LOCAL_DOMAINを設定します。今回は@transport.scalix.demoを設定します。

IMPORT用のマッピング設定の変更

  • Scalixへユーザメールボックスを作成することなく連絡先を作成するには、omMailboxのパラメータをFALSEに設定します。次のように設定します。
|omMailbox|*|FALSE
  • objectGUIDにユニークなID(識別子)を設定します。
objectGUID|GLOBAL-UNIQUE-ID|*,1,512|*
  • インポートはrfc822addressではなくmailを選択します。
mail|INTERNET-ADDR|*,1,512|*
  • Telephone-Office2ではなくotherTelephone対してマッピングをおこないます。
otherTelephone|PHONE-2|*,1,32|*

EXPORTに関するマッピング設定の変更

  • Exchange側でユーザではなく連絡先(contact)を作成するために、userオブジェクトを連絡先(contact)オブジェクトへマッピングします。次のように設定します。
objectClass|*|top|*
objectClass|*|scalixPerson|person
objectClass|*|organizationalPerson|*
objectClass|*|organizationalPerson|contact
objectClass|*|scalixDistributionList|contact
objectClass|*|scalixResource|contact
  • EX_TEXT_EOAが適切に拡張子を見つけることができるように、作成したユーザのproxyAddresseの値を確認してください。この値に拡張子が設定されていなければなりません。
  • objectCategoryのパラメータを追加し、作成した連絡先(contact)が設定されていることを確認してください。次のような形式になっているはずです。
|objectCategory|*|CN=Person,CN=Schema,CN=Configuration,DC=scalix,DC=demo
  • ディレクトリには直接uidを記述しようとしないでください。次のように#でコメントアウトしてください。
#omGlobalUniqueId|uid|*,1,64!ISMISSING=omAlias|*
  • Active Directory 2003に適切にメールアドレスが記述されていることを確認してください。
rfc822Mailbox|mail|*|!CUSTOM=IM_LOCAL_DOMAIN
rfc822Mailbox|targetAddress|*|!CUSTOM=IM_LOCAL_DOMAIN
rfc822Mailbox|proxyAddresses|*|!CUSTOM=IM_LOCAL_DOMAIN
  • set a mailNickname to ensure inclusion in Exchange's GAL
omCn|mailNickName|*|*
  • cmAPIRecipientに対するMAPI-Recipientの適切なシンタックスの訂正をおこないます。
|mAPIRecipient|*|TRUE
  • Telephone-Office2をotherTelephoneに訂正します。
omPhone2|otherTelephone|*|*

上記変更の終了後は同期をおこなうことができます。 他の同期アグリーメントと同じように同期がおこなわれるかテストしてください。

連絡先(contact)がActive Directoryに反映され、インターネットユーザがScalixに作成されるはずです。

最終設定

これで連絡先(contact)が同期されました。 cronでomldapsyncの定期的実行を設定したら、コーヒーで一休みしてください。