<!--
   $FML$
-->

<chapter id="virtualdomain">
	<title>
	バーチャルドメインの取り扱いについて
	</title>

<para>
できるだけ fml 全体で統一的に扱えるようにするには
virtual domain をどう扱うかは難しい問題です。
</para>

<para>
問題その１は、makefml などでバーチャルドメインであることを、どう表現す
るか？です。そして問題その２は、場変(ホストを新しくする、ドメインを変
更する)場合にも簡単に設定変更ができるにはどうすればよいのか？というテー
マです。
</para>

<para>
結論を先にいえば、「ユーザ＠ドメイン」形式の文字列をＭＬ名に使えばデフォ
ルトのドメインかバーチャルドメインかに関わらず「fml がよきにはからう」
ようになっています。ただ、ヒントは必要なので、etc/fml/virtual というファ
イルに設定を書くことにしています。このファイルは main.cf の 
virtual_maps という変数で定義されているファイルです。
</para>


<sect1 id="virtualdomain.fml8.overview">
	<title>
	概要: &fmldevel; におけるバーチャルドメインの取り扱い
	</title>

<para>
最初に一回 
<link linkend="install.virtual">
/etc/fml/virtual を手で編集
</link>
してください。これだけで OK です。あとは fml がよろしく頑張ります。た
だし、いろいろな操作でＭＬ名を「ユーザ＠ドメイン」形式で指定することに
注意して下さい。
</para>

<para>
デフォルトのドメインの場合には、＠ドメインが不要となります。
つまり、この場合に限り &fml4; と同じ形式に戻るというわけです。
</para>

<para>
例えば、コマンドの操作はＭＬではなく、ＭＬ＠ドメイン名を使うことになり
ます。つまり
<screen>
makefml newml	ML@virtualdomain
makefml add	ML@virtualdomain	address
makefml bye	ML@virtualdomain	address
</screen>
などといった具合いになります。
</para>

<para>
なお、CGI での操作ではドメイン名の指定は不要です。これは、config.cgi 
生成時にドメインがスクリプト中に埋め込まれているためです。画面にもドメ
イン名が出ているはずですし、そもそも URL にドメイン名が入っている
<screen>
http://lists/~fml/cgi-bin/fml/$domain/admin/config.cgi
</screen>
ので、どのドメインの操作をしているのかはわかっているはずです。
</para>

<warning>
<para>
なお、CGI の URL にドメイン名が入っているのは、操作する人にとって分か
りやすいようにという配慮であって、URL を元にドメイン名を決めているわけ
ではありません。ＭＬ名やドメイン名は newml 時に作成される .cgi スクリ
プトにハードコーディングされています。
</para>
</warning>

</sect1>


<sect1 id="virtualdomain.movement">
	<title>
	ケーススタディ: ひっこし / 場変 はどうするの？ (書きかけ_o_)
	</title>

<!--
   XXX-TODO 引越しねたが書きかけ つづきを書け！
   レシピ化を！
-->

<para>
ホストを新しくする？ ドメインを変更する？ 他には何かある？
</para>

<para>
ドメインの変更は考えなくても良いか？
ドメインの変更なんてそんなにあるか？
変更するならＭＬも作りなおすような気がする（嘘？）。
いずれにせよ、ドメインの移行はいっぱい直すところが
あるので、そんなに簡単じゃない。
</para>

<para>
ホストを新しくするか？
うむ、これは割とありそうだ。
</para>

<para>
解決しないといけない問題はディレクトリのパスが変わること。
/etc/fml/ の変更だけで解決できないか？

いや、include ファイルがこんな風になっているが、
<screen>
"| /some/where/libexec/distribute elena@fml.org"
</screen>
書式変更が必要ではないのか？
</para>

<para>
4.0 から 8.0 へは？
一応、fml.pl は互換性のため fml.pl $DIR でも可で、
libexec/distribute libexec/command など新しいコマンドは
ＭＬ名を引数にとるということにしてある。
</para>

</sect1>


</chapter>
