STATUS: fml-devel で現在できること/できないこと Last Modified: $Date: 2004/06/25 04:11:36 $ (GMT) * このドキュメントは"fml bible" の目次に沿って何ができて何がま だできないかをリストアップしたものです。 ○ 動作実績 perl 5.6.1 on NetBSD 1.5.x (1.5 stable) * perl 5.6.1 on NetBSD 1.6 * perl 5.00503 on FreeBSD 4.3 STABLE perl ? on FreeBSD 4.6 RELEASE perl 5.00503 on FreeBSD 4.7 RELEASE-p3 perl 5.00503 on FreeBSD 4.6.2 RELEASE * perl 5.6.1 on FreeBSD 5.2.1 perl 5.6.1 on Turbolinux Server 8 (qmail) * perl 5.6.1 on Redhat Linux 7.2 (postfix) * perl 5.00503 on Redhat Linux 6.2 (sendmail8.11.6) * smrsh はリンク張る必要はあります。 postfix + perl 5.6.1 on Solaris 7 * postfix 2.0.3 + perl 5.6.1 on Solaris 9 * [注意] * 新 installer がうまく動いている OS () テスト中 3章 [TODO] MLサーバの理論をかく II部 fmlのセットアップ〜MLの作成 4章 Unix上でのfmlのインストール ユーザ root になり、configure そして make です。 つまり典型的なインストール手順を行なって下さい。 # ./configure # make install fml プロセスのユーザや使用するディレクトリは configure のオプションで変更可能です。 * メールサーバの設定は 4.0 の場合と同様です。 注意: ユーザ fml を作るだけでなく、きちんとユーザ fml さんの ホームディレクトリも作って下さい。 パッケージ作成者のかたへ: fml8 一式を / 以外の場所へインストールする際は、 以下のように install_root でディレクトリを指定して下さい。 # make install install_root=/tmp/dir [TODO] sendmail + smtpfeed [TODO] MacOS X Server 5章 Unix上でMLを作る "makefml newml elena" を使って下さい。 つまり fml 4 と使い方は一緒です。 ただし fml-devel では newml 時に設定用 CGI や、HTML 化された記事 をおくディレクトリ ~fml/public_html/ .. を用意する点が異なります。 [TODO] sendmail + smtpfeed [TODO] MacOS X Server * postfix と qmail、および sendmail procmail の見本を作っています。 * バーチャルドメインの扱い まず nuinui.net 用のディレクトリの指定が必要です。 % makefml newdomain nuinui.net ディレクトリ newml のさいには % makefml newml elena@nuinui.net のようにドメインつきの名前を指定して下さい。 注意: main.cf の virtual_maps は obsolete で、 ml_home_prefix_maps になりました。 ml_home_prefix_maps が virtual_maps を含んでいるので virtual_maps も一応つかえます。 6章 Windows 2000/NT4上でのfmlのインストール [TODO] Microsoft ものは全然手をつけていません。 [TODO] Microsoft ものは IMail から手をつけるのがいいんじゃないかな [TODO] pop based ML [TODO] imap based ML [TODO] sendmail (NT版) 7章 アップグレード もう一度インストールをし、/etc/fml/main.cf の fml_version を編 集するだけです。main.cf の編集をするだけでアップグレードもダウ ングレードも思いのままです。 ★ レシピ のアップグレードの節を見てね [TODO] メールサーバの停止? [TODO] elena MLのアップグレード? ML固有のアップグレード tips なんてあるかな 8章 Unix上でのCGIのセットアップ デフォルトで CGI スクリプトが用意されます。 [TODO] .htaccess の設定支援ツールがまだありません。 エディタでファイルを消すなり、編集するなりして下さい。 CGI からのエラーは __ERROR_.(キーワード)__ で croak() してる [TODO] config [TODO] $maintainer のリストを CGI から設定したい [TODO] cgi のスタイルシート対応 文字を小さくした方がいいとか…の類。 #だれか、やってぇ〜 ;) 9章 fmlの動作確認 これは fml 4.0 とほぼ同様の感じ。 III部 fmlのカスタマイズ 10章 MLのメンバーができること コマンドメールで利用可能なコマンドは $user_command_mail_allowed_commands $anonymous_command_mail_allowed_commands という2つの変数で定義されています。後者は guide や subscribe など、メンバーでなくても使えないといけないコマンドのリストです。 一般ユーザ向けのコマンドの例 ($user_command_mail_allowed_commands) help get mget get mget send subscribe add unsubscribe bye remove resign signoff chaddr confirm guide info objective summary 誰でも使えるコマンドの例 ($anonymous_command_mail_allowed_commands) guide info add subscribe chaddr confirm *これらは FML::Command::User:: クラスで定義されています。 [TODO] get: ファイル数が多い場合、分割して送返(fml-devel 485) reply_message() によろしくねーとしかしてないので、 メールキューに入れる時に分割? 11章 fml管理者ができること makefml で操作可能な項目は FML::Command::Admin:: クラスの コマンドすべてです。 MLの作成 OK MLの削除 OK MLのメンバーの登録と削除 OK 登録しているアドレスの変更 OK off/on OK 簡単なまとめおくりはできます。 use_article_digest_function = yes / no により使う/使わないが指定できます(yes by default)。 [TODO] まとめおくり (fml 4 のような複雑なバージョン) [TODO] リモート管理 現在パスワード認証だけできます。 その他の認証方式は未実装 [TODO] MLのカスタマイズはファイルの編集あるのみ 注意: 当然リモートコマンドより、いろいろなことができます。 [TODO] rmml したMLをふっかつさせることは? → renew コマンドだ 一番日付が最近の @xxx.yyyymmdd を探して、そこから戻す。 だが、 aliases を復活させる問題があるので、もう一度 newml もする必要があるだろう… うむ、renew をつくろう [TODO] 期限つき subscribe subscribe -> 一カ月すると削除される? FML::User::Info -> FML::User::DB ok o.k. so, how to kick off removal process ? [TODO] 期限つき newml libexec/faker 時刻を FML::User::DB でどっかに記録 shared_db_dir/ml_create_time いや、うむをいわさず、newml コマンドでごーでいいのかな? /etc/postfix/virtual @nuinui.net faker=nuinui.net /etc/mail/aliases faker=nuinui.net :include:/ml/nuinui.net/@@faker@@/include 12章 fmlの設定ファイルを変更する すべてのMLに同じ設定を強制する (fml4 の site_force.ph) /etc/fml/site_default_config.cf 各MLの設定変更方法 各MLのホームディレクトリにある config.cf を編集して ください。 [TODO] メニューでの操作 (未実装) 設定支援ツールはまだありません。 [TODO] fml4 の site_init.ph にあたるものは? って必要なのかなぁ…??? 13章 MLのスタイルのカスタマイズ (ケーススタディ) 投稿の制御: $article_post_restrictions で制御 コマンドメールの制御: $command_mail_restrictions で制御 コマンドメールの禁止: $use_command_mail_function を no にすると コマンドメールの機能自体を停止できる。 $command_mail_restrictions で reject とだけ指定するも可。 誰でも投稿可能: $article_post_restrictions で permit_anyone メールマガジン型: $member_maps から $primary_member_map をはずす $member_maps に投稿可能なメンバーのリストを追加 さらに MTA の設定で IP アドレス制限などかけてね 階層化されたML: $member_maps $recipient_maps をよろしく書く procmail: 4.0 と同様だ。 makefml newml が見本を作るので参考にしてね。 [TODO] デフォルトのポリシーの説明 (D)C [TODO] 自動とか手動登録とかをどこで指定するの? うーん、コマンドごとに指定できるようにしないとか? $subscribe_command_mode = auto / manual $chaddr_command_mode = auto / manual $unsubscribe_command_mode = auto / manual [TODO] 自動登録の confirmation 以外のモード 今はデフォルトで自動登録ですわ :-) まだ confirmation タイプしかありません。 [TODO] コマンドメール(の手動登録モード) confirmation は fml8 で、登録作業は makefml コマンドで [TODO] モデレータ moderator_*_map だけ定義がある。定義があるだけ;) [TODO] 複数の管理者による運用 [TODO] 登録と削除をまとめておこなう [TODO] listserv 風のコマンドアドレス [TODO] qmail-ext によるコマンド [削除] ML本体でコマンドメールも受けられる機能 14章 ヘッダの書き換え FML::Header とフックを使えばできます。 多くのヘッダ操作は FML::Header クラスの提供するアクセスメソッ ドになっています。 [TODO] RFC 3282 (Content Language Headers) を考慮する 15章 fmlの返すメッセージをカスタマイズする /usr/local/share/fml/$fml_version/message/$charset/ にあります。 Accept-Language: X-Accept-Language: Content-Type: などを見て、返すメッセージの言語を決めています。 曖昧な時は複数言語で返します(mime/multipartになります)。 [TODO] site local のディレクトリを決める /etc/fml/ 以下? site_local/ ? $domain/ ? Q: ML LOCAL なメッセージの変更は? 例えば、文字コードが euc-jp のメッセージ・テンプレートは $ml_home_dir/local/share/message/euc-jp/ に置くとそちらが優先される 16章 記事のフィルタリング 実装済み (FML::Filter クラス) ヘッダフィルタ 本文に対するフィルタ text/plain に対するフィルタ MIME 構造に基づくフィルタ その他 特殊なウィルスなども含む 4.0 の ContertFilter 相当機能は mime_component_filter です。 ファイル名は /etc/fml/mime_component_filter デフォルト値は /etc/fml/mime_component_filter [TODO] 統計をとりたい(どのルールにどのくらい引っかかったか?) [TODO] 統計を見せるコマンド(必要?) [TODO] 統計のためのデータベース [TODO] フィルタの拡張機能? content-type が正しいかどうかを調べる Q: content-type が正しいかどうかを調べる image/gif なら本当に gif ? A: ん〜全部は無理だなぁ。File::なんとかで、 ファイルのタイプを識別するモジュールとかあれば OK なのかもしれず(?) Q: まだ、text/plain 部分は言語依存パートになってない(?) だいたい言語依存とかいうなら virus checker を 切り離せよ > おれ など、てんこもりなので、text_plain_filter って ちょっと整理が大変だなと。 Q: 古いメールは SPAM に違いない 17章 トラフィックを制限する(メール爆弾対策) コマンドメールで、コマンドごとのリクエスト数制限は実装されている。 ML全体で同じデータベースを使う。 下準備はしてある → UDB [TODO] トラフィックフィルタ自体は未実装 18章 リモート管理(メールでfmlを操作する) 管理者がコマンドメールで使える特権コマンドつまり admin コマン ドは $admin_command_mail_allowed_commands という変数で定義 されているものが利用可能です。 利用可能なコマンドは FML::Command::Admin:: クラスの部分集合です etc/passwd-admin fml4 の etc/passwd は fml8 の etc/passwd-admin です。 フォーマットが微妙に違います(拡張されている) 操作ツール、コマンドは fml4 と同じです。 [DONE] 共通鍵暗号認証 [TODO] 公開鍵暗号認証 [TODO] "approve パスワード コマンド"型構文サポート 19章 MLの暗号化 (配送時の暗号化) [TODO] 配送時の暗号化 共通鍵暗号認証 ??? [TODO] 配送時の暗号化 公開鍵暗号認証 20章 MLの記事をWWWで公開する デフォルトで作ることになっています。デフォルトでは ~fml/public_html/fml/mlarchive/$domain/$ml_name/ というディレクトリに作ります。このまま作るなり、適宜 alias を切るなりして使うとよいでしょう。 [TODO] permission はこれでいい? [TODO] Mail::Message::ToHTML X-Sequence: fml-devel 515 2) indexの要、不要について 現状ではall,monthly,threadが出来るが、これらも選択できるほうが 良いかも#2万通以上のMLがあるとallは不要と思えてくる... 3) thread.htmlの月別の作成&出来れば逆順のもの 21章 まとめ送り 簡易版のまとめおくりはサポートされている。 [TODO] fml 4 のような粒度の細かなまとめ送り IV部 トラブルシューティング [TODO] トラブルシューティング事例を集める V部 その他のトピック 26章 日々の運用について スプールは真っ平ら or 一階層構造のどちらでもとれます。 何万通も流れそうなMLでは一階層構造がお薦めです。 デフォルトは fml4 との互換性のため、まったいらです。 デバッグのためにメールを一定量つねに保存しています。 これは記事の保存とは別の仕組みで、全プロセスの入出力の記録です。 受けとったメールをすべて保存する。 var/mail/incoming/ 以下に保存します。 fml4 と異なり保存がデフォルトの挙動です。 出ていくメールを保存する。 var/mail/outgoing/ 以下に保存します。 fml4 と異なり保存がデフォルトの挙動です。 ログファイルへの newsyslog (fml4 の $LOGFILE_NEWSYSLOG_LIMIT) use_log_rotate = yes log_rotate_size = バイト数 [削除] var/log/_smtplog.数字ではなくなりました。 [TODO] スプールの圧縮 [TODO] スプールを tar などにまとめる (mode_archive) [TODO] スプールの expire (mode_expire) [TODO] 設定ファイルなどの RCS 管理 [TODO] 設定ファイルなどの CVS 管理 [TODO] log suffix extension: log.YYYYMMDD とかは? [TODO] 「このMLはもうありません」オプション libexec/ の下の全部のプログラム全部が対応して、 ml や ml-ctl 宛に来たメールにみんな返事を返すべきだ。 ただし、negative cache つきで(同じアドレスには一回し か返事をしない)。コマンドじゃなくて変数でしょうねぇ。 デフォルトでは off (SPAM 対策)。 27章 エラーメールを自動解析する Mail::Bounce モジュールを使う。 自動削除も可能。 [TODO] カスタマイズを可能にする [TODO] カスタマイズされたモジュールの置き場所 [TODO] エラーメールのフォワードについて改良 (fml-devel 451) maintainer_recipient_maps は実装済み デフォルトは未定義、フォワーディングはしない +(ヘッダ情報+そのエラーメールのアドレスの分析レポー ト)とかなんか付けると便利? 28章 メールサーバの変更/引越し 手間は 4.0 とほとんど同じかな 29章 バーチャルドメイン デフォルトで考えてある。 VI部 fmlの内部構造と機能拡張 30章 変数と関数 変数一覧は常に更新されている。fml8 チュートリアルを参照。 31章 リストファイルのフォーマット fml8 チュートリアルを参照。 32章 fml.plプロセスの動作 [TODO] 汎用エラートラップフレームワーク CGI も含めて汎用のフレームワークがほしい エラーをどのように呼びだし側へ組織的に伝えるか? $curproc->error_regist( { キー => オブジェクト } ); croak(エラーのキー); ? 必要な場所すべてに $curproc ってのが難しそう? エラーをどのように呼びだし側へ組織的に伝えるか? オブジェクトか HASH_REF ごとわたせないか? 33章 デバッグをする モジュール単位で $debug という変数がある場合がある。 デバッグの時はモジュールを直接書き換えるしかないけど デバッグ用のディレクトリを作って main.cf で制御してもよいね 34章 コマンドメールのカスタマイズ Q: カスタマイズされたモジュールを置く場所は? $ml_home_dir の下に local/lib ってのがある、その下におく 例: $ml_home_dir/local/lib/FML/Command/User/help.pm を作ると、そのML独自のヘルプコマンドとなる 35章 ケーススタディ:HOOKによる拡張 [レシピ] subject: によってフォワード先を変えられる? VII部 Advanced Study 36章 fmlからデータベースへのアクセス はじめから前提です。 IO::Adapter に組み込まれている [削除] replace メソッドは削除した [TODO] PostgreSQL 対応 37章 配送の高速化について (+ 配送関係の TIPS ) [レシピ] フォワードする関数 multipart ということではなく、いきなり曲げる 宛先を変えるということか? [TODO] 配送ルーチンが自動分割を頑張るオプション reply_message() の先? それって、メール爆撃するあれか? ;) text/plain を適当に切ると読めないような気がするが… [TODO] Mail::Delivery の LMTP モード [TODO] outgoing address hack SPAM 対策についてドキュメントを書く [TODO] execute $program on the disk NOT IPC. 38章 試論:現代的サーバデザインについて VIII部 付録 付録D virus_check.phの例 ********* ********* ********* ********* ********* ********* いまひとつ分類できないかな? * スケジューラ alarm() によるスケジューラ queue manager for LMTP ? ********* ********* ********* ********* ********* ********* fml-devel 固有の TODO --- $FML: STATUS.txt,v 1.36 2004/06/25 04:11:36 fukachan Exp $