LinkStationのメールアドレスを自由に設定する

 会社で使っているアイ・オー・データNASHDL4-Gがディスクチェックのたびに4個のHDDのうち決まってひとつでエラー修正を毎回実施するようになり、これは完全に寿命がきている感じ。一度HDD故障がありまして、さらに買って4年程度でダメになりました。当初から故障が心配でしたが思っていた以上に早く壊れました。RAID 5なのでデータはまだ大丈夫ですがそのまま使っているわけにもいきませんので新しいNASを購入しました。以前、バッファローNASを購入して好印象だったので今回もバッファローで。Link StationのLS-VLシリーズで容量3TBのやつです。BUFFALO 高速モデル NAS(ネットワークHDD) 【iPhone5対応(WebAccess i)】 3TB LS-V3.0TLJ
 で、購入して設定している時に気づいたのですが、ログを知らせるメール通知機能で設定できるメールアドレスがかなり制限されています。こちらのページにあるように特にひどいのが

最後の区切り部分が2文字以上4文字以下であること。
最後の区切り部分がa-z, A-Zのみで構成されていること。

の項目です。
 うちの社内の場合、社内ネットワークのドメインActive Directoryにしたがってdomain-name.localという具合に最後の区切り部分が5文字なんですよね。これだと社内サーバーのメールアドレスが登録できません。社内ドメインじゃなくともgTLDの自由化の時代になにやってんだかの最悪の仕様です。RFC準拠とまでは言わないまでも、考えうるアドレスは通すようにしておかないと。
 メールでログが見られないのは24時間365日連続使用するNASとしては安心して使えません。上記HDL4-Gもメールのログから致命傷になる前に故障がわかったわけですし。そこで回避方法を思いつきました。どうもメールアドレスのチェックは設定ページのJavaScriptで確認しているっぽい。だから設定したいメールアドレスをパラメーターにJavaScriptを直接入力実行すればいいのではないのか。で、調べてみましたら案の定、JavaScriptでメールアドレスの入力チェックとリスト化をしていました。どうやってリストに加えているのかを見ると、static/menus/system/maintenance/system_maint_emailNotification.jsにある関数emailNotifForm_addBtnHandler(gridId, newEmailFieldId)がそれみたいです。この関数を参考にメールアドレスをリスト化するスクリプトを実行します。具体的にはInternet Explorerであらかじめメール通知機能のページを開いてメール通知を有効にしておき、Internet Explorerの開発者ツールでスクリプトのコンソールに以下のコマンドを入力します。

devGrid = Ext.getCmp('emailGrid');
jsonStore = devGrid.getStore();
myRec = Ext.data.Record.create([
		{
			name: 'email'
		}
	]);
myNewRec = new myRec({
			email: 'root@domain-name.local' // ここにメールアドレスを入力
		});
jsonStore.add(myNewRec);

で、スクリプトの実行ボタンを押すとめでたくroot@domain-name.localがアドレス一覧にリストされましたので後は普通に設定するだけ。メールの送受信も問題ありません。
 会社のマシンだったのでIEの機能で実現しましたけどFirefoxFirebugとかでも同じだと思います。
 前の機種ではできていたのに新しくなってできなくなって改悪以外の何物でもありません。今回はJavaScriptの手動実行で使えるようになりましたけど、こんなおせっかいバカ機能が増えるようでは次はバッファローの選択はないですね。
 最後に付け加えておきますけど当然、上記のように設定することはメーカーの保証外になりますから念のため。