「送信者をアドレス帳に追加」Actionで別人の別名が設定される障害 | Lotus Notes/Domino (R) をこよなく愛して。。。。

「送信者をアドレス帳に追加」Actionで別人の別名が設定される障害

Notes/Domino 6.0.x/6.5.xのMail Templateの障害として、上記の問題が報告されています。


この問題は、以下のTechnoteにて公開されています。


     Lotus Software Knowledge Base Document

     Title: Wrong Alternate name information added to Contact in Personal Address Book

         by 'Add Sender to Address Book' action
     Doc #: 1232945
     URL: http://www.ibm.com/support/docview.wss?rs=899&uid=swg21232945


また、日本語版のTechnoteは以下に公開されています。



     「送信者情報を個人アドレス帳に追加した時に、誤った別名が設定されることがある」

     http://www-06.ibm.com/jp/domino04/lotus/support/faqs/faqs.nsf/all/729191



この問題は、Notes/Dominoの別名を利用した環境で、Mail Templateとして6/6.5の物を使っている場合のみ該当します。


R5のMail Templateを使っている場合や、Notes/Domino 7のMail Template 7を使っている場合にはこの問題は発生しませんが、Mail Templateが6/6.5の物を利用している限り、Notes/DominoのServerやClientのVersion、ServerやNotes Clientの言語に関係なく現象は発生します。


当然、Notes/Domino 7に搭載されているMail Template 6を利用いただいている場合も問題は発生しますのでご注意ください。


また、Domino Web Access(DWA)やWeb Mailを使っている場合はMail Templateが6/6.5の物であっても影響はしません。



障害の現象としては、受信Boxで複数のMailを選択して、ツールから、「送信者をアドレス帳に追加(Add sender to addressbook)」を行った際に基本名は問題なく登録されるが、別名がずれて登録されたり、別のe-Mail Addressが登録されてしまうというもので、詳細はTechnoteに紹介されている通りです。


間違った別名が登録されても、通常の操作で直ぐに問題になる訳ではありません。


Address Pickerで別名がListされますが、その際に別名を選択した場合や、To/CC/BCC Fieldに別名を直接入力してAddress確定させた場合に問題になります。


別名表示を有効化している場合、別名を選ぶと別名だけが表示されるため、基本名に何が設定されているのかわからないのですが、その際、Mailの基本名には全く別のIDがセットされているということになり、実際のMailは別名ではなく基本名に配信されるからなのです。


ただ、この複数のMailを選択してアドレス帳に登録するという操作はそれほど一般的に行われているものではないでしょうし、個人情報保護の観点では個人のアドレス帳(names.nsf)にAddressを登録することは好ましくはないことです。


というのも、個人のアドレス帳(names.nsf)は、Notes Clientが立ち上がる際に参照されるために、DBの暗号化はしてはならず、暗号化されないDBとなっているため、ファイルが盗まれてしまった場合のセキュリティーが問題になるためです。


話が逸れてしまいますが、セキュリティーを考えた場合は、個人のアドレス帳と同じ設計で別のアドレス帳を作成し暗号化した上で、そちらにMail Addressなどは登録し、Notes Client側で2次Addressbookとして設定して利用するのが好ましいのです。



話を元にもどしましょう。


この問題に対処するには、Technoteにも解説されていますが、2つの対応が必要です。


  1.Mail Templateの修正

  2.既に登録してしまった個人アドレス帳の修正

最初に紹介したように、この問題は、Mail Templateの「送信者をアドレス帳に追加(Add sender to addressbook)」ActionのBugが原因で発生しています。


このActionには、以下のように書かれており、Agentを呼び出しています。


  xTitle := "Add Sender to Addess Book";
  xMsg := "You must select a document to add a sender to the Address Book.";

  @If(form = ""; @Return(@Prompt([Ok]; xTitle; xMsg)); "");
  
@Command([ToolsRunMacro];"(AddSenderToAddressBook)")


従って、Technoteに記載されているように、このAgentを置き換える必要があるのです。


また、Technoteでは(AddressHelper) Formの修正も必要となっています。


それは、上記のAgentが実行されると、この(AddressHelper)で定義された画面が呼び出され、そこで内容を確認してから登録するようになっているからです。



これらの設計要素をTechnoteから直して保存するのですが、ここで重要なことが2点あります。


1点目は、LotusScriptを修正したからといって、Domino Designerで絶対に「すべてのLotusScriptをリコンパイル」を行わないことです。


これをやってしまうと、殆どの設計要素がRe-Compileされたことによって更新されてしまいます。


皆さん、ご存知でしょうが、Notes Clientは設計要素をLocal Cacheに保存して再利用する仕組みを持っています。


Notes ClientはDBにAccessすると設計要素のSequence No(Version Noみたいな物で、更新されたかどうかを表しています)を参照して更新されていれば最新の設計を再度Cacheに読み込むという動作となります。


Mail Templateは最初にDBを開くと、かなりの数の設計要素をLoadしますので、設計要素が多く変更されている状態だと、設計要素のRe-Loadが起こり、Mail Templateの設計を更新した翌日朝一番のPerformanceが悪化します。


Networkが貧弱な環境がある場合、このPerformance劣化は馬鹿にならないくらいの影響を与えます。


更に、UserがLocal Replicaを利用していると、多くの設計要素の更新が発生したことにより、設計要素のReplicaに時間がかかってしまうといった事態も発生するのです。


そういうことが起こらないように、今回は指定された2つの設計要素のみの変更ですので、それだけを修正すればよいわけで、この2つの設計要素の更新であればPerformanceへの影響は殆ど感じられないことでしょう。



2点目は、Templateの設計の継承状態を把握しておくことです。


6.5.xや7に搭載されている、6.xのMail Templateにはいくつか存在します。


標準Mail Template(Mail6.ntf)、拡張Mail Template(Mail6ex.ntf)、DWA Mail Template(inotes6.ntf)、DJX標準Mail Template(djxmai60.ntf)、DJX DWA Mail Template(djxin6.ntf)といった物があります。


皆さんも、DWAとNotesとどちらでも使えるように、DWA Mail Template やDJX DWA Mail Templateを利用されている場合もあるのではないでしょうか?


このDWA Mail Templateというのは、標準Templateの場合は「StdR6Mail/ja」から設計を引き継ぐようにできていますし、DJX Templateの場合も、「DJXMail60」から設計を引き継ぐ設定になっています。


LocalAddressbookTrouble_1


この設計の引継ぎが指定されているTemplateはDesign Taskによって元の設計から内容を引き継ぎ更新されてしまうのです。


つまり、皆さんが、DWA Templateを使われている場合はDWA Templateを直すのではなく、元になっているTemplateを修正する必要があるということです。


あるいは、設計の継承指定をを外してしまうことでも対処は可能です。


皆さんの中には、Mail TemplateをCustomizeして使われている場合もあるかと思いますが、その場合もCustomizeされたTemplateが設計を引き継いでいないかどうかを確認頂く必要があるのです。


そうしないと、Design Taskによって引継ぎもとの設計で上書きされてしまいます。



次に、既に登録してしまったLocalのAddressbookの連絡先(Contacts)に関しては、IBMのTechnoteで紹介されているSample LotusScript Codeを使って修正することが可能ですが、このCodeはあくまでSampleであり、IBMのサポートではサポートされないことになっています。



まずは、テスト環境でこのLotusScriptで処理してみて問題のないことを確認してから流すようにしてください。


もし、ご心配なら、LotusScriptを修正して不正なContactsが登録されているかどうかだけを、Logに書き出すように修正されてもよいでしょう。


TechnoteではAgentに登録して実行するようになっていますが、勿論、Mailのボタンに仕込んだり、Formを埋め込んだMailのPostOpen Eventなどに組み込んで実行させることもできます。



上記のTemplate設計変更の場合も、このCheckのAgentの場合も、ECLに引っかからないように会社の中でECLが設定されているUserIDでSignしておくことが重要です。



また、今回のTechnoteで紹介されているTemplateの設計は日本語版向けとなっています。



AddSenderToAddressbook Agentは、以下のようにUseで日本語版のLotusScript Libraryを参照するようになっていますが、言語が異なる場合はこの部分も修正する必要があります。


  'AddSenderToAddressBook:

  Use "Common_ja-JP"


また、(NameHelper) Formの方は以下のように、Messageが日本語となっています。


  Option Public
  Option Declare
  Const CONFLICT_MESSAGE$ = "個人アドレス帳に既に登録されています。"


これらの部分は日本語独自の部分になりますので、他の言語を使われている場合は、この部分だけはオリジナルの物を残しそれ以外を置き換える必要があるのです。


日本では少ないかも知れませんが、International English(IE)版のDominoを導入して使われている場合や、IE版の環境に日本語版や他の言語をMulti-Language構成で導入されている場合もあることでしょう。


今回紹介した問題は、IE版であっても他の言語版であっても別名を使う限り現象が発生しますので、このような場合は、上記の日本語特有の部分に注意して、正しく各言語の設計要素を修正していく必要があるのです。


別名を使われていない場合は今回の問題は影響は無いのですが、念のために設計を修正されておくことをお勧めします。


この修正がTemplateに適用された状態で出てくるのはNotes/Domino 6.5.6/7.0.2になるかと思いますが、US SiteのRelease Scheduleを参照すると、2007年1月の予定になっておりますので、日本語版はそれより約1ヶ月強の遅れとなることでしょう。


そこまでは待てないと思いますので、現時点での対処としては設計を修正して対処する以外方法はありませんので、今回のTechnoteを参考に対応をお願いします。


また、Client LocalにあるMail Templateも更新しておかないと、Userが勝手に設計置換すると問題が再発しますので、この点もご注意ください。