Apache JamesはJavaで書かれたメールサーバです。あまりメジャーではありませんが、メールを受信したときの自動処理をJavaで書けるので気に入っています。

Sable Release
Tarフォーマットのバイナリファイルを選びます。

Binary (Unix TAR)

ダウンロードフォルダ
ターミナルを開いて管理者権限を取得します。
インストールファイルの入手
http://james.apache.org/ にアクセスしてDownloadsのコーナーでStable releasesを選びます。
Sable Release
Tarフォーマットのバイナリファイルを選びます。

Binary (Unix TAR)
解凍とインストール
ダウンロードフォルダに作成されたtarファイルをダブルクリックするとファイルが解凍され、james-2.3.1ディレクトリができます。
ダウンロードフォルダ
ターミナルを開いて管理者権限を取得します。
Last login: Sat Mar 28 23:27:17 2009 from 192.168.1.105
mini:~ takegata$ su
Password:
sh-3.2#
ダウンロードフォルダに移動します。mini:~ takegata$ su
Password:
sh-3.2#
sh-3.2# cd Downloads/
sh-3.2# ls
.DS_Store james-2.3.1
.localized james-binary-2.3.1.tar
apache-tomcat-6.0.18.tar mysql-5.1.32-osx10.5-x86_64.dmg
sh-3.2#
james-2.3.1ディレクトリを/usr/localディレクトリに移動します。sh-3.2# ls
.DS_Store james-2.3.1
.localized james-binary-2.3.1.tar
apache-tomcat-6.0.18.tar mysql-5.1.32-osx10.5-x86_64.dmg
sh-3.2#
sh-3.2# mv james-2.3.1 /usr/local
jamesからjames-2.3.1へのシンボリックリンクを作成します。ln -s /usr/local/james-2.3.1 /usr/local/james
jamesのbinディレクトリへ移動します。sh-3.2# cd james/bin
スクリプトファイルに実行件を付与します。sh-3.2# chmod +x *.sh
Jamesの設定
一時的にJamesを起動する必要があるので、環境変数JAVA_HOMEを設定します。sh-3.2# export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home
run.shスクリプトを起動します。sh-3.2# ./run.sh
Using PHOENIX_HOME: /usr/local/james
Using PHOENIX_TMPDIR: /usr/local/james/temp
Using JAVA_HOME: /System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home
Running Phoenix:
Phoenix 4.2
James Mail Server 2.3.1
Remote Manager Service started plain:4555
POP3 Service started plain:110
SMTP Service started plain:25
NNTP Service started plain:119
FetchMail Disabled
Ctrl+CでJamesを止めます。エラーメッセージが大量に表示されますが、問題はありません。最初の実行時にappsディレクトリ下にアプリケーション用のファイルが展開されます。apps/james/SAR-INF/config.xmlのservernames要素にservername要素を追加します。Using PHOENIX_HOME: /usr/local/james
Using PHOENIX_TMPDIR: /usr/local/james/temp
Using JAVA_HOME: /System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home
Running Phoenix:
Phoenix 4.2
James Mail Server 2.3.1
Remote Manager Service started plain:4555
POP3 Service started plain:110
SMTP Service started plain:25
NNTP Service started plain:119
FetchMail Disabled
<servernames autodetect="true" autodetectIP="true">
<!-- CONFIRM? -->
<servername>orquesta.org</servername>
</servernames>
dnsserver要素でdnsサーバのIPアドレスを指定します。<!-- CONFIRM? -->
<servername>orquesta.org</servername>
</servernames>
<dnsserver>
<servers>
<!--Enter ip address of your DNS server, one IP address per server -->
<!-- element. -->
<!-- -->
<server>192.168.1.1</server>
<!-- -->
</servers>
<servers>
<!--Enter ip address of your DNS server, one IP address per server -->
<!-- element. -->
<!-- -->
<server>192.168.1.1</server>
<!-- -->
</servers>
自動起動のための設定
/Library/StartupItemsにJamesディレクトリを作成。します。sh-3.2# mkdir /Library/StartupItems/James
このディレクトリ内にJamesという名前で次のようなスクリプトファイルを作成します。#!/bin/sh
. /etc/rc.common
export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home
export PHOENIX_HOME=/usr/local/james
StartService () {
if [ "${JAMES:=-NO-}" = "-YES-" ];then
ConsoleMessage "Starting James"
$PHOENIX_HOME/bin/phoenix.sh start
fi
}
StopService () {
ConsoleMessage "Stopping James"
$PHOENIX_HOME/bin/phoenix.sh stop
}
RestartService () {
if [ "${JAMES:=-NO-}" = "-YES-" ]; then
ConsoleMessage "Restarting James"
$PHOENIX_HOME/bin/phoenix.sh restart
else
stopService
fi
}
RunService "$1"
このスクリプトに実行権限を付与します。. /etc/rc.common
export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home
export PHOENIX_HOME=/usr/local/james
StartService () {
if [ "${JAMES:=-NO-}" = "-YES-" ];then
ConsoleMessage "Starting James"
$PHOENIX_HOME/bin/phoenix.sh start
fi
}
StopService () {
ConsoleMessage "Stopping James"
$PHOENIX_HOME/bin/phoenix.sh stop
}
RestartService () {
if [ "${JAMES:=-NO-}" = "-YES-" ]; then
ConsoleMessage "Restarting James"
$PHOENIX_HOME/bin/phoenix.sh restart
else
stopService
fi
}
RunService "$1"
sh-3.2# chmod +x /Library/StartupItems/James/James
同じディレクトリに次のような内容のStartupParameters.plist ファイルを作成します。{
Description = "James";
Provides = ("JAMES");
Requires = ("Resolver");
OrderPreference = "Early";
Messages = {
start = "Starting James";
stop = "Stopping James";
restart = "Restarting James";
};
}
シンボリックリンクを作成します。Description = "James";
Provides = ("JAMES");
Requires = ("Resolver");
OrderPreference = "Early";
Messages = {
start = "Starting James";
stop = "Stopping James";
restart = "Restarting James";
};
}
sh-3.2# ln -s /Library/StartupItems/James/James /usr/local/bin/james
jamesを起動します。sh-3.2# james start
Starting James
Using PHOENIX_HOME: /usr/local/james
Using PHOENIX_TMPDIR: /usr/local/james/temp
Using JAVA_HOME: /System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home
Starting Phoenix:
Phoenix running pid=4192
sh-3.2#
Mac起動時にJamesも起動するように、/etc/hostconfig に次の行を追加します。Starting James
Using PHOENIX_HOME: /usr/local/james
Using PHOENIX_TMPDIR: /usr/local/james/temp
Using JAVA_HOME: /System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home
Starting Phoenix:
Phoenix running pid=4192
sh-3.2#
JAMES=-YES-
Jamesにユーザを追加
telnetで4555番ポートに接続します。$telnet localhost 4555
ユーザ名root、パスワードrootでログインします。Login:root
Password:root
adduserコマンドでユーザを追加します。次の例ではmulderというユーザにTrustNo1というパスワードをつけて登録しています。Password:root
adduser mulder TrustNo1
quitコマンドでjamesを抜けますルータの設定
ルータの25番ポートに対して、メールサーバにパケットを転送するようにスタティックNATを設定します。DNSの設定
メールがルータのWAN側に割り当てられているグローバルIPアドレスに転送されるようにDNSのMXレコードを設定します(DNSの設定方法についてはいつか書きます)。メール受信のテスト
gmailなどのアカウントを使って、Jamesが受信するアドレスにメールを送信します。JamesはPOPサーバを持っているので、Thunderbirdなどのメールソフトで受信メールを読むことができます。
投稿:竹形 誠司[takegata]/2009年 03月 30日 00時 20分
/更新:2009年 03月 30日 00時 21分