<!--
   $FML: chapter.sgml,v 1.3 2005/07/20 10:37:45 fukachan Exp $
   $jaFML: chapter.sgml,v 1.2 2003/04/15 14:51:47 fukachan Exp $
-->

<chapter id="virtualdomain">
	<title>
	Virtual Domain
	</title>

<para>
2003/10: We enhanced fml8 to handle virtual domains as same way as
default domain.
</para>

<para>
It is difficult to handle virtual domains and the default domain in
the same way.
</para>

<para>
One proper enhancement is using "user@domain" form for the ML name as
an argument of commands. For example, for a virtual domain, use
makefml like this
<screen>
% makefml newml mlname@virtualdomain
</screen>
The following two syntaxes are acceptable for the default domain.
<screen>
% makefml newml mlname@defaultdomain
% makefml newml mlname
</screen>
Fml treats these properly as could as possible. But fml needs some
hints such as ml home directory information for each domain. You need
to prepare /usr/local/etc/fml/ml_home_prefix file for a hint on
mappping between domain and directory.
</para>

<para>
This file name is defined as $ml_home_prefix_maps (formerly
$virtual_maps) in main.cf.  $virtual_maps is obsolete but effective
now for compatibility.
</para>

<para>
To handle $ml_home_prefix_maps, you can use "makefml newdomain" and
"makefml rmdomain".
</para>


<sect1 id="virtualdomain.fml8.overview">
	<title>
	Overview: virtual domain handling in &fml8;
	</title>

<para>
It is easy in use. 
For the first time to use a virtual domain, 
run "newdomain" command to add {domain => directory} relation to
<link linkend="install.virtual">
ml_home_prefix_maps
</link>
(precisely primary_ml_home_prefix_map).
</para>

<para>
After that, you can use "user@domain" form in makefml arguments 
in handling virtual domains.
<screen>
makefml newml	ML@virtualdomain
makefml add	ML@virtualdomain	address
makefml bye	ML@virtualdomain	address
</screen>
Instead, for the default domain, 
definitions in ml_home_prefix_maps is not needed
and either of user and user@domain is accpetable.
</para>

<para>
When you use CGI, you need not to use user@domain syntax 
since config.cgi knows the domain name the cgi handles.
<screen>
http://lists/~fml/cgi-bin/fml/$domain/admin/config.cgi
</screen>
</para>

<warning>
<para>
The domain name is hard-coded within config.cgi since makefml injects
the domain name in creating config.cgi when "makefml newml" runs.
That is, "config.cgi" does not resolve its domain by the URL.
</para>
</warning>

</sect1>


<sect1 id="virtualdomain.movement">
	<title>
	Case study: movement ?
	</title>

<para>
*** SORRY, NOT YET WRITTEN ***.
</para>

</sect1>


</chapter>
