Apache James

Apache James（アパッチ・ジェームズ）は、Apacheプロジェクト内の電子メールアプリケーションサーバを開発するサブプロジェクトである。Jamesというプロジェクト名は、Java Apache Mail Enterprise Server の頭文字をとったものである。
Webアプリケーションサーバとして有名な、同プロジェクトのApache Tomcatの電子メール版である。
Apache Jamesは、BSDライセンスをベースとしたApache Licenseであり、商用利用も多くされている。
Apache Jamesは、Apache Avalonアプリケーションフレームワークを元に開発されていたので、Apache Avalonが解散したときは、どうしたらよいか混乱した。
そして、Apache James 2.*系以前は、Apache Avalonアプリケーションフレームワークを使用していたが、Apache James3.0系から、OSGiを元にして、Spring Frameworkアプリケーションフレームワークを使用している。
Mailet.
Jamesの各機能は、電子メールサーバ上（James）で、メイレット（Mailet）と呼ばれるJavaで記述可能なロジック群により構成されている。メイレットはTomcatでいうサーブレットと同様のものであり、James自体はTomcatと同じくコンテナである。よってJames自体には、実際に電子メールプロトコルに関する各機能は実装されていないが、電子メールサーバとして最低限必要となるであろう、SMTPやPOP3、IMAP4などを扱う部分は、メイレットのサンプル/リファレンス実装としてJamesに添付され提供されており、これらはそのまま使用しても差し支えないほどの完成度を誇っている。このメイレットを駆使することにより、簡単に機能の追加などを可能にし、通常の電子メールサーバを凌駕する電子メールアプリケーションサーバとして機能するというモノである。
MailetとMatcherについて.
Mailetは、メールを送信するために必要な処理をする。
Matcherは、メールをいろいろな条件を元に振り分ける処理をする。
James 2.*系以前のアプリケーションフレームワークについて.
James 1.*系またはJames 2.*系は、Apache Avalonアプリケーションフレームワークで開発されている。
James 3.0系アプリケーションフレームワークについて.
James 3.0系は、OSGiを元にして、Spring Frameworkアプリケーションフレームワークで開発されている。