xmail.dojo.jp
 その他の参考情報

XMail に関するその他の参考情報です。


XMail のディレクトリ(フォルダ)構成(全 OS 共通)


XMail の詳細なディレクトリ(フォルダ)構造

ここでは、XMail の Windows 版バイナリパッケージの詳細なディレクトリ(フォルダ)構成(右図)を参考に、 各ディレクトリの存在目的について説明します。ちなみに、ディレクトリ構成はすべての OS で共通です。

なお、以下の説明ではディレクトリの区切りをスラッシュ(/)で表記していますが、Windows 環境の場合はスラッシュをバックスラッシュ(\)に置き換えて読んでください。

xmail-x.xx

このディレクトリは公式サイトで配布されている Windows NT/2000/XP/Vista/2003 対応版のバイナリパッケージを展開したときに現れ、その内部には ctrlclnt.exe、mkusers.exe、sendmail.exe、xmail.exe、xmcrypt.exe などの実行ファイル群が存在します。右図のディレクトリ名 xmail-1.11 は XMail のバージョンによって 1.11 の部分が変化します。

MailRoot

XMail のすべての設定ファイルやデータファイル、メールボックスなどが置かれるディレクトリのルートです。

Windows NT/2000/XP/Vista/2003 の場合、MailRoot フォルダの完全なパスをレジストリに登録する必要があります(詳細は "環境設定" を参照)。

MailRoot/bin

XMail の実行ファイル群が置かれるデフォルトの場所です。ただし、Windows NT/2000/XP/Vista/2003 版のバイナリパッケージでは実行ファイル群は xmail-1.11 直下にあり、そのまま使うことができます(MailRoot/bin に移動しても可)。

MailRoot/cmdaliases

このディレクトリは XMail 1.2 からの追加です。初めは空で、XMail のコマンドエイリアス機能のために使われます。ドメインを追加するとここにそれと同名のフォルダが作成されます。

MailRoot/custdomains

カスタム処理(特定のドメインまたはユーザあての到着メッセージに対して特別な処理)を行う場合に、このディレクトリ内に特別な設定ファイルを置きます。たとえば、dojo.jp ドメインあてのすべてのメッセージについて何らかの処理を行いたければ、このフォルダ内に dojo.jp.tab というファイルを置くことになります。そして、この .tab ファイル内に具体的な処理を記述します(詳細は "コマンド実行機能" を参照)。

MailRoot/dnscache
MailRoot/dnscache/mx
MailRoot/dnscache/ns

ここには DNS(Domain Name System) クエリーの結果が保存され、キャッシュとして利用されます。mx ディレクトリには DNS の MX(Mail Exchanger) リソースレコードのキャッシュが、ns ディレクトリにはその NS(Name Server) リソースレコードのキャッシュが保存されます。

MailRoot/domains

ローカルドメインのすべてのメールボックスやアカウント情報ファイルなどが収められるディレクトリです。内部の home.bogus ディレクトリと dojo.test ディレクトリとはサンプルドメインです。

MailRoot/domains/home.bogus
MailRoot/domains/home.bogus/all
MailRoot/domains/home.bogus/all/mailbox
MailRoot/domains/home.bogus/all/Maildir
‥‥‥‥
‥‥‥‥
MailRoot/domains/dojo.test

2 つのサンプルドメインです。MailRoot/domains/home.bogus/all がアカウント名 all のユーザディレクトリで、その内部の mailbox または Maildir がこのアカウントのためのメールボックスであり、そこにメッセージファイルが収められます。

メールボックスのためのディレクトリが mailbox と Maildir との 2 つありますが、実際にはそのどちらか 1 つでよく、XMail がそのどちらを使うかは XMail のコンパイルオプションまたはその起動オプションによって決定します。公式サイトで配布されている Windows NT/2000/XP/Vista/2003 版のバイナリパッケージはデフォルトでは mailbox を使います。

mailbox と Maildir とはメッセージデータの格納方式を示すものではありません。XMail ではどの場合も 1メッセージ 1ファイルという方法でメッセージデータを保存します。

MailRoot/filters

フィルタ処理のためのための定義ファイルが置かれるディレクトリです。XMail のフィルタ処理では、外部プログラムを使って到着メッセージにさまざまな前処理を行うことができます。たとえば、メッセージ内容のチェックや加工、メッセージの複製や廃棄、ウイルススキャンなどが可能です(詳細は "フィルタ実行機能" を参照)。

MailRoot/logs

ログファイルが置かれるディレクトリです。ロギングは XMail の起動オプションで制御します(詳細は "環境設定" と "ログファイル" を参照)。

MailRoot/msgsync

このフォルダは右図にはありませんが、XMail のバージョン 1.24 以降で使用され、メールボックスの同期処理(pop3links.tabファイルで定義)において外部 POP サーバからの UIDL コマンドに対する結果を保存します。すなわち、外部サーバにメッセージを残す設定を行ったときに利用されるディレクトリです。

MailRoot/pop3linklocks

メールボックスの同期処理のための作業ディレクトリです。XMail はローカルユーザのために他の複数の POP サーバにアクセスし、そこからメッセージを取ってくることができます。これを本サイトでは "メールボックスの同期処理" と呼んでいます。

MailRoot/pop3links

メールボックスの同期処理を一時停止するための作業ファイルを置くために使われます。

MailRoot/pop3locks

メールボックスの同期処理において、メールボックスの検索速度を上げるために使われる作業ディレクトリです。

MailRoot/spool

スプール目的のディレクトリです。一時的にメッセージが蓄えられる場所であり、またエラーメッセージが格納される場所です。XMail を最初に起動すると、spool ディレクトリ内に多くのサブディレクトリが作成されます。

MailRoot/tabindex

XMail の設定ファイルに格納されているすべてのユーザやメーリングリスト、エイリアス、ドメインのインデックスファイルを格納するためのディレクトリです。インデックスを作成する目的はそれらの情報の検索速度を上げるためです。すなわち、数千人から数万人以上の大規模ドメインにも XMail は対応できます。

MailRoot/userauth

ユーザ認証を外部プログラムを使って行うための設定ファイルまたは XMail が他の認証が必要な SMTP サーバに接続するときの認証情報を定義したファイルを格納するディレクトリです。

  Top ↑

XMail 起動オプション(全 OS 共通)


XMail は起動オプションを指定することでデフォルトとは異なるさまざまな動作をさせることが可能です。起動オプションは以下のように指定します。

起動オプションは以下の通りです。

■XMail 本体プログラム関連

-Ms  XMail のメールルートを -Ms に続けて指定します。これは本サイトで MailRoot と表記しているディレクトリ(フォルダ)のことで、XMail の環境変数 MAIL_ROOT で指定するものと同じです。

-Md  XMail をデバッグモードで動作させます。メンテナンス時などに XMail の動作を観察する場合に有用です。Windows 環境では -Md に加えて --debug も付加しないといけないようです。

-Mr  ログファイルのローテイト(ログファイルを交替させること)間隔を -Mr に続けて時間で指定します。デフォルトではローテイトを行いません。

-Mx  -Mx に続けてメッセージキューのスプリットレベルを指定します。

-MR  -MR に続けてソケットの受信バッファサイズをバイト数で指定します。指定は 1024 バイト単位で切り上げられます。

-MS  -MS に続けてソケットの送信バッファサイズをバイト数で指定します。指定は 1024 バイト単位で切り上げられます。

-MM  メールボックスのディレクトリ構造として Maildir を使用します。これは UNIX バージョンではデフォルトの動作です。

-Mm  メールボックスのディレクトリ構造として mailbox を使用します。これは Windows ではデフォルトの動作です。

-MD  -MD に続けて DNS キャッシュを保存するためのサブディレクトリ数を指定します。デフォルトは 101 です。

■POP3 サービス関連

-P-  POP3 サービスを停止します。

-Pp  -Pp に続けて POP3 サービスで使用する TCP ポートを指定します。デフォルトは 110 です。

-Pt  -Pt に続けて POP3 セッションにおけるタイムアウト時間を秒数で指定します。

-Pl  POP3 サービスのログを出力します。l は小文字です(アルファベットの第 12 字)。

-Pw  -Pw に続けてユーザによる POP3 ログインが不成功だった場合(認証が失敗した場合)の待機時間(再ログインを待つ時間)を秒数で指定します。

-Ph  POP ログインが不成功だった場合に直ちにセッションを終了することを指定します。

-PI  -PI に続けて POP3 サービスをバインドする IP アドレスを指定します。ホストが複数の IP アドレスを持ち、その一部のインターフェースのみでサービスを実行したい場合に利用できます。IP アドレスには 192.168.1.1:10110 のようにポート番号を付加することもできます。またこのオプションは複数回の指定が可能です。

-PX  -PX に続けて POP3 サーバに許される最大スレッド数を指定します。

■POP3S サービス関連

-B-  POP3S(POP3 over SSL) サービスを停止します。ただし、TLS サポートは停止されません。TLS サポートも停止する場合は server.tab において EnablePOP3-TLS を 0 にします。

-Bp  -Bp に続けて POP3S サービスで使用する TCP ポートを指定します。デフォルトは 995 です。

-BI  -BI に続けて POP3S サービスをバインドする IP アドレスを指定します。ホストが複数の IP アドレスを持ち、その一部のインターフェースのみでサービスを実行したい場合に利用できます。IP アドレスには 192.168.1.1:10995 のようにポート番号を付加することもできます。またこのオプションは複数回の指定が可能です。

■SMTP サービス関連

-S-  SMTP サービスを停止します。

-Sp  -Sp に続けて SMTP サービスで使用する TCP ポートを指定します。デフォルトは 25 です。

-St  -St に続けて SMTP セッションにおけるタイムアウト時間を秒数で指定します。

-Sl  SMTP サービスのログを出力します。

-SI  -SI に続けて SMTP サービスをバインドする IP アドレスを指定します。IP アドレスには 192.168.1.1:8025 のようにポート番号を付加することができます。またこのオプションは複数回の指定が可能です。

-SX  -SX に続けて SMTP サーバに許される最大スレッド数を指定します。

-Sr  -Sr に続けて一つのメッセージあたりの送信先(Recipient)指定の上限数を指定します。デフォルトは 100 です。

-Se  POP before SMTP(SMTP after POP)機能が有効な場合に IP アドレス情報の有効時間を秒数で指定します。デフォルトは 900 です。

■SMTPS サービス関連

-X-  SMTPS(SMTP over SSL) サービスを停止します。ただし、TLS サポートは停止されません。TLS サポートも停止する場合は server.tab において EnableSMTP-TLS を 0 にします。

-Xp  -Xp に続けて SMTP サービスで使用する TCP ポートを指定します。デフォルトは 465 です。

-XI  -XI に続けて SMTPS サービスをバインドする IP アドレスを指定します。IP アドレスには 192.168.1.1:465 のようにポート番号を付加することができます。またこのオプションは複数回の指定が可能です。

■SMAIL(メッセージ送信) サービス関連

-Qn  -Qn に続けて SMIL サービスの最大スレッド数数を指定します。

-Qt  -Qt に続けてメッセージ送信に失敗した場合の(再試行するまでの)待機時間を秒数で指定します。デフォルトは 480 です。

-Qi  -Qi に続けてメッセージ送信失敗時の再スケジュール時間を逓増するための割合を決める母数を指定します。デフォルトは 16 です

-Qr  -Qr に続けてメッセージ送信失敗時の再送試行回数を指定します。デフォルトは 32 です。

-Ql   SMAIL サービスのログを出力します。

-QT  フィルタからの終了コードを待ち続ける時間を秒数で指定します。デフォルトは 90 です。

-Qg  フィルタ処理のログを出力します。

■PSYNC サービス関連

-Y-  PSYNC サービスを停止します。

-Yi  -Yi に続けて外部 POP サーバにアクセスする間隔を秒数で指定します。デフォルトは 120 です。

-Yt  -Yt に続けて外部 POP サーバへのアクセスにおける最大スレッド数を指定します。

-Yl  PSYNC サービスのログを出力します。

■FINGER サービス関連

-F-  FINGER サービスを停止します。

-Fp  -Fp に続けて FINGER サービスで使用する TCP ポートを指定します。デフォルトは 79 です。

-Fl  FINGER サービスのログを出力します。

-FI  -FI に続けて FINGER サービスをバインドする IP アドレスを指定します。 IP アドレスには 192.168.1.1:8079 のようにポート番号を付加することができます。またこのオプションは複数回の指定が可能です。

■CTRL サービス関連

-C-  CTRL サービスを停止します。

-Cp  -Cp に続けてコントロールサービスで使用する TCP ポートを指定します。デフォルトは 6017 です。

-Ct  -Ct に続けてコントロールセッションにおけるタイムアウト時間を秒数で指定します。

-Cl  コントロールサービスのログを出力します。

-CI  -CI に続けてコントロールサービスをバインドする IP アドレスを指定します。IP アドレスには 192.168.1.1:16017 のようにポート番号を付加することができます。またこのオプションは複数回の指定が可能です。

-CX  -CX に続けてコントロールサーバに許される最大スレッド数を指定します。

■CTRLS サービス関連(SSL/TLS 有効)

-W-  CTRLS(CTRL over SSL) サービスを停止します。ただし、TLS サポートは停止されません。TLS サポートも停止する場合は server.tab において EnableCTRL-TLS を 0 にします。

-Wp  -Wp に続けてコントロールサービスで使用する TCP ポートを指定します。デフォルトは 6018 です。

-WI  -WI に続けてコントロールサービスをバインドする IP アドレスを指定します。IP アドレスには 192.168.1.1:16018 のようにポート番号を付加することができます。またこのオプションは複数回の指定が可能です。

■LMAIL(ローカルメーラ)サービス関連

-Ln  -Ln に続けてローカルメーラに許される最大スレッド数を指定します。

-Lt  -Lt に続けてローカルメーラ処理におけるタイムアウト時間を秒数で指定します。デフォルトは 2 です。

-Ll  ローカルメーラによるサービスのログを出力します。

  Top ↑

XMail が対応する POP3/SMTP コマンド(全 OS 共通)


XMail が対応する POP3/SMTP コマンドは下記の通りです。 XMail はクライアントからのコマンド受け付けに成功した場合は +OK を、失敗した場合は -ERR をステータスコードともにそれぞれクライアントに応答します。

XMail の POP3 サーバが対応する POP3 コマンドは以下の通りです。POP3 コマンドの詳細は RFC 1939 にあります。

USER  POP セッションを開始します。
APOPAPOP(暗号化パスワード)による認証を要求します。
PASSパスワードを送信します。
CAPAオプションや拡張機能のコマンドなど、対応機能を表示します。
STLSPOP3 から POP3S に切り替えるための問い合わせを送ります。
STATメールボックス内メッセージの合計数とバイト数の表示を要求します。
LISTメールボックス内全メッセージの一覧表示または指定番号メッセージのサイズを要求します。
UIDLUIDL(Unique ID Listing、通し番号ではない)によるメッセージのリストを要求します。
RETR指定番号メッセージの表示(受信)を要求します。
TOP指定番号メッセージのヘッダとボディの指定行数の表示(受信)を要求します。
DELE指定番号メッセージの削除を要求します。
RSET処理のリセットを要求します。主に削除要求の解除に利用されます。
NOOP何も要求しないダミーコマンドです。サーバが動作していれば必ず +OK が返ります。
LAST最後にアクセスしたメッセージの番号を要求します。
QUIT接続の終了を通知します。

XMail の SMTP サーバが対応する SMTP コマンドは以下の通りです。SMTP コマンドの詳細は RFC 2821 にあります。

HELO標準 SMTP セッションを開始します。
EHLO拡張 SMTP セッションを開始します。
STARTTLSSMTP から SMTPS に切り替えるための問い合わせを送ります。
AUTH拡張 SMTP セッションの場合に認証方法を通知します。
MAIL FROM:発信者を通知します。
RCPT TO:受信者を通知します。
DATAメッセージ送信の開始を通知します。
RSET処理の中断を通知します。
VRFY受信者が存在するかどうかを確認します。
ETRNスプール内の特定キューにあるメッセージの表示(受信)を要求します。
NOOP何も要求しないダミーコマンドです。サーバが動作していれば必ず +OK が返ります。
HELPヘルプメッセージを要求します。
QUIT接続の終了を通知します。
  Top ↑

XMail のスプールデザイン(全 OS 共通)


準備中です。

  Top ↑

ユーザアカウントの一括登録(全 OS 共通)


XMail 付属のコマンド mkusers(mkusers.exe) は XMail のユーザアカウント(メーリングリストアカウントを除きます)を標準入力または所定フォーマットのテキストファイルから得られた情報をもとに一括して作成するためのコマンドラインユーティリティです。

mkusers コマンドは以下のように実行します(ファイルからの入力の場合)。

mkusers -f (ファイル名) -r (MailRoot ディレクトリ) -s (メールボックスサイズ) -i (ユーザ ID の開始数) -m

mkusers コマンドが処理できるテキストファイルは以下のフォーマット行の繰り返しでなければなりません。

(ドメイン名);(ユーザ名);(パスワード);(実名その他);(ホームページ URL) (改行)

コマンドの実行により、-r オプションで指定されるディレクトリ内に mailusers.tab ファイルが作成され、そのサブディレクトリとしてドメイン名やユーザ名のディレクトリとメールボックス用のディレクトリとが作成され、ユーザディレクトリ内には user.tab ファイルが作成されます。すなわち、MailRoot の内部に必要なすべての構造が出来上がります。

ただし、既存の mailusers.tab ファイルや関連ディレクトリが存在すると mkusers コマンドは処理を実行しません。よって不注意による既存環境の上書きを行う心配はありません。一方、既存環境を上書きしたい場合は動作中の XMail を停止したうえでそれらを削除するか移動しておかなければなりません。

なお、mkusers コマンドは domains.tab は作成しないので、処理の前後に手作業でそれを作成する必要があります。

  Top ↑

sendmail コマンド(全 OS 共通)


XMail 付属のコマンド sendmail(sendmail.exe) は、UNIX 標準のメールサーバである sendmail の機能の一部を置き換えるためのコマンドです。ただし、この sendmail はローカルの XMail に対してしかメッセージを送信できません。

この sendmail を使えば、たとえば UNIX の sendmail 用に書かれたメール送信用の CGI スクリプトなどをほとんど修正することなく Windows 環境で動作させることができるようになります。

以下のスクリプトは UNIX の sendmail 用に書かれたある有名なショッピングバスケット CGI のメール送信部分ですが、sendmail のパスを指定し直すだけでまったく問題なくスクリプトが動作することを確認しています。

$sendmail = 'c:/usr/xmail/sendmail.exe';

(省略)

if (!open(OUT,"| $sendmail -t")){&error('エラー','処理できません.');}
print OUT "Errors-To: $mailto\n";
print OUT "To: $mailto\n";
print OUT "From: $email\n";
print OUT "$subject\n";
print OUT "Content-Transfer-Encoding: 7bit\n";
print OUT "Content-Type: text/plain\; charset=\"ISO-2022-JP\"\n\n\n";
print OUT "(メッセージのボディ部分)";
close(OUT);

XMail 付属の sendmail の詳細については "Readme.txt(英文)" ページの [sendmail] の項を参照してください。

  Top ↑

1台のコンピュータに複数の XMail をセットアップ(Windows)


XMail はその 1.16 から 1 台のコンピュータに複数のサービスを共存させることが可能になりました。これにより、たとえば同じコンピュータ上で公開サービスのほかに私的なメールサービスをセットアップすることができます。

複数の XMail を 運用する場合の注意点と(手作業の場合の)作業概要は以下の通りです。

  1. XMail パッケージを既存のものとは別の場所にインストールします。

  2. XMail の本体プログラムである xmail.exe を任意の名前にリネームします。たとえば xmail2.exe にリネームします。ここで、そのファイル名部分(xmail2)は Windows のシステムサービス名になるので注意してください。

  3. レジストリエディタなどを使用し、レジストリキー HKEY_LOCAL_MACHINE\SOFTWARE\GNU\xmail2\ を作成します。ただし、xmail2 の部分は前記 2. のファイル名に合わせます。

  4. 3. のキーの値として MAIL_CMD_LINEMAILROOT とを登録します。これらは 1 つ目の XMail の場合を参考にできますが、サービスポートの衝突を避けるため、MAIL_CMD_LINE においてコントロールポート(デフォルト TCP/6017)やFINGER ポート(同 TCP/79)、POP ポート(同 TCP/110)、SMTP ポート(同 TCP/25)のそれぞれを XMail 同士で異なる指定にします。たとえば、-Cp 16017 -Fp 8079 -Pp 8110 -Sp 8025 というような指定を追加します。

  5. コマンドプロンプトを開き、2. による本体プログラム(xmail2.exe)がある場所で xmail2 --install-auto を実行します。これでプログラム名(xmail2)と同じ名前のシステムサービスがコントロールパネルに登録されます。

  6. ドメインの登録やユーザ/リストの登録など、その後の作業は 1 つ目の XMail の場合と同じです。

ただし、実際の作業は適当な設定ツールを利用することをすすめます。たとえば、XMailCFG はそのようなセットアップがブラウザから実行可能です。

  Top ↑

XMail のインストール解除


インストール/セットアップ済みの XMail を削除するには以下のようにします。


■FreeBSD/Linux/OpenBSD/Solaris でインストール解除

準備中です。


■Windows でインストール解除

Windows 環境では、XMail のインストール解除は以下のように行います。

  1. XMail が動作中であれば [コントロールパネル] - [サービス] パネルまたは net stop コマンドなどでそれを停止します。

  2. xmail.exe が存在する場所でコマンドプロンプトを開き、以下のようにコマンドを実行します。

    xmail   --remove

    これで XMail サービスがシステムから削除されます。なお、remove オプションの前にあるハイフンは 2 個です。

  3. XMail の関連ファイルをフォルダごと削除します。ただし、MailRoot\domains 以下にはユーザのメールボックスなどが存在するので、もしそれらを残す必要があるなら作業前にバックアップを行ってください。

  4. レジストリ情報の一部が残ったままでもとくに問題はありませんが、気になるならレジストリエディタを使って HKEY_LOCAL_MACHINE\SOFTWARE\GNU\XMail 以下をすべて削除します。


  Top ↑
Copyright(c) xmail.dojo.jp.
All rights reserved.