XMail Server 1.22 (Win32) のインストール
〜 Windows 2000/XP でメールサーバ 〜
2006-05-19 作成 福島

XMail Administrator 0.26 はこちら
XMail Server (Win32) のインストール

XMail Server は以下の OS に対応していますが、今回は Windows 2000/XP にインストールします。
ライセンスは GPL なので安心して利用できます。
  • FreeBSD
  • Linux
  • MacOSX
  • NetBSD
  • OpenBSD
  • Solaris
  • Windows NT/2000/XP (XMail Server はサービスモードで動作します)
  • 1. ディレクトリツリーの設置
    XMail Server から NT/2k/XP Binaries (xmail-1.22.win32bin.zip) をダウンロードし、解凍

    解凍された xmail-1.22\ の MailRoot を C:\MailRoot\ としてツリーを丸ごとコピー
    解凍された xmail-1.22\ の *.exe, *.cmd を C:\MailRoot\bin にコピー
    2. レジストリの追加
    regedit.exe を使用し、キー HKEY_LOCAL_MACHINE\SOFTWARE\GNU\XMail\ の中に文字列を作成する
    HKEY_LOCAL_MACHINE\SOFTWARE\GNU\XMail は存在しないはずなので作成する
    MAIL_ROOT は C:\MailRoot とする
    MAIL_CMD_LINE は XMail Server の起動オプションを列記する (例: -Sl)
    ※ MAIL_CMD_LINE については付属 Readme.txt の COMMAND LINE の章に詳細があります。
    3. XMail Server をサービスに登録
    コマンドプロンプトにて C:\MailRoot\bin へ移動し、XMail Server をインストール
    ■コマンド プロンプト 
    Microsoft Windows 2000 [Version 5.00.2195]
    (C) Copyright 1985-2000 Microsoft Corp.
    
    C:\MailRoot\bin>.\XMail.exe --install
    XMail Server installed.
    
    C:\MailRoot\bin>
    
    ※ここでは --install を指定しているのでスタートアップの種類が「手動」となります。
     --install-auto を指定すると、スタートアップの種類が「自動」になります。
    4. 設定ファイルを編集
    C:\MailRoot\server.tab を編集する (変更後は XMail Server の再起動が必要)
    "RootDomain"	"example.com"
    "SmtpServerDomain"	"example.com"
    "POP3Domain"	"example.com"
    "HeloDomain"	"example.com"
    "PostMaster"	"root@example.com"
    "ErrorsAdmin"	"root@example.com"
    "RemoveSpoolErrors"	"0"
    "MaxMTAOps"	"16"
    "ReceivedHdrType"	"0"
    "FetchHdrTags"	"+X-Deliver-To,+Received,To,Cc"
    
    ※キーワードと値を区切るのは TAB です。
     また、改行コードは \x0A に限るらしいのでエディタは改行コードの指定できるものを使用します。

    C:\MailRoot\domains.tab に受け入れるドメインを記述する
    バーチャルドメインが必要なら、それもここに記述する
    "example.com"
    "example2.com"
    
    ※ここでは example2.com をバーチャルと仮定しています
    C:\MailRoot\ctrlaccounts.tab に XMail Server の管理者を記述する    --- (A)
    "xmailadmin"	"AdminPass"
    
    ※管理者名とパスワードを区切るのは TAB です。
     また、改行コードは \x0A に限るらしいのでエディタは改行コードの指定できるものを使用します。
    AdminPass は XMail Server 付属のコマンド xmcrypt.exe でパスワードを変換した文字列を記述します。

    C:\MailRoot\smtprelay.tab にリレーの許可/拒否を記述する
    "10.0.0.0"	"255.0.0.0"
    "172.16.0.0"	"255.255.0.0"
    "192.168.0.0"	"255.255.0.0"
    
    ※ネットワークとサブネットマスクを区切るのは TAB です。
     また、改行コードは \x0A に限るらしいのでエディタは改行コードの指定できるものを使用します。

    5. ディレクトリツリーを保護
    C:\MailRoot へのアクセスをユーザ SYSTEM, Domain Admins だけに許可し、他ユーザを拒否する
    6. XMail Server を起動
    スタート - 設定 - コントロールパネル - 管理ツール - サービス からサービス XMail Server を開始する
    =>
    7. ユーザの追加 (その 1)
    上記 A (ctrlaccounts.tab) を設定してあれば、簡単にユーザ/ドメインの編集が可能ですが、
    ここでは XMail Server のワークを示すために mkusers.exe を利用します。

    mkusers.exe で .\mailusers.tab, .\domains\example.com\user1\* を作成します。
    これを本番用にコピーし、XMail Server を再起動すればユーザ追加は完了です。
    ※ XMail Server が再起動されるまで mailusers.tab が有効になりません。

    ■コマンド プロンプト 
    Microsoft Windows 2000 [Version 5.00.2195]
    (C) Copyright 1985-2000 Microsoft Corp.
    
    C:\>del .\mailusers.tab     --- ユーザデータを消しておく
    
    C:\>C:\MailRoot\bin\mkusers.exe  --- ユーザデータを作成
    example.com;user1;password;GECOS;http://www.example.com/~user1/
    ^Z
    
    C:\>move .\domains\example.com C:\MailRoot\domains\. --- ユーザのディレクトリツリーを本番にコピー
    
    C:\>type .\mailusers.tab >> C:\MailRoot\mailusers.tab   --- ユーザ情報をユーザ管理ファイルに追記
    
    C:\>
    
    ここでは user1@example.com を作成しています
  • example.com 追加するユーザのドメイン名。
  • user1 追加するユーザ名。
  • password 生パスワード。mkusers.exe により暗号化されます。
  • GECOS Unix で言うところの GECOS フィールド。finger で参照されます。
  • http://www.example.com/~user1/ Web ページの URL。何に利用するのかイマイチ不明。
  • 8. 動作確認
    テストメールを送信
    ■コマンド プロンプト 
    Microsoft Windows 2000 [Version 5.00.2195]
    (C) Copyright 1985-2000 Microsoft Corp.
    
    C:\>telnet localhost 25
    220 <1147793011.1304@example.com> [XMail 1.22 ESMTP Server] service ready;
    Wed, 17 May 2006 00:23:31 +0900
    helo localhost
    250 example.com
    mail from: <who@localhost>
    250 OK
    rcpt to: <user1@example.com>
    250 OK
    data
    354 Start mail input; end with <CRLF>.<CRLF>
    Hello XMail user!
    .
    250 OK <SB>
    quit
    221 [XMail 1.22 ESMTP Server] service closing transmission channel
    
    
    ホストとの接続が切断されました。
    
    C:\>
    
    テストメールを確認
    ■コマンド プロンプト 
    Microsoft Windows 2000 [Version 5.00.2195]
    (C) Copyright 1985-2000 Microsoft Corp.
    
    C:\>telnet localhost 110
    +OK <1147948087.178@example.com> [XMail 1.22 POP3 Server] service ready;We
    d, 17 May 2006 00:30:51 +0900
    user user1@example.com
    +OK Password required for user1@example.com
    pass password
    +OK Maildrop has 1 message (267 bytes)
    list
    +OK 1 267
    1 267
    .
    retr 1
    +OK 267 bytes
    Return-Path: <who@localhost>
    Delivered-To: user1@example.com
    Received: from localhost ([127.0.0.1]:1254)
            by example.com with [XMail 1.22 ESMTP Server]
            id <SB> for <user1@example.com> from <who@localhost>;
            Wed, 17 May 2006 00:23:31 +0900
    
    Hello XMail user!
    .
    quit
    +OK [XMail 1.22 POP3 Server] closing session
    
    
    ホストとの接続が切断されました。
    
    C:\>
    


    ユーザの追加 (その 2)
    上記 (その 1) では mkusers.exe を使用した面倒なユーザ追加を行いましたが、
    通常は ctrlclnt.exe を使用して管理を行います。
    ※ GUI での管理も可能です ---> XMail Administrator 0.26 のインストール

    ctrlclnt.exe で利用可能なコマンドは、Readme.txt の XMAIL ADMIN PROTOCOL の章に詳細があります。
    ※プロトコルの説明なので TAB 区切りや <CR><LF> の記述がありますが、 ctrlclnt.exe のパラメータとしては普通にスペースや改行となります。

    ■コマンド プロンプト 
    Microsoft Windows 2000 [Version 5.00.2195]
    (C) Copyright 1985-2000 Microsoft Corp.
    
    登録ドメインの確認
    C:\>ctrlclnt.exe -s localhost -n 6017 -u xmailadmin -p AdminPass domainlist
    "example.com"
    
    ドメインの追加
    C:\>ctrlclnt.exe -s localhost -n 6017 -u xmailadmin -p AdminPass domainadd "example2.com"
    
    ドメインの削除
    C:\>ctrlclnt.exe -s localhost -n 6017 -u xmailadmin -p AdminPass domaindel "example2.com"
    
    登録ユーザの確認
    C:\>ctrlclnt.exe -s localhost -n 6017 -u xmailadmin -p AdminPass userlist
    "example.com"	"user1"	"password"	"U"
    
    ユーザの追加
    C:\>ctrlclnt.exe -s localhost -n 6017 -u xmailadmin -p AdminPass useradd "example.com" "user1" "password" "U"
    
    ユーザの削除
    C:\>ctrlclnt.exe -s localhost -n 6017 -u xmailadmin -p AdminPass userdel "example.com" "user1"
    
    ユーザのパスワードを変更
    C:\>ctrlclnt.exe -s localhost -n 6017 -u xmailadmin -p AdminPass userpasswd "example.com" "user1" "NewPassword"
    
    C:\>
    
    ※ xmailadmin, AdminPass は上記 A にて設定した情報です。
    ※ ctrlclnt.exe は C:\MailRoot\bin\ctrlclnt.exe のことです。短く記述しています。
    ※ -s localhost からも分るように、ctrlclnt.exe はリモートコンピュータの管理に使用しますが、通信路は別途暗号化する必要があります。


    XMail Server をセカンダリメールサーバにする

    XMail Server にセカンダリメールサーバを任せる場合は以下のように設定します。
    1. domains.tab に該当ドメイン名を記述しない

    2. custdomains\ の中に該当ドメイン名のファイルを作成する
      example1.com のセカンダリメールサーバを受け持つ場合、以下のファイルを作成します。
      C:\MailRoot\custdomains\example1.com.tab
      "smtprelay"	"mail.example1.com:25"
      
      ※ who@example1.com のプライマリメールサーバを mail.example1.com と仮定しています。
    custdomains\ の中のファイルを追加・編集すると、即時反映されます。(XMail Server の再起動は不要)

    who@sub.example1.com のように特定のサブドメインだけを違うセカンダリにしたい場合は同様にファイルを追加作成します。
    C:\MailRoot\custdomains\sub.example1.com.tab
    "smtprelay"	"mail.sub.example1.com:25"
    
    ※ who@sub.example1.com のプライマリメールサーバを mail.sub.example1.com と仮定しています。
    custdomains\ に格納するファイルの記述は、このほかにも様々な機能があります。
    XMail Server 付属の Readme.txt の CUSTOM DOMAIN MAIL PROCESSING の章に詳細があります。

    当然ですが、DNS の MX レコードにセカンダリメールサーバの記述が必要です。
    MX レコードの例
    ; ...
    
    example1.com. MX 10 mail1.example1.com.	; プライマリメールサーバ
    example1.com. MX 20 mail2.example1.com.	; セカンダリメールサーバ
    
    sub.example1.com. MX 10 mail1.sub.example1.com.	; プライマリメールサーバ
    sub.example1.com. MX 20 mail2.sub.example1.com.	; セカンダリメールサーバ
    
    mail1.example1.com.     A 192.168.0.1
    mail1.sub.example1.com. A 192.168.1.1
    
    mail2.example1.com.     A 192.168.2.1
    mail2.sub.example1.com. A 192.168.2.1
    
    ; ...
    
    この例では mail2.example.commail2.sub.example.com を当該セカンダリサーバ (192.168.2.1) にしています。
    例なのでローカルアドレスを使用していますが、実際は当然グローバルアドレスを使用します。