fmlTips

Majordomoからfmlに移行するための作業のメモ。例えばdeptを移行するとする。

fmlにdeptを作る
su等でrootになっておいてから,
su - fml
makefml newml dept
/usr/local/var/ml/dept/config.phを編集してmlの運用方式を決める。
デフォルトで投稿可能なのはmembers_onlyなので,membersだけが投稿可能。
誰でも投稿可能にするには$PERMIT_POST_FROM="anyone"とする(例えば某管理人MLとか)。
自動登録させたい場合は$REJECT_COMMAND_HANDLERをauto_registにして,かつ$AUTO_REGISTRATION_TYPEをbodyかconfirmationにすればいい。Majordomoと同じにするならbodyだが,confirmationの方が安全。
なお,自動登録はmembersにされる(自動登録のみの場合はmembersが送信可能アドレス兼配信先アドレスとなり,activesは使われない。activesがあると,membersがmembers_onlyの場合の送信可能アドレスで,activesが配信先アドレスとなる)
$HTML_MAIL_DEFAULT_HANDLERがコメントアウトされているので,そこをstripとかrejectとかする
$INCOMING_MAIL_SIZE_LIMIT="512000"なのは大きすぎるので,普通は"20000"とかにする。
完全に添付を禁止するなら,ファイル末尾の1;のすぐ上の行として次を追加するといい。
&ADD_CONTENT_HANDLER('multipart/.*', 'text/plain',   'allow');
&ADD_CONTENT_HANDLER('multipart/.*', '.*/.*',        'reject');
&ADD_CONTENT_HANDLER('text/plain',   '.*/.*',        'allow');
&ADD_CONTENT_HANDLER('!MIME',        '.*/.*',        'allow');
サブジェクト書き換えは,$SUBJECT_TAG_TYPEを"[:]"とかに設定すればいい。[DEPT:00001]としたければ,$BRACKETを"DEPT"とする。
しかし,実は正規表現で自由に書き換え可能で,例えば【Dept.00001】みたいにしたければ,以下のようにすればいい(たぶん)。
$SUBJECT_FREE_FORM = 1;
$BEGIN_BRACKET     = '【';
$BRACKET           = 'Dept';
$BRACKET_SEPARATOR = '.';
$END_BRACKET       = '】';
$SUBJECT_FREE_FORM_REGEXP = "\\($BRACKET \\d+\\)";
過去の投稿メールをコピーする
cp /usr/local/mail/lists/dept.archive/* /usr/local/var/ml/dept/spool
ファイルが多すぎて無理ならcp -Rで工夫する
本当はその中のINDEXをsummaryの形式に書き換えないといけないのだが,そういうスクリプトを作るのは面倒だから省略。まあ,過去ログを取り寄せようって人はそういないだろうし(ちなみにインデックスが取り寄せられないだけで個々のメールはgetできる)。
連番やメンバーをコピーする
cp /usr/local/mail/lists/dept.seq /usr/local/var/ml/dept/seq
cp /usr/local/mail/lists/dept.dopost /usr/local/var/ml/dept/members
dopostがないMLなら全員のリストをmembersにコピー
cp /usr/local/mail/lists/dept /usr/local/var/ml/dept/actives
受ける人はactivesなので,受ける人全員が投稿できるためにはactivesをmembersへのsymbolic linkにすればたぶんいい(ln -s members actives)。ただ,それだと新規メンバー追加のときに警告が出てしまうので,cp -p members activesの方が無難。
fml上のdeptを有効にする
/usr/local/var/ml/dept/aliasesと/usr/local/var/ml/etc/aliasesを(実際にmain.cfの設定によってpostfixから読まれるのは後者だが,たぶん新規にMLを追加して後者が書き換えられるときに前者が参照されるような気がするので両方書き換えておく。dept-adminにエラーが返ってくるので,そこを本当のML管理者にしておくのが大事)編集する。
最後に以下を実行する
postalias /usr/local/var/ml/etc/aliases
fmlのMLをメールで管理する場合の注意
◆設定ファイルとかメンバーリストとかを得るには
#admin pass *********
#admin get config.ph
のような(メンバーリストを得るならconfig.phのところがmembersとなる)メールを,そのMLのコマンド受付アドレスに送る
◆もちろん,このメールはmembers-adminに登録されたアドレスからしか受け付けられない
◆手元で編集したファイル(例えば管理者アドレスリストmembers-adminなど)を送るには
#admin pass *********
#admin put members-admin
abc@hogehoge.jp
xyz@hogehoge.jp
のようにする。コマンド行の後,メールの最後までがmembers-adminの中身としてヒアドキュメントされるので,余計な署名などをつけてはいけない。