月曜日 5 26, 2008

SJSMS - メールボックスの制限容量通知メールを日本語にしよう!

Sun Java System Messaging Server (以下 SJSMS) では、 ユーザのメールボックスに制限容量を設ける事が出来ます。
制限容量を設定している場合、メールボックスの容量が 制限値に近づいた際に通知メールを出すように設定したい ですよね。
SJSMS では、ドキュメントにも記載されている通り、以下の 手順にて通知メールを設定できます。
  1. 制限容量通知の有効化
    # /opt/SUNWmsgsr/sbin/configutil -o store.quotanotification -v yes
    
  2. 通知メッセージの設定
    # /opt/SUNWmsgsr/sbin/configutil -o store.quotaexceededmsg -v 'message'
    
  3. 制限容量の閾値の指定
    # /opt/SUNWmsgsr/sbin/configutil -o store.quotawarn -v 90 # パーセント
    

実は、この手順は英語メッセージの設定手順となり、日本語 メッセージを設定する為には、2. のパラメータとして store.quotaexceededmsg;lang-ja を使用する必要があります。
したがって、日本語通知メッセージを設定する為には、以下の 手順を行う必要があります。
    1. 制限容量通知の有効化
    # /opt/SUNWmsgsr/sbin/configutil -o store.quotanotification -v yes
    
    2. 通知メッセージの設定
    # /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 ヘッダの変換も SJSMS に任せた場合、一部メールクライアントで 正常に日本語を表示できない場合もあるようです。
その場合は、以下のように直接エンコードされた 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 エンコードしたものを入れました。
About

Search

Archives
« 7月 2014
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
  
       
今日