OutlookでLDAPサーバーのアドレス帳を使用する anchor.png

LDAP(Lightweight Directory Access Protocol)は,ユーザーやコンピュータの情報を集中管理する「ディレクトリサービス」。詳しくはこちらのページを参照する。

MicrosoftのActive DirectoryもLDAPを使用しているようだ。

LDAPではいろいろな情報をDBとして管理・サービスできるが,メールアドレスもその一つ。
OutlookやThunderbirdなんかのメールクライアントだと,メールアドレス検索にLDAPサバーを利用できる。

Page Top

OutlookでLDAPアドレス帳を使用する anchor.png

Outlookでアドレス帳としてLDAPを参照できるようにするには,以下のようにする。

  • Outlookのファイル>アカウント設定>アドレス帳をクリック
  • 新規をクリックする
    インターネットディレクトリサービスにマークを付けて次へをクリックする。
  • サーバー名に,LDAPサーバーを登録する
  • 詳細設定ボタンをクリックする
  • 検索タブをクリックする
    検索ベースのユーザー設定を選択して,ou=xxxxx,dc=yyyyy,dc=zzzzzのようにLDAPサーバーのDBを設定する。
  • 次へ,完了ボタンで設定終了。

これで,LDAPサーバーのメールアドレス帳がOutlookで参照できるようになった。
Outlookのアドレス帳を開いてその他のアドレス帳で選択すれば,メールアドレス等を検索できる。しかし, 検索する場合は,高度な検索(なにが高度なのかわからないが・・・)をクリックして検索する必要がある。

Page Top

OutlookでのLDAP使用時のデフォルト検索 anchor.png

OutlookでLDAPアドレス帳を使用する場合に,上記のようにちょっと難があります。それは,検索する際にデフォルト検索が一切出来ない,また検索対象がその他のフィールドしか選べないっていう難です。

高度な検索でも,部署の検索はなぜか出来ない・・・
Thundirbirdではこんな難は無いのだが,Outlookには困ったものです。

Page Top

デフォルト検索が出来るようにする anchor.png

そのままでもまあ使えるが,上記の難の対策を行うために,以下の内容でoutlooksearch.regファイルを作成する。
作成したoutlooksearch.regを右クリック>結合で,レジストリに追加する。(Outlook2016用です。Outlook365でも動作した。)
outlooksearch.reg

Windows Registry Editor Version 5.00
 
[HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\LDAP]
"DisableVLVBrowsing"=dword:00000001
"NoDisplayNameSearch"=dword:00000001

これで,LDAPアドレス帳を開いた時にデフォルト検索BOXで検索できるようになる。
ただし,アドレス帳を開いた時からの一覧表示は出来ない。これはLDAPサーバー側で仮想一覧表示(Virtual List View)をサポートしていないためみたい。

Page Top

デフォルトでの検索項目と検索項目の追加 anchor.png

上記で検索出来るようにはなったが,Outlookでは検索対象のLDAP属性は以下が対象になっている。

  • 電子メール アドレス(mail属性)
  • 共通名(cn属性)
  • 姓(sn属性)
  • 名(givenName属性)
  • 表示名(displayName属性)
    LDAPサーバーが,Active DirectorのDCを指定した場合のみ。

しかし,これ以外の属性も検索対象にしたい。 Microsoftの http://technet.microsoft.com/ja-jp/library/cc179232.aspx で,検索対象の属性を追加する(カスタムフィルター)方法が記載されているが,この方法ではLDAPの構築をし直す必要がある。(PRFファイルを使って設定する。)

そこで,Windowsのレジストリを編集して検索対象を追加する方法で対応してみる。

LDAPサーバーを利用している場合に,検索対象に部署(ou)と役職(title)と会社(company)をWindowsのレジストリに追加するVBスクリプトプログラムを作成した。
部署では,文字列が含まれていれば検索に引っかかるようにしている。
customfilter.vbs

Everything is expanded.Everything is shortened.
-
|
|
!
 
-
!
 
-
!
 
 
-
!
-
|
!
 
 
 
 
 
 
 
 
 
-
!
 
-
!
 
-
!
 
-
!
 
-
!
-
!
-
!
-
!
 
 
 
 
 
 
' OutlookでLDAP検索用のデフォルト検索用カスタムフィルターをWindowsレジストリに設定する
' ou(部署)とtitle(役職)を追加
' displayName(表示名),ou(部署),title(役職)は検索文字列が含まれていればヒットする
Option Explicit
 
' LDAPフィルタを設定するサーバー名
Const CHANGE_SERVER = "xxxxxx.yyyyyy.zzzzzz"
 
' LDAPフィルタの文字列
Const FILTER_STRING = "(&(mail=*)(|(mail=%s*)(cn=%s*)(sn=%s*)(givenName=%s*)(displayName=*%s*)(ou=*%s*)(title=*%s*)(company=*%s*)))"
 
Const HKEY_CURRENT_USER = &H80000001
' for Outlook2016
Const MAPI_PROFILE_KEY = "Software\Microsoft\Office\16.0\Outlook\Profiles\Outlook"
' for outlook2010
' Const MAPI_PROFILE_KEY = "Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook"
Const ServerName = "001e6600"
Const CheckNames = "001e6624"
 
Dim stdRegProv
Dim strDefaultProfile
Dim strProfileKey
Dim arrSubKeys
Dim strSubKey
Dim strServer
 
' WMIのStdRegProvクラスを取得
Set stdRegProv = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
 
' 既定のOutlookプロファイル名を取得
stdRegProv.GetStringValue HKEY_CURRENT_USER, MAPI_PROFILE_KEY, "DefaultProfile", strDefaultProfile
 
' 既定のOutlookプロファイルのキーを生成
strProfileKey = MAPI_PROFILE_KEY & "\" & strDefaultProfile
 
' 既定のOutlookプロファイルのサブキーを取得
stdRegProv.EnumKey HKEY_CURRENT_USER, strProfileKey, arrSubKeys
 
' サブキーのすべてについて処理
For Each strSubKey In arrSubkeys
    ' LDAPのサーバー名を取得
    If stdRegProv.GetStringValue(HKEY_CURRENT_USER, strProfileKey & "\" & strSubKey, ServerName, strServer) = 0 Then
        ' LDAPサーバー名が設定されていたらフィルタを設定すべきLDAPサーバーの名前かどうかを確認
        If strServer = CHANGE_SERVER Then
            ' 設定すべきサーバーだったらフィルタの設定をレジストリに追加
            stdRegProv.SetStringValue HKEY_CURRENT_USER, strProfileKey & "\" & strSubKey, CheckNames, FILTER_STRING
            Exit For
        End If
    End If
Next
 
Set stdRegProv = Nothing

これで,OutlookでLDAPアドレス帳を開いた時にデフォルト検索で検索できるように出来た。


新しくコメントをつける

題名
ゲスト名
投稿本文
より詳細なコメント入力フォームへ

トップ   凍結 差分 バックアップ 複製 名前変更 リロード   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom
Counter: 4812, today: 7, yesterday: 0
最終更新: 2022-01-17 (月) 09:29:29 (JST) (829d) by yuji