【環境】
CentOS 5.10 x86_64
postfix 2.3.3
FML 4.0
【前提条件】
postfixインストールセットアップ済であること
1.FMLインストール環境を準備
インストール作業は一般ユーザで行う事が公式では推奨されています。
一般ユーザ(fml)を作成しておきます。
# useradd fml
# chmod 755 /home/fml
FMLインストールディレクトリ作成
# mkdir /usr/local/fml
# chown fml.fml /usr/local/fml
MLディレクトリ作成
# mkdir /var/spool/ml
# chown fml.fml /var/spool/ml
2.FMLインストール
公式からソースを取得して展開
# cd /usr/local/src
# wget ftp://ftp.fml.org/pub/fml/stable/fml-4.0-stable-20040215.tar.gz
# tar vzxf fml-4.0-stable-20040215.tar.gz
# chown fml.fml -R fml-4.0-stable-20040215
インストールはfmlユーザで実行
# su fml
$ cd fml-4.0-stable-20040215
perlのパスを自環境に合わせて修正
$ vi makefml
#!/usr/local/bin/perl
↓変更
#!/usr/bin/perl
【perlパスを一括置換する】
perl makefml install実行後に、何かしらの理由があってインストール先ソースのperlパスが変更されず、ML作成時などにperlのエラーが出る場合にperlパスを一括置換する方法です。
インストール先の中身を全て削除or移動して、makefml install からやり直すと解決するかもしれません。
install実行前にパーミッションなども見直してみてください。
事前に対象数がどの位あるかチェック
# find /usr/local/fml -name "*"|xargs grep "#\!/usr/local/bin/perl"| wc -l
72
# find /usr/local/fml -name "*"|xargs grep "#\!/usr/bin/perl"| wc -l
2
/usr/local/fml内の拡張子(pl,cgi)とconfigファイル全て一括置換
# find /usr/local/fml \( -name "*.pl" -o -name "*.cgi" -o -name "config" \) | xargs sed -i -e "s/#\!\/usr\/local\/bin\/perl/#\!\/usr\/bin\/perl/"
置換数がどの位あるかチェック
# find /usr/local/fml -name "*"|xargs grep "#\!/usr/local/bin/perl"| wc -l
8
# find /usr/local/fml -name "*"|xargs grep "#\!/usr/bin/perl"| wc -l
66
インストールの実行
$ perl makefml install
:
Personal Use or ML-Admin-Group-Shared or fmlserv you use?
Personal, Group, Fmlserv (personal/group/fmlserv) [personal][ ENTERキー ]
DOMAIN NAME [example.localdomain] [ ENTERキー ]
FQDN [example.localdomain] [ ENTERキー ]
EXEC FILES DIRECTORY [/usr/local/fml] [ ENTERキー ]
TOP LEVEL ML DIRECTORY [/var/spool/ml] [ ENTERキー ]
Language (Japanese or English) [Japanese] [ ENTERキー ]
TimeZone (TZ: e.g. +0900, -0300) [+0900] [ ENTERキー ] // 日本は「+0900」
--- summary ---
DOMAIN: example.localdomain
FQDN: example.localdomain
EXEC_DIR: /usr/local/fml
ML_DIR: /var/spool/ml
Language: Japanese
TimeZone: +0900
04/04/14 01:31:18 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
FML管理ユーザが一人の場合としてPersonalを選択しています。
複数ユーザで管理する場合はGroupやFmlservを指定します。
インストール先やMLの場所は特に理由が無ければデフォルトで問題ありません。
エイリアスファイルを作成
$ touch /var/spool/ml/etc/aliases
エイリアスを作成
$ postalias /var/spool/ml/etc/aliases
root権限に戻る
$ exit
postfixの設定を変更します
# vi /etc/postfix/main.cf
#alias_mapsにエイリアスデータベースを追加設定
alias_maps = hash:/etc/aliases, hash:/var/spool/ml/etc/aliases
#includeを追加して:include:ファイルでのコマンドを許可
allow_mail_to_commands = alias, forward, include
設定のリロード
$ exit
# /etc/rc.d/init.d/postfix reload
3.CGIセットアップ
fmlユーザで実行します
# cd /usr/local/fml
# su fml
$ perl makefml admin.cgi config
以下のコマンドラインベースメニューが表示されます。
************************************************************
<<< makefml --- FML CGI Configuration Interface --- >>>
0 END
1 USE_MOD_SSL YES
2 REAL_CGI_PATH /usr/local/fml/www/share/cgi-bin/fml
3 CGI_AUTHDB_DIR /usr/local/fml/www/authdb
4 CHANGE PASSWORD
5 REMAKE CGI SCRIPTS
6 MTA sendmail
7 HOW TO UPDATE ALIAS newaliases
which ? (0-7) [0]
○USE_MOD_SSL設定
SSL利用しなければ n で変更
which ? (0-7) [0] 1
Q: DO YOU USE SSL? (y/n) [y] n
○REAL_CGI_PATH設定
ブラウザでアクセスするcgi設置場所を指定
デフォルトでも問題ありませんが、解りやすくする為にfmlユーザのhomeディレクトリ配下に変更します。
which ? (0-7) [0] 2
Q: REAL_CGI_PATH (directory) [/usr/local/fml/www/share/cgi-bin/fml] /home/fml/public_html/cgi-bin/fml
○CHANGE PASSWORD設定
管理者のBASIC認証設定
which ? (0-7) [0] 4
user (fml) [fml] [ ENTERキー ]
% /usr/bin/htpasswd /usr/local/fml/www/authdb/admin/htpasswd fml
New password:[ パスワード入力 ]
Re-type new password:[ パスワード入力 ]
○MTA設定
sendmailからPostfixに変更
which ? (0-7) [0] 6
0 END
1 sendmail
2 postfix
which ? (0-2) [0] 2
○HOW TO UPDATE ALIAS設定
postfix用に変更
which ? (0-7) [0] 7
0 END
1 newaliases
2 postalias /var/spool/ml/etc/aliases
which ? (0-2) [0] 2
REAL_CGI_PATHを変更した場合、一度設定を反映させる為に終了します
終了時にスクリプトの作成を聞いてきますが n を返答します
which ? (0-7) [0] 0
CGI configuration is saved in /usr/local/fml/.fml/cgi.conf
Q: Can I recreate cgi scripts? (y/n) [n] n
再度configを起動します
$ perl makefml admin.cgi config
○REMAKE CGI SCRIPTS
cgiを設置します。
which ? (0-7) [0] 5
* create /home/fml/public_html/cgi-bin/fml/admin/.htaccess
* create CGI scripts in /home/fml/public_html/cgi-bin/fml/admin/
menu.cgi makefml.cgi mlmenu.cgi menubar.cgi index.cgi newml.cgi rmml.cgi
configメニューを終了してroot権限に戻ります
which ? (0-7) [0] 0
$ exit
4.apache設定
# vi /etc/httpd/conf.d/fml.conf
Alias /fml/ /home/fml/public_html/cgi-bin/fml/
<Directory /home/fml/public_html/cgi-bin/fml/>
Options +ExecCGI
AddHandler cgi-script .cgi
AllowOverride All
Order allow,deny
Allow from all
</Directory>
※WEBベースで管理する場合、MLディレクトリの所有者&グループをapacheにしておかないとMLが作成出来ません。
所有権を変更
# chown apache.apache -R /var/spool/ml
# chown apache.apache -R /home/fml/public_html/cgi-bin/fml
httpdリロード
# /etc/rc.d/init.d/httpd reload
5.ブラウザでアクセスしてFMLにログイン確認
以下のようにブラウザからアクセスします。MLを作成して、実際に存在するメールアドレスをMLに追加してみましょう。
https://[サーバIP]/fml/admin/menu.cgi
BASIC認証ダイアログが表示されるので、先ほど設定したIDとパスワードを入力します。
※BASIC認証のみでアクセス制限してある状態では危険です。
80番ポートへのアクセスをIPアドレスで制限するなどセキュリティを考慮する必要があります。
6.ML送信テスト
実際に作成したML宛にメールを送信してみます。
# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 example.localdomain ESMTP unknown
HELO localhost
250 example.localdomain
MAIL FROM:<XXXXXXXX@msn.com>
250 2.1.0 Ok
RCPT TO:<testml@example.localdomain>
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
From: XXXXXXXX@msn.com
Subject: testmail
testmail
.
250 2.0.0 Ok: queued as 9CB66660060
○上記の各コマンドを簡単に説明すると以下のような流れになります。
HELO localhost ←まずはHELOコマンドで挨拶
MAIL FROM:<XXXXXXXX@msn.com> ←MLに登録してあるアドレスを送信者に指定
RCPT TO:<testml@example.localdomain> ←作成したMLを宛先に指定
DATA ←メール作成開始
From: XXXXXXXX@msn.com ←MLに登録してあるアドレスを送信者に指定
Subject: testmail ←メールの件名を指定
testmail ←本文を指定
. ←メールの作成が完了した事を送信
ローカルからのML送信テストまでであれば、ドメインがDNSに登録されていなくても問題ありません。
検証で利用するドメイン名をMLサーバのホスト名やhostsやpostfixの設定ファイル上に記載しておけば動作検証可能です。
MLサーバのhosts設定
# vi /etc/hosts
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
#MLサーバのIPと検証用ドメイン名を設定
192.168.1.111 example.localdomain
MLサーバのホスト名を設定
# hostname example.localdomain
※再起動後も設定を残すのであれば、設定ファイルにも記載
# vi /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=yes
HOSTNAME=example.localdomain
postfixの設定ファイル
# vi /etc/postfix/main.cf
以下、ドメイン設定に関して見直した方が良い設定値
#DNSに設定するメールホスト名を設定
myhostname = example.localdomain
#メールアドレスで利用するドメイン名を設定する
mydomain = example.localdomain
#メールをローカルで受信許可するドメイン名を指定
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
(参考)
公式サイト https://www.fml.org/
公式サイト トラブルシューティング
last update:2014/12/12