fml は Mailing List (以下 ML) Server package です。perl を使って書かれ ています。FML は配送プログラムや多くのコマンド用のサーバ(ユーザー用や MLをリモートで管理するためのもの)などからなります。また対話設定プログ ラムやコマンドサーバのインターフェイスを listserv / majordomo スタイル にするエミュレータなどの多くの補助プログラムなどもついています。
fmlの情報源として、以下のURLがあります。
http://www.fml.org
http://www.sapporo.iij.ad.jp/staff/fukachan/fml/index.html
実際にインストールを行う前に、以下のようなことをあらかじめ決定しておきます。また、必要に応じてML専用のアカウントを作成しておきます。 ここでは以下のようなアカウントを作成します。
- 管理ユーザ
MLの運用を root などの特権ユーザで行うべきではありません。ML用の特別な 一般アカウントを作成し、そのユーザでMLのインストール、設定、運用、管理を行う ようにします。
ここでは、fml本体のインストールは root で行い、他のユーザにはいじれない ようにし、その他の作業(MLの作成など)は、新しく作成したML用の一般ユーザで 行うことにします。
- 運用ポリシー
デフォルトでは、fmlは各MLの所有者にしか MLの記事を見れないような permission で MLを作成します。そのため、MLの所有者が
自分だけなのか
自分以外にもいるのか
といったことにより、MLの運用ポリシーが変わってきます。fmlでは、以下のような 項目を設定できます。
- personal
- 自分1人しか使わない場合です。自分のアカウント、もしくはML専用のアカウント を用います。すべてのファイルやディレクトリは、そのアカウントだけで 読み書き可能です。
- group
- ある group に属するユーザは誰でも自由に MLを作成することができます。 各MLはそのMLの所有者だけが読み書きできます。
- fmlserv
- ある group に属するユーザは誰でも自由に MLを作成することができます。 各MLの一部のファイルは、その group のユーザなら誰でも読み書きできます。 ただし、設定ファイルは各MLの所有者のみ変更可能です。
以上の3つのうち、いずれかを選択します。root で vipw を実行し、ユーザ fml を登録します。ユーザ名 fml (ユーザIDは任意) 所属グループ fml (グループIDは任意) ホームディレクトリ /usr/local/fml
また、/etc/group を編集し、グループ fml を登録します。fmlグループに 所属するユーザには、MLの所有者を記述します。
次に、実際にインストールを行います。 ここでは、fml を FreeBSD2.2.8-Release が動作している計算機にインストール します。以下のURL
ftp://ftp.iij.ad.jp/pub/IIJ/dist/fukachan/fml/
より、最新の fml を入手します。今回は、fml-3.0.1.tar.gz を入手しました。 入手後、適当なディレクトリで解凍・展開し、ディレクトリを移動します。% tar xvfz fml-3.0.1.tar.gz % cd fml-3.0.1次に、インストーラ makefml を走らせます。以下のコマンドを root で実行します。# perl makefml installこの時に、以下のような項目について質問されます。以下に各項目の説明を記述します。Personal Use or ML-Admin-Group-Shared or fmlserv you use? Personal, Group, Fmlserv (personal/group/fmlserv) [personal] DOMAIN NAME [oak] oak.eg.t.kanazawa-u.ac.jp FQDN [oak] oak.eg.t.kanazawa-u.ac.jp EXEC FILES DIRECTORY [/usr/local/fml] TOP LEVEL ML DIRECTORY [/var/spool/ml] Language (Japanese or English) [English] Japanese TimeZone (TZ: e.g. +0900, -0300) [+0900]以上の質問に答えれば、fmlがインストールされます。設定した情報は、fmlを /usr/local/fml にインストールした場合、/usr/local/fml/.fml/ 以下に 保存されます。
- DOMAIN NAME
- ドメイン名です。メーリングリストアドレスの @ から後ろで使う部分です。 もし、アドレスにマシン名まで含めたものを使う場合は、FQDN を指定します。 virtual domain の場合も、ここで virtual domain を指定します。
- FQDN
- FQDN(Full Qualified Domain Name)を指定します。ホストのインターネット上での 完全名です。
- EXEC FILES DIRECTORY
- fmlをインストールするディレクトリを指定します。
- TOP LEVEL ML DIRECTORY
- MLを作成するディレクトリを指定します。
- Language
- ML用に作成されるドキュメントの言語を指定します。"Japanese"か" EnglishD" が 選択できます。
- TimeZone
- Time Zone を指定します。日本は [+0900] です。
次に、fmlをインストールしたディレクトリと、MLを作成するディレクトリの 所有者とグループを変更しておきます。# chown -R fml.fml /usr/local/fml # chown -R fml.fml /var/spool/ml以上で fml のインストールは終了です。
基本的な設定の変更やメンバーの登録・削除などはコマンドで実行できます。 コマンドは ML の所有者で実行します。
MLを作成するには、makefml コマンドを使用します。例えば、Funalab ML を 作成する場合は、以下のようにします。% /usr/local/fml/makefml newml funalabこれより、ML のディレクトリ /var/spool/ml 以下に funalab ディレクトリが 作成され、その下に以下のようなファイルが作成されます。次に、使用している MTA(Mail Transfer Agent)に応じて、MLの設定を行います。 $DIR/fml-3.0.1/doc/ 以下にある以下のドキュメントを参考にします。aliases /etc/aliases に記述するサンプル include 投稿するアドレスのための include file include-ctl コマンド用のアドレスのための include file cf config.ph の元 config.ph メーリングリストの設定ファイル guide ガイド help MLやコマンドの使い方 help-admin リモート管理のためのコマンド一覧 objective MLの目的について welcome 自動登録時に使う「ようこそ…」の文面 confirm 自動登録で使う文面 crontab vixie cron 用の定義ファイルのサンプル deny メンバー以外からの投稿に拒否の旨を伝える文面 fml.c C Wrapper config.ht fml.c のヘッダファイル以下に、MTAとして sendmail と qmail を使用している場合について、設定内容を 記述します。INSTALL_with_SENDMAIL.jp INSTALL_with_QMAIL.jp INSTALL_with_EXIM.jp INSTALL_with_POSTFIX.jp INSTALL_with_ZMAILER.jp他の MTA を使用している場合は、それに応じてドキュメントを読んで設定します。 以上で ML の作成は終了です。
- sendmail
/var/spool/ml/funalab/aliases の内容を /etc/aliases に追加し、# newaliasesを実行します。
- qmail
いくつか方法がありますが、MLと同じ名前のユーザを作成するのがお勧めです。 MLの管理ユーザを、この場合は fml ではなく funalab(MLの名前)にして、MLの 管理を行います。
/var/spool/ml/etc/qmail/alias にある .qmail-funalab* ファイルを、 ユーザ funalab のホームディレクトリに以下のようにコピーします。ユーザ funalab で作業 % cp /var/spool/ml/etc/qmail/alias/.qmail-funalab ~/.qmail % cp /var/spool/ml/etc/qmail/alias/.qmail-funalab-admin ~/.qmail-admin % cp /var/spool/ml/etc/qmail/alias/.qmail-funalab-ctl ~/.qmail-ctl % cp /var/spool/ml/etc/qmail/alias/.qmail-funalab-default ~/.qmail-default % cp /var/spool/ml/etc/qmail/alias/.qmail-funalab-request ~/.qmail-request
MLを削除したい場合は、以下のようにして MLのディレクトリを削除します。% rm -rf /var/spool/ml/MLの名前その後、sendmail の場合は、/etc/aliases から該当するMLの部分を削除して newaliases を実行します。
qmail の場合は、管理ユーザの ~/.qmail-* のMLに該当するファイルを削除します。
MLへのユーザの登録・削除は、以下のようにして行います。ユーザ登録 % /usr/local/fml/makefml adduser funalab sakai@oak.eg.t.kanazawa-u.ac.jp % /usr/local/fml/makefml add funalab sakai@oak.eg.t.kanazawa-u.ac.jp ユーザ削除 % /usr/local/fml/makefml byeuser funalab sakai@oak.eg.t.kanazawa-u.ac.jp % /usr/local/fml/makefml bye funalab sakai@oak.eg.t.kanazawa-u.ac.jp
makefml を使用することにより、メニュー形式で基本的なMLの設定変更ができます。% /usr/local/fml/makefml config ML名以下のようなメニューが表示されます。設定を終了したら、 /var/spool/ml/MLの名前/ ディレクトリ以下にある cf と config.ph が 再生成されます。=== TOP MENU === Mailing List Addresses FOR POST funa@oak.eg.t.kanazawa-u.ac.jp FOR COMMAND funa-ctl@oak.eg.t.kanazawa-u.ac.jp _______________________ 0 END 1 POLICY OF ACCESS (WHO CAN POST AND USE COMMANDS) [POST] PERMIT_POST_FROM members_only WHEN POST FROM NOT MEMBER reject [COMMAND] PERMIT_COMMAND_FROM members_only WHEN COMMAND FROM NOT MEMBER reject 2 REGISTRATION METHOD TYPE AUTO_REGISTRATION_TYPE confirmation UNSUBSCRIBE_AUTH_TYPE 3 SETTINGS AROUND COMMANDS address for command funa-ctl@oak.eg.t.kanazawa-u.ac.jp 4 REMOTE ADMINISTRATION PERMIT ? NO AUTH_TYPE crypt 5 HEADER CONFIGURATIONS 6 OPTION 7 SECURITY & FILTERING ************************************************************ Which section? (0-7) [0]
- POLICY OF ACCESS (WHO CAN POST AND USE COMMANDS)
投稿(POST)とコマンド(COMMAND)のそれぞれについて、以下の項目が設定できます。
- PERMIT_POST_FROM (誰からの投稿を許すか?)
だれでもOK anyone 登録されているメンバーだけ members_only モデレータだけ moderator - WHEN POST FROM NOT MEMBER (登録メンバー以外からメールがあった場合、どうするか? )
拒否 reject 自動登録 auto_subscribe 無視(管理者にだけ報告する) ignore
- REGISTRATION METHOD TYPE
上述の WHEN POST FROM NOT MEMBER で auto_subscribe を選んだ場合に、 自動登録の方法を設定します。
- AUTO_REGISTRATION_TYPE (自動登録の方法)
confirmation subscribe request に対し、一度は確認を求めるメールを送り、確認をもらってから登録します。 body 本文に subscribe と書いてあるメールなら登録します。 subject Subject: に subscribe と書いてあるメールなら登録します。 no-keyword メンバーでないなら登録します。 - UNSUBSCRIBE_AUTH_TYPE
MLを抜ける(unsubscribe)する時にでも、confirmation をかけるかを設定します。 デフォルトは NO です。- CHADDR_AUTH_TYPE
chaddr コマンドでも、confirmation をかけるかを設定します。 デフォルトは NO です。
- SETTINGS AROUND COMMANDS
コマンドとして使用するアドレスの設定を行います。
- CONTROL_ADDRESS
funalab-ctl@DOMAINNAME デフォルトの設定です。コマンド専用のアドレスを別に指定します。 funalab@DOMAINNAME 投稿用とコマンド用のアドレスを同じにします。この場合は、# command という形式のコマンドを送ると、サーバはコマンドとして解釈します。 fmlserv@DOMAINNAME fmlserv(listserv style のコマンド用サーバ)の設定をしている場合に 指定します。 NOT USE MLでコマンドを使わない、つまり配送専用の場合に指定します。 - MAIL_LIST_ACCEPT_COMMAND
投稿用とコマンド用の両方のアドレスがあり、なおかつ投稿用のアドレスでも # command という形式でコマンドを受けるようにする場合は YES に設定します。
- REMOTE ADMINISTRATION
リモート管理について設定します。セキュリティ上、デフォルトではリモート管理は できないようになっています。
- REMOTE ADMINISTRATION
リモート管理をできるようにするには YES を設定します。デフォルトは NO です。- REMOTE_ADMINISTRATION_AUTH_TYPE
認証タイプを設定します。以下の項目より選択します。デフォルトは crypt です。
pgp PGPベースの認証方式 crypt パスワード認証(パスワードを crypt で暗号化して保存) From: のアドレスが管理者メンバーリストにある。 md5 パスワード認証(パスワードを MD5 で暗号化して保存)。 From: のアドレスが管理者メンバーリストにある。 address From: のアドレスが管理者メンバーリストにある。 - ADMIN_ADD_SEND_WELCOME_FILE
admin add でユーザを登録した時に、そのユーザに WELCOME メッセージを 送るかどうかを設定します。デフォルトは NO です。
- HEADER CONFIGURATIONS ヘッダ関連(To: や Subject: など)の設定を行います。
- SUBJECT_TAG_TYPE
Subject: の形式について指定します。以下の項目から選択します。Subject: NO TAG (Default, Fml recommends) Subject: (Elena:00100) Subject: [Elena:00100] (hml 1.6 compat) Subject: (Elena 00100) Subject: [Elena 00100] Subject: (Elena,00100) Subject: [Elena,00100] Subject: (Elena) Subject: [Elena] Subject: (00100) Subject: [00100]- SUBJECT_TAG_FIGURE
例えば、Subject: [Elena:00100] の場合、 00100 の部分の桁数を指定します。- REWRITE_TO
To: の形式について設定します。以下の項目から選択します。
To: funalab@DOMAINNAME, NON-MAIL-LIST-ADDRESS To: $MAIL_LIST の形で始まっていない時は、 「$MAIL_LIST, それ以外のアドレス」に書き換える To: funalab@DOMAINNAME 常に To: $MAIL_LIST の形式にする pass through the original To: original の To: のままにする - DATE_TYPE
Date: の形式を指定します。以下の項目から指定できます。Original Date: Date: (when distributed) and Posted: Original Date Date: (when distributed) and X-Posted: Original Date Date: (when distributed) and X-Original-Date: Original Date Date: (when received) and Posted: Original Date Date: (when received) and X-Posted: Original Date Date: (when received) and X-Original-Date: Original Date- PASS_ALL_FIELDS
ヘッダの中身を全部通すなら YES にします。デフォルトは YES です。 ただし、$SKIP_FIELDS(Received: と Return-Receipt-To:)のフィールドは 削られます。- PASS_RECEIVED_THROUGH
Received: を通すなら YES にします。デフォルトは YES です。
- OPTION
- HTML_GENERATION
MIME変換した記事を作るなら AUTO_HTML_GEN を YES にします。その場合は、 MLの記事をHTMLに変換して /var/spool/ml/ML名/htdocs 以下に html化された 階層を作ります。- SPOOLING
スプールに記事を貯めるかどうかを指定します。デフォルトは YES です。- FLOCK
lock algorithm に flock を使うか、別のアルゴリズムを指定します。 デフォルトは YES です。- SMTP
- USE_OUTGOING_ADDRESS
- USE_VERP
- USE_MEMBER_NAME
- LANGUAGE
MESSAGE_LANGUAGE エラーなどを何語で返すかを指定します。デフォルトはインストール時に選択 した言語と同じです。 - SECURITY & FILTERING
- MORE_SECURE
様々なセキュリティオプションを一気に設定します。make secure を走らせる ことと一緒です。- USE_DISTRIBUTE_FILTER
本文がないメールやコマンドメールをMLに流さないようにフィルタを かけるかどうかを設定します。デフォルトは NO です。- FILTER_ATTRRIBUTE
- FILTER_ATTR_REJECT_COMMAND
投稿用のMLに #help などのコマンドがきたら拒否(YESの場合)します。 デフォルトは NO です。- FILTER_ATTR_REJECT_2BYTES_COMMAND
unsubscribe とかだけのメールを弾くかどうかを指定します。 デフォルトは NO です。- FILTER_NOTIFY_REJECTION
拒否した旨をその送り主に伝えるかどうかを指定します。 デフォルトは NO です。- FILTER_ATTR_REJECT_MS_GUID
M$関係マクロ入りに見えるファイルを弾くかどうかを指定します。 デフォルトは NO です。- CHECK_MAILBODY_CKSUM
- USE_MTI
トラフィックモニタを使うなら YES にします。MLのトラフィックを監視し、 一気にメールが来たらメール爆弾とみなします。- MAX_MAIL_SIZE
メールサイズの最大値(デフォルトは無制限、未定義)を指定します。- NOTIFY_MAIL_SIZE_OVERFLOW
MAX_MAIL_SIZE(最大値)を越えるメールが来たら、拒否の旨を送り主に 伝えるかどうかを設定します。デフォルトは YES です。- ANNOUNCE_MAIL_SIZE_OVERFLOW
拒否した旨をメーリングリストに流すかどうかを設定します。 デフォルトは NO です。- ADDR_CHECK_MAX
アドレスのチェックの厳しさを指定します。デフォルトは 3 です。 3 はドメイン3レベルを表しています。つまり、ドメインの3階層 (例えば beth.fml.org)までをチェックします。- MAXNUM_COMMAND_INPUT
1つのメールに書けるコマンド数の最大値を指定します。デフォルトは無制限です。- REJECT_ADDR
無視するシステムアカウント名のリストを記述します。- USE_LOG_MAIL
- USE_ENCRYPTED_DISTRIBUTION