		virtual domain の設定

------------------------------------------------------------
1	概要
1.1	makefml に設定を読み込ませるやりかた

2	virtual domain
2.1	２つの virtual domain で同じＭＬを作る

Appendix A	postfix での virtual domain 設定

Appendix B	sendmail
Appendix B.1	CF's USERTABLE_MAPS の例
------------------------------------------------------------


1	概要

バーチャルドメインにまつわる諸問題は、fml の設定というより、メールサー
バの問題です。しかし、fml のインストールやアップグレードの際に、手間を
はぶく工夫の余地はあります。

バーチャルドメインの場合、一般に一台のホストに複数の(それぞれのドメイ
ン用の) fml がインストールされています。例:

    virtual-1
    	/usr/local/fml-virtual-1/
    	/var/spool/ml-virtual-1/
    
    virtual-2
    	/usr/local/fml-virtual-2/
    	/var/spool/ml-virtual-2/
    
    virtual-3
    	/usr/local/fml-virtual-3/
    	/var/spool/ml-virtual-3/

例えば /usr/local/fml-virtual-1/ が、virtual-1 用の実行ファイル群
/var/spool/ml-virtual-1/ は virtual-1 用のＭＬのスプールになります。こ
れは、ディスクの無駄のようにみえますが、わかりやすいものです。

一方 /usr/local/fml は共用し、/var/spool/ml-virutla-1,2,3 を使う方がディ
スク消費は少ないです。しかし makefml を使う際には少し工夫が必要になり
ます。

1.1	makefml に設定を読み込ませるやりかた
See also: makefml 3.4 

makefml install を実行すると対話モードになるので、各

      makefml -f /some/where/virtual-domain-1 install
      makefml -f /some/where/virtual-domain-2 install

-f の引数は /usr/local/fml/.fml/system というファイルです。例:

      makefml -f /usr/local/fml-virtual-1/.fml/system install
      makefml -f /usr/local/fml-virtual-2/.fml/system install
      makefml -f /usr/local/fml-virtual-3/.fml/system install

2	virtual domain

2.1	２つの virtual domain で同じＭＬを作る

例:

       info@domain1.org
       info@domain2.org 

1. fml を２つインストールする。

make install する時に

一つは

       DOMAIN NAME               [domain1.org] 
       FQDN                      [domain1.org] 
       EXEC FILES DIRECTORY      [/usr/local/fml] 
       TOP LEVEL ML DIRECTORY    [/var/spool/ml] 

もう一つを

       DOMAIN NAME               [domain2.org] 
       FQDN                      [domain2.org] 
       EXEC FILES DIRECTORY      [/usr/local/fml2] 
       TOP LEVEL ML DIRECTORY    [/var/spool/ml2] 

にしてインストールする。２つめを作る時にロックが気になるかも知れないが、
インストール時にロックをしないで進めるには

	% makefml -U install 

とすると lock しない。

2. それぞれのfmlでＭＬをつくる

info@domain1.orgをつくる

	% /usr/local/fml/makefml newml info

info@domain2.orgをつくる

	% /usr/local/fml2/makefml newml info

3. /etc/aliases にそれぞれの設定を書く

    	info: :include:/var/spool/ml/info/include
    	... 略  ...
    
    	info-domain2: :include:/var/spool/ml2/info/include
    	... 略  ...

どっちのドメインの設定かわかりやすいように

    	info-domain1: :include:/var/spool/ml/info/include
    	... 略  ...
    
    	info-domain2: :include:/var/spool/ml2/info/include
    	... 略  ...
    ~.q
    
    などもいいかもしれない。
    
    4. MTAに info@domain2 を info-domain2 に読み変える設定を付け加える。
    
    [postfix]
    
    /etc/postfix/virtual.pcre で行なう。
    #.xref virtual-domain-postfix-example
    
    [sendmail]
    
    例えば CF の usertable
    
Appendix A	postfix での virtual domain 設定

    /etc/postfix/virtual:
    
    	elena@domain-1.org	elena-1
    	elena@domain-2.org	elena-2
    
    /etc/aliases:
    
    	elena-1: :include:/var/spool/ml-virtual-domain-1/elena/include
    	elena-2: :include:/var/spool/ml-virtual-domain-2/elena/include

Appendix B	sendmail

	http://www.sendmail.org/virtual-hosting.html

Appendix B.1	CF's USERTABLE_MAPS の例

CF については CF のマニュアル (doc/MANUAL.jpn)をよく読んで下さい。
読むべきところは USERTABLE_MAPS です。

* .def ファイルの変更点

    -##USERTABLE_MAPS='local=hash:/etc/ut.local \
    -##                ut.dom1=btree:/etc/ut.dom1:error \
    -##                ut.dom2=dbm:/etc/ut.dom2 \
    -##                ut.dom3=nis:usertable3'
    +USERTABLE_MAPS='fml.org=hash:/root/test/fml'
    +
    ~.q
    
    * /root/test/fml
    
    fukachan:maildrop       fukachan@enkai.org

* db を作る

    # makemap hash /root/test/fml.db < /root/test/fml

* sendmail test mode

    % sendmail -bt -C virtual.cf
    > 3,0 fukachan@fml.org
    rewrite: ruleset   3   input: fukachan @ fml . org
    rewrite: ruleset  96   input: fukachan < @ fml . org >
    rewrite: ruleset  96 returns: fukachan < @ fml . org >
    rewrite: ruleset   3 returns: fukachan < @ fml . org >
    rewrite: ruleset   0   input: fukachan < @ fml . org >
    rewrite: ruleset  91   input: fukachan < @ fml . org >
    rewrite: ruleset  91 returns: fukachan @ enkai . org @ < @ fml . org >
    rewrite: ruleset  97   input: fukachan @ enkai . org
    rewrite: ruleset   3   input: fukachan @ enkai . org
    rewrite: ruleset  96   input: fukachan < @ enkai . org >
    rewrite: ruleset  96 returns: fukachan < @ enkai . org >
    rewrite: ruleset   3 returns: fukachan < @ enkai . org >
    rewrite: ruleset   0   input: fukachan < @ enkai . org >
    rewrite: ruleset  88   input: < smtp : enkai . org > . fukachan < @ enkai . org >
    rewrite: ruleset  88 returns: $# smtp $@ enkai . org . $: fukachan < @ enkai . org >
    rewrite: ruleset   0 returns: $# smtp $@ enkai . org . $: fukachan < @ enkai . org >
    rewrite: ruleset  97 returns: $# smtp $@ enkai . org . $: fukachan < @ enkai . org >
    rewrite: ruleset   0 returns: $# smtp $@ enkai . org . $: fukachan < @ enkai . org >


		INDEX

