手順を文書化して、守られているか確かめよう

あるプラットフォームから別のプラットフォームヘメールシステムを移行している最中のことでした。ひとりの女性が結婚した結果、メールシステムがダウンしたのです。

メールの流れは次のようになっていました。

1.新しくやって来たメールは新しいメールシステム経由で配送される。 2.新しいメールシステムで配送可能であれば、新しいシステムにいるユーザーにメールを配送する。配送不能であれば、メールは古いメールシステムへと送られる。 3.古いシステムにいるユーザーから古いシステムにいるユーザー宛てに送られたメールは、適切なメールボックスへと配送される。しかし、受信者がすでに新しいシステムに移行済みであれば、メールは各ユーザーのために作られた「移行(migrate)」転送アドレスを使って新しいメールシステムに自動転送される。

ここで、おかしなことが起こりました。「サリー・シングル(single、未婚)」は新しいメールシステムに移行していたため、2つのメールアドレスを持つことになりました。sally.single@mycompany.comとその転送アドレスsally.single@migrate.mycompany.comです。古いシステムにいるユーザーから彼女宛てに送られたメールはすべて、「移行」転送アドレスを使って新しいメールシステムに自動転送されます。

サリーが結婚して、名前を「サリー・シングル」から「サリー・マリッド(married、既婚)」に変えると、メールアドレスも同じように変更されました。しかし、新しいシステムにあるサリーのメールアドレスは変更されたのですが、古いシステムの「移行」転送アドレスを変更するのを忘れてしまいました。その結果、サリーにはその転送アドレスが残ってしまいました。

新しいシステム

  1. sally.married@mycompany.com
  2. sally.single@mycompany.com
  3. sally.married@migrate.mycompany.com

##古いシステム

  1. sally.married@mycompany.com
  2. sally.single@mycompany.com
  3. sally.single@migrate.mycompany.com(変更されていない移行アドレス、結婚後も残ったままになっていた)

この結果、古いメールシステムにいるユーザーからサリー宛てにメールが送られると、ループが発生してしまいました。1)メールが古いメールシステムで作られ、sally.single@mycompany.com宛てに送られます。2)古いメールシステムはサリーのアカウントをチェックして、転送先がsally.single@migrate.mycompany.comに設定されていることを確認して、メールを転送します。3)新しいメールシステムはsally.single@migrate.mycompany.comというメールアドレスを持つ人を探しますが、見つかりません。このアドレスはサリーが結婚したときに変更されたためです。4)そこで新しいメールシステムは、不明な受信者宛てのメールを古いメールシステムへ転送します。5)古いメールシステムは@migrate.mycompany.comの付いたメールをすべて転送することを知っているので、そのメールを新しいメールサーバに転送します。6)これが無限に繰り返されます。

メールがループするたびに、メールの末尾に会社の法的放棄声明が追加されていきます。法的放棄声明は100単語程度にすぎませんが、メッセージが1分間に何度もシステム間をループすると、それはどんどん大きくなっていきます。どうやら、サリーは非常に人気者だったようです。あまりに多くのメールがサリー宛てに送られたため、メールの大きさと量のせいで、とうとうメールシステムはダウンしてしまいました。

教訓:手順を文書化して、それが守られているか確かめましょう。名前変更の手順は文書化されていたのですが、実際には守られていませんでした。もしそれが守られていれば、古いメールサーバにあるサリーのユーザーアカウントは、新しい結婚後の名前を持つ移行メールアドレスに更新されていたはずです。そうすれば、この問題は避けられたでしょう。