JavaMail API は、多くのアクティビティーで、
特定の構成ファイルへのアクセスを必要とします。JavaMail および JavaBeans Activation Framework バイナリー・パッケージには、
必要な構成ファイルがすでに含まれています。ただし、JavaMail API では、ユーザーが、ユーザー固有の構成ファイルおよび
インストールごとに固有の構成ファイルを定義して、特殊な要求に応えることができます。
そのような構成ファイルを置くことができる場所は、
<user.home> と
<java.home>/lib の 2 個所です。
例えば、JavaMail API がメッセージの送信時に
mailcap という名前のファイルにアクセスする必要がある場合には、
最初に、
<user.home>/.mailcap へのアクセスが試行されます。
セキュリティー上の許可がないか、またはファイルが存在しないためにこれに失敗すると、API は、
次に、
<java.home> /lib/mailcap へのアクセスを試行します。このアクセスにも失敗した場合は、
クラスパス内の META-INF/mailcap を試行します。
そうすることで、
mail-impl.jar ファイルおよび
activation-impl.jar ファイル内に含まれている構成ファイルに
実質的に移動します。WebSphere Application Server では、
mail-impl.jar ファイルおよび
activation-impl.jar ファイル内に含まれている
汎用の JavaMail 構成ファイルが使用されるため、
<user.home> および
<java.home>/lib にメール構成ファイルが配置されることはありません。
JavaMail API が (以下の
app.policy ファイルのセグメントに示されているように) 正常に機能するように、
mail-impl.jar ファイルと
activation-impl.jar ファイルのファイル読み取り許可が
すべてのアプリケーションに認可されます。
grant codeBase "file:${application}" {
// The following are required by Java mail
permission java.io.FilePermission "${was.install.root}${/}lib${/}mail-impl.jar", "read";
permission java.io.FilePermission "${was.install.root}${/}lib${/}activation-impl.jar", "read";
};
JavaMail コードによって
<user.home> および
<java.home>/lib にある構成ファイルにアクセスしようとすると、
デフォルトではこれら 2 つの場所に対するファイル読み取り許可は与えられていないため、
AccessControlExceptions がスローされます。このアクティビティーは、JavaMail API の機能には影響しませんが、
システム・ログに多数の JavaMail 関連のセキュリティー例外報告が書き込まれ、探している重大なエラーを見落とす原因になる恐れがあります。
このような問題が生じる場合は、上記の許可ブロックに、さらに 2 つの許可を指定する行を追加することを検討してください。
これにより、すべて、またはほとんどの JavaMail 関連の重大ではないセキュリティー例外が、ログ・ファイルから除去されます。
app.policy ファイル内のアプリケーション許可ブロックは、以下のようになります。
grant codeBase "file:${application}" {
// The following are required by Java mail
permission java.io.FilePermission "${was.install.root}${/}lib${/}mail-impl.jar", "read";
permission java.io.FilePermission "${was.install.root}${/}lib${/}activation-impl.jar", "read";
java.io.FilePermission "${java.home}${/}lib${/}.mailcap", "read";
permission java.io.FilePermission "${user.home}${/}lib${/}.mailcap", "read";
};