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