IMG_3591

オブジェクトを削除してメールアドレスを引き継ぐ場合、オフラインアドレス帳とLegacyExchangeDNに注意

先日とある相談を受けたのですが、不通に操作するとしばらくメールが飛ばなくなってしまうケースだったので該当するケースが多いと思い、書き残しておきます。

やりたかったことは以下だそうです。

  • これまでAD上に連絡先が存在し、あるアドレスから外部のアドレスにメールを転送していた
    • addressA@externaldomain.sample
  • 上記の連絡先の転送先だったユーザーが組織内にメールボックス、メールアドレスを持つようになった。externaldomain.sampleは組織内のドメインになった。
    • newaddressA@internaldomain.sample
  • 上記の新メールボックスに、addressA@externaldomain.sampleのメールアドレスを持たせたい。

今まで外部に連絡先を使って転送していたが、そのユーザーが組織内部に存在するようになったので…というのは色々なケースでよくあることだとおもいます。この時に不通に操作すると以下の様になります。

  • 連絡先オブジェクトを削除する
  • 新メールボックスにセカンダリアドレスとして旧アドレスを付与する
    • SMTP:newaddressA@internaldomain.sample
    • smtp:addressA@externaldomain.sample
たしかに上記の操作で問題無いケースもあるのですが、たいていの場合、すべてはうまく行かず、以下のような事象が発生します。
  1. 正常にメールが送信できるユーザーもいる(が、一部にとどまる)
  2. Outlookのキャッシュから送信するとメッセージが届かない。
  3. アドレス帳から宛先を選択してもメッセージが届かない。(届く人もいる。届かない人もいる。選ぶアドレス帳によっても結果が変化する。)
  4. 過去の送信済みメールを「全員に返信」した場合に該当のメールボックスにメッセージが届かない。

そして、上記の2,3の事象は2,3日で収まることになります。

これらは消された連絡先オブジェクトを指し示すものが以下の箇所にあることが原因です。

  • Outlookの宛先キャッシュ
  • オフラインアドレス帳
  • 過去のメールアイテム

これらに格納されているのはオブジェクトのLegacyExchangeDNという値です。どれも、連絡先オブジェクトが存在している時にそのLegacyExchangeDNを覚えていますので、オブジェクトがなくなると紐づくものがなくなってしまい、メールが送れなくなります。

Outlookの宛先キャッシュはNDRを受け取るとクリアされるのでしばらくすれば勝手に無効となったキャッシュは消えていきます。Outlook上で宛先候補が表示されている時に明示的にDeleteキーを使って削除することもできます。

そうすると次はアドレスを手動で入力するとアドレス帳の中のデータと紐付くのですが…ここが曲者で、オンラインモードのクライアントはほぼリアルタイムにGCに問い合わせ、最新の情報を取得してくれるので問題は起きないのですが、キャッシュモードのクライアントは規定の状態でオフラインアドレス帳を見に行きます。オフラインアドレス帳はサーバー上で1日に1回更新、その後クライアントのダウンロードもまた1日程度かかるので運が悪いと丸2日程度更新されないことになります。この間すでに存在していないオブジェクトに対してメールを送り続けてしまうわけです。

オフラインアドレス帳は規定の状態ではグローバルアドレス一覧のみOutlookクライアント上に保持しており、名前解決に使われるのでグローバルアドレス帳から選択したり、宛先にアドレスを入力してAlt+Kで名前解決をすると無効なものが選ばれてしまいます。一方例えば「すべてのユーザー」などは規定の状態ではオフラインアドレス帳に含まれていなので「すべてのユーザー」からユーザーを選択するときちんとメールが送信できることになります。オンラインモードであればグローバルアドレス一覧から選んでも問題がないことと相まって、なかなか気が付きにくいポイントです。

さらに過去のメールにはメールアドレスではなく、オブジェクトのLegacyExchangeDNの値が保持されており、返信するとそれをそのまま使おうとしてしまうので問題が発生します。

 

これらの問題を全部未然に防ぐには結局無効になってしまったLegacyExchangeDNを、新しいメールボックスにひもづければ良いことになります。これはメールアドレスとしてX500アドレスを付与し、その値として問題のLegacyExchangeDNの値を入力すれば良いことになります。

LegacyExchangeDNとX500アドレス周りを理解するとかなりExchangeシステム周りが見えるようになってきます。例えばExchange Onlineへの移行ツールなども、全く同じようにX500アドレスを付与してこのあたりの問題を回避しています。気にしてみてみると面白いと思います。私が確認する限り、Exchange Server 2000移行はすべてこの仕組になっています。(5.5以前は確認していません。)

コメントを残す

メールアドレスが公開されることはありません。