Keywords: fml CGI DBMS MySQL PostgreSQL LDAP トラブルシューティング 初心者 sendmail postfix qmail アーキテクチャア

"fml" バイブル -- fml trekking guide --
( オライリージャパン より 2001年 01月 刊 )
ISBN: 4-87311-032-7

fml バイブル についての誤植や補足事項については、 別途ページを作っていくことにしました。 http://www.fml.org/home/fukachan/book/fml_bible/ へ移しましたので、そちらを参照して下さい。

# 目次

- 4.0 stable シリーズ(お薦め) を御利用下さい 。 4.0 のバグとりシリーズです。
- いくつかの説明の補足、メモ(順次アップデートします)
- 誤植( _o_ )
- fml 4.0 プロジェクトの(非公式な意味ですが)3大柱(目標)は マニュアル、CGI (プロトタイプ)、そしてデータベースアクセスです。
- 高度なフックの応用などではなく、初心者向けにステップバイステップで記述 を進めること、そして料理のレシピ集のようなハウツーもののコレクションで あるように心がけたつもりです。

目次

    はじめに
    I部　イントロダクション
    1章　イントロダクション
    	1.1 電子メール（Email）
    	1.2 メーリングリスト
    	1.3 メーリングリストサーバのモデル
    	1.4 fmlにできること
    2章　fmlの操作
    	2.1 ユーザという概念
    	2.2 メーリングリストサーバのホストへ入る
    	2.3 makefmlの基本的な使い方
    	2.4 メーリングリストを作る
    	2.5 メンバーの登録
    	2.6 メンバーの削除
    	2.7 fmlの設定を変更する
    3章　メーリングリストサーバの動作
    	3.1 メールを受け取る
    	3.2 プログラムfmlの実行
    	3.3 メールの配送

    II部　fmlのセットアップ〜MLの作成
    4章　Unix上でのfmlのインストール
    	4.1 インストールの準備
    	4.2 ダウンロードとソースの展開
    	4.3 fmlのインストール
    	4.4 メールサーバの設定（sendmail）
    	4.5 メールサーバの設定（Postfix）
    	4.6 メールサーバの設定（qmail）
    	4.7 ケーススタディ：MacOS X Serverの場合
    	4.8 Q and A
    5章　Unix上でMLを作る
    	5.1 MLを作る
    	5.2 メールサーバの設定（sendmail）
    	5.3 メールサーバの設定（Postfix）
    	5.4 メールサーバの設定（qmail）
    	5.5 Cラッパ（Wrapper）
    	5.6 いくつかの注意点について
    	5.7 Q and A
    6章　Windows 2000/NT4上でのfmlのインストール
    	6.1 インストールの準備
    	6.2 fmlのインストール
    	6.3 ケーススタディ：POPを使ったML
    	6.4 ケーススタディ：Sendmail
    	6.5 注意点
    7章　アップグレード
    	7.1 /usr/local/fmlディレクトリのバックアップ
    	7.2 メールサーバを停止する
    	7.3 fmlのインストール
    	7.4 elena MLのアップデート
    8章　Unix上でのCGIのセットアップ
    	8.1 CGIのインストール
    	8.2 /cgi-bin/階層のモデル
    	8.3 CGIスクリプトのセットアップ
    	8.4 WWWサーバの設定（fml CGI専用WWWサーバの場合）
    	8.5 メールサーバの設定
    	8.6 ケーススタディ：suexecでユーザfmlのCGI扱いにする
    	8.7 Q and A
    9章　fmlの動作確認
    	9.1 メールサーバ自体のテストを行う
    	9.2 MLへの送信テスト
    	9.3 fml自体のテスト
    	9.4 テストした形跡を消す（MLの最初期化）

    III部　fmlのカスタマイズ
    10章　MLのメンバーができること
    	10.1 ガイドを取り寄せる
    	10.2 MLに参加する
    	10.3 ヘルプを取り寄せる
    	10.4 投稿する/記事を読む
    	10.5 登録されているメールアドレスを変更する
    	10.6 過去の記事を読む
    	10.7 MLから抜ける
    11章　fml管理者ができること
    	11.1 MLの作成
    	11.2 MLの削除
    	11.3 MLメンバーの登録と削除
    	11.4 登録しているアドレスを変更する
    	11.5 一時休止と再開
    	11.6 まとめ送り
    	11.7 リモート管理
    	11.8 MLのカスタマイズ
    12章　fmlの設定ファイルを変更する
    	12.1 設定ファイルconfig.phの変更方法
    	12.2 メニューで設定を操作する
    	12.3 cfのファイル形式とconfig.phの関係
    	12.4 すべてのMLに同じ設定を強制する
    13章　MLのスタイルのカスタマイズ
    	13.1 MLには誰がどう投稿できるのかを変更する
    	13.2 デフォルト設定
    	13.3 コマンドメールを禁止する
    	13.4 自動登録：投稿は特定多数で登録はfmlまかせ
    	13.5 誰でも投稿可能なML（例：企業のサポート用）
    	13.6 メールマガジン型のML（投稿できる人を特定少数に制限する）
    	13.7 記事を査読するML（モデレータモード）
    	13.8 自動ファイル返送サーバ
    	13.9 ケーススタディ：複数の管理者による運用
    	13.10 登録と削除をまとめておこなう
    	13.11 ケーススタディ：listserv風コマンド用アドレス
    	13.12 ケーススタディ：メンバー管理が階層化されたML
    	13.13 ケーススタディ：procmailを使ったML
    	13.14 ケーススタディ：elena-ctlアドレスが用意できない
    	13.15 推奨設定（よりセキュアに）
    	13.16 Q and A
    14章　ヘッダの書き換え
    	14.1 メールヘッダ
    	14.2 記事のヘッダ書き換え
    	14.3 記事のSubject:を変更する
    	14.4 記事のヘッダを強制指定/上書き
    	14.5 ヘッダを削除する
    	14.6 記事のヘッダのあるフィールドを別のフィールドにコピー
    	14.7 記事のあるフィールドを別のフィールドへ移動する
    	14.8 記事の元のヘッダフィールドを使う
    	14.9 ヘッダフィールドの並び順をカスタマイズする
    	14.10 レポート メールのヘッダ操作
    	14.11 Q and A
    15章　fmlの返すメッセージをカスタマイズする
    	15.1 ガイドなどのテンプレートのカスタマイズ
    	15.2 エラーメッセージのカスタマイズ
    	15.3 コマンド メールへの応答のカスタマイズ
    16章　記事のフィルタリング
    	16.1 どの段階で弾くべきなのか
    	16.2 fmlのフィルタリング機能を有効にする
    	16.3 ケーススタディ：SPAMを弾く
    	16.4 ケーススタディ：HTMLメールを弾く
    	16.5 ケーススタディ：ウイルスを弾く
    	16.6 fmlフィルタリング機構のまとめ
    	16.7 メールの入力サイズを制限する
    	16.8 Q and A
    17章　トラフィックを制限する（メール爆弾対策）
    	17.1 MTIの機能を有効にする
    	17.2 MTI（Mail Traffice Information）の理論
    	17.3 MTI評価関数のカスタマイズ例
    	17.4 Q and A
    18章　リモート管理（メールでfmlを操作する）
    	18.1 リモート管理機能を有効にする
    	18.2 adminコマンドとapproveコマンド
    	18.3 リモート管理者を登録する
    	18.4 リモート管理者を削除する
    	18.5 リモート管理の認証方法を変更する
    	18.6 PGP2による認証
    	18.7 PGP5による認証
    	18.8 adminコマンド：メンバーのリストの操作
    	18.9 adminコマンド：ファイルの操作
    	18.10 adminコマンド：ログファイル/ディレクトリを見る
    	18.11 adminコマンドのカスタマイズ
    	18.12 Q and A
    19章　MLの暗号化
    	19.1 fmlの暗号化のプロセス
    	19.2 暗号化機能を有効にする
    	19.3 鍵の操作（PGP version 2）
    	19.4 鍵の操作（PGP version 5）
    	19.5 ケーススタディ：MLの暗号化の手順（PGP 5）
    20章　MLの記事をWWWで公開する
    	20.1 fml内臓のHTML化機構
    	20.2 MLの記事をWWWで公開する（MHonArc）
    	20.3 検索エンジン
    21章　まとめ送り
    	21.1 あるメンバーへの配送をまとめ送りにする
    	21.2 全部のMLでまとめ送りをサービスする
    	21.3 特定のML（elena ML）だけでまとめ送りをサービスする
    	21.4 elenaとmirei MLでまとめ送りをサービスする
    	21.5 Q and A

    IV部　トラブルシューティング
    22章　トラブル対応の手順
    	22.1 ソフトウェアのバージョンを調べる/確認する
    	22.2 ログを調べる
    	22.3 エラー発生箇所
    	22.4 ケーススタディ：配送のエラーを切り分ける
    	22.5 ケーススタディ：同じメールが何通も送られてきます
    23章　fmlのセットアップ時のトラブル
    	23.1 パーミッションに関する話題
    	23.2 Perlの出すエラー
    	23.3 fmlとメールサーバとの間のトラブル
    	23.4 メールサーバの設定関連のトラブル
    	23.5 CGIのセットアップのトラブル
    24章　配送やメールリーダにまつわるトラブル
    	24.1 配送のトラブル
    	24.2 メールリーダに関連したトラブル
    25章　fml自体のトラブル
    	25.1 fmlの設定にまつわるトラブル
    	25.2 fmlのコマンド関連のトラブル
    	25.3 その他

    V部　その他のトピック
    26章　日々の運用について
    	26.1 ログファイルを見る
    	26.2 ディスク使用量の目安について
    	26.3 自動的に記事のスプールを圧縮する
    	26.4 自動的にスプールの記事を消す
    	26.5 設定の変更と更新履歴を残す
    	26.6 バックアップ
    	26.7 古いファイルを順次消す
    	26.8 ケーススタディ：サーバにもとめられる条件
    27章　エラーメールを自動解析する
    	27.1 エラーメールのフォーマット
    	27.2 エラーメールの送られる先を変更する
    	27.3 全MLのエラーメールを自動解析する（mead）
    	27.4 特定のMLのエラーメールのみを自動解析する
    	27.5 VERPsを使いフォワードされた先でのエラーを検出したい
    	27.6 meadのカスタマイズ
    	27.7 ケーススタディ：smtpfeedによるVERPs風エラー解析
    	27.8 メールのループを防ぐ
    	27.9 定期的にMLに入りつづけるかを訪ねる（confirmd）
    28章　メールサーバの変更/引越し
    	28.1 DNSを利用したISPのスムーズな変更
    	28.2 fmlを他のホストへコピーする
    	28.3 ケーススタディ
    	28.4 Q and A
    29章　バーチャルドメイン
    	29.1 fmlのセットアップ（複数のfml）
    	29.2 fmlのセットアップ（/usr/local/fmlを共用する）
    	29.3 メールサーバのバーチャルドメイン設定
    	29.4 ケーススタディ：sendmail
    	29.5 ケーススタディ：Postfix
    	29.6 ケーススタディ：qmail

    VI部　fmlの内部構造と機能拡張
    30章　変数と関数
    	30.1 変数名の付け方のルール
    	30.2 %Envelopeハッシュテーブル
    	30.3 変数:ディレクトリ名
    	30.4 変数:便利な変数
    	30.5 関数名の付け方のルール
    	30.6 config.ph内で使える関数
    31章　リストファイルのフォーマット
    	31.1 配送リスト
    	31.2 メンバー管理ファイル
    32章　fml.plプロセスの動作
    	32.1 前半
    	32.2 後半
    	32.3 記事の配送処理
    	32.4 コマンドメールの処理
    33章　デバッグをする
    	33.1 デバッグモードを有効にする
    	33.2 デバッグ出力をファイルに保存する
    	33.3 $debugを使ったソースコードの書き方
    34章　コマンドメールのカスタマイズ
    	34.1 コマンド入力の制限
    	34.2 あるコマンドを無効にする
    	34.3 特定のコマンドだけを有効にする
    	34.4 既存のコマンドをカスタマイズする
    	34.5 Q and A
    35章　ケーススタディ：HOOKによる拡張
    	35.1 $START_HOOK
    	35.2 $SMTP_OPEN_HOOK
    	35.3 $HEADER_ADD_HOOK
    	35.4 $FML_EXIT_HOOK
    	35.5 事例集

    VII部　Advanced Study
    36章　fmlからデータベースへのアクセス
    	36.1 データベースとは？
    	36.2 fmlからデータベースを呼ぶ
    	36.3 ケーススタディ：WWWとデータベースとメールマガジン
    	36.4 ケーススタディ：社内のディレクトリサービス
    	36.5 ケーススタディ：大規模なシステム
    37章　配送の高速化について
    	37.1 SMTP（Simple Mail Transfer Protocol）
    	37.2 メール配送におけるDNSの役割
    	37.3 理論上はどのくらいの配送速度が出るだろうか？
    	37.4 ケーススタディ：smtpfeed、qmail、Postfix
    	37.5 fmlのSMTP機構のカスタマイズ
    	37.6 ケーススタディ：fmlが複数のMTAを使う
    38章　試論：現代的サーバデザインについて
    	38.1 デザインの方向性
    	38.2 FWTK（FireWall Tool Kit)
    	38.3 キュー（queue)ディレクトリとset-uid bit
    	38.4 ケーススタディ：fml.orgの選択
    あとがき

    VIII部　付録
    付録A　ミニ用語集
    付録B　Unixの豆知識
    	B.1 Unixのプロセス
    	B.2 Unixのファイル
    	B.3 Unixコマンドtips
    	B.4 Unixデーモンtips
    付録C　メールサーバのインストール
    	C.1 CFによるsendmail.cfの作成（概略）
    	C.2 Postfixのインストール
    	C.3 qmailのインストール（概略）
    付録D　virus_check.phの例
    付録E　makefmlリファレンス
    付録F　adminコマンド・リファレンス
    付録G　変数とメニュー階層リスト（アルファベット順）
    索引

    Copyright (C) 2001 Ken'ichi Fukamachi
             All rights reserved.

    $FML: treking_guide.ja.html,v 2.6.2.1 2001/11/18 14:34:53 fukachan Exp $