postfix 2.3 + fml 4.0 インストールメモ −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− # 概要 #--------------------------------------------------------------------------------------------- fml はPERL で書かれたメーリングリストを実現するためのソフトウェアです。いずれのメールサーバーでも運用でき設定も容易に行えます。今回はpostfix を使った仮想ドメイン環境下でメーリングリストを運用する方法を説明します。 fml の基本構造は、次の2つから成り立っています。 ・ fml 実行ファイル群を記憶するディレクトリ ・ メーリングリストの設定、スプールを記憶するディレクトリ 通常1ドメインに対して上記2つのディレクトリが必要となってくるのですが、仮想ドメインごとに「fml 実行ファイル群を記憶するディレクトリ」を持つことは非常に非効率です。 このため、fml を仮想ドメインごとインストールする際は、「メーリングリスト設定、スプールを記憶するディレクトリ」のみを仮想ドメインごとに設置することにします。 # インストール方法 #--------------------------------------------------------------------------------------------- fml 専用のユーザー/グループを作成します。専用のユーザーはホームディレクトリをなしとしますが、メーリングリストを作成するためにシェルを必要とするのでシェルについては有効とします。 # groupadd fml # useradd -g fml -d /dev/null -s /bin/bash fml fml のソースをインターネットよりダウンロード後、ソースを解凍します。 # su root # cd /usr/local/src/ # wget fml-4.0.3.tar.gz # tar zxvf fml-4.0.3.tar.gz fml を解凍後、ディレクトリに入りインストール作業を行います。 # cd fml-4.0.3 # make install 以上でfml のインストールは完了し、同時に「fml 実行ファイル群を記憶するディレクトリ」の設定は終わりました。ただしこのままではmake install 時に設定した自ドメインに対してしかメーリングリストを作成できません。 # 仮想ドメインによるメーリングリスト構築 #--------------------------------------------------------------------------------------------- 仮想ドメイン環境ではドメインごとにメーリングリストの設定、スプールを記憶するディレクトリを複数持ちます。なので、fml 標準設定ではスプールが/var/spool/ml に作成されますが、これを削除します。 # rm -rf /var/spool/ml 「make install」時には自ドメインでメーリングリストを運用するための環境構築ファイルsystem が/usr/local/fml/.fml 配下に作成されています。このファイルを仮想ドメインごとに用意し、以降の手順でメーリングリストを作成することで作成されたメーリングリストが仮想ドメイン専用のものとなります。 以降の説明では次のような環境を想定しています。 仮想ドメイン example01.jp 仮想ドメインの専用ユーザー mlmaster-test01 仮想ドメインの専用グループ ppp 仮想ドメインのホームディレクトリ /home/maild/mlmaster-test01 仮想ドメインのスプールディレクトリ /home/maild/mlmaster-test01/ml ● 仮想ドメイン用に環境構築ファイルを編集する 構築ファイルsystem を仮想管理ドメイン用ディレクトリに配置し、仮想ドメイン専用に編集します。 # cd /usr/local/fml/.fml # cp system /home/maild/mlmaster-test01 ↓ /home/maild/mlmaster-test01 ---------------------------- $LANGUAGE = 'Japanese'; $PERSONAL_OR_GROUP = 'personal'; %CPU_TYPE_MANUFACTURER_OS = ( 'example01.jp', 'i686-pc-linux-gnu', ); $EXEC_DIR = '/usr/local/fml'; %OS_TYPE = ( 'example01.jp', 'LINUX', ); $TZ = '+0900'; $DOMAIN = 'example01.jp'; $ML_DIR = '/home/maild/mlmaster-test01/ml'; $FQDN = 'example01.jp'; 1; ↑ ココまで------------------------------------------------- # chown mlmaster-test01:ppp ./system # chmod 600 system ※ 注意 ) 仮想ドメインごとに、共通して「fml 実行ファイル」を利用するため、環境構築ファイルsystem 中の$EXEC_DIR が/usr/local/fml となっている点がポイントです。また、構築ファイルは通常、makefml install コマンドで対話式に作成しますが、メーリングリストを作成する段階で必要な情報は環境構築ファイルから取得されます。よって仮想ドメイン用にmake install する必要はなく、環境構築ファイルだけを仮想ドメイン用として用意しています。 ● 仮想ドメイン専用のスプールを作成する 次のコマンドで仮想ドメインごとのスプールファイルを作成します。通常、仮想ドメイン環境でメールサーバーを構築する際、メールを配送する権限は仮想ドメイン専用ユーザーとなっているはずです。スプールディレクトリに仮想ドメイン専用ユーザーの権限も同時に与えます。 # mkdir /home/maild/mlmaster-test01/ml # chown mlmaster-test01:ppp /home/maild/mlmaster-test01/ml # chmod 700 /home/maild/mlmaster-test01/ml 以上で仮想ドメイン共通で「fml 実行ファイル」を利用し、仮想ドメインごとに「スプール」を設置しました。 ・ fml 実行ファイル群を記憶するディレクトリ : /usr/local/fml ・ fml 設定、スプールを記憶するディレクトリ : /home/maild/mlmaster-test01/ml # メーリングリスト作成方法 #--------------------------------------------------------------------------------------------- 仮想ドメインごとにメーリングリストを構築します。 # cd /home/maild/mlmaster-test01 # /usr/local/fml/makefml -f /home/maild/mlmaster-test01/system newml [MLNAME] 上記コマンドで、[MLNAME] のメーリングリストが仮想ドメインのスプールディレクトリ配下 /home/maild/mlmaster-test01/ml/[MLNAME] に作成されます。 メーリングリストの作成は完了しましたが、このままではfml 経由でメールを配送することはできません。メールを配送するには、postfix のエイリアス機能を利用する必要があります。 postfix 用のエイリアスファイルの例が MLNAME 配下にインストールされます。これを/etc/postfix/aliases に追加します。追加後はpostfix をroload します。 # cat /home/maild/mlmaster-test01/ml/[MLNAME]/aliases /etc/postfix/aliases # /etc/rc.d/init.d/postfix reload # 配送の仕組み #--------------------------------------------------------------------------------------------- fml インストールサーバーにメーリングリスト宛メールが着信すると、fml は自身サーバーに対してSMTP 接続したのち、内部、もしくは外部へメール配送します。 そのため、tcpserver などの設定で自身IP からの外部メール配送をディフォルトで可能と設定しなければ、 553 sorry, that domain isn't in my list of allowed rcpthosts エラーが出ます。