Apache James:demo-3.8.0からMailet Containerへ
プロジェクト概要:ビジネス ロジックの中心となる電子メール。提供されている制御反転メール プラットフォームのおかげで必要なコンポーネントを組み立てることにより、電子メール処理のための *独自のパーソナル ソリューション* を作成し、*James Mailet Container* を使用してフィルタリングとルーティング ルールをさらにカスタマイズします。
ひと目でわかる
- これは何?
- JVM上のモジュール型メールサーバーApache James。READMEが示すdemo-3.8.0、Mailet Container、Distributed版(Cassandra/S3/OpenSearch/RabbitMQ)、mvn clean installの範囲を整理する。
- 誰に向いている?
- James Mailet ContainerでSMTP/IMAP/JMAPの処理をJVM上に組みたいチームが、隔離環境でdemo-3.8.0を試す用途に合う。デモパスワード1234のまま公開する運用、Cassandra/S3/RabbitMQを用意できない本番には向かない。
- 商用利用できる?
- できます。Apache-2.0 は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
- 今もメンテナンスされている?
- されています。直近 1 日以内に新しいコミットがあります。
- 何の言語で書かれている?
- 主に Java です(GitHub の言語統計による)。
回答はプロジェクトの GitHub データ(最終同期:2026年9月15日)と当サイトの分析に基づくもので、法的助言ではありません。
オープンソース詳細解説
James Mailet ContainerとIoC組み立て
Apache JamesはJava Apache Mail Enterprise Serverの略だとREADME冒頭が書く。モジュラーな構成で、JVM上に拡張可能なメールサーバーを組む、というのが自己説明である。Inversion of Controlのメール基盤上で必要な部品を組み合わせ、James Mailet Containerでフィルタとルーティング規則を足す、と続く。ここが「完成したホスト型メールサービス」ではなく「自分で組み立てる基盤」である理由になる。
対応プロトコルはIMAP、SMTP、JMAP(jmap.ioへのリンク)、POP3など。README属性latest_james_versionは3.8.0。公式サイトはjames.apache.org、実装言語はJava、ライセンスはApache-2.0、既定ブランチはmaster。素材時点でアーカイブではない。README上部バッジはメーリングリスト、Gitter(gitter.im/apache/james-project)、Jenkins CI(ci-builds.apache.org/job/james/job/ApacheJames/)、Documentation、Downloads 3.8.0、Docker Hub apache/james、ApacheV2、最新ニュースを指す。
Mailet Containerは、メールのフィルタとルーティングをコンテナ単位で差し替えるJames固有の拡張点である。JMAPはモダンクライアント向けAPIとしてREADMEがjmap.ioへ送る。プロトコル一覧は「and more」で終わっており、管理用プロトコルやWeb管理画面の有無は本文では確定しない。自前の業務ロジックをメール経路に埋め込みたい場合に限り、この組み立て前提は意味がある。
James Mailet Containerは、メール処理パイプラインをJavaコンポーネントとして組み立てるJames固有の拡張点です。IoCプラットフォームは、SMTP受信から配信までの各段階を差し替え可能にするREADME/README称の設計思想を説明しています。JMAP対応はモダンクライアント向けAPIとしてREADMEプロトコル一覧に含まれます。
distributed-appのCassandra/S3分担
READMEはDistributed serverを、Cassandra、S3、OpenSearch、RabbitMQを使うスケーラブルなメールサーバーだと説明する。文書入口はjames.staged.apache.org/james-distributed-app/3.8.0/ で、アーキテクチャは同サイトのarchitecture/index.htmlへ送られる。README本文は「easy-to-operate」と自報するが、ノード数、障害時の再同期、バックアップ手順はここには無い。
Docker配布はGuiceベースで4系統ある。server/apps/distributed-app/README.adoc(Cassandra + RabbitMQ + S3 + OpenSearch)、server/apps/cassandra-app/README.adoc(Cassandra + OpenSearch)、server/apps/jpa-app/README.adoc(JPA + Lucene)、server/apps/memory-app/README.md(テスト用メモリ)。distributedのDocker起動はserver/apps/distributed-app/docs/modules/ROOT/pages/run/run-docker.adoc。Cassandraにメタデータ、S3に添付、OpenSearchに検索、RabbitMQに非同期、という分担はREADMEが「modern technologies」として挙げるスタックである。
デモ用のJPA(hsqldb)+ Lucene構成と、Distributedの外部依存は別物である。demoイメージが動いたことを、Cassandraクラスタの運用可能性と同一視してはいけない。S3互換ストレージとRabbitMQを先に用意できないなら、distributed-appはREADMEが示す本番寄りの入口にならない。
Distributed serverはCassandraでメタデータ、S3で添付、OpenSearchで検索、RabbitMQで非同期処理を分担するREADME/README称の現代構成です。demoイメージのJPA+Lucene構成とはスケール特性が異なり、本番評価はserver/apps/distributed-app/README.adocがREADME推奨入口です。
demo-3.8.0のIMAPS993とSMTPS465
How to try James節の要件はdockerがインストールされていること。試す版は{latest_james_version}すなわち3.8.0。イメージapache/james:demo-3.8.0は既定でJPA(hsqldb)とLuceneを使い、ドメインjames.local、利用者user01@james.local、user02@james.local、user03@james.local、パスワードはいずれも1234、とREADMEが書く。待ち受けはIMAPS 993とSMTPS 465。
起動コマンドは docker run -p "465:465" -p "993:993" apache/james:demo-3.8.0 。接続例としてThunderbirdが挙がり、詳細はjames.apache.org/howTo/imap-server.html。dockerを使わない導入はjames.apache.org/server/install.html。DistributedのDocker手順は前述のrun-docker.adoc。READMEはdemo構成のTLS証明書の差し替え、スパム対策、パスワードポリシーを本文に書いていない。
1234という既定パスワードは評価用の印である。このイメージを公開アドレスに置く運用は、READMEが想定する「試す」手順の外になる。IMAPSとSMTPSのポートをホストに出すだけなので、ファイアウォールも認証も自前で足す必要がある。Thunderbirdでuser01@james.localが読めることまでが、この節の到達点である。
demo-3.8.0イメージは学習用にjames.localドメインと固定パスワード1234をREADME How to try James節が明示しています。IMAPS993とSMTPS465公開は単一docker runで試せるREADME/README称の最小経路です。Thunderbird設定詳細はjames.apache.org/howTo/imap-server.htmlに委ねられています。
mvn clean installと-DskipTestsの意味
How to check the compilation節は、Maven 3.6.1以上を要求する。手順は git clone git@github.com:apache/james-project.git のあと、そのディレクトリで mvn clean install 。有用なオプションとして、-DskipTests(Dockerデーモンを要する長時間テストを省略)、-T 4(CPU並列)、-Dmaven.javadoc.skip=true が列挙される。-DskipTestsを付けた成功は、テストスイートを通した証明にはならない。
Develop on James節はJDK 11以上とMaven 3.6.1を要求し、一部がScalaで書かれているためIDEにScalaプラグインが必要、と書く。拡張の書き方はexamples/README.md、デプロイテストはdocs/modules/development/pages/deployment-tests.adoc。Jenkinsバッジはci-builds.apache.org/job/james/job/ApacheJames/。ソースからのビルドと、demo Dockerイメージの起動は別経路である。
並列-T 4はビルド時間対策で、成果物の内容を変える話ではない。javadoc省略も同様。コンパイルが通ることと、Mailetを業務ルールとして安全に差し込めることは一致しない。拡張を書くならexamples/README.mdを先に開き、自前Mailetの配線例があるかを確認する方が、mvnのログだけを読むより早い。
mvn clean installはソースからJames全体をビルドするREADME How to check the compilation節の基本コマンドです。-DskipTestsはDocker必須の長時間テストを省略するREADME明示オプションで、初回コンパイル確認に使えます。JDK11以上とScala IDEプラグインはDevelop on James節の前提です。
manage-cli.htmlとGitter/JIRAの入口
Using the CLI節は本文にコマンドを書かず、james.apache.org/server/manage-cli.htmlへ送る。ドメイン追加や利用者作成をCLIで行う前提なら、demoのdocker runが通ったあとにこのページを開く順番になる。README How to try James節はThunderbird手順をhowTo/imap-server.htmlに預けているので、GUIとCLIは併用する形になる。
貢献の案内はjames.apache.org/index.html#third。連絡先はメーリングリストjames.apache.org/mail.htmlとGitter gitter.im/apache/james-project。文書貢献はJIRAのdocumentationラベル、コードはnewbie / easyfix / featureラベルの未解決issue、とREADMEが誘導する。Architectural Decision Recordsへのリンクはgithub.com/linagora/james-project/tree/master/src/adr。記事やブログも歓迎、とある。応答期限や有償サポートはREADMEが主張していない。
Downloadsはjames.apache.org/download.cgi、文書はjames.apache.org/documentation.html。コミュニティ記事としてdocs/modules/community/pages/website.adoc(サイトのビルドと公開)とdocs/modules/community/pages/release.adoc(Mavenでのリリース)がREADME末尾に並ぶ。運用チームが最初に要るのはmanage-cli.htmlとhowTo/imap-server.htmlで、リリース手順はコミッター向けである。
james.apache.org/server/manage-cli.htmlはJames CLI管理のREADME入口です。JIRA documentation/newbie/easyfix/featureラベルは初回コントリビューション向けissue検索としてREADME How to contribute節がURLを提示しています。GitterとメーリングリストはREADME/README称のコミュニティ窓口です。
Guice四種Dockerアプリの選び方
How to run James in Docker節は、GuiceベースアプリのDocker配布を4つ列挙する。distributed-appはCassandra + RabbitMQ + S3 + OpenSearch、cassandra-appはCassandra + OpenSearch、jpa-appはJPA + Lucene、memory-appはtesting、とREADMEが区別する。demo-3.8.0イメージのJPA(hsqldb)+ Luceneは、jpa-app系統に近い評価用構成として読むのが自然である。
memory-appはテスト用途と明記されている。本番相当を見るならdistributed-appかcassandra-appのREADMEが入口になる。各イメージの環境変数一覧、メモリ上限、ディスク見積もりはREADME本文に無い。Docker Hubのapache/jamesバッジが上部にあるので、タグの確認はhub.docker.com/r/apache/james側になる。
CassandraもS3もRabbitMQも持てないなら、distributed-appを「次のステップ」にしない。jpa-appのLucene索引で全文検索まで試したい場合は、demoイメージのLucene構成で足りるか、jpa-app/README.adocを読む。4系統を全部立てて比較する必要は、READMEの書き方からは出てこない。自分の依存を一つ選んで、そのREADME.adocだけを追う方が短い。
Guice Docker四種は用途別にREADME How to run James in Docker節がREADME.adocへリンクしています。memory-appはtesting用途とREADME/README称明記され、本番相当はdistributed-appまたはcassandra-appが入口です。各イメージの環境変数一覧はREADME本文外です。
ApacheV2とdemoパスワード1234の限界
ライセンスバッジはApacheV2(apache.org/licenses/)。メタデータもApache-2.0。Jamesを自前サービスとして再配布するなら、NOTICEとLICENSEの扱いをLICENSEファイルで確認する必要がある。READMEはセキュリティ監査結果、脆弱性窓口、サポートSLAを本文に書いていない。
demo構成は学習と評価向けで、TLS証明書、パスワードポリシー、スパム対策はhowToと各app READMEへ送られる。既定パスワード1234、ドメインjames.localは、そのまま公開する前提ではない。IMAPS 993とSMTPS 465を出しただけのコンテナは、認証と暗号化の運用手順を含んでいない。
最新版属性は3.8.0。素材のreleases一覧は空で、GitHub Releasesからの版確認はこの素材だけではできない。ダウンロードはjames.apache.org/download.cgiが入口。Apache-2.0は利用条件の提示であり、メール保管の法務要件や削除請求への応答手順はREADMEの範囲外である。
ApacheV2ライセンスはREADMEバッジからapache.org/licenses/へリンクしています。demo構成の固定パスワード1234はREADME/README称評価専用であり、TLS証明書やスパム対策はhowTo/各app README参照とREADME/README称。性能数値やHA手順はREADME本文にありません。
demo-3.8.0成功後にdistributed-appを読む
READMEが示す評価の流れは、まず docker run -p "465:465" -p "993:993" apache/james:demo-3.8.0 でThunderbird(または同等クライアント)がuser01@james.localに接続できることを確認し、次にserver/apps/distributed-app/README.adocでCassandra、RabbitMQ、S3、OpenSearchの要件を読む、という段階である。並行して mvn clean install -DskipTests でコンパイルだけ見ることはできるが、それはdemoの動作確認の代替にはならない。
CLIはjames.apache.org/server/manage-cli.html。拡張コードはexamples/README.md、デプロイテストはdocs/modules/development/pages/deployment-tests.adoc。Architectural Decision Recordsはgithub.com/linagora/james-project/tree/master/src/adr。デモパスワード1234のまま公開運用するのは、READMEのHow to try James節が想定する用途ではない。
向くのは、Mailetでフィルタとルーティングを自前実装したいJVMチームが、隔離ネットワークでdemo-3.8.0を試し、必要ならdistributed-appの外部依存を見積もる場合。向かないのは、ホスト型メールを設定画面だけで使いたい場合、既定パスワードでインターネットに出す場合、Cassandraとオブジェクトストレージの運用経験が無くDistributedを「簡単」とREADMEの自報だけで選ぶ場合である。
demo接続成功後にdistributed-app READMEでCassandra/RabbitMQ/S3/OpenSearch要件を読む段階的経路は、READMEが示すJames評価フローです。mvn clean install -DskipTestsとCLI manage-cli.html操作を並行記録すると、ソースビルド可否と運用操作可否を分けて判断できます。デモパスワード1234の公開運用はREADME想定外です。
編集部の結論
James Mailet ContainerでSMTP/IMAP/JMAPの処理をJVM上に組みたいチームが、隔離環境でdemo-3.8.0を試す用途に合う。デモパスワード1234のまま公開する運用、Cassandra/S3/RabbitMQを用意できない本番には向かない。先にdocker run -p 465:465 -p 993:993 apache/james:demo-3.8.0でIMAPS/SMTPSが応答し、user01@james.localでThunderbird接続できることを確認し、その後server/apps/distributed-app/README.adocを読む。
コミュニティノート