The ASF -- Apache Software FoundationJAMES - Java Apache Mail Enterprise Server

James

ダウンロード

ドキュメント

プロジェクト

関連プロジェクト

有益な情報

日本語訳 (Translations)

オリジナル

James FAQ

このドキュメント(FAQ)は、James本体/インストール/設定/管理/運用について 、ドキュメントには記載されていない一般的な質問に対する回答をリアルタイムに提供するものです。
最終更新日:2002年5月

質問

回答
メーリングリストをセットアップするにはどうすればよいか教えてください

Jamesでは、現在(v2.0a3)、メーリングリストの基本的な機能のみを提供しています。ユーザは、subscribe及びunsubscribeが可能ですが、メッセージやサブスクリプションの調整・変更はできません。

メーリングリストを作成するには、config.xml中のname属性が"root"であるprocessor要素ブロック(訳注:<processor name="root">...</processor>部分の事です)に措いて、最後のmailetブロックの前に以下のように記述する必要があります。

<mailet match="CommandForListserv=james@localhost"
    class="AvalonListservManager">
    <repositoryName>list-james</repositoryName>
</mailet>

これにより、以下のメールアドレスに送られたコマンド用メールを読み取ります

  • james-on@localhost :メールの送信者をsubscribe(リストに追加)します
  • james-off@localhost :メールの送信者をunsubscribe(リストから削除)します

そして

<mailet match="RecipientIs=james@localhost" class="AvalonListserv">
    <membersonly> false </membersonly>
    <attachmentsallowed> true </attachmentsallowed>
    <replytolist> true </replytolist>
    <repositoryName>list-james</repositoryName>
    <subjectprefix>JamesList</subjectprefix>
</mailet>

これで、現在のサブスクライバ(購読者)に対してメールが配布されます。

上記の他、<users-store>ブロック(通常はconfig.xmlの末端の近く)にて、レポジトリを加える必要があります。データベースを利用する場合は、以下のようになります。

<repository name="list-james"
    class="org.apache.james.userrepository.ListUsersJdbcRepository"
    destinationURL="db://maildb/lists/list-james">
    <sqlFile>file://conf/sqlResources.xml</sqlFile>
</repository>

データベース利用者は、<repository>のdestinationURL属性値のdata-source(訳注:上記例では、maildb)が設定されている事を確認する必要があります。

ファイルシステムを利用する場合は、以下のようになります。

<repository name="list-james"
    class="org.apache.james.userrepository.UsersFileRepository">
    <destination URL="file://var/lists/list-james/"/>
</repository>

Jamesを再起動し、james-on@localhost へメールを送れば、subscribeされます。

データベースにおけるテーブル、あるいはファイルシステムに措けるディレクトリは自動的に作成されます。

データベース利用者は、SQLを使って(従って、SQLクエリを走らせる事の出来るアプリケーションからでも)ユーザのレポジトリを操作可能です。
回答者:Danny Angus

JamesはSpamメールに対し無防備であるように思えるのですが...

メールリレーの単純なテストでは、Jamesはリレーに対し無防備であるように見えますが、適切に設定されればそうでもありません。

なぜなら、Jamesは、SMTPを通じて送られる全てのメールを受け入れる電子メールアプリケーションプラットフォームであるからです。メールを受け取った後しかプロセスが開始されません。

つまり、JamesがSpamをいったん受け入れる事を意味しています。しかしながら、デフォルトの設定であれ(注意深く設定してればどのような形であれ)、spam防止用の多くの方法、すなわちSPAMをJamesが中継することを防ぐ方法があることがわかります。これにより、spamは永久になくなります。

また、Jamesがメールアドレスが正しいものであるかを確かめる事ができない、ということでもあります。しかし、勿論の事ですが、spammerがJamesから有効なメールアドレスを抽出する事が出来ない、と言う事でもあります。

Jamesでメッセージは送ることができるのですが、誰も受け取っていないようです。どうしたらよいですか?

Jamesをインストールした際に、DNSサーバーが正しく追加されていることを確認してください。電子メールの送信には、MXレコードという電子メールに関連したDNS情報の利用が必要となります。 config.xmlファイルを確認し、<dnsserver>タグセクションに一つ以上のDNSサーバーを追加してください。

Jamesを通じてメッセージを送る事ができるのですが、誰も私にメッセージを送れないようです。どうしたらよいですか?

以下の2つのうちの1つを行う必要があります:

  1. Jamesが稼動しているコンピュータを指し示すMXレコード用に、貴方の利用しているドメイン名のDNSエントリを書き換えてください。MXレコードがIPアドレスを指すことはできません。正しいCNAMEレコードあるいはAレコードにMXレコードが指し示されるようにして下さい。そうすれば、結果的にIPアドレスにマッピングされることになりますので。
  2. 代わりに、IPアドレス付きの電子メールアドレスを公表してみてください(勿論、周りは変な電子メールアドレスだと思うでしょうが)。例えば、hello@[192.168.0.1] というのは、有効な電子メールアドレスです。この場合、IPアドレスを[]で囲む必要があります。
回答者:Serge Knystautas

Jamesが配信しようとしているメッセージを修整したいのですが、どこを見ればよいですか?

先ず始めに、ログディレクトリにあるJames.Mailet.log ファイルの中身を見てください。"RemoteDelivery"というテキストが含まれるエントリを次に見てください。Jamesが配信しようとしているメールのハイレベルのデバッグ情報がそこにはある事でしょう。

もしソースコードを調べたければ、RemoteDelivery mailet (のソースファイル)をご覧下さい。貴方がお使いのレポジトリタイプ(file, db など)に応じたレポジトリのソースコードをよく調べたいとも思うかもしれませんね。
回答者:Serge Knystautas

IMAPへの対応はどうなっていますか?

残念ながら、IMAP対応はまだ動作確認されていません。CVSでの計画はあるのですが、IMAPプロトコルは他のメールプロトコルに比べて、プロトコルコマンド及びサーバー設定の点からも非常に複雑です。この実装に興味あれば、大変嬉しいです。 (個人的には、古いバージョンのネットスケープメールサーバーに非常に挫折感を感じています)
回答者:Serge Knystautas

バーチャルホストへの対応はどうなっていますか?

バーチャルホスト対応は、開発者達が未だ直面している問題です。事の難しさは、ユーザがどのドメイン名を使うのかを示すコマンドが無い為、POP3がバーチャルホスト対応していない事にあります。これは、例えば'user1@domaina.com' が'domaina.user1'を得る、と言ったように、何かしらの”マッピング”/”置き換え”が必要となるということです。これにより、サーバが一つのユーザ名領域を確保する事になります。私達はいくつかの良い提唱がなされている事を知っていますが、次に掲げる問題をきちんと解決する理想的な方法が無いように思われるのです。

それにも増して、Jamesはバーチャルホスト対応の為にMailetプロセスの改良が必要です。Mailet API には Mail.getUser() メソッドがありますが、ローカルのユーザ名領域であるか否かの明確な判断材料を提供するには至っておりません。現在まで、Mailetプロセサにこの置き換えを伝える最善の方法が未だはっきりしていません。似たように、ドメイン名を基準にした異なるMailetプロセサをサポートするのが良いかもしれませんが、HostIs/ForwardToの組み合わせに多少制限が加わる事となるでしょう。

バーチャルホスト対応は、非常に切望されている機能の一つですから、近々解決されることを望んでいます。
回答者:Serge Knystautas

新しく作成したclassファイルやjarファイルはどこに入れればよいですか?

私達James開発者は、ClassLoading(クラスファイルの読み込み等)に関し、Avalonに大いに依存しています。しかし、ここで、いくつかのTIPSを挙げておきます。

  • jarファイルをjames/libディレクトリに入れ、それらのjarファイル名をrun.batあるいは run.shの中のclasspathに入れてください。
  • 自分で作成したMailetやMatcherは、james.bar (jarファイルやwarファイルと同じようにzip圧縮形式です)に入れる必要があります。
将来的には、jamesディレクトリの中にMailetがロードされる特定のlibサブディレクトリあるいはclassesサブディレクトリを置くことによりMailetのリロードをサポートする方向で考えていますが、現段階ではとりあえず上記が有効なTIPSです。
回答者:Serge Knystautas

どのように、新しいバージョンのJAMESにアップグレードすればよいでしょうか?

  1. 以前のJAMESディレクトリをjames.oldという名前に変更します
  2. phoenix を立ち上げます。そうすれば、james.sar がデプロイされます。
  3. config.xmlを、james.old から、デプロイされた新しいjames/confディレクトリにコピーします。
  4. var ディレクトリを以前のvarディレクトリから置き換えます。これにより、ユーザアカウント、インボックス、スプール、など全てがオーバーライドされます。
  5. Jamesを再起動します。
回答者:Daniel Herlemont

NT/2k/XP サービスでJAMESを動かすには?

Alexandria を使う事で、JAMESをNT/2k/XPにセットアップ・実行可能です。

InstallJamesNTService.bat という名前の.batファイルを作成いたしました。以下のようになっています(見て分かる通り、Alexandria の tomcat.bat ファイルをテンプレート用に使いました):


  @echo off
  echo --------
  echo Usage:   %0 jdk_home james_home (classic/hotspot/server)
  echo NOTE:    You MAY NOT use spaces in the path names.
  echo          JDK 1.3 does not come with hotpot server by default, you must
  echo          install this seperately if you wish to use it.
  echo Example: %0 c:\progra~1\jdk c:\progra~1\james classic
  echo --------

  if "%1" == "" goto eof
  if "%2" == "" goto eof
  if "%3" == "" goto eof

  copy JavaService.exe %2\bin\James.exe > nul
  %2\bin\James.exe -install JamesMailServer
  %1\jre\bin\%3\jvm.dll -Djava.ext.dirs=%2\lib
 -Djava.class.path=%CLASSPATH%;%2\bin\phoenix-loader.jar;%2\bin\phoenix-engine.jar
 -start org.apache.avalon.phoenix.launcher.Main -out %2\logs\stdout.log
 -err %2\logs\stderr.log

  goto eof

  :eof
  

また、UnistallJamesNTServiceという名前の別の .bat ファイルを作成しました。以下の1行が含まれています:

  James -uninstall JamesMailServer
  

上記2つの.batファイルと、JavaService.exe ( http://www.alexandriasc.com/software/JavaService/index.html のダウンロードリンクを参照下さい) とをコピーし、[james]\bin フォルダに置いてください。それで、実行する事で、JamesMailserverをNTサービス化可能になりました!
Steve Belt氏による、http://www.mail-archive.com/james-user@jakarta.apache.org/msg01389.htmlから参照しました。

何故、MimeMessageの変更を行ってもMailetに反映されていないのでしょうか?

JavaMail の文書をもう一度眺めてみて下さい... このようにはデザインしていなかったと思うのですが、API毎に、 MimeMessage.setContent(blah)メソッドを呼び出す際、変更を適用するために saveChanges()メソッドを呼び出さなければなりません。 Jamesは、自動的にこのメソッドを呼び出すので、貴方が呼び出す必要はないのですが、 ある条件下ではsaveChanges()メソッドを呼び出さなければなりません。
回答者:Serge Knystautas

Jamesにどのように投稿する事が出来ますか?

こちらにある"Contributors How To"をお読み下さい。
回答者:Danny Angus


Copyright © 1999-2007, Apache Software Foundation
Translated into Japanese by Tetsuya Kitahata, powered by Terra-International, Inc.
Original English Page would be found from HERE     --    ApacheNews    ASF プロジェクト一覧
Terra-International, Inc. -- テラ・インターナショナル
Special Thanks -- 【お問い合わせ/テキスト広告】