人気ブログランキング | 話題のタグを見る

--------------------
◆ 携帯にメールが1500通以上届いたんですよ

--------------------

無限ループは怖い。
プログラミングを嗜んだことのある人間なら、誰しも一度はこのバグに陥ったことがあるのではないだろうか。
「○○が終わるまで処理を繰り返し行い続ける」というルーチンにおいて、そのループの終了条件を間違ってしまったために、いつまでも処理が終わらず無限ループとなってしまうのである。

ローカルマシン上で動かなくなっている分には、幾らでも対処できるし、それほど被害も無い。
OSにもよるが、Alt + F4 やら Ctrl + C やら リンゴ + Option + esc あたりを押せば止まったりするし、それでも駄目なら直接プロセスを殺したりOSごと再起動すればいいだけだ。


だが。

当然ながら個人のパソコン以外だと、そうもいかなくなる。
今、バイトでWebプログラミングの手伝いをさせて貰っているのだが、携帯メール周りのテスト実行中に事件は起きた。

やはり、無限ループは怖い。
幸いサーバはトラブルに強いUNIXマシンであったため、コンピュータ自体が動かなくなり営業に支障が出てしまうという最悪の事態だけは免れたものの、ループブロックの中でとある処理を行っていたために笑い話のようなことが起こってしまうことになったのである。

果たして、そのループ中に行われていたこととは!?

答え:sendmail

呼んで字の如く、メール(mail)を送信(send)するコマンドである。


周知の通り、人間とは比較にならない速度で定型の仕事を行う性質を持つ。
かつ、ちゃんと指定されなければ、どんなにおかしいことでも「正常に」実行する。

つまりメール送信コマンドを何千回と行ったのだ。

慌ててプログラムを強制終了したが、時既に遅し。
携帯にメールが1500通以上届くことになる。


一度の通信で全部来たわけではなかったが、330通、500通、250通……といった感じで、多少の間を開けて大量に受信する。
携帯電話でメールチェックを行うと、「メールセンターに問い合わせています」というような類のメッセージが流れ通信状態になると思うが、この画面が10から20分続くのである。
500通を超えたあたりで、流石に携帯電話も力尽きたのかパワーオフになってしまった。(これは単に充電池が足りなかっただけかもしれない)

これは実にマズい。
急いでi-mode通信を遮断、(固定電話)でDoCoMoのサポートセンターにコールし、事情を説明する。

サポセンの女性 「i-Menuからメール設定にアクセスし、送信アドレスを受信拒否してください。」

と言われるものの、効果ゼロ。
おそらく受信拒否設定は、届いたメールをメールボックスに保存する際に弾くだけなのだろう。
一度受信してしまったメールに対して、ユーザ側から対処することは出来ない模様。

結局、電話越しに相談した結果、「頑張って全部受信する」か「サーバのメール保持期限が過ぎるまで待つ」の2択しかないということに。
ちなみにメールの保持期限は約1ヶ月。
その間、全くメールが使えないとなると現実的ではない。
仕方なく前者を採用することにした。


と、これが事件の顛末である。
損失額はパケット料金にしておよそ5000円くらいか。
たった数バイトのプログラムの記述ミスで、これだけの額が吹っ飛んでしまった計算になる。
あとは大量送信したことにより、DoCoMo側からバイト先のサーバに対して何らかのペナルティが与えられたりしないかどうかだけが気がかりだ。
R.F.D. | by odprfd | 2005-11-23 11:48 | 情報技術

--------------------

<< OD TOOL for TRP... | OD TOOL for TRP... >>