竹形誠司 ブログ
Mac mini サーバー化計画    »トピック一覧
掲示板へのスパムが多いため、「ご質問」のコーナーはユーザー登録制とさせていただきました。お手数ですが、上の「新規ユーザーの登録」メニューより登録をお願いします。
帳票Web
アプリケーション

受注開発始めました
詳しくは こちら
竹形 誠司 著/ラトルズ刊
JSP帳票アプリケーション実践開発入門
JSP帳票アプリケーション
実践開発入門

JSP業務アプリケーション短期開発入門
JSP業務アプリケーション
短期開発入門

Java+MySQL+Tomcatで始めるWebアプリケーション構築入門
Java+MySQL+Tomcatで始めるWebアプリケーション構築入門

Java+MySQL+Tomcatで作る掲示板とブログ
Java+MySQL+Tomcatで作る
掲示板とブログ
Apache James(メールサーバ)のインストール
by 竹形 誠司[takegata]
Apache JamesはJavaで書かれたメールサーバです。あまりメジャーではありませんが、メールを受信したときの自動処理をJavaで書けるので気に入っています。

インストールファイルの入手
http://james.apache.org/ にアクセスしてDownloadsのコーナーでStable releasesを選びます。
Sable Release
Sable Release

Tarフォーマットのバイナリファイルを選びます。
Binary (Unix 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#
ダウンロードフォルダに移動します。
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# 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要素を追加します。
<servernames autodetect="true" autodetectIP="true">
<!-- CONFIRM? -->
    <servername>orquesta.org</servername>
</servernames>
dnsserver要素でdnsサーバのIPアドレスを指定します。
  <dnsserver>
      <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"
このスクリプトに実行権限を付与します。
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";
    };
}
シンボリックリンクを作成します。
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 に次の行を追加します。
JAMES=-YES-
Jamesにユーザを追加
telnetで4555番ポートに接続します。
$telnet localhost 4555
ユーザ名root、パスワードrootでログインします。
Login:root
Password:root
adduserコマンドでユーザを追加します。次の例ではmulderというユーザにTrustNo1というパスワードをつけて登録しています。
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分