STATUS: fml-devel で現在できること/できないこと Last Modified: $Date$ (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 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 さんの ホームディレクトリも作って下さい。 [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 の見本を作っています。 * バーチャルドメインの扱い makefml newml elena@nuinui.net のようにドメインつきの名前を指定して下さい。 注意: nuinui.net 用のディレクトリの指定が必要です。 main.cf の virtual_maps で、ファイルを指定して下さい。 virtual_maps = /etc/fml/virtual このファイルの書式は『ドメイン ディレクトリ』です。 6章 Windows 2000/NT4上でのfmlのインストール [TODO] Microsoft ものは全然手をつけていません。 [TODO] Microsoft ものは IMail から手をつけるのがいいんじゃないかな [TODO] pop based ML [TODO] imap based ML [TODO] sendmail 7章 アップグレード もう一度インストールをし、/etc/fml/main.cf を編集するだけです。 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のメンバーができること $commands_for_user および $commands_for_stranger という変数で定義されています。 一般ユーザ向けのコマンド help get mget get mget send subscribe add unsubscribe bye remove resign signoff chaddr confirm guide info objective summary 誰でも使えるコマンド 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_digest_program = yes / no により使う/使わないが指定できます(yes by default)。 [TODO] まとめおくり (fml 4 のような複雑なバージョン) リモート管理は現在パスワード認証だけできます。 パスワード変更は? [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の設定ファイルを変更する [TODO] 設定ファイルのフォーマットの説明 [TODO] 設定ファイルの変更方法 各MLのホームディレクトリにある config.cf を編集して ください。 [TODO] メニューでの操作 設定支援ツールはまだありません。 [TODO] すべてのMLに同じ設定を強制する /etc/fml/ (とか /usr/local/etc/fml/ とか) 以下に デフォルトの .cf がおかれますし、サイト依存、ドメイン依存 の .cf を作ることでサイト、ドメインごとの全MLの デフォルトを変更することもできます。 [TODO] etc/src/config.cf.ja/ の説明文ってこれでよい? 13章 MLのスタイルのカスタマイズ (ケーススタディ) [TODO] デフォルトのポリシーの説明 (D)C 投稿の制御: $post_restrictions で制御 コマンドメールの制御: $command_restrictions で制御 コマンドメールの禁止: $command_restrictions で reject とだけ指定 [TODO] 自動とか手動登録とかをどこで指定するの? $subscribe_command_mode = auto / manual $chaddr_command_mode = auto / manual $unsubscribe_command_mode = auto / manual [TODO] 手動登録? [TODO] 自動登録 今はデフォルトで自動登録ですわ :-) まだ confirmation タイプしかありません。 誰でも投稿可能: $post_restrictions で permit_anyone メールマガジン型: $member_maps から $primary_member_map をはずす $member_maps に投稿可能なメンバーのリストを追加 IP アドレスで制限しなさいね [TODO] モデレータ 自動ファイル返送 [ TODO ] multipart 以外はなしだよな? なし [TODO] 複数の管理者による運用 登録と削除をまとめておこなう [TODO] listserv 風のコマンドアドレス [TODO] qmail-ext によるコマンド 階層化されたML: $member_maps $recipient_maps をよろしく書く procmail: 4.0 と同様だ [削除] ML本体でコマンドメールも受けられる機能 14章 ヘッダの書き換え FML::Header とフックを使えばできます。 多くのヘッダ操作は FML::Header クラスの提供するアクセスメソッ ドになっています。 [TODO] RFC 3282 (Content Language Headers) を考慮する 15章 fmlの返すメッセージをカスタマイズする /usr/local/share/fml/$fml_version/message/$charset/ にあります。 [TODO] site local のディレクトリを決める /etc/fml/ 以下? site_local/ ? $domain/ ? Q: ML LOCAL なメッセージの変更は? 例えば、文字コードが euc-jp のメッセージ・テンプレートは $ml_home_dir/local/share/message/euc-jp/ に置くとそちらが優先される 16章 記事のフィルタリング 実装済み (FML::Filter) 検出できるルール: ヘッダ、本文、特殊なウィルス content filter 4.0 の ContertFilter 相当機能は mime_component_filter ファイル名は /etc/fml/mime_component_filter デフォルト値は /etc/fml/mime_component_filter [TODO] 統計をとりたい(どのルールにどのくらい引っかかったか?) [TODO] 統計を見せるコマンド(必要?) [TODO] 統計のためのデータベース [TODO] フィルタの拡張機能? Q: content-type が正しいかどうかを調べる image/gif なら本当に gif ? A: ん〜全部は無理だなぁ。File::なんとかで、 ファイルのタイプを識別するモジュールとかあれば OK なのかも しれず(?) Q: まだ、text/plain 部分は言語依存パートになってない。 だいたい言語依存とかいうなら virus checker を切り離せよ > お れなど、てんこもりなので、text_plain_filter ってちょっと整理が 大変だなと。 Q: 古いメールは SPAM に違いない 17章 トラフィックを制限する(メール爆弾対策) [TODO] 未実装 [TODO] トラフィック統計を取るために、あらかじめいろんなデータを DB に取りまくるべき? thread db とデータを共有する? 18章 リモート管理(メールでfmlを操作する) 管理者がコマンドメールで使える特権コマンドつまり admin コマン ドは $commands_for_privileged_user という変数で定義 されているものが利用可能です。 利用可能なコマンドは FML::Command::Admin:: クラスの部分集合です [TODO] "approve パスワード コマンド"型構文サポート [TODO] 非対称鍵暗号認証 [TODO] etc/passwd-admin の操作ツール、コマンド 19章 MLの暗号化 [TODO] 未実装 20章 MLの記事をWWWで公開する デフォルトで作ることになっています。デフォルトでは ~fml/public_html/fml/mlarchive/$domain/$ml_name/ というディレクトリに作ります。このまま作るなり、適宜 alias を切るなりして使うとよいでしょう。 [TODO] permission はこれでいい? [TODO] Mail::Message::ToHTML X-Sequence: fml-devel 515 1) spam対策の表示処理について 今メールアドレスとかを名前の部分だけか address@xxx.xxx.xxx み たいな感じで処理をしていますが、ヘッダ部分のTo:とかCC:とかはそ のままなので、これも直した方がいいかも。また逆にこの機能は会社 のwebではそのまま表示されるのが望ましいので変数で処理できるよ うにしたい 2) indexの要、不要について 現状ではall,monthly,threadが出来るが、これらも選択できるほうが 良いかも#2万通以上のMLがあるとallは不要と思えてくる... 3) thread.htmlの月別の作成&出来れば逆順のもの 21章 まとめ送り 簡易版のまとめおくりはサポートされている。 [TODO] fml 4 のような粒度の細かなまとめ送り [TODO] それを踏まえた IV部 トラブルシューティング [TODO] トラブルシューティング事例を集める V部 その他のトピック 26章 日々の運用について スプールは真っ平ら or 一階層構造のどちらでもとれます。 一階層構造がお薦めです。 受けとったメールを保存する。 var/mail/incoming/ 以下に保存します。 自分が出したメールは var/mail/outgoing/ 以下に保存します。 [削除] var/log/_smtplog.数字ではなくなりました。 [TODO] ログファイルの expire [TODO] スプールの圧縮 [TODO] スプールを tar などにまとめる (mode_archive) [TODO] スプールの expire (mode_expire) [TODO] 設定ファイルなどの RCS 管理 [TODO] 設定ファイルなどの CVS 管理 [TODO] ログファイルなどへの newsyslog File::Rotate に実装されているが 組み込まれてはいない。 [TODO] log suffix extension [TODO] 「このMLはもうありません」オプション libexec/ の下の全部のプログラム全部が対応して、 ml や ml-ctl 宛に来たメールにみんな返事を返すべきだ。 ただし、negative cache つきで(同じアドレスには一回し か返事をしない)。コマンドじゃなくて変数でしょうねぇ。 デフォルトでは off (SPAM 対策)。 27章 エラーメールを自動解析する Mail::Bounce モジュールを使う。 自動削除も可能。 [TODO] アルゴリズムを選択可能にする [TODO] カスタマイズを可能にする [TODO] カスタマイズされたモジュールの置き場所 [TODO] エラーメールのフォワードについて改良 (fml-devel 451) maintainer_recipient_maps は実装済み デフォルトは未定義、フォワーディングはしない +(ヘッダ情報+そのエラーメールのアドレスの分析レポー ト)とかなんか付けると便利? 28章 メールサーバの変更/引越し 手間は 4.0 とほとんど同じかな 29章 バーチャルドメイン デフォルトで考えてある。 VI部 fmlの内部構造と機能拡張 30章 変数と関数 31章 リストファイルのフォーマット 32章 fml.plプロセスの動作 [TODO] エラーをどのように呼びだし側へ組織的に伝えるか? エラートラップフレーム? $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 メソッドは削除した 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.32 2003/11/25 11:36:11 fukachan Exp $