CentOS6.5にfmlを導入

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