[PREVIOUS CHAPTER] [NEXT CHAPTER]
7 おもに fml そのもの

7.1	user@domain でないと自動登録できない
../how_to_subscribe 4.15

そういうものです。

makefml を使えば登録できます。


7.2	log ファイルに残る 550... みたいな数字は何?

Sendmail からのエラーメッセージの記録です。メッセージは [45]\d\d 形式
です。ログの前後を調べて何が原因か調べてみて下さい。


7.3	WARNING: UNIX FROM Loop

メールがMLにまた帰ってくる場合があります(ループ)。例えば自動登録の時に 
ML本体とかを間違って登録した場合や、同じメールをそのままMLへ送り返
してくるMTAが走っている場合などです。例えば『/usr/sbin/sendmail -bd -t 
みたいな間違った設定をしたせいで 無限ループ事件というのが先日おきた』
のを ふせぐための コードです。

この警告は自分自身に同じメールが返ってきた時に MAIL FROM: $MAINTAINER 
だった時に出ます。

ふつうは MAINTAINER に登録するものは ML-request とか ML-admin みたいな
ものを別に作って登録するという暗黙の前提をしてます。そのため自分でML
にメールをだして 『自分 == $MAINTAINER』の場合もこの loop check にひっ
かかります。よって、MAINTAINER は -request とかにするのがおすすめです。
なお、

	$NOT_USE_UNIX_FROM_LOOP_CHECK = 1; (default 0)

とすると、このループチェックメカニズムを使わなくなります。


7.4	Try mci:prog since smtp connections cannot be opened

FMLのデフォールトではIPCでMTAに配送をまかしています。しかしエラーでど
うしてもソケットが張れなかった場合にはあきらめてプログラムを起動して使
います。あまりにもこのエラーが頻繁に出るようならIPCをつかわないライブ
ラリに変えてみてください。そのためには config.ph で

	$Envelope{'mci:mailer'} = 'prog';

とします。プロセス間通信ではなくて sendmail を直接実行します。
この時実行するプログラムは

	$SENDMAIL (default "/usr/sbin/sendmail")

で定義されたプログラムです。インストール時に自動的に探してこの変数はセッ
トされているとはおもいますが、念のためチェックして下さい。なお 
qmail-smtpd や exim も動かそうと努力します。


7.5	The flock() function is unimplemented ...

0	perl がちゃんとコンパイルされていない
1	flock() がないOS
2	flock を使わないようにコンパイルされている?

あたりかな?perl をコンパイルしなおすか、

	$USE_FLOCK = 0;

にしてみてください。

	メニュ → オプション → USE_FLOCK → n


7.6	503 Need RCPT (recipient) 

有効な送り返し先のアドレスがないためにでるはずです。該当する人から DM 
をもらってみると分かるのではないかと思います。例えば

	ヘッダのどっかが一行あいてる
	(いいかげんなsendmailが経路のどこかにいるとか)
		とか
	From: のかたちが 特殊
		とか
	Reply-to: (なにもアドレスなし)になっている
		とか

822でみとめているアドレス形式は もっと いろいろかけるんですが、実用
的には sendmail.cf のデフォールトのどっちかの形 つまり 4.4 BSD の 
/usr/share/doc/smm/08.sendmailop/op.me にかいてある形式

	Full Name <address>
	address (comment)

を仮定しています。#完全な822サポートはすごくたいへんなので…てぬき

だから
	From: ("< uja ") <uja@uja.baycity.jp> 

とかは間違ってないんだけど… うまく parsing できないということがありえ
ますね…


7.7	fml.pl はうごくのに msend.pl とか cron.pl とかはちゃんと動かない

そのマシンで sendmail は動いてますか? 動いてないと log に 
Smtp:connect:なんとか とかエラーがでるんじゃないかとおもいます。

メールを受けて fml.pl を起動するマシンと UNIX の Shell サービスを提供
しているマシン、つまり msend.pl を動かすマシンが違う場合がありえます。
例えば RIMNET。


7.8	まとめおくりの設定を手でしたらだめ?

あまりよくありません。makefml かコマンドで設定して欲しいです。

解説:

   Elena@Baycity.asia  matome   1u

で、実はこれは古いフォーマットなのですが、fml.pl とか libfml.pl は理解
できます。普通メール経由で まとめおくりの命令を与えたら、古いフォーマッ
トになるはずがないので、

   Elena@Baycity.jp  m=1u

となっていなくてはいけない msend.pl は仮定しています。このときファイル
(members とか actives)は
#.FML HEADER
# NEW FORMAT FOR FURTHER EXTENSION
# e.g. fukachan@phys r=relayserver m=3u s=skip 
# r= relayserver
# m= matomeokuri parameter is time and option
# s= skip. can post from this address but not delivered here.
#
# the same obsolete format is compatible with new format and as follows:
# e.g. fukachan@phys relay-server matome 3u
#.endFML HEADER
Elena@Baycity.jp  m=1u

こうなります。そして、msend.pl はこのフォーマットだけを理解します。

また配送リストだけをいじって msendrc に記入しないと

	WARNING: /usr/local/ml/hitomi/MSend/MSendrc filesize=0 O.K.?

が出るかも知れません(最初の一人の時だけしか該当しません)。


7.9	EUC のファイルを perl はバイナリと認識する?

ファイルを送り返すルーチンは

    stat($f);
    if (-T _ && -r _ && -o _ ) { return $f;}

という判定が入っていてテキストファイルのみを送り返す対象にしています。

ファイルがEUCになっていると -T (普通のファイルなら真)では贋になります。
perl は8ビット目が立っているものがある量 or ファイル全体の10%を越える
ファイルを binary と判定するからです


7.10	lha または ish が見つからない…

某プロバイダのように UNIX の shell のアカウントのあるマシンには 
/usr/local/bin/lha があっても MLサーバを実行するマシンにはなかったり
するんだそうです。で、インストールの時のテストではうまくいっても、その
後MLサーバでコマンドを実行すると動かない。

あと、shared library が違うということもありますので compile するなら 
static である必要があります
#どうしてそういう実装にするかの裏の理由は知ってるけどとても迷惑;)


7.11	MLとWWWのマシンが別々の場合なのでトラブリます;)

メールを受けるマシンと WWW のマシンは別々(にある日強制的にさせられてし
まったケース)で、WWWマシンの上でMLをやりたい場合などが該当するでしょう。
../utility_programs 5.0

ML はメールを受けるマシンでしかできませんが、WWWマシンはメールを受けと
れず、そのマシンの上でないとDISKも十分でない場合。pop でメールを読む環
境ならPOPを使ったMLが実行できます。
../utility_programs 5.0


7.12	Can't locate sys/socket.ph in @INC

perl を新しくしましょう。

解説:

今はパッケージを広げるとfml.pl に対して sys/socket.ph という場所に
一応BSD用の socket.ph があるので何とかなると思うのですが

	Can't locate sys/socket.ph in @INC (did you run h2ph?) at ...
	554 "|/usr/spool/driver/fml"... unknown mailer error 2

perlのインストールの時にh2phを走らせて
/usr/local/lib/perl/sys/socket.ph あたりにあるとおもうんですが、やって
ないとファイルがないので怒られるわけです。

	% (cd /usr/include; h2ph * sys/*)

で /usr/local/lib/perl に作ってくれると思います。
#h2phの詳細についてはマニュアルを読んで下さい。c.f.   % man h2ph

本来はこういう system からみのファイルはちゃんとインストールするべきだ
と思いますけどね?


7.13	You should install sys/socket.ph using h2ph.


perl を新しくしましょう。


デバックモードで出てくる理由は前セクション参照。
#後向きな解決法なのでインストールを促しています
[PREVIOUS CHAPTER] [NEXT CHAPTER]