2008年 5月 26日 月曜日
やっぱり Sun がスキ!
SJSMS - メールボックスの制限容量通知メールを日本語にしよう!
Sun Java System Messaging Server (以下 SJSMS) では、 ユーザのメールボックスに制限容量を設ける事が出来ます。
制限容量を設定している場合、メールボックスの容量が 制限値に近づいた際に通知メールを出すように設定したい ですよね。
SJSMS では、ドキュメントにも記載されている通り、以下の 手順にて通知メールを設定できます。
- 制限容量通知の有効化
# /opt/SUNWmsgsr/sbin/configutil -o store.quotanotification -v yes
- 通知メッセージの設定
# /opt/SUNWmsgsr/sbin/configutil -o store.quotaexceededmsg -v 'message'
- 制限容量の閾値の指定
# /opt/SUNWmsgsr/sbin/configutil -o store.quotawarn -v 90 # パーセント
実は、この手順は英語メッセージの設定手順となり、日本語 メッセージを設定する為には、2. のパラメータとして store.quotaexceededmsg;lang-ja を使用する必要があります。
したがって、日本語通知メッセージを設定する為には、以下の 手順を行う必要があります。
-
1. 制限容量通知の有効化
# /opt/SUNWmsgsr/sbin/configutil -o store.quotanotification -v yes2. 通知メッセージの設定
# /opt/SUNWmsgsr/sbin/configutil -o store.quotaexceededmsg;lang-ja -v 'message'3. 制限容量の閾値の指定
# /opt/SUNWmsgsr/sbin/configutil -o store.quotawarn -v 90 # パーセント
# /opt/SUNWmsgsr/sbin/configutil -p store.quota\* store.quotaenforcement = on store.quotaexceededmsginterval = 7 store.quotagraceperiod = 120 store.quotanotification = off store.quotawarn = 90 # /opt/SUNWmsgsr/sbin/configutil -o store.quotanotification -v on OK SET # /opt/SUNWmsgsr/sbin/configutil -o store.quotaexceededmsg\;lang-ja -v \ "From: メール管理者 <Postmaster@domain.co.jp>\$Subject: \ 制限容量通知\$\$[ID]さん\$\$あなたのメールボックスのサイズは\ 割り当てられた容量の [PERCENT] パーセントに達しています。\ \$\$Disk 使用量: [DISKUSAGE]\$メッセージ数: [NUMMSG]\$容量\ 制限値:[QUOTA]\$メッセージ数制限値: [MSGQUOTA]\$\$---\$メール\ サーバ管理者" OK SET # /opt/SUNWmsgsr/sbin/configutil -o store.quotawarn -v 1 OK SET # iminitquota -a admin: ok hoge: updated test1: updatedここでお気づきかと思いますが、 'message' の部分は基本的に RFC822 のメール形式に従っていますので、メールヘッダの部分 も記載可能です。
From を指定しないと、デフォルトで以下の From が挿入されます。
From: Mail Administrator <postmaster@domain.co.jp>From を指定して、差出人に日本語を含める事で、一般 ユーザの驚き(そして、「見なかった事」)を軽減してあげる事が できると思います。
今回の例の様に、日本語メッセージを設定することで、以下の様に SJSMS 内部では UTF-8 に変換された日本語メッセージが格納されます。 そして、実際にメールが送付される際に、ISO-2022-JP のメールに変換されて送付されます。
# auto_ef /opt/SUNWmsgsr/config/msg.conf UTF-8 # iconv -f UTF-8 -t EUC-JP /opt/SUNWmsgsr/config/msg.conf | grep quotaexceededmsg\;lang-ja store.quotaexceededmsg;lang-ja = "From: メール管理者 <Postmaster@domain.co.jp>$Subject: 制限容量通知$$[ID]さん$$あなたのメールボックスのサイズは割り当てられた容量の [PERCENT] パーセントに達しています。$$Disk 使用量: [DISKUSAGE]$メッセージ数: [NUMMSG]$容量制限値:[QUOTA]$メッセージ数制限値: [MSGQUOTA]$$---$メールサーバ管理者"ですので、UTF-8 にしか存在しない文字を使ってしまうと、ISO-2022-JP に変換されず、UTF-8 のまま送信されてしまいますので、ご注意ください。
- 補足
その場合は、以下のように直接エンコードされた From ヘッダを与える 事で、日本語表示をしてくれます。
# cat /var/tmp/From-encode.pl #!/usr/bin/perl use MIME::Base64; $headertoencode = <STDIN>; print encode_base64($headertoencode); # printf "メール管理者" | euctojis | perl /var/tmp/From-encode.pl GyRCJWEhPCVrNElNfTxUGyhK # /opt/SUNWmsgsr/sbin/configutil -o store.quotaexceededmsg\;lang-ja -v \ "From: =?ISO-2022-JP?B?GyRCJWEhPCVrNElNfTxUGyhK?= <Postmaster@domain.co.jp>\ \$Subject: 制限容量通知\$\$[ID]さん\$\$あなたのメールボックスのサイズは\ 割り当てられた容量の [PERCENT] パーセントに達しています。\ \$\$Disk 使用量: [DISKUSAGE]\$メッセージ数: [NUMMSG]\$容量\ 制限値:[QUOTA]\$メッセージ数制限値: [MSGQUOTA]\$\$---\$メール\ サーバ管理者"
RFC: 2047 によると encoded-word は以下のように書きます。
"=?" charset "?" encoding "?" encoded-text "?="したがって、上記の例では、"=?ISO-2022-JP?B?" と "?=" の間に、JIS コードの 日本語を、BASE64 エンコードしたものを入れました。
Posted at 04:09午後 5 26, 2008 by Masayuki Imai in Sun | 投稿されたコメント[0]
投稿されたコメント: