The Design and Implementation of the FML 2.2 Mailing List Server

   fml 2.2A#4

	   			深町 賢一
	   			fukachan@sapporo.iij.ad.jp
				fukachan@fml.org

   http://www.fml.org/fml/
   http://www.sapporo.iij.ad.jp/staff/fukachan/fml/
   ftp://ftp.iij.ad.jp/pub/IIJ/dist/fukachan/fml/

   Copyright (C) 1993-1998 Ken'ichi Fukamachi
            All rights reserved. 
                 1993-1996 fukachan@phys.titech.ac.jp
                 1996-1998 fukachan@sapporo.iij.ad.jp
   
   FML is free software; you can redistribute it and/or modify
   it under the terms of GNU General Public License.
   See the file COPYING for more details.


--------------- 目次 ---------------


  • I Design Overview of the fml


  • 1 メーリングリストサーバ Overview
  • 1.1 ML Server Process Overview
  • 1.2 Historical View
  • 1.3 Policy
  • 1.4 機能の概要
  • 1.5 インストール
  • 2 fml の機能についての概要
  • 2.1 Directory 構造
  • 2.2 インストーラ
  • 2.3 ドキュメントについて
  • 2.4 一般ユーザー権限ということ
  • 2.5 ライブラリ・モジュールとダイナミック・ローディング
  • 2.6 設定ファイル (config.ph)
  • 2.7 アクセス制御と自動登録
  • 2.8 ファイル操作: 取り寄せとまとめ送り
  • 2.9 MIME や base64 等の処理
  • 2.10 リモートでMLを管理すること
  • 2.11 .forward
  • 2.12 Listserv/Majordomo
  • 2.13 MTAとの通信 (e.g. sendmail)
  • 2.14 MTAがメールを受けとれないマシンの時
  • 2.15 セキュリティ
  • 2.16 その他の機能
  • 3 Version Up と互換性について
  • 3.1 how to version up
  • 3.2 新しい機能を有効にするには?
  • 3.3 config.phの互換性について
  • 3.4 互換性のためのライブラリ
  • 3.5 FML 1.6 より前からの移行について
  • 3.6 FML 2.0 との互換性 (get コマンド)
  • 3.7 hml 1.6 との互換性
  • 4 設計指針に関するいくつかの考察…
  • 4.1 From: はすべてを認めるべきだろうか?
  • 4.2 ML無限ループのチェックメカニズム
  • 4.3 newsyslog(8)
  • 4.4 Date: == サーバが配送した時間
  • 4.5 Received: を削る
  • 4.6 Return-Receipt-To: も削るべき
  • 5 用語
  • 5.1 MLのHOME
  • 5.2 SMTP
  • 5.3 メールサーバ/SMTPサーバ, MTA
  • 5.4 sendmail
  • 5.5 /etc/sendmail.cf
  • 5.6 newaliases
  • II Process overview of the fml


  • 6 FML のプロセス
  • 6.1 MLサーバの動作 (fml と sendmail の役割分担)
  • 6.2 Sendmail -> fml.pl 時の動作
  • 6.3 ライブラリのファイルを探す順番 (fml.pl と ARGV)
  • 6.4 設定ファイルのサーチ順番
  • 6.5 fmlのプロセス(STDINからの読み込みの第一段階)
  • 6.6 fmlのプロセス(第2段階, %Envelopeの処理)
  • 6.7 fml process の lock と signal handling
  • 6.8 イベント・スケジューラ
  • 6.9 ロックの仕方(flock でない場合)
  • 7 コマンドライン オプション
  • 7.1 コマンドラインのシンタックス
  • 7.2 ロングラインオプション --\S+=\S+
  • 7.3 設定ファイルとコマンドラインオプション
  • 7.4 簡易モード設定 (ロングラインオプション) --\S+
  • 7.5 --ctladdr 指定について (コマンド用のアドレス)
  • 8 FML 内部におけるデータ構造
  • 8.1 変数名の naming convention
  • 8.2 関数名の Naming Convention
  • 8.3 %Envelope (ハッシュテーブル)
  • 8.4 データ構造の初期化
  • 8.5 ディレクトリ変数
  • 8.6 $TMP_DIR について
  • 8.7 設定ファイル群
  • 8.8 単に便利なためにある変数
  • 8.9 内部で使われている変数を調べるには?
  • 9 FML 設定ファイルのフォーマットと構造
  • 9.1 members ファイルのフォーマットと構造
  • 9.2 actives ファイルのフォーマットと構造
  • 9.3 actives と members の違い
  • 9.4 複数のメンバーリスト、複数の配送リスト
  • 9.5 メンバーリストファイルの拡張について (libmember_name.pl)
  • 9.6 msendrc ファイルのフォーマットと構造
  • 9.7 パスワードファイルのフォーマットと構造
  • 9.8 FMLインストール後の maintenance と version up に関して
  • 10 Security
  • 10.1 Security 関係の基本思想
  • 10.2 Security Check Routine
  • 10.3 投稿メールのサイズの制限
  • 10.4 MLのメンバー数制限(自動登録の時)
  • 10.5 DNS Spoofing
  • 10.6 Address Spoofing
  • 10.7 SYN Flooding
  • 10.8 Email アドレスの表現とRFC822
  • 10.9 smrsh.c
  • 10.10 access(2)
  • 10.11 Precedence Priority
  • 10.12 4.4BSD vacation
  • 10.13 File and Directory Permission Default
  • 10.14 Directory Permissions
  • 10.15 配送メールへのフィルタリング
  • 10.16 特定のフィールドの内容によっては拒否する
  • 10.17 sendmail 8.8 における check_* ルールセットについて
  • 10.18 SMTP and Authentication
  • 10.19 &system() function
  • 11 Emailアドレスの判定方法とSecurity
  • 11.1 アドレスのチェックを緩めたい or きつくしたい
  • 11.2 複数アドレスから投稿したいがうけとりは一つ( "# skip" コマンド)
  • 11.3 特定のアドレスを拒否する(e.g. spam mails)
  • 12 Mail Traffic Information
  • 12.1 How to
  • 12.2 Traffic Monitor
  • 12.3 Mail Traffic Information
  • 12.4 メール爆弾 (MAIL BOMBING) 判定評価関数
  • 12.5 評価関数
  • 12.6 MTIの設定変数
  • 12.7 トラフィックの最大値
  • 12.8 その他
  • 12.9 ファイルなど
  • 12.10 カスタマイズ関数とハッシュデータ
  • 13 Porting
  • 13.1 Micro$oft NT 4.0
  • 13.2 sys/ Directory
  • 14 配送効率についての考察
  • 14.1 配送プロセスの律速段階とは
  • 14.2 複数のマシンの sendmail を使ってパラレルに送信
  • III インストールとカスタマイズ


  • 15 インストールについて
  • 15.1 makefml によるインストール
  • 15.2 makefml: 初心者向けインストール・インターフェイス
  • 15.3 Version up について
  • 15.4 本当に残しておく必要のあるファイルは?
  • 15.5 インストール後にMLの設定をいじる時
  • 15.6 :include: ファイル (fml.plの呼び方、引数の渡し方)
  • 15.7 C wrapper (:include: が使えない場合)
  • 15.8 C wrapper program fml on 4.3BSD
  • 15.9 C wrapper program fml on 4.4BSD or POSIX
  • 15.10 まとめおくり
  • 15.11 コマンドコントロール専用のアドレス
  • 15.12 メンバーチェックと自動登録について
  • 15.13 メンバーチェックの際のアドレスのチェックの厳しさ
  • 15.14 $MAINTAINER というアドレス
  • 15.15 MLのスプールの read permission
  • 15.16 スプールに記事をためない
  • 16 配送とコマンド、そしてそのアクセス制御
  • 16.1 デバッグモード
  • 16.2 アクセス制御のポリシー
  • 16.3 自動登録とアクセス制御
  • 16.4 配送用のアドレス ($MAIL_LIST)
  • 16.5 コマンド専用のアドレス ($CONTROL_ADDRESS)
  • 16.6 配送とコマンドを同じアドレスで行なう場合
  • 16.7 コマンド or 特殊目的専用のサーバへの変更
  • 16.8 リモートで管理する際のアクセス制御
  • 17 まとめおくり
  • 17.1 まとめおくりの基本原理
  • 17.2 まとめおくりサーバ msend.pl
  • 17.3 crontab の見本
  • 17.4 プログラムのログファイル $MSEND_RC (名称が変更されました)
  • 17.5 コマンドで各ユーザーごとにどういうふうに送るかを決めること
  • 17.6 まとめ送りメールに付くSubjectの設定
  • 17.7 まとめ送り処理のHOOK
  • 17.8 まとめ形式のデフォールト
  • 17.9 msend.pl のコマンド一覧 (help fileより)
  • 17.10 まとめ送りがなかった msend がメールを出す設定
  • 17.11 まとめ送りの時には X-ML-Info: は必要ない
  • 17.12 捕捉:まとめおくりと$ACTIVE_LISTと$MSEND_RCと実際の動き…
  • 17.13 まとめおくりの いつ送るか?の判定を変える
  • 17.14 まとめおくりをデフォールトにする
  • 17.15 捕捉:システムの cron の代わりに bin/cron.pl を使う場合
  • 17.16 一週間に一度まとめ送りをするには?
  • 17.17 Cron (FML original bin/cron.pl)
  • 17.18 Vixie Cron
  • 17.19 cron.plのインストール
  • 17.20 cron.pl を使う際の注意
  • 18 リモート管理
  • 18.1 リモート管理 イントロダクション
  • 18.2 より安全を考えると
  • 18.3 リモート管理モードを有効にする
  • 18.4 admin コマンド
  • 18.5 Approve Password Command Syntax
  • 18.6 リモート管理の設定
  • 18.7 リモートで管理する人を増やす時(PGP以外)
  • 18.8 リモートで管理する人を削除する時
  • 18.9 アドミンのコマンド一覧 (help-admin より)
  • 18.10 リモート管理で使えるコマンドを増やすor減らす
  • 18.11 パスワードファイルの初期化と設定
  • 18.12 リモートでパスワードの変更
  • 18.13 'admin add' した時に「いらっしゃいませ」メールを送る
  • 18.14 登録するアドレスの範囲を制限する
  • 18.15 リモート管理モードでのアドレスの複数マッチ問題について
  • 18.16 リモートで入れ替えが可能なファイルについて、
  • 18.17 ログファイルについて
  • 18.18 リモート管理の古い設定への注意
  • 18.19 PGP (Pretty Good Privacy)
  • 18.20 PGP での認証に基づくリモート管理
  • 18.21 PGP の公開鍵の登録
  • 18.22 PGP によるリモート管理
  • 18.23 PGPを使って暗号化したメーリングリストにする
  • 18.24 管理用のコマンド
  • 19 メンバーの登録について
  • 19.1 手動登録時の挙動について(5 way hand shake)
  • 19.2 ほんとに抜けるか?を確認する unsubscribe
  • 20 自動登録
  • 20.1 自動登録の概要
  • 20.2 自動登録を有効にする
  • 20.3 登録するアドレスの範囲を制限する
  • 20.4 ポストできる人は制限したいが、配送される人は自動登録したい場合
  • 20.5 自動登録のタイプ
  • 20.6 自動登録のタイプ: no-keyword
  • 20.7 自動登録のタイプ: subject
  • 20.8 自動登録のタイプ: body
  • 20.9 自動登録のタイプ: confirmation (推奨)
  • 20.10 &Confirm internal hook functions
  • 20.11 登録とメンバーチェックに使うファイルについて
  • 20.12 自動登録した際そのメールをフォワードするか否か?
  • 20.13 メンバーチェックはしないけど自動登録はしたくない(+ trick)
  • 20.14 複数アドレスから投稿だが配送先は一つ(自動登録モード)
  • 20.15 サーバをインストールしたホストからのメンバーの自動登録ができない
  • 20.16 自動登録の際の配送モード
  • 20.17 $AUTO_REGISTRATION_HOOK
  • 21 コマンドについて
  • 21.1 コマンドの一覧
  • 21.2 MLで使えるコマンドを増やすor減らす
  • 21.3 ハッシュ %Procedure の特殊なキー
  • 21.4 コマンドの # syntax
  • 21.5 Subject: にコマンドを書く場合
  • 21.6 一つのメールで使えるコマンドの数の上限
  • 21.7 間違ったコマンドを送ってきた人への警告
  • 21.8 コマンドの終り(シグニチャア対策)
  • 21.9 もし有効なコマンドがないメールが来たら?
  • 21.10 library コマンド
  • 21.11 index コマンド
  • 21.12 listname-command (qmail の場合のおあそび)
  • 22 ~/.forward でML
  • 22.1 .forward での方法の概論
  • 22.2 架空のユーザーを作る
  • 22.3 自分のアカウントで実行する
  • 23 Filtering
  • 23.1 Filtering FAQ
  • 23.2 MH slocal Interface
  • 23.3 ローカル配送のためのインターフェイス (libexec/fml_local.pl)
  • 24 libexec/fml_local.pl マニュアル
  • 24.1 fml_local と ~/.forward の設定
  • 24.2 ~/.fmllocalrc
  • 24.3 ~/.fmllocalrc の各フィールド
  • 24.4 パターンの記述に用いることのできる正規表現
  • 24.5 パターンの例
  • 24.6 ~/.fmllocalrc でMLを行なう例
  • 24.7 フィールドはヘッダ以外に body があります
  • 24.8 変数一覧
  • 24.9 フィールド設定の例
  • 24.10 ファイルを送り返す設定の例
  • 24.11 fml_local BUILD-IN Functions 一覧
  • 25 Fmlserv - Listserv Style Interface -
  • 25.1 Listserv (Or Majordomo) Style Interface (libexec/fmlserv.pl)
  • 25.2 インストール
  • 25.3 使えるコマンド一覧
  • 25.4 Variables
  • 26 モデレーター
  • 26.1 Overview
  • 26.2 承認の仕方 ($MODERATOR_FORWARD_TYPE == 2 デフォールト)
  • 26.3 承認の仕方 ($MODERATOR_FORWARD_TYPE == 1 もしくは 未定義)
  • 26.4 承認の仕方 ($MODERATOR_FORWARD_TYPE == 3 もしくは 未定義)
  • 27 複数のメーリングリストの運用
  • 27.1 複数のメーリングリストを作る。
  • 27.2 複数のメーリングリストの運用時の設定の理論
  • 27.3 2つのメーリングリストの運用の設定例
  • 27.4 複数のMLがあるがコマンドの処理は一つのアドレスで一括処理
  • 28 ヘッダのカスタマイズ
  • 28.1 ヘッダ・フィールドのフォーマット
  • 28.2 ヘッダフィールドの内容の強制
  • 28.3 ヘッダフィールドをオリジナルのままにする
  • 28.4 ヘッダのフィールドを増やす or 減らす
  • 28.5 COPY_FIELD
  • 28.6 Received: を残す
  • 28.7 Date: Type ($DATE_TYPE)
  • 28.8 コマンドの結果やユーザへのメッセージのヘッダのカスタマイズ
  • 28.9 コマンドメールの結果のメールの Reply-To: を変更する
  • 28.10 Subject Tags; Subject: に (Elena 100) などのタグをつける
  • 28.11 Subject: の成形 ([Elena:ID] フォーマットを抜く)
  • 28.12 TAGの [Elena:00001] の五桁の数字をN桁に変更
  • 28.13 TAGの [Elena:00001] の 0 パディングをなくす
  • 28.14 オリジナルの Message-ID を配送に使う
  • 28.15 ML 独自の Message-ID フォーマット
  • 28.16 宇宙歴 (外国TVシリーズMLで使ってます:-)
  • 28.17 一つのメーリングリストに複数の投稿用アドレス
  • 28.18 X-ML-Info: の内容を指定する
  • 28.19 To: の Rewriting 処理
  • 28.20 NIFTY対策をするか?(参加者にNIFの人もいる, OBSOLETE?)
  • 28.21 Append Errors-To:
  • 28.22 メールの最後に付加情報をつける設定
  • 29 config.phのその他の設定について
  • 29.1 ヘッダを MIME Decoding してログをとること
  • 29.2 SubjectをMime DecodeしてSummaryに記録
  • 29.3 記事を MIME Decode して保存
  • 29.4 ISO-2022-JP Trap
  • 29.5 mget MIME 処理のカスタマイズ変数
  • 29.6 実際の配送を担当するマシンを別にする場合
  • 29.7 ロックアルゴリズムの選択
  • 29.8 コマンドのフォーマット
  • 29.9 MLを止めて(ロックして) config.phの edit をしたい
  • 30 アーカイブ, Archive
  • 30.1 Introduction
  • 30.2 自動アーカイブと自動 expire
  • 30.3 config.ph の設定
  • 30.4 get コマンドとサーチパス
  • 30.5 gzip file にする(アーカイブへの変換)
  • 30.6 アーカイブ作成を cron で自動処理
  • 30.7 何故、まとめてgzip化したいのか?
  • 31 Expire (一定日数より古いファイルは消す)とNewSyslog
  • 31.1 Introduction
  • 31.2 自動アーカイブと自動 expire
  • 31.3 Config.ph Configurations
  • 31.4 Expire 時に Summary ファイルも作り直す
  • 31.5 expire.pl コマンドラインオプション (bin/expire.pl)
  • 31.6 newsyslog/logファイルの整理と消去
  • 31.7 cronでnewsyslogをする (OBSOLETE shell version)
  • 31.8 actives/members ファイルのバックアップ: .bak => .0 =>.1
  • 31.9 ログファイル($DIR/log)の turn over
  • 32 HTML形式の記事を作成する
  • 32.1 自動的に スプールを html 化する(Expireはしない)
  • 32.2 &SyncHtml($HTML_DIR, $ID, *Envelope);
  • 32.3 HTML化する単位 (数 or 日)
  • 32.4 $HTML_INDEX_UNIT == "infinite"
  • 32.5 thread.html; スレッド化した index を作成する
  • 32.6 Variables to Customize HTML File
  • 32.7 HTML 4.0
  • 32.8 HTMLファイルのExpire
  • 32.9 BASE64 Decoding
  • 32.10 $HTML_OUTPUT_FILTER
  • 32.11 $HTML_TITLE_HOOK
  • 32.12 キーワードによるHTML化の自動分類 (今の実装でOKか未確認?)
  • 32.13 &TalkWithHttpServer
  • 32.14 URLの中身を返すサーバ
  • 32.15 HRef関数によるURL先データの引き落とし
  • 33 Confirmation Daemon (libexec/confirmd.pl)
  • 33.1 『反論なき場合は削除に同意』デーモン?:-)
  • 33.2 設定の仕方
  • 33.3 時間の変数
  • 33.4 ファイル
  • 34 MEAD (Mail Error Analyze Daemon)
  • 34.1 Introduction
  • 34.2 設定
  • 34.3 理論
  • 34.4 mead.pl コマンドラインオプション
  • 34.5 問題点
  • IV トラブルシューティング


  • 35 トラブル・シューティング (主に permission 問題まわり)
  • 35.1 Insecure dependency in chdir, Permission denied, ...
  • 35.2 :include:何か is unsafe for mailing to program ...
  • 35.3 include's owner != config.ph's owner.
  • 35.4 /var/spool/ml/src/fml.pl: permission denied
  • 35.5 550 User %s@%s doesn't have a valid shell for mailing to programs
  • 35.6 sh: /var/spool/ml/src/fml.pl: No such file or directory
  • 35.7 sh: /var/spool/ml/src/fml.pl: command not found
  • 36 トラブル・シューティング (主にFMLそのものについて)
  • 36.1 最新版にバージョンアップする時に、config.ph は前のままでOK?
  • 36.2 ML-request をコマンド用のアドレスにする
  • 36.3 log ファイルに残る 550... みたいな数字は何?
  • 36.4 WARNING: UNIX FROM Loop
  • 36.5 Try mci:prog since smtp connections cannot be opened
  • 36.6 The flock() function is unimplemented ...
  • 36.7 503 Need RCPT (recipient)
  • 36.8 fml.pl はうごくのに msend.pl とか cron.pl とかはちゃんと動かない
  • 36.9 まとめおくりファイルの文法は違う?
  • 36.10 EUC のファイルを perl はバイナリと認識する
  • 36.11 user@domain でないと自動登録できない
  • 36.12 lha または ish が見つからない…
  • 36.13 MLとWWWのマシンが別々の場合
  • 36.14 勝手についてしまう signature を取る
  • 37 トラブル・シューティング (主にMUA関係)
  • 37.1 Microsoft Exchange で [Elena:数字] が消える
  • 37.2 cc:Mail でのトラブル その1
  • 37.3 cc:Mail 事件 そのN(泣)
  • 37.4 Re: でなく Re[2] 等の変換を勝手にやるらしいクライアント
  • 37.5 References を最後の値だけにする
  • 37.6 AL-Mailを使うとループ・アラートが出る?場合
  • 37.7 Eudora と Reply-To:
  • 37.8 Return-Receipt-To:事件と cc:Mail等MUA
  • 38 トラブル・シューティング (メールのヘッダー関係)
  • 38.1 ヘッダの時間がおかしい?
  • 38.2 Received: from (localhost.変なドメイン) by ...
  • 38.3 JST問題
  • 39 トラブル・シューティング (その他)
  • 39.1 Can't locate sys/socket.ph in @INC
  • 39.2 You should install sys/socket.ph using h2ph.
  • 40 トラブル・シューティング (古い記述)
  • 40.1 PC-VAN がちゃんとうけとってくれない 事件
  • 40.2 自動登録したときにファイルが送られない事件 (fml 1.6 〜 1.6.1?)
  • 40.3 bin/expire.plで“N個のファイルを残す"のを間違えます
  • 40.4 ファイルがちゃんとおくりかえされない(自動登録とかガイド請求の時)
  • 40.5 [X-ML-NAME:ID]日本語の題名[X-ML-NAME:ID]
  • 40.6 'macro:s'
  • 40.7 Can't locate auto/Socket/AF_INET.al in @INC at libsmtp.pl ...
  • 41 OS依存性。OSごとのインストールの注意
  • 41.1 4.4BSD
  • 41.2 4.3BSD
  • 41.3 SUN OS 4.1.3
  • 41.4 HP-UX 9?
  • 41.5 SGI Indy (IRIX5.3)
  • 41.6 UXP/DS V20L10(SVR4.2)
  • 41.7 AIX 4.2
  • 41.8 プロセスは誰の権限で動くか? −OSの違いにより発生する問題点−
  • 41.9 /etc/aliases の書き方と OS 依存性
  • 41.10 その他の注意
  • 42 トラブル・シューティング (OS依存)
  • 42.1 ガイドとかが なぜか返送されない(no file in Sub SendFile[logfile])
  • 42.2 記事番号が変わらない。seq file の中が数字で一杯です…
  • 42.3 Solaris 2.4 でプロセス間通信がうまくいかない
  • 42.4 Solaris 2.3 (SUN OS 5) で flock がうごかない
  • 42.5 553 machine-name host name configuration error
  • 42.6 DEC alpha(OSF1 V3.0)上の perl4 で config 等が動かない
  • 42.7 article ID duplication error
  • 42.8 perl 5.003 flock と そらりす 2.5 2.5.1 ?
  • V ライブラリと hack


  • 43 ファイルをまとめて操作する関数群 (mgetとまとめおくりで使う)
  • 43.1 mget options (help file より)
  • 43.2 mget3 のデフォールトの変更
  • 43.3 mget3 インターフェイス:パターンマッチ戦略
  • 43.4 プログラムのパス
  • 43.5 mget3 の送り返しプロセス
  • 43.6 コマンドで単なるシンタックスエラーの警告をする
  • 43.7 mget の送り返し時のファイルサイズ
  • 43.8 mget で指定できるファイルの最大数
  • 43.9 Mget Format: Unix From 形式
  • 43.10 Mget Format: MIME/MultipartのBNF表現(RFC1521より)
  • 43.11 Mget Format: MIME/Multipartの見本
  • 43.12 Mget Format: RFC934
  • 43.13 Mget Format: RFC1153 digest
  • 43.14 Mget Format: 1153 のカスタマイズ
  • 43.15 Mget Format: lzh + ish option
  • 43.16 SJIS にファイルを変換して送る (lzh + ish と lhz + uuencode option)
  • 44 ライブラリ関数
  • 44.1 daemon (libutils.pl)
  • 44.2 Sendmail (libsmtp.pl)
  • 44.3 SendFile (libsmtp.pl)
  • 44.4 NeonSendFile (libsmtp.pl)
  • 44.5 Addr2FQDN (fml.pl)
  • 44.6 AddressMatch (fml.pl)
  • 44.7 MailListMemberP (fml.pl)
  • 44.8 MailListActiveP (fml.pl)
  • 44.9 Append2 (fml.pl)
  • 44.10 AutoRegist (libutils.pl)
  • 44.11 ChangeMemberList (libfml.pl)
  • 44.12 ChangePasswd (libcrypt.pl)
  • 44.13 CheckMember (fml.pl)
  • 44.14 CmpPasswd (libcrypt.pl)
  • 44.15 CmpPasswdInFile (libcrypt.pl)
  • 44.16 Conv2mailbox (fml.pl)
  • 44.17 DecodeMimeStrings (libMIME.pl)
  • 44.18 Flock (fml.pl)
  • 44.19 Ftp (libftp.pl)
  • 44.20 Funlock (fml.pl)
  • 44.21 GetID (libfml.pl)
  • 44.22 GetTime (fml.pl)
  • 44.23 Lock (fml.pl)
  • 44.24 Log (fml.pl)
  • 44.25 LogWEnv (fml.pl)
  • 44.26 Mesg (fml.pl)
  • 44.27 NewSyslog (libnewsyslog.pl)
  • 44.28 Notify (fml.pl)
  • 44.29 RunHooks (fml.pl)
  • 44.30 ExecNewProcess (fml.pl)
  • 44.31 SecureP (fml.pl)
  • 44.32 SendBackInOrder (libfop.pl)
  • 44.33 SocketInit (libsmtp.pl)
  • 44.34 TurnOverW0 (libnewsyslog.pl)
  • 44.35 Unlock (fml.pl)
  • 44.36 Warn (fml.pl)
  • 44.37 WholeMail (fml.pl)
  • 44.38 eval (fml.pl)
  • 44.39 ipc (libutils.pl)
  • 44.40 system (libutils.pl)
  • 45 POP による FML の運用
  • 45.1 Introduction
  • 45.2 POP経由の自動RefileやMLの実行 (bin/popfml.pl)
  • 45.3 Popfml.pl
  • 45.4 Popfml.pl の設定
  • 45.5 変数
  • 46 改造について
  • 46.1 HOW TO DEBUG ... [デバッグのポイント]
  • 46.2 消してもいいファイル…
  • 46.3 MIME文字列を日本語へ変換すること
  • 46.4 改造事例: sitedef.ph
  • 46.5 改造事例: axion.phys.titech.ac.jp
  • 46.6 改造事例: mnews-ml
  • 46.7 改造事例: Reply-To == MLで必要な時にはReply-Toを設定するコマンド
  • 46.8 From と 配送先が一致した時に、配送を止めたい(dynamical skip?)
  • 46.9 古典の printf debug の例
  • 46.10 fmlのコマンドが送れるページの例
  • 46.11 "bye", "ignore_list"
  • 46.12 新しく『特定のファイルを送り返す』コマンドを作る
  • 46.13 メンバーを問わずファイル uja を送り返す例
  • 46.14 自動送り返しサーバの実装例
  • 46.15 たとえば、Received: のようなヘッダを残すには?
  • 46.16 スプールにあるファイルをMIME逆変換する
  • 46.17 mget でえた spool の下のファイルを mh 以外で読む時
  • 46.18 配送するメールのMIME部分はDecodeしてしまいたい
  • 46.19 認証する際のドメインのALIAS %DOMAIN_ALIASES
  • 46.20 メーリングリストに参加可能なユーザのドメインを絞る
  • 47 『自動登録』かつ『ポストできる人を制限する』設定例その2
  • 48 フック、カスタマイズ(例を見る方がはやいかも)
  • 48.1 インタプリタとconfig.ph
  • 48.2 $START_HOOK
  • 48.3 $HEADER_ADD_HOOK
  • 48.4 $DISTRIBUTE_START_HOOK
  • 48.5 $SMTP_OPEN_HOOK
  • 48.6 $DISTRIBUTE_CLOSE_HOOK (SMTP_CLOSE_HOOK)
  • 48.7 $FML_EXIT_HOOK
  • 48.8 $FML_EXIT_PROG
  • 48.9 $MSEND_START_HOOK
  • 48.10 $MSEND_HEADER_HOOK
  • 48.11 $MSEND_OPT_HOOK
  • 48.12 $REPORT_HEADER_CONFIG_HOOK
  • 48.13 $COMMAND_HOOK (obsolete on to add new commands technique)
  • 48.14 $COMMAND_HOOK Example: add "# list" and "# rsummary"
  • 48.15 HOOKによるコマンド実装例: "# sget"
  • 48.16 HOOKによるコマンド実装例: "# admin" アドミンコマンド
  • 48.17 HOOKの例:ある行数を越えるメールは廃棄する設定
  • 48.18 $START_HOOK でMLメンバーの人数制限をする
  • 48.19 $MODE_BIFURCATE_HOOK
  • 48.20 $COMMAND_FILTER_HOOK
  • 48.21 $REJECT_COMMAND_FILTER_HOOK
  • 48.22 $DISTRIBUTE_SUMMARY_HOOK
  • 49 各種ユーザ用ユーティリティ等 (bin/, lib/Utilities/ ...)
  • 49.1 analyze_mail_error.pl (replaced to libexec/mead.pl)
  • 49.2 アーカイブの作成 (bin/Archive.pl bin/Archive.sh)
  • 49.3 cron (bin/cron.pl)
  • 49.4 プログラムをデーモン化して実行 (bin/daemon.pl)
  • 49.5 daily (日々のログ解析)
  • 49.6 DNS のチェック(bin/dns_check.pl)
  • 49.7 emumail.pl
  • 49.8 EXPIRE を実行するプログラムの例 (bin/expire.pl)
  • 49.9 WIX言語フォーマッタ (bin/fwix.pl)
  • 49.10 gen_summary.pl (summary ファイルを再生成する)
  • 49.11 URL の中身を取り出す (bin/geturl.pl)
  • 49.12 ローカルテスト (sbin/localtest.pl)
  • 49.13 NEWSYSLOG SHELL VERSION (bin/newsyslog.sh)
  • 49.14 Multipart Canceler Filter (bin/multipart.pl)
  • 49.15 SMTPライブラリを使った /usr/bin/Mail の emulation (bin/pmail.pl)
  • 49.16 パスワードの初期化と変更 (bin/passwd.pl)
  • 49.17 POP経由でスプールへ、POPを使ってMLを実行 (bin/popfml.pl)
  • 49.18 与えられたファイルを分割して送り出すプログラム (bin/split_and_msend.pl)
  • 49.19 SPOOL -> HTML Hierarchy (bin/spool2html.pl)
  • 49.20 MH scan.format (lib/Utilities/scan.format)
  • 49.21 mgetで得たファイルをmh以外で読む時 (lib/Utilities/packmbox.pl)
  • 49.22 RMAILファイルからfmlへのメッセージの取込み (lib/Utilities/Rmail2fml.pl)
  • 49.23 宇宙歴関係
  • 49.24 weekend-msend.sh
  • 49.25 X-Stardate: をつける(mh-e)
  • 50 WIX Language
  • 50.1 WIX Language Introduction
  • 50.2 WIX 言語仕様
  • 50.3 WIXの多国語対応
  • 50.4 WIX と HTML 例外処理
  • 51 メール配送について
  • 51.1 SMTPライブラリについて
  • 51.2 予備のSMTPサーバ
  • 51.3 リレー(RFC821)
  • 51.4 activesファイルによるリレー制御
  • 51.5 全てのメールをリレーサーバに投げる
  • 51.6 activesファイルによるリレー (sendmail 5.x)
  • 51.7 CF (by motonori@wide.ad.jp) 形式による relay
  • 51.8 同じmxについて
  • 51.9 MCI Cache
  • 51.10 配送プログラム(e.g. sendmail)との通信のログ
  • 51.11 ドメインをソートしてから配送
  • 52 Contrib
  • 52.1 Contrib 一覧
  • 52.2 Traffic を調べる (libtraffic.pl)
  • 52.3 #traffic で 複数のアドレスを持つ人物を同一視してカウントする 技
  • VI misc


  • 53 ちょっとした事
  • 53.1 Perl5 の余談
  • 53.2 アドレス まとめ送りの間隔 … の Extension論
  • 53.3 サブジェクトに [Name:ID] を付ける…
  • 53.4 fml 1.6 で 1.5 を大きく変えてまでやりたかったこと
  • 53.5 h2ph でシステムパラメータは install するもんなんでは?…
  • 53.6 Reply-To:を設定された投稿メールの配送をする際のReply-To:の扱い
  • 53.7 メール本文をいじることと慣習法と倫理(私見)
  • 53.8 Special Character (libsynchtml.pl)
  • 54 perl 豆知識
  • 54.1 Perl 4 or 5 ?
  • 54.2 exec LIST
  • 54.3 system LIST
  • 54.4 open
  • 54.5 perlはinterpreter
  • 54.6 変数
  • 54.7 @INC
  • 54.8 require
  • 54.9 \w
  • 54.10 単語
  • 54.11 perl の習得はやさしいか?
  • VII あとがき


  • 55 あしたリリースオフ
  • 55.1 主に言葉ではなくコーディングする姿から伝わってくるもの
  • 55.2 シーラカンス
  • 55.3 ポリシー&アイデンティティ
  • 55.4 あしたリリースオフ
  • VIII Appendix


  • Appendix A References (参考文献)
  • Appendix A.1 参考文献(本)
  • Appendix A.2 参考文献(RFC)
  • Appendix A.3 Important RFCs for electronic mail
  • Appendix A.4 fj.sourcesに過去リリースした記事のMessage-IDリスト
  • Appendix B メーリングリストの挙動と1/fゆらぎ とDoctor論文とFML
  • Appendix C コマンドライン一覧
  • Appendix D local spoolへのftp-likeなアクセス (ftpmail)
  • Appendix D.1 libftp.pl Introduction
  • Appendix D.2 libftp.pl と libhref.pl はどう使う?
  • Appendix D.3 ローカルアクセスのための config.ph の設定
  • Appendix D.4 FTPMAIL専用サーバ
  • Appendix D.5 ローカルアクセスの挙動の説明
  • Appendix D.6 ftpmail server へのリレーの設定
  • Appendix D.7 &Href(), access to URL
  • Appendix D.8 libftpmail.pl (obsolete)
  • Appendix E WHOIS データベースとサーバ
  • Appendix E.1 Whois コマンド
  • Appendix E.2 Whois のカスタマイズすべき変数
  • Appendix E.3 Whois と答えの日本語文字コード変換
  • Appendix F Caching Whois (libexec/cwhois.pl)
  • Appendix F.1 Whois Server with Cache
  • Appendix F.2 一次キャッシュと2次キャッシュも含む探索アルゴリズム
  • Appendix F.3 キャッシュの表示
  • Appendix F.4 /etc/inetd.conf
  • Appendix F.5 configuration file (config.ph)
  • Appendix F.6 本来の whois データベースサーバの設定
  • Appendix F.7 client 側での whois command の使い方
  • Appendix F.8 configuration file の設定一覧
  • Appendix F.9 Cwhois の Search Algorithm
  • Appendix F.10 データベース・フォーマット
  • Appendix F.11 データベースの作成
  • Appendix F.12 gendb.pl (lib/cwhois/gendb.pl)
  • Appendix F.13 データベース生成関数の例
  • Appendix F.14 scandb.pl (lib/cwhois/scandb.pl)
  • Appendix F.15 $CWHOIS_START_HOOK
  • Appendix F.16 $CWHOIS_CACHE_SEARCH_HOOK
  • Appendix F.17 $CWHOIS_TCP_EXIT_HOOK
  • Appendix F.18 $CWHOIS_EXIT_HOOK
  • Appendix G PAGER (ポケベル) を呼ぶための前処理プログラム
  • Appendix G.1 euc2jiskuten.pl
  • Appendix G.2 FMLと組合せてポケベルを呼ぶ例
  • Appendix H Mail2news (メーリングリストからニュースへ)
  • Appendix H.1 Mail2news の組み込み方
  • Appendix H.2 Mail2news の設定
  • Appendix I MAIL to IRC (Internet Relay Chat)
  • Appendix I.1 IRCへのリレー
  • Appendix I.2 変数
  • Appendix I.3 設定例
  • Appendix I.4 stdin2irc.pl
  • Appendix J Aucea (AUtomatic Certification and Alert system)
  • Appendix J.1 Introduction to Aucea
  • Appendix J.2 configurations と入力 の簡単な例
  • Appendix J.3 Auceaインターフェイスとデータ構造
  • Appendix J.4 コマンドの作り方の例
  • Appendix J.5 Configuration file と ライブラリ
  • Appendix J.6 Aucea の構文 (statements)
  • Appendix J.7 field-if 構文
  • Appendix J.8 Type Predicate Function
  • Appendix J.9 関数呼び出し
  • Appendix K FRED (汎関数-正規表現-微分)ライブラリ
  • Appendix K.1 Functional Regular Expressional Derivative
  • Appendix K.2 $FRED_CF
  • Appendix K.3 FRED Configuration file の例:
  • Appendix K.4 全体に共通する設定(#CONFIG: 部)
  • Appendix K.5 #BODY: 部
  • Appendix L FML 2.1 RELEASE への付録
  • Appendix L.1 DEFINE_MODEによる配送モード設定について(obsolete)
  • Appendix L.2 配送だけをするサーバ(&DEFINE_MODEによる)
  • Appendix L.3 再配送だけをするサーバ(&DEFINE_MODEによる)
  • Appendix L.4 bin/fmlctl.pl (obsolete)
  • Appendix L.5 bin/RecreateConfig.pl (obsolete)
  • Appendix L.6 mget でユーザから与えることのできるシンタックス(2.1 では削除)
  • Appendix M Obsoletes
  • Appendix M.1 投票システム実験プロジェクト (contrib/localhack/release-1/vote)
  • Appendix M.2 putfiles
  • Appendix M.3 schwalben, 自動返送の改造例,複数MLの取り扱いのインストール例
  • Appendix N fml 1.x smm/op より再収録…
  • Appendix N.1 fml 1.x サーバの中身は?
  • Appendix N.2 認証プロセス
  • Appendix N.3 config.phの項目一覧
  • Appendix N.4 config.ph 設定一覧(Advanced Setting)
  • Appendix N.5 その他の SyncHtml 用の変数一覧 (NOT CHECKED in fml 2.x)
  • Appendix N.6 config.phの項目一覧
  • Appendix N.7 設定一覧(Advanced Setting)
  • Appendix N.8 デバッグモード
  • Appendix N.9 メンバーチェック or 自動登録
  • Appendix O Emulate "distribute" 総索引 パートI は設計思想、II は内部構造等について述べています。 設定そのものについて知りたい人はパートIIIの「インストールとカスタマイ ズ」へ一気に進んで下さい。(part III
  • 15.0
    )
    
    
    
    
    I Design Overview of the fml
    
    パートIでは、fml の設計思想の概略について述べます。設計思想を知ってい
    ると設定のデフォールトがどうなっているかを推測するに役立つでしょう。実
    際の細かい設定についてはパートIII(chapter 
    15.0
    )以降へ譲ります。
    
    See also: 15.0
     
    
    なおこのドキュメント中では便宜上
    
    	% を shell の prompt
    	# を root の時のshell prompt
    
    とすることにします。また directory 等はあくまで見本だということに注意
    して下さい。そこに自動的に作られるわけでも推奨というわけでもありません。
    各自自分の環境に合わせて読み替えて下さい。
    In this document, % means a shell prompt, # means a "root" shell
    prompt . Please keep in mind that directory names described below are
    just examples, much less I recommend.  It may not be made
    automatically in some cases. Please check them by yourself.
    
    

    [NEXT CHAPTER]