Notes/Domino Mail転送設定での注意点 -2-
<話題の履歴>
Notes/Domino Mail転送設定での注意点 -1-
前回は、Mail自動転送の方法の概要を紹介しました。
今回は、Mail自動転送の方法として、Domino DirectoryのPerson文書で転送先Address指定を行った場合について考えて見ます。
前回紹介したように、DominoではMail転送先AddressをDomino DirectoryのPerson文書に指定することで自動的に転送させることができます。
皆さんの会社のMail Routingの環境というのは会社によって異なるでしょうが、Relay Hostを経由してDominoにMailを配信するような構成をとられている場合もあるでしょうし、DNSのMX RecordでDomino SMTPに配信されているような場合もあることでしょう。
どちらの場合であっても、DominoがMailを受けた際に、Person文書の転送先Addressの設定により、Mailは指定されたAddressに転送が行われるようになります。
この転送先Address設定ですが、非常にSecurityを気にする場合は、Domino DirectoryのPerson文書に対する編集権限はUserには与えられていないのが一般的ですので、Userが自分で直接修正することは少ないのではないかと思います。
しかし、前回述べたようなAgentでの処理やMail Ruleでの処理を行われていない場合には、この転送先Address設定をUserの申請により自動変更したりする仕組みを構築されているような場合もあるでしょうし、転送先設定をどこかのDBに行うと、AgentでDomino DirectoryのPerson文書の転送先Addressの指定を変更するといった処理をされている場合もあるかも知れません。
あるいは、Userに直接変更を行わせるような運用をされていることもあることでしょう。
では、この転送先Addressというのは、変更さえすれば即時に反映されてRouterは別のAddressに転送を始めてくれるのでしょうか?
実は、これが問題となる場合があります。
Notes/DominoはPCの能力が低い頃に作成されたSoftwareですから、様々なところでPerformanceをあげるための工夫がされています。
「Single Copy Templateの仕組」 のシリーズで紹介しているDesign Cacheの仕組みもまさにそうです。
Mailの配信やAddress参照に関しても、工夫がされており、DominoはName Lookup Cache(NLCache)という物を持ち、前回参照したAddressはこのCacheから読み込むようになっているのです。
このNLCacheはAddress指定した場合の、曖昧な名前検索に用いられていたりしますが、それだけではなく、RouterがMailを配信するAddressを決定する際にも用いられるようになっています。
RouterはDomino Directoryの($Users) Viewを参照してMailの配信を行っているわけですが、Domino DirectoryのPerson文書の転送先Addressの指定を変更すると、この($Users) ViewのMailAddressの値が変更され、これを参照して転送処理が行われるようになります。
しかし、DominoはPerformanceを考えて賢く出来ており、直接このViewを参照している訳ではありません。
まず、View Indexを保持するNIF Poolという物があり、Domino Directoryの($Users) ViewはこのNIF Poolに保持されるようになっています。
当然、NIF PoolはPerformanceを考慮していますので、仮想Memory上に展開されています。
これでも、Performanceが心配だったのかどうかは分かりませんが、NIF Poolから読み込んだAddressをNLCacheにも保持するように出来ていて、Routerなど様々な部分からNLCacheが利用されるように出来ています。
今回の転送先Address設定の変更の場合は、Person文書が変更されると、Update Taskが動作し、View Indexの更新を行い、その結果当然NIF Poolの更新も行われるわけですが、NLCacheは頻繁に変更が行われる訳ではないのです。
このNLCacheの状態は、以下のようにServer ConsoleからShow NLCache Commandで確認できます。
> Show NLCache
NLCache version 2
CacheLookups: 904
CacheHits: 545
CacheMisses: 229
CacheNoHitHits: 130
CacheResets 2
Maximum Cache Size: 16,777,216
CacheSize: 23,012 54 entries in Data Hash Table
HashSize: 981,824 15 entries in View Hash Table
CacheHitRate: 74 %
このNLCacheを利用しながらName Lookupが行われているのです。
ただ、このNLCacheは頻繁に更新したり、Viewが更新されたことを感知して自動的に更新されるのではなく、ある一定期間で更新が行われるように出来ています。
Defaultでは5分間隔でNLCacheは更新されます。
となると、Domino DirectoryのPerson文書の転送先Addressが更新されたとしても、NLCacheが更新されるのは最大5分後ということになります(Domino Directoryが膨大な場合は、View更新の時間も関係しますのでもっと時間がかかるかも知れません)。
このNLCacheの更新頻度は、以下のNotes.iniで制御することができますが、1分以内に設定すことは推奨されていません。
NLCache_Update_Suppress_Time=<Value>(1/100 Sec)
このパラメーターは1/100秒単位で指定することになっています。
このパラメーターを使って、推奨されている最低の1分(6000)に設定したとしても、1分間は設定変更がNLCacheに反映されないことがあるわけです。
例えば、Userに転送先Addressを変更することを許している場合は、もし、Userが誤って転送先Addressを設定してしまい、それが有効になると、元に戻すためには1分待たなくてはならない訳です。
つまり、即時反映ではないということに注意すべきなのです。
最大NLCache_Update_Suppress_Timeで指定された期間はNLCacheが更新されない訳ですからその間はRouterは以前の設定を使い続けるのです。
運用によっては、Userに転送先Address設定をさせる場合もありますが、このような場合にUserが間違って設定してしまったAddressを元に戻した場合にも、この時間を経過しないと変更が有効になりません。
しかし、皆さんの中には即時反映したいという要望もあるでしょう。
もし、Userが転送先Addressを変更する際にServer管理者の承認がいるということになっていれば、申請を見て、Server管理者がPerson Documentに設定を反映し、($Users) Viewの更新が行われたことを確認してから、NLCacheをResetするということもできます。
Server Consoleから、
>Show NLCache Reset
と入力することで、NLCache_Update_Suppress_Timeの設定に関係なく、NLCacheをUpdateすることが可能です。
しかし、管理者の皆さんはこんな面倒なこともしたくないという方もいらっしゃるでしょう。
その場合は、NLCacheそのものを無効化することもできます。
Notes.iniにNLCache_Disable=1を設定することで、NLCacheを利用しないようにすることができるのです。
しかし、これを設定したといっても、"即時反映"というのが保障されるものではないことは理解しておく必要があります。
Person Documentの設定が変更されて、($Users) Viewの更新が完了するまでのタイムラグというのは必ず存在するからです。
また、このNotes.iniでNLCacheを無効にした場合、Performanceの観点で好ましくないのではないかという疑問を抱かれるかも知れません。
最初に紹介したように、($Users) ViewはNIF Poolに展開されていますので、そこを読むことになりますが、これは仮想Memoryに展開されていますので、NLCacheから読み込むのに比べて大幅にPerformanceが悪くなったりするものでもありません。
多少は影響がある場合もあるでしょうが、Performanceの観点でそれほど神経質になる必要はないのではないかと思われます。
このように、Mailの転送という単純なことでも、色々と考慮すべき点はあるのです。
Notes/Dominoの仕組みを知った上で、上手な運用を行えば問題になることはありません。
Notes/Dominoに限らず、上手に運用を行うというのはどんなSoftwareでも重要なことでしょう。
Softwareの仕組みを理解して、効果を最大限に引き出すようにして使って行きたいものです。
<終わり>