[HOME] [研究室] [github] [twitter] [blog] [fml4] [fml8] [北海道] Powered by NetBSD and [nuinui.net] .

fml8 チュートリアル (バージョン 7.99.1-20191001)

Dr . Ken'ichi Fukamachi

FML.ORG

   
        

All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

本ドキュメントは、 メーリングリストサーバ(ドライバ) fml バージョン 8 (fml8) のマニュアルです。

fml8 自体は、すでにプロダクションクオリティと考えていますが、 一応、現在のステータスは、かぎりなく Release Candidate (RC) だが一応βという位置づけです。 (以前の記述と異なり) そのステータスの続きですが 7.98 シリーズではないと意識するために、 7.99.x (GitHUB では v7.99.x というタグ)というバージョン名に移行しました。 7.99.x では、RC めざして、critical なバグつぶしや微調整を行います。 そのあと fml8 8.0.0-rc1 などとなる予定です。

現在の fml8 で動く機能そして TODO リストは http://www.fml.org/software/fml8/fml/doc/ja/todo/STATUS.txt を、 fml4 と fml8 の相違点については、 the Chapter called fml4 と fml8 の相違 を参照して下さい。

なお、以下の環境で動作実績が確認されています(詳しくは 上述の STATUS ドキュメントを参照して下さい)。

	perl 5.26.2  on NetBSD 7.0


Table of Contents
はじめに
fml8 プロジェクトの現状
次世代 fml への道
fml4 と fml8 の開発体制について
メーリングリスト
ご意見募集中
本チュートリアル中における用語について
レシピ一覧
メーリングリスト(ML)とは?
fml8 の概要
fml8 のソースコードをダウンロードする
Unix 上での fml8 のインストール
Unix 上でMLを作成する
Microsft 2000/NT 上での fml8 のインストール
fml4 のMLを fml8 形式のMLへ変換する
fml4 と fml8 の相違
fml8 のアップグレード/ダウングレード
CGI の設定
apache の設定
テスト
MLのメンバーができること
MLサーバ上でコマンドを使うと(ML管理者に)できること
設定ファイルを変更する
[fml8 での注意点] ファイル名について
カスタマイズの事例
ヘッダの書き換え
本文の書き換え
コマンドの拡張
フィルタ
メッセージの拡張
WWW でMLの記事を公開する
MLの話の筋(スレッド)の追跡 (Thread Tracking System ?)
ログの取扱い
設定のバックアップ
アーカイブ
サーバの引越し
トラブルシューティング
[採録] 原案: fml8 のデザインコンセプト
プログラミング・スタイル
バージョン依存性を解決するための fml ブートローダ
設定ファイル config.cf
新プログラムの作成
fml8 のメール配送システム
ダイジェスト/まとめ送り
言語処理の優先順位
メッセージ(メール)の操作
フィルタ
ユーザの登録、削除について
コマンド(コマンドメール、makefml、CGI)
CGI プロセスの内部構造
ディレクトリ
入力データの検査
ユーザ認証
HOOK(フック)
バーチャルドメインの取り扱いについて
エラーメール解析プログラム (libexec/error)
IO インターフェイス
ロック
データベース関連モジュール
データベース管理システム(DBMS)との連携
ケーススタディ: 他のMLシステムの設定を fml8 へ変換するには?
IO へのアダプター層 (IO::Adapter クラス)
Mail::Message モジュール
言語別の処理関数
Mail::Message::Encode クラス
例題: 新しいプログラムを作る
I. fml の基本的な使い方
メーリングリスト(ML)とは?
電子メール
メーリングリスト(ML)
fml8 の概要
fml8 で出来ること
インストール作業の概略
MLを作る
MLのメンバーを登録する
MLのメンバーから削除する
ML設定のカスタマイズ
レシピ’s
II. fml のセットアップ〜MLの作成
fml8 のソースコードをダウンロードする
FTP サーバからダウンロードする。
github へのアクセス
Unix 上での fml8 のインストール
インストールの準備
configure を実行する
補足: 各ディレクトリの役割
fml のインストール: make install
main.cf を編集する
site_default_config.cf を編集する (オプション)
フィルタをどうするか?
バーチャルドメインの場合
メールサーバの設定 (Postfix)
メールサーバの設定 (qmail)
レシピ’s
Unix 上でMLを作成する
makefml newml でMLを作る (デフォルトドメインの場合)
makefml newml でMLを作る (デフォルトドメインでは"ない"場合)
メールサーバの設定 (Postfix)
メールサーバの設定 (qmail)
設定ファイル config.cf のカスタマイズ
レシピ’s
Microsft 2000/NT 上での fml8 のインストール
fml4 のMLを fml8 形式のMLへ変換する
概要: fml4 から fml8 への移行(1) fml8 形式への変換
概要: fml4 から fml8 への移行(2) fml4 の実行ファイルを入れ換え、そのまま使う
概要: fml4 と fml8 の相違点
実装: ブートプロセスの変更
fml4 と fml8 の相違
fml4 と fml8 の違い: イメージ
fml4 と fml8 の違い: ライセンス
fml4 と fml8 の違い: コマンドメールやエラーメッセージ
fml4 と fml8 の違い: コマンドラインでの操作 (makefml)
fml4 と fml8 の違い: GUI (CGI)
ファイル名のルール
fml8 のアップグレード/ダウングレード
fml8 のアップグレード
fml8 のダウングレード
CGI の設定
makefml newml は、つねに CGI スクリプトを作成
認証: どうすればよいのですか?
認証: .htaccess を編集する
管理用 CGI の例: ドメインマスタ CGI の画面
管理用 CGI の使い方: 例: MLの作成
管理用 CGI の使い方: 例: メンバー登録
管理用 CGI スキンの選択
一般ユーザ用 CGI
apache の設定
apache で suexec を使う
テスト
テストの前に
メールサーバ自体のテストを行う
MLへの送信テスト
fml8 自体のテスト
テストした形跡を消す(MLの再初期化)
III. fml のカスタマイズ
MLのメンバーができること
ガイドを取り寄せる
MLに参加する
記事の投稿 (配送処理プログラムについて)
MLのヘルプ: MLの使い方を知りたい
過去の記事を読む
メールアドレスを変更する
MLを辞める
コマンドメール (fml をメールで操作する)
レシピ's
MLサーバ上でコマンドを使うと(ML管理者に)できること
ホスト上でできること、その権限について
コマンドを用意する基準
共通のコマンドラインオプション
MLの作成
MLの削除
MLメンバーの登録と削除
MLメンバーのアドレス変更
配送を止める
配送を再開する
ログを見る
メンバーリストを見る
設定の変更
リモート管理者の登録と削除
モデレータの登録と削除
fml コマンドと makefml コマンド
アドレス一覧を表示する (fmladdr コマンド)
エイリアスの一覧を表示する (fmlalias コマンド)
設定を表示する (fmlconf コマンド)
モジュールのドキュメントを表示する (fmldoc コマンド)
記事を HTML 化する (fmlhtmlify コマンド)
レシピ’s
設定ファイルを変更する
そのホストのすべてのMLのデフォルト設定を変更する
レシピ's
[fml8 での注意点] ファイル名について
ファイル名の基本構成
例: MLのメンバー/受信者リスト
例: リモート管理者のリスト
モデレータのリスト
リモート管理者のパスワード
カスタマイズの事例
ケーススタディ: 自動ファイル送り返しサーバ
ケーススタディ: 誰でもコマンドメールが使える
ケーススタディ: コマンドメールを誰も使えないようにする
ケーススタディ: メールマガジン (1)
ケーススタディ: メールマガジン (2)
ケーススタディ: 誰でも投稿可能なML
ケーススタディ: フォローする場合なら誰でも投稿可能なML
ケーススタディ: PGP/GPG の電子署名で投稿制限をするML
ケーススタディ: PGP/GPG でコマンドメールを認証する
ケーススタディ: MLの階層化
自分のアカウントでMLを行ないたい (Procmail の利用)
ケーススタディ: オフィス (1)
ケーススタディ: オフィス (2)
レシピ’s [認証]
レシピ’s [登録関連]
レシピ’s [配送関連]
ヘッダの書き換え
レシピ’s
本文の書き換え
レシピ’s
コマンドの拡張
ケーススタディ: 独自の help コマンドを作る
レシピ’s
フィルタ
レシピ’s
メッセージの拡張
ケーススタディ: ML独自のメッセージを作る
WWW でMLの記事を公開する
レシピ’s
MLの話の筋(スレッド)の追跡 (Thread Tracking System ?)
MLの状態遷移
[素案?] fml8 (minimal_states モデル版)チケットシステム
スレッドシステムのデータベース
IV. 運用
ログの取扱い
ログを見る
機械処理向きのログを表示する
レシピ’s
設定のバックアップ
fml8 の設定をバックアップする
fml8 の設定をバックアップする: 特定のディレクトリ以外、全部
レシピ’s
アーカイブ
レシピ’s
サーバの引越し
レシピ’s
V. トラブルシューティング
トラブルシューティング
レシピ’s
ファイルシステムがエラーの場合の動作は?
同じメールが何度も送られてくる場合
VI. デザイン
[採録] 原案: fml8 のデザインコンセプト
fml-devel プロジェクトの構想
初期構想(詳細)
fml をリファクタリングするアイデア
アーキテクチャア・イメージ
リリース・エンジニアリングについて (目標!)
プログラミング・スタイル
変数の命名規則(ネーミングコンベンション)
デザイン/コーディングスタイルの上でいろいろ
[再録] プログラミング・スタイル (原案のメモ(注: 単なる走り書き))
VII. 内部構造
バージョン依存性を解決するための fml ブートローダ
例: 配送処理の場合
FML::Process:: クラスの階層構造
プロセス実行時の様子
議論: ml_name と ml_domain の値はどこで解決するのが正しいか?
設定ファイル config.cf
MLごとの設定ファイル config.cf
config.cf のフォーマット
Postfix スタイルのさらなる拡張
config.cf の多重読み込み(変数定義の上書き)
展開後に変数を代入すると?
変数一覧 (alphabetical order)
変数一覧 (クラス分類)
レシピ’s
新プログラムの作成
プログラムを作る(コマンドライン用)
プログラムを作る( CGI 用)
fml8 のメール配送システム
fml4 と fml8 の相違点
Mail::Message オブジェクト
fml8 がメールを読みこむ際のキューイング
fml8 からメールで返事を送り返す
fml8 におけるメールキューと配送の仕組み
メールキューディレクトリ
キュー管理システム
議論: FML::Mailer は必要か?
配送に関する TIPS
ダイジェスト/まとめ送り
まとめ送りで使われるファイル群
案: ダイジェスト関連のコマンドをどうするか?
recipes
言語処理の優先順位
言語処理の諸問題
日本語優先のML
英語優先のML
メッセージ(メール)の操作
Mail::Message クラス
Mail::Message::Parse クラス
Mail::Message::Compose クラス
メッセージの多国語化問題: reply_message_nl() の使い方
[再録] 議論: エラーメッセージを返す
フィルタ
フィルタの概要
フィルタに関する設定
フィルタ: サイズ制限
フィルタ: コマンドメールへの制限
フィルタ: mime component filter のルール構成法
議論: mime component filter に必要な機能とは?
ユーザの登録、削除について
ユーザの追加と削除は、どの変数に対して行なうべきでしょうか?
コマンド(コマンドメール、makefml、CGI)
各種コマンドで使うモジュール
コマンド処理のフロー
コマンドの拡張: コマンドメールの場合
コマンドの拡張: makefml の場合
コマンドの拡張: CGI の場合
補足: 『fml4と fml8 のコードの書き方はどのくらい違うか?』
CGI プロセスの内部構造
メソッド
CGI の画面の作りとメソッド
画面とトランポリン機構
備考: FML::CGI::Admin:: ではハードコーディングするしかないのか?
CGI の実装: CGI 関連クラスの継承関係
CGI の実装: config.cgi の実装
ディレクトリ
Q: サブディレクトリ構造は何段階まで必要か?
レシピ's
入力データの検査
入力データ検査についての概要
FML::Restriction クラス
CGI における入力データの制限
議論: FML::Restriction の制限はきびし過ぎるか?
ユーザ認証
議論: FML::Credential の実装
HOOK(フック)
概要もしくは HOOK における諸問題
HOOK の命名規則
レシピ’s
バーチャルドメインの取り扱いについて
バーチャルドメインのデザインモティーフ
概要: fml8 におけるバーチャルドメインの取り扱い
ケーススタディ: FML.ORG サーバ間での引越
エラーメール解析プログラム (libexec/error)
概要
エラー判定のアルゴリズム
データのキャッシュ
エラーメッセージをフォワードする
IO インターフェイス
IO::Adapter の基本形
メソッド
議論
ロック
ロックの概要
TODO
データベース関連モジュール
概要もしくは理想像
永続的なデータの保持
Tie::JournaledFile クラス
FML::Cache::Ring クラス
データベース管理システム(DBMS)との連携
概要
ケーススタディ: 他のMLシステムの設定を fml8 へ変換するには?
内部実装: fml4 から fml8 への移行について
VIII. モジュール
IO へのアダプター層 (IO::Adapter クラス)
IO::Adapter の概要
IO::Adapter のメソッド
fml8 で必要なメソッドの型
file マップ
unixgroup マップ
NIS マップ
MySQL マップ
Mail::Message モジュール
Mail::Message の概要
Mail::Message モジュール: 解析する
Mail::Message モジュール: 新しいメッセージを作る
Mail::Message モジュール: ヘッダの操作
Mail::Message モジュール: メッセージ本文の操作
Mail::Message モジュール: オブジェクトの検索
Mail::Message モジュール: メッセージを表示する。
Mail::Message モジュール: 便利な関数
参照
言語別の処理関数
クラス::Language::
Mail::Message::Encode クラス
[見本] Mail::Message::Encode の使い方
Mail::Message::Encode の仕様(あらすじ)
ユーティリティ run_in_chcode()
例題: 新しいプログラムを作る
ケーススタディ: fmlsch を作る。
ケーススタディ: fmlsch.cgi
IX. 付録
用語集(関数名および変数名関連)
repository リポジトリの構造
ソースツリー構造の概要
リポジトリ内のディレクトリ構造
SGML の書き方
SGML の概念
本( book )形式のテンプレート
HTML の <UL> 相当
HTML の <TABLE> 相当
ツール群
見栄えを変更する
その他の情報源
NetBSD 1.5 での IPv6 の設定
IIJ IPv6 トンネル型サービスの場合
トンネルの設定
ルーティング
ホストなどへのアドレスの割り当て
リファレンス
[古い] Problem Report 関連ツールのまとめ
Problem Report 関連ツール
Call Tracking と Problem Tracking
status で使われる単語の例
GNATS (GNU Problem Report Management System)
Jitterbug
Call Center, Bug Tracking and Project Management Tools for Linux
Perforce Defect Tracking Integration Project
データ構造の実例
curproc オブジェクト
PCB のカテゴリ一覧
List of Tables
1. ディレクトリの構造
1. fml4 と fml8 の違い: CUI (makefml もしくは fml コマンド)
1. リファクタリング TODO
2. リリース・インターバル
1. table description
1. / 以下のディレクトリ構造
2. fml/ 以下のディレクトリの説明
1. テーブルの見本
[HOME] [研究室] [github] [twitter] [blog] [fml4] [fml8] [北海道] Powered by NetBSD and [nuinui.net] .
Copyright (C) 1993-2019 Ken'ichi Fukamachi mail:< fukachan at fml.org >