		fml を qmail とともに使う場合

				Ken'ichi Fukamachi

------------------------------------------------------------
1	qmail の動作についての注意点
1.1	メールを受ける時
1.2	配送についての注意

2	Set up mailing lists
2.1	qmail-users (owner は fml など or 自由)
2.2	:include: (だめ)
2.3	~alias/.qmail-list スタイル (owner は alias)
2.4	elena というユーザをつくって ML を運用する

Appendix A	特殊な話題
Appendix A.1	VERPs
Appendix A.2	listname-command 型のコマンドアドレスを使う
------------------------------------------------------------


1	qmail の動作についての注意点

参考: 簡単なqmail上でのfmlの設定の仕方のメモがあります。大雑把な流れが
掴めます。
	http://www.y-min.or.jp/~nob/qmail/qmail+fml.html

1.1	メールを受ける時

qmail のアドレス書き換えの理論は他のメールサーバとかなり異なります。拡
張アドレスと呼ばれるアドレスは慣れないと分かりにくいので注意が必要です。

qmail ではそのマシンにアカウントがあればそのユーザへ送られます(root は
例外です)。sendmail の ~/.forward に相当する ~/.qmail などが使えます。

sendmail の /etc/aliases では postmaster や www-admin のようなアカウン
トのないユーザへのフォワーディングが行なえます。qmail ではアカウントの
存在しないユーザについては /var/qmail/alias/.qmail-$USER を使います。
postmaster は/var/qmail/alias/.qmail-postmaster にフォワード先を書き込
みます。

qmail では他のメールサーバと異なり、ユーザ fml の拡張アドレス 
fml-elena というものを自由に作ることができます。fml-elena@あなたのホス
ト なら ~fml/.qmail-elena というファイル中のルールに従って転送処理が行
なわれます。elena@あなたのホスト というアドレスを使うためには一工夫必
要です（後述）。

fml でも .qmail-elena などのファイルを使ってＭＬを作ります。makefml
newml 時にもそれらの .qmail-* ファイルの見本が作成されます。それらのファ
イルを利用して下さい。

1.2	配送についての注意

qmail (qmail-smtpd) は SMTP でメールをうけとる祭に、 
/var/qmail/control/rcpthosts に書かれているホストあてのメイルのみを受
け取ります。

fml は SMTP でメールサーバと通信し、他のドメインへの配送処理を qmail 
へ依頼します。よって、ＭＬの記事の配送をそのホストで行うなら qmail の
設定を変更する必要があります。やり方は qmail の FAQ などを見ると出てい
ます(適当にWWWからたどるか tcp-env でサーチなどしてみると見つかるでしょ
う)。要点は

   localhost の通信なら RELAYCLIENT を空文字にして rcpthosts を無効にする
   外からのSMTPでは rcpthosts だけを受け取る

ということです。

ここでは tcp wrappers を使っている場合の説明をします。tcpserver の設定
については qmail のドキュメントを見て下さい。

* inetd.conf の smtp の行を次のようにする:

smtp stream tcp nowait qmaild /usr/libexec/tcpd	/var/qmail/bin/tcp-env /var/qmail/bin/qmail-smtpd

* % kill -HUP `cat /var/run/inetd.pid` などとし inetd.conf を inetd に 
reload させる。

* リレーさせたいホストからのSMTPの場合は環境変数 RELAYCLIENT を空文字
列に定義して、qmail-smtpd を実行します。この場合 qmail-smtpd は 
rcpthosts を無視します。例えば 10.0.0.1 がこのホストのIPアドレスだとす
ると /etc/hosts.allow に

tcp-env: 10.0.0.1, 127.0.0.1: setenv = RELAYCLIENT
tcp-env: ALL

などのように書きます(注意: first match です)。ここの ALL は 10.0.0.1,
127.0.0.1 以外についてもSMTPでメールが送られてきたら受け付けて 
qmail-smtpd に渡すためです。詳しくは qmail のマニュアルと FAQ を読むと
よいでしょう。

2	Set up mailing lists

elena メーリングリストを作ることを考えます。いろいろなパターンが考えら
れるので以下では一通り説明します。最初の qmail-users を使うのが最も汎
用的なのでしょう。

2.1	qmail-users (owner は fml など or 自由)

まず makefml newml elena を実行します($ML_DIR/elena 以下に作成されると
しましょう)。ここで $ML_DIR は /var/spool/ml などです。この時、qmail 
で使うファイルの見本が $ML_DIR/etc/qmail/alias と 
$ML_DIR/etc/qmail/users に作られます。

次に、root になって作業します。
$ML_DIR/etc/qmail/users を /var/qmail/users/assign にマージして下さい。
elena ML の場合 /var/qmail/users/assign に

   +elena:fml:100:1000:/var/spool/ml/etc/qmail/alias:-:elena:
   .

のような内容を付け加えます。

そして /var/qmail/bin/qmail-newu を実行します。これは sendmail でいえ
ば newaliases の実行に相当する操作です。

注意: 

fml ではなく自分のアカウントにすれば、自分の権限のＭＬになります。
例えば次の例を考えましょう。

   +:fml:65535:10:/var/spool/ml/etc/qmail/alias:-::
   +mikoto:mikoto:100:10:/home/mikoto:-::
   .

mikoto 宛のメールは mikoto が受け取り、それ以外の宛先は全部 ML 用にな
ります。詳しくは マニュアル qmail-users(5) を参照してください。

2.2	:include: (だめ)

:include: スタイルは qmail では使えません。qmsmac というソフトをつかう
と :include: スタイルを使えるようになるそうです(not tested)。といいつ
つ qmsmac は 1998/04に obsolete になりました。これからは fastforward 
というソフトを使うんだそうです。テストしてないので知りません:)
qmsmac ではprogram は動かないのでだめです。qmsmac は何にもマッチしなかっ
た時 ~alias/.qmail-default からよばれます。なので一種の ~alias (次の節)
です。

    /var/qmscma/man/cat5/aliases.0
    
    MAJOR COMPATIBILITY ISSUES
           sendmail's handling of quotes and backslashes violates RFC
           821  and  RFC  822,  and  is not supported by qmsmac.  The
           qmail-alias delivery mechanism lets each user manage  sev-
           eral  addresses,  so there is no need for a special syntax
           to get around forwarding.
    
           sendmail and smail support file and program deliveries out
           of  /etc/aliases  and  :include:  files.  qmsmac does not.
           You can use the delivery  mechanism  described  in  qmail-
           alias(8) to set up secure file and program deliveries.

2.3	~alias/.qmail-list スタイル (owner は alias)

ユーザ alias を仮想的に作り alias のホームに .qmail-list スタイルでＭ
Ｌを作り制御します。

まず "makefml newml elena" を走らせる。そして 
/var/spool/ml/etc/qmail/alias/ の下の見本ファイル .qmail-elena* 群を ~
alias/ の下へ移す。ファイルのオーナーも alias にします。

	~alias/.qmail-elena
	~alias/.qmail-elena-ctl
	~alias/.qmail-elena-admin
	~alias/.qmail-elena-request

を作ります。それぞれの中身は

~alias/.qmail-elena
|/usr/local/fml/fml.pl /var/spool/ml/elena

~alias/.qmail-elena-ctl
|/usr/local/fml/fml.pl /var/spool/ml/elena --ctladdr

~alias/.qmail-elena-admin:
あなたのメールアドレス

~alias/.qmail-elena-request:
あなたのメールアドレス

つまり include や include-ctl の中身と同じです。ただし " は要らない。

また makefml や手動での管理を前提にするなら常に alias に switch user
(su) しないといけません。つまりML用の特別なアカウントが alias です。

2.4	elena というユーザをつくって ML を運用する

elena というユーザを作ります。/var/spool/ml/elena は elena の持ち主に
します。

~elena/.qmail
|/usr/local/fml/fml.pl /var/spool/ml/elena

~elena/.qmail-ctl
|/usr/local/fml/fml.pl /var/spool/ml/elena --ctladdr

~elena/.qmail-admin:
あなたのメールアドレス

~elena/.qmail-request:
あなたのメールアドレス

Appendix A	特殊な話題

Appendix A.1	VERPs

	../Japanese/errormails/

Appendix A.2	listname-command 型のコマンドアドレスを使う

/var/qmail/alias/.listname-default を応用すると、elena ML に 
elena-help というコマンドを送ると elena-ctl に 'help' を送るのと同じ
ことができます。.qmail-elena-default は newml 時に見本が生成されます。
このファイルを /var/qmail/alias/ に入れた上で $USE_DOT_QMAIL_EXT = 1; 
を設定するとこの listname-command@domain が使えるようになります。
嬉しいかどうかは知りませんが…

