ConoHaでメールサーバを構築するで構築したメールサーバにfmlを導入してメーリングリスト(ML)機能を追加したので、その時のログです。
fmlを導入する際には、管理・運用体制をどのようにするかによってインストール方法が変わるのですが、今回は「グループfmlに所属しているユーザはMLの作成ができる」を運用ポリシーにしました。
fmlの実行スクリプトはperlで書かれているが、そのファイル内ではパスが「/usr/local/bin/perl」と指定されていて、元のパス(「/usr/bin/perl」)とは違っているのでシンボリックリンクを追加
# ln -s /usr/bin/perl /usr/local/bin/perl
グループfmlとユーザfmlを作成
# groupadd fml # useradd -g fml fml
自分が普段使用している一般ユーザ(username)をグループfmlに追加
# vim /etc/group fml:x:501(←ここの数字は環境によって違う):username
ディレクトリ作成とオーナー・権限変更
# mkdir /usr/local/fml # mkdir /var/spool/ml # chown fml:fml /usr/local/fml # chown fml:fml /var/spool/ml # chmod g+ws /var/spool/ml
fmlをインストールするディレクトリへ移動し、fmlのソースコードをダウンロード、fmlをインストール
# cd /usr/local/src # wget ftp://ftp.fml.org/pub/fml/stable/fml-4.0-stable-20040215.tar.gz # tar zxvf fml-4.0-stable-20040215.tar.gz # cd fml-4.0-stable-20040215 # su fml $ perl makefml install unshift(@INC, /usr/local/src/fml-4.0-stable-20040215/src) ---NOT USING configuration file (for the first time) THIS HOST (www.tetsis.com) IS [x86_64-unknown-linux-gnu] ---Please Define Your Fml System Configurations Personal Use or ML-Admin-Group-Shared or fmlserv you use? Personal, Group, Fmlserv (personal/group/fmlserv) [personal] group Please define the group (in /etc/group) ML Operators use Group of Mailing List Operators (fml or GID ([\w\d]+)) [fml] DOMAIN NAME [tetsis.com] FQDN [www.tetsis.com] 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] --- summary --- DOMAIN: tetsis.com FQDN: www.tetsis.com EXEC_DIR: /usr/local/fml ML_DIR: /var/spool/ml Language: Japanese TimeZone: +0900 15/03/29 00:27:04 makefml::mkdir /usr/local/fml/.fml (fml) The current configuration is saved in /usr/local/fml/.fml/system ---Install the Fml system to /usr/local/fml. (y/n) [n] y (以下インストールが始める) $ exit
Postfixの設定を変更してPostfixを再起動
# vim /etc/postfix/main.cf allow_mail_to_commands = alias, forward, include # service postfix reload
テストMLを作成し、Postfixの設定を変更して、Postfixを再起動
(ここはmain.cfの設定を一度で済ませたいところだが、最初にalias_mapsとalias_databaseを変更すると、newmlを実行した際に/var/spool/etc/aliasesファイルがないとかで、処理が途中で止まってしまう。なので一旦newmlによりMLを作成し、aliasesファイルが生成された後にalias_mapsとalias_databaseに設定を加える流れを採用した。もっとスマートなやり方があればご教授願いたい)
# su fml $ /usr/local/fml/makefml newml fml-test $ exit # vim /etc/postfix/main.cf alias_maps = hash:/etc/aliases, hash:/var/spool/ml/etc/aliases alias_database = hash:/etc/aliases, hash:/var/spool/ml/etc/aliases # service postfix reload
newaliasesを実行し、aliases.dbファイルを生成
そして、aliases.dbのオーナー・権限を変更
# newaliases # chmod 666 aliases.db # chown root:root aliases.db
これによりfmlの導入は完了
あとはaddコマンドでメンバーを追加すればMLとして使用できる
$ /usr/local/fml/makefml add fml-test (メールアドレス)
おまけ
毎回makefmlする度に「/usr/local/fml/makefml」と打つのは面倒なのでシンボリックリンクによりパスを通す
# ln -s /usr/local/fml/makefml /usr/bin/makefml
(2015/06/19追記)
ずっと探していたテンプレートファイルの場所が分かった
/usr/local/fml/etc/makefml/cf
これを変更することでnewmlした際に作成されるML内のcfに反映される
でも、それよりもコマンドのほうが分かりやすいかも
$ makefml config-template
このコマンドで設定したファイルは「/var/spool/ml/etc/makefml/cf」に作成され、上記と同様にnewmlした際に反映される
ただしこの場合はcfファイルの権限をグループfmlに与えなければfmlグループの他のユーザが作成したMLには反映されないので注意
(参考文献)
http://www.fml.org/fml/INSTALL/9.html
http://www.fml.org/software/fml8/Documentation/ja/tutorial/changes.cui.html