[PREVIOUS CHAPTER] [NEXT CHAPTER]

3 Version Up と互換性について

    3.1	how to version up

    makefml を使ってインストールしてもらうのが確実です。makefml の使い方に
    ついては INSTALL.jp というファイルを見て下さい。

    3.2	新しい機能を有効にするには？

    通常新しい機能・オプションは明示的に指定しない限り動きません。
    設定変更は config.ph で行ないます。詳しくは INSTALL.jp を参照。

    version up して以前になかった機能を使うなら必要な変数を op.jp などから
    探し設定を付け加えるます。すでにあるが使われていない機能を新たにONにす
    るなら config.ph をサーチして値を1にするとか適当な設定を書くなどします。

    基本的な変数であれば makefml で設定できます。makefml との共存やメイン
    テナンスを考え $DIR/cf をいじり config.ph を再生成するようにするのが前
    提となっています。"makefml config" を使わないなら cf をいじらずに
    config.ph を常に手動編集することになります。

    3.3	config.phの互換性について

    FML では config.ph という設定ファイルが振舞いを決めます。
    config.ph にも version という概念があります。

    	$CFVersion

    という変数で指定されています。現在の version は 3.x です。version が異
    なる場合、ほとんどの変数について自動的に補正が加えられるため昔作った
    config.ph をそのまま使っても大丈夫なようになっています。

    config.ph でちょっと複雑な HOOK をかけている場合はちょっと注意がいるで
    しょう。互換性のために実体は別でもその関数名が残っていることは多いです
    が、HOOKで使う関数や変数全部が今でもサポートされているとは限らないから
    です。

    できるだけ互換性を保つように作られていますが

        config.ph の $CFVersion が 3

    でなおかつ

       『$MAIL_LIST と $CONTROL_ADDRESS が違う場合の $MAIL_LIST の挙動』

    の時は従来と異なり『配送専用』です。ここだけは互換性がありません。しか
    し

    	$MAIL_LIST と $CONTROL_ADDRESS が同じ場合は
    	昔と同じで配送用のアドレス $MAIL_LIST で
    	コマンド(# command の形)を受け付けます。

    従来 $MAIL_LIST != $CONTROL_ADDRESS の場合にヘッダやHELP等では「コマン
    ドは $CONTROL_ADDRESS へ送ってね」と書いてあるにも関わらず $MAIL_LIST
    でもコマンドは受けられたという変な挙動がありました。これを互換性と解釈
    するかバグと解釈するかは微妙ですが、FML 2.1 以降はアクセス制御ルールの
    導入時に上記の解釈になりました。

    ______________________________________________________
    [比較表]

    	elena		配送専用
    	elena-ctl	コマンドだけ

    になります。2.1 リリース以前(2.1 Gamma series)では

    	elena		配送もコマンドも処理する
    	elena-ctl	コマンドだけ

    のように振舞いました。elena でのコマンドの「配送とコマンドの切り分け」
    はメール本文が"# command"であるか？否か？で決めています。

    2.1 以降でも配送用とコマンド用のアドレスが同じ場合は

    	elena		配送もコマンドも処理する

    になります。この場合「コマンドなのか？否か？はメール本文が"# command"
    であるか？否か？」で決まります。これがもともとの hml 1.6 互換のスタイ
    ルです。
    ______________________________________________________

    3.4	互換性のためのライブラリ

    cf/config という生成コマンドで作るようになった時 $CFVersion = 2; とい
    う version が与えられました。さらに、それ以前の手動編集のみだった時代
    の config.ph を使っている場合($CFVersionがない時代)は 1 と定義されてい
    ます。

    	$COMPAT_CF1 = 1;

    がセットされているか $CFVersion が2より小さい場合は自動的に

    	libcompat_cf1.pl

    が dynamic loading されます。また 3 以下と判定された場合は

    	libcompat_cf2.pl

    が自動的にローディングされます。

    3.5	FML 1.6 より前からの移行について

    1.6では、基本的なデータ構造を call by reference 用に書き直したので、
    いままでの SMTP_OPEN_HOOK 等の カスタマイズはそのままでは反映されません。
    libcompat.pl にBackward compatibility のためのコードがあります。
    昔の設定を変えたくないなら、config.ph に

    	$COMPAT_FML15 = 1;

    と書くと複雑なフックをしかけていない限り compatible にできます。
    コードの都合上どうしても実現できないカスタマイズもありえます_o_

    昔できたことは今の実装でも必ずできるのでこのドキュメントを参照してみて
    下さい。

    3.6	FML 2.0 との互換性 (get コマンド)

    	$COMPAT_FML20 = 1;

    これに関係する機能は

       現在の get コマンドは resend ですが、これを昔のもの(2.0以前)に戻す。

    くらいです。なお前述の $MAIL_LIST の非互換性は 2.1 gamma → 2.1 delta
    の時に導入されました。
    3.3

    3.7	hml 1.6 との互換性

       0	members や log file 等はそのままでよい

       1 	fml をインストールし

       2 	makefml か手で config.ph で
    	$MAIL_LIST と $CONTROL_ADDRESS の内容を同じにする。

    これで同じになります。whois などの機能については似たような機能はあって
    も同じものはないので御了承下さい。基本的に移行は簡単でもすべての機能の
    上位互換なわけではありません(security holeもあるのでそんな実装はするつ
    もりはなかった)。

[PREVIOUS CHAPTER] [NEXT CHAPTER]