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

James

ダウンロード

ドキュメント

プロジェクト

関連プロジェクト

有益な情報

日本語訳 (Translations)

オリジナル

Configuration

このドキュメントは、James 2.0 用の、JAMES.conf.xml ファイルについて説明します。
JAMES 2.0 では、「date-stamped」 バージョンの Avalon を、2001年9月から利用しています。
lib ディレクトリには、「Avalon」用ライブラリに由来する「date-stamped」のjarファイルが含まれています。

James Server Configuration
James Configuration

Jamesの電子メールスプール及び認証設定をコントロールする為に、以下のXMLタグ要素が、利用されます。

<タグ名> デフォルト値 意味
postmaster Postmaster@localhost エラーの受け取りメールアドレスであり、問題が発生したときに電子メールユーザがメールを送信するアドレスです。受信メッセージを受け取る事の可能な電子メールアドレスに、この値を変更するべきでしょう。
helloName attribute autodetect=TRUE and value of 'myMailServer' SMTP及びPOP3プロトコル規定の「greeting」の際に利用される、Jamesが判断する名前です。"autodetect"がTRUEであれば、Jamesは自動的に名前判別を試み、失敗すれば'localhost' を使用します。"autodetect"がTRUEではなければ、Jamesは 指定された(value値で指定された)名前、あるいは(もしnoneが指定されていれば)'localhost' を使います。詳しくは、jamesinfo.log ファイルの中にある "[...] Local host is: [servername] and [...] Hello Name is: [machine name]" といった行をご覧下さい。
servernames/servername attribute autodetect=TRUE and last value of 'localhost' Jamesがlocalと判断するホスト名です。 [ユーザ名]@[サーバ名] で指定された全てのユーザが、localであるとみなされます。"autodetect"がTRUEであれば、Jamesは自動的に名前判別を試み、その全ての名前を利用します。詳しくは、jamesinfo.log ファイルの中にある "[...] Handling mail for:: [domain/host]" といった行をご覧下さい。
spoolRepository file://var/mail/spool/ 送信メッセージが処理される前に、一旦格納されるローカルパス名を指定します。
inboxRepository file://var/mail/localinbox/ ローカルユーザのメールボックスのルートディレクトリです。個々のユーザのパーソナルメールボックスのフォルダは、 [inboxRepository]/[ユーザ名] になります。
spoolmanagerthreads 5 スプール内のメールを処理する為に利用されるCPUプロセスのスレッド数です。
SMTP Server Configuration

以下のXMLタグ要素は、SMTP プロトコルのリスナーに影響します。(メール送信に利用されます)

<タグ名> デフォルト値 意味
port 25 SMTPのリスニングポート番号です。
bind N.A. このサービス(SMTP)にバインドさせたいIPアドレスを指定します。
smtphandler N.A. SMTPHandler設定の全ての親タグです。
connectiontimeout 120000 開いているコネクションのうち、何もデータを受け取らない時に、コネクションを自動的に閉じる時間をミリ秒単位で指定します。
POP3 Server Configuration

以下のXMLタグ要素は、POP3 プロトコルのリスナーに影響します。

<タグ名> デフォルト値 意味
port 110 POP3のリスニングポート番号です。
bind N.A. このサービス(POP3)にバインドさせたいIPアドレスを指定します。
useTLS false このリスニングポートに、TLS (SSL) を利用するかどうかを指定します。
pop3handler N.A. POP3Handler設定の全ての親タグです。
connectiontimeout 120000 開いているコネクションのうち、何もデータを受け取らない時に、コネクションを自動的に閉じる時間をミリ秒単位で指定します。
Users Manager Configuration

以下のXMLタグ要素は、ローカルユーザのリストの設定に影響します。

<タグ名> デフォルト値 意味
repository file://var/users/ ローカルのユーザアカウント情報を保持する為の、ローカルファイルのパスを指定します。
Remote Manager Configuration

以下のXMLタグ要素は、遠隔管理サービス(TELNETで入る事の可能なユーザマネージャユーティリティ)に影響します。

<タグ名> デフォルト値 意味
port 4555 遠隔管理用サービスのリスナーポート番号を指定します。
bind N.A. このサービス(遠隔管理サービス)にバインドさせたいIPアドレスを指定します。
useTLS false このリスニングポートに、TLS (SSL) を利用するかどうかを指定します。
administrator_accounts N.A. <account>タグの親タグです。
account login="root" password="root" "root"アカウント(JAMESの管理者アカウント)です。
connectiontimeout 120000 開いているコネクションのうち、何もデータを受け取らない時に、コネクションを自動的に閉じる時間をミリ秒単位で指定します。
Transport Configuration

以下のXMLタグ要素は、SMTPのリモートデリバリ(ローカルサーバ内のユーザ以外のユーザに対するメッセージ送信)、特に、DNS Lookup 機能に、影響します。

<タグ名> デフォルト値 意味
dnsServer/servers/server N.A. 外部アドレスを解決するためのDNSサーバーのリストです。
authoritative false "authoritative"(non-cached) な、DNS レコードを常に要求するか否かを指定します。 意味がわからなければ、この値は常に"false"とすべきでしょう。(訳注:DNSレコードは、一般的に一日程で更新されるものですが、電子メールのような逼迫したものである場合、一日おきの更新であっても「手遅れ」の場合があります。そのようなときに使うパラメタです)
repository file://var/mail/delayed/ テンポラリの、レポジトリ用パス名で、"TMP_REPOSITORY"と共有されます。RemoteDelivery Mailet が後の配信メールを格納するために使用されます。 (Note: エレガントなやり方とはとても言えないので、恐らくすぐに変更があることでしょう)
mailets rootpath="org.apache.james.transport.mailets." 全てのMailet Configuration の親ノード(タグ)です。"rootpath" により、mailetのレポジトリの位置が指定されます。 (Note: 1つ以上のレポジトリが入る必要があります)
The Mailet processor pipeline

これは、James のサイトマップです。どのように、各々の受信メールが内部で処理されるかを規定します。受信メールは、パイプ関連の最初のmailetによる処理から始まります。各々のステップは、<mailet>タグと、その属性によって、以下のように表現されます:
<mailet match="[matchClass]=[matchParameters]" class="[mailetClass]"> Matcher クラスは、各々のメールを2つのコレクションに分類します:一つは、受信者が「何かの条件にマッチする」というもの、もう一つは、「何かの条件にマッチしない」というものです。受信者リストを除く全てのメールヘッダ情報は複製されるので、「何かの条件にマッチする」「何かの条件にマッチしない」は全く意味が一緒になります(繰り返しますが、受信者リストを除きます)。マッチした受信者リスト及びメールは、特定のMailetに処理が移されます。マッチしないメール(何の処理もされない)及びマッチするメール(処理されたメール)の両方の処理の後、プロセッサは次のステップに移ります。Mailetの中には、メール(の処理)を使いきり、それ以降処理をストップするものもあります。例えば、"Null" Mailetは、RemoteDeliveryが配信終了以降の処理を必要としないのと同じように、単に受信メールを使いきります。

Matchers

Matcherインターフェースは、どのようにmatchクラスが動作するかを規定します。受信メッセージをVector型に二つに分類します:「何かの条件にマッチする」というもの、もう一つは、「何かの条件にマッチしない」 現在実装されているmatcherは、以下のとおりです:

クラス名 パラメタ 動作
All なし 全てにマッチします match="All"
HasAttachment なし 添付ファイルがある場合全てにマッチします。 (content-typeフィールドが multipart/mixedである場合) match="All"
HostIs コンマ区切りでリスト化されたホスト名 指定されたホスト名に一つでも合う場合にマッチします。 match="HostIs=myHost.mydom.org,yourHost"
HostIsLocal なし localhostとして設定されているホストからのものにマッチします (<servername>タグを参照して下さい)。 match="HostIsLocal"
InSpammerBlacklist ブラックリストのDNSゾーン ブラックリストに入っているIPアドレスから受信された全てにマッチします。 match="InSpammerBlacklist=blackholes.mail-abuse.org"
IsSingleRecipient なし 一つの送信アドレスしか指定されていないものにマッチします。 match="IsSingleRecipient"
NESSpamCheck なし SPAMメールを特定する一定規則に合致しているものにマッチします。 match="NESSpamCheck"
RecipientIs コンマ区切りの受信者リスト 指定条件に記述された全てにマッチします。 match="RecipientIs=root@localhost,admin@localhost"
RecipientIsLocal なし ユーザマネージャにより、ローカルアカウントであると認識される全てのホストからのメッセージにマッチします。 (HostIsLocalを参照下さい) match="RecipientIsLocal"
RelayLimit 最大ホップ数 SMTPホップが指定数以上のメールにマッチします。所謂SMTPデリバリにおける迷子メールを阻止する為に重要です。 match="RelayLimit=30"
RemoteAddrInNetwork コンマ区切りのネットワークアドレスリスト コンマ区切りのネットワークアドレスリストに合致する全てのIPアドレスからのメッセージにマッチします。ワイルドカード(*)も有効です。例:192.168.0.* match="RemoteAddrInNetwork=127.0.0.1,192.168.*"
RemoteAddrNotInNetwork コンマ区切りのネットワークアドレスリスト コンマ区切りのネットワークアドレスリストに合致しない全てのIPアドレスからのメッセージにマッチします。ワイルドカード(*)も有効です。例:192.168.0.* match="RemoteAddrNotInNetwork=127.0.0.1,192.168.*"
SenderInFakeDomain なし 電子メールアドレスの一部のドメイン名が適切ではないものにマッチします。DNSの、Aレコード、CNAMEレコード、MXレコードを参照します。 match="SenderInFakeDomain"
SenderIs コンマ区切りのアドレスリスト 送信者アドレスが指定条件に合う場合にマッチします。さもなくば、何にもマッチしません。 match="SenderIs=badBay@badhost"
SizeGreaterThan バイト数:'k'や'm'のサフィックスもサポートされる メールのサイズが指定されたバイト数、キロバイト数、メガバイト数、よりも大きい場合にマッチします。 match="SizeGreaterThan=1m"
SubjectIs コンマ区切りの題名リスト メールの題名が指定された文字列と一致するメールにマッチします。さもなくば、何にもマッチしません。 match="SubjectIs=REMOVE"
SubjectStartsWith コンマ区切りの「題名」リスト メールの題名が指定された文字列で始まるメールにマッチします。さもなくば、何にもマッチしません。 match="SubjectStartsWith: [ADV]"
UserIs コンマ区切りのユーザアカウントリスト (ホスト名を無視した)受信者のアカウントリストにマッチします。 match="UserIs=root,admin"

例:
- <mailet match="RecipientIsLocal" class="LocalDelivery">

- <mailet match="UserIs=root" class="Forward">

- <mailet match="SenderIs=badBoy@myhost,badGirl@yourhost" class="Null">

Mailet

Mailet は、メッセージを処理する為のJava Classです。Mailetを適切に使用する事で、電子メールベースのアプリケーションを作成する事が可能となります。単純なMailetによっても、メールのフォワードやメーリングリスト、”不在通知”、メールログ取得などといった機能を提供します。これらのMailetのように、比較的単純に様々な機能を有した自分オリジナルのMailetを作成/頒布することが可能です。
ここでは、JamesにバンドルされたMailetと共に、それらの設定について紹介します:

Null
対象となる全てのメールに対し、何もしません。他の設定は不要です。
<mailet match="SenderIs=badBoy@badhost" class="Null"> </mailet>
debug.Identity
対象となる全てのメールを、そのままにします。デバッグ用のMailetです(まだ実用的ではありません)。他の設定は不要です。
<mailet match="All" class="Identity"> </mailet>
Forward
受信者リストをここで指定された受信者リストに置き換えます。(フォワード機能)
<mailet match="RecipientIs=root@localhost" class="Forward">

<forwardto> green@blue.org </forwardto> <forwardto> red@yellow.com </forwardto>
</mailet>
ToProcessor
新しいパイププロセッサに、受信メールを送ります。rooterror は特別な意味を持つプロセッサ名です。
<mailet match="RecipientIsLocal" class="ToProcessor">
<processor> localdelivery </processor>
</mailet>
ServerTime
送信者に対し、受信時間のみを記述した短いメッセージを送信します。他の設定は不要です。
<mailet match="RecipientIs=time@localhost" class="ServerTime">
</mailet>
ToRepository
指定されたMailRepositoryにメールを保存します。メールログを取る場合などに有効です。passThroughパラメタがfalseに設定されていれば、そのメールは消費されます(訳注:それ以降のプロセス/パイプには届かない)が、もしtrueであれば、(訳注:他の)パイプ処理にダイレクトに戻ります。
<mailet match="RecipientIs=root@localhost" class="ToRepository">

<repositoryPath> file://var/mail/logAdmin </repositoryPath>

<passThrough> true </passThrough> (default false)
</mailet>
LocalDelivery
ローカルのinboxにメールを格納します。各々のユーザにつき一つのフォルダになります。
<mailet match="RecipientIsLocal" class="LocalDelivery">
</mailet>
RemoteDelivery
リモートサーバに、メールをリレーします。"delayTime"は、最初に失敗した際に、Mailetが再び送信するまで待機するミリ秒単位の時間の事です。"maxRetries"は、送信者にメールを返すまで再トライする回数です。
<mailet match="RecipientIsLocal" class="RemoteDelivery">

<delayTime> 21600000 </delayTime>

<maxRetries> 5 </maxRetries>

</mailet>
Redirect
リダイレクトサービス等を実装/設定可能なMailetです。
このMailetは、オリジナルのメッセージを「そのまま/添付形式/追加形式/完全に無視した形」のいずれかで、フォワードや通知を行うlistservを作り出す事が可能です。
以下に記述される設定によって、この機能が組み込まれます。

しかしながら、リダイレクトを扱うMailetをシンプルにするために、このクラスは容易にサブクラス化されるよう設計されています。クラスの拡張、1つあるいはそれ以上のメソッドをオーバーライドすることで、メールの作者が主要な部分以外の事柄につき一々宛名書きする必要の無い新しい機能を追加することができます(訳注:本文に、○○様を入れる場合などを想定してください。以下の<static>が参考となるでしょう)。詳細は、JavaDocをご覧下さい。

設定用パラメタは、以下のとおりです:

パラメタ 詳細
<recipients> コンマ区切りの、受信者電子メールアドレスリストです。
指定されなければ、<to>が使用されます。<to>パラメタが指定されていない場合のみ、電子メールの「To:」ヘッダフィールドにここで指定されたリストが記述されます。
<to> コンマ区切りの、受信者電子メールアドレスで、電子メールの「To:」ヘッダフィールドに現れます。もし<recipient>リストにある場合、このアドレスのみにメールが送られます。
このパラメタが無い場合、<recipients>リストが使用されます。
<sender> 電子メールの「From:」ヘッダフィールドに現れる単一のメールアドレスです。
"sender" あるいは "postmaster"という定型文字列を入れる事も出来ます。
<message> 電子メールの本文(Body)となるテキストメッセージです。省略可能です。
<inline>

以下の一つが指定されます:

  • unaltered :オリジナルメッセージは、forward/aliasing用の新規メッセージとみなされます。
  • heads :オリジナルメッセージのヘッダ情報のみが新規メッセージに追加されます。
  • body :オリジナルメッセージの本文(Body)のみが新規メッセージに追加されます。
  • all :ヘッダ情報および本文(Body)が追加されます。
  • none :ヘッダ情報および本文(Body)の両方共に追加されません。
<attachment>

以下の一つが指定されます:

  • heads :オリジナルメッセージのヘッダ情報がテキストの添付ファイルとなります。
  • body :オリジナルメッセージの本文(body)がテキストの添付ファイルとなります。
  • all :オリジナルメッセージのヘッダ情報及び本文(body)が一つのテキストの添付ファイルとなります。
  • none :何も添付されません。
  • message :オリジナルメッセージが、message/rfc822形式で添付ファイルになります。これは、受信クライアントソフトにより、多くの場合、開かれるか再送されるかフォワードされるか返答されることを意味します。
<passThrough> TRUE あるいは FALSEが指定されます。もし true であれば、オリジナルのメッセージは、Redirectプロセサ処理後、後に記述されるMailetのプロセサに処理が移ります。False であれば、オリジナルメッセージの処理はここで終了します。
<attachError> TRUE あるいは FALSEが指定されます。もし true であれば、Mailetで利用可能なあらゆるエラーメッセージがメッセージの本文に追加されます。 inline == unalteredである場合を除く)
<replyto> 電子メールの「Reply-To:」フィールドに記述される、単一の電子メールアドレス(あるいは"sender"や"postmaster")です。もしこのヘッダ情報がセットされなければ、無視されます。
<prefix> オリジナルメッセージの題名(Subject)の前に追加されるプレフィックスです。例: 未達メッセージ
<static>

TRUE あるいは FALSEが指定されます。true であれば、Mailetは動的なパラメタが何もセットされていないと判断し、それ故、initメソッドで静的に一度だけセットされます。Falseであれば、"getter"メソッドが処理される全てのメールに対してコールされると見なされます。規定値はFalseです。 一つ以上の"getter"メソッドが動的な値を設定する為にオーバーライドされる場合(例えば、listservがユーザレポジトリからgetRecipients()メソッドをオーバーライドしてリストを得る場合)を除き、全ての場合において"TRUE"である方が良いでしょう。

例:配布リストを作成します

<mailet match="RecipientIs=test@localhost" class="Redirect">
<recipients>x@localhost, y@localhost, z@localhost</recipients>
<to>list@localhost</to>
<sender>owner@localhost</sender>
<message>sent on from James</message>
<inline>unaltered</inline>
<passThrough>FALSE</passThrough>
<replyto>postmaster</replyto>
<prefix>[test mailing]</prefix>
<static>TRUE</static>
<passThrough>FALSE</passThrough>
</mailet>

例:postmasterに対し、題名のプレフィックス及びメッセージの本文付きで、SPAMがあったことを通知します

<mailet match="All" class="Redirect">
<recipients>x@localhost</recipients>
<sender>postmaster</sender>
<message>Message marked as spam:
</message>
<inline>heads</inline>
<attachment>message</attachment>
<passThrough>FALSE</passThrough>
<attachError>TRUE</attachError>
<replyto>postmaster</replyto>
<prefix>[spam notification]</prefix>
<static>TRUE</static>
<passThrough>FALSE</passThrough>
</mailet>


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 -- 【お問い合わせ/テキスト広告】