Chapter 24. トラブルシューティング

1. fml のバージョンが知りたい。
2. Postfix のバージョンが知りたい。
3. Sendmail のバージョンが知りたい。
4. 定義されているアドレス一覧を見たい。
5. 定義されている alias 一覧を見たい。

1. fml のバージョンが知りたい。

fmlconf が各MLの変数一覧を表示してくれます。どのML(実は適当なML でも良い)を指定しても良いので、fmlconf を実行して下さい。例えば

% fmlconf test |grep fml_version
fml_version                          = fml-devel current-20021029

2. Postfix のバージョンが知りたい。

% postconf mail_version

3. Sendmail のバージョンが知りたい。

% echo '$v' | sendmail -bt

4. 定義されているアドレス一覧を見たい。

fmladdr が /etc/passwd で定義されているユーザと aliases ファイルに設定 されている全アドレスを表示してくれます。

% fmladdr

Warning

fmladdr と fmlalias の違いは、一覧に ユーザ( /etc/passwd で定義されているもの )を含むか否か?という点です。 fmladdr は含みます、fmlalias は含みません。 fmlalias は純粋に alias 群を表示します。

5. 定義されている alias 一覧を見たい。

fmlalias が aliases ファイル(群)に設定されている全アドレスを表示してく れます。

% fmlalias

Warning

fmladdr と fmlalias の違いは、一覧に ユーザ( /etc/passwd で定義されているもの )を含むか否か?という点です。 fmladdr は含みます、fmlalias は含みません。 fmlalias は純粋に alias 群を表示します。

ファイルシステムがエラーの場合の動作は?

基本的には、MTAによる再送処理が行なわれるように fml8 が異常終了するか、 fml8 自身が頑張って配送処理を行なうか?の処理となります。 fml8 自身が頑張る場合、 ログファイルやサマリファイルには欠落が出得るが、 投稿された記事の内容が失われることだけはないつもりです。

以下、記事の配送処理でファイルシステムのエラーで書き込みがうまくいかな い時、何が起こるかを説明しましょう。

MTA から fml8 へメールが渡される時

fml8 は STDIN から読みこんだメールを一度ディスクに書きます。 この書き込みが成功すれば、処理を進めます。失敗した場合、 MTA に再挑戦してもらうため、exit(EX_TEMPFAIL)でプロセスを異常終了させます。 くわしくは the Section called fml がメールを読みこむ際のキューイング in Chapter 30 を参照してください。

このとき、incoming queue には中途半端にメールが書き込まれたファイルが 残り得ます。このキューは、あとでキュー管理システムにより削除されます。

記事番号の更新に失敗した場合

きちんと新しい記事番号(+1されたもの)がシークエンスファイル(seq)に 書き込めたか(ファイルに書いて、閉じて、再び開いて、再度読みこんでみる) を確認し、成功していれば、処理を進めます。 失敗していた場合、exit(EX_TEMPFAIL) で終了し、 MTA から fml8 を再呼出してもらうようにします。

Caution

記事番号は更新してしまったので、この処理以降、exit(EX_TEMPFAIL) で終了してはいけません。

記事の保存の際にエラーになった場合

Caution

この処理を開始する時、すでに記事番号は更新されています。

記事の書き込みはできませんが、オリジナルのメールは既にディスクに書き込 まれています。記事の方は、ヘッダ部分には色々と追加がありますが、本文は オリジナルメールのものと一緒です。そこで、incoming queue ディレクトリ から「spool/割り当てられた記事番号」ファイルへlink(2)することで、記事 の内容だけは保存するようにします。 [1]

配送するべき記事をディスクに保存することができませんでしたが、 メモリ上に配送するべき記事はあるので、記事の配送処理をこころみます。

ただ、このときは( outgoing )メールキューに書き込めないため、もし配送過 程でエラーが生じた場合、配送は中途半端に終了となります。

配送処理

配送するべき内容を( outgoing )キューに書き、書き込み成功後に配送処理が 行なわれます。

キューに書き込めない場合、メモリ上のデータの配送を試みますが、 配送過程でエラーが生じた場合、配送は中途半端に終了となります。 [2]

outgoing キューについての詳細は、 the Section called fml からメールで返事を送り返す in Chapter 30 を参照してください。

Notes

[1]

さらに、記事ファイルにヘッダをつけてあげるコマンドが別途あるとよいでしょ うね。でも、未実装です。

[2]

トリッキーな拡張が必要ではありますが、ちゃんとキューイングをフェイクで きる仕組みが必要でしょう。たとえば、別の(のちに起動された)プロセスが、 この記事のメールキューを再生成して配送キューにいれる試みをするように拡 張するなどと、するべきなのでしょう。この部分は未実装です。

fml 8.0 (fml-devel) project homepage is www.fml.org/software/fml-devel/.
fml 4.0 project homepage is www.fml.org/fml/menu.ja.html.
about one floppy bsd routers, see www.bsdrouter.org/.
other free softwares are found at www.fml.org/software/.

author's homepage is www.fml.org/home/fukachan/.
Also, visit nuinui's world :) at www.nuinui.net.

For questions about FML, e-mail <fml-bugs@fml.org>.