ここで設定した例では /home/fml ディレクトリにCGIの実行を許可し、Webサーバーで公開するように設定しなければなりません。web上でのMLの管理は危険なので深重に行ってください。設定を誤るとセキュリティホールそのものとなってしまいます。
Apacheの詳細はドキュメントを参照して下さい。ここではApache2 を使用しています。
Apache HTTP サーバ バージョン 2.0 ドキュメント - Apache HTTP サーバ
このサイトでも、関連、よく利用する Apache ディレクティブの設定のポイントをピンポイントで解説しています。
/etc/httpd/conf/httpd.conf 編集を直接編集するか、こちらで解説しているようにfml用のconfファイルを新たに作成します。ここでは conf.d ディレクトリにfml用の設定ファイルを作成し、設定する手順で説明します。
セキュリティポリシーについては、先のページで説明しています。これに従った設定例です。
ここではセキュリティを重視して、SSLによる接続に限定した例で説明します。あくまで一例ですので、それぞれの使用環境にあわせて設定する必要があります。SSLが有効でない場合は、先にSSLサーバーとして動作させておく必要があります。
また、SSLに関する設定は、ssl.confで行うようになっていますが、専用の設定ファイルに記述しても有効です。
# ドキュメントルートにマッピングします。http://mydomain/fml/ で公開します。
Alias /fml/ "/home/fml/"
######### FML Admin ディレクティブ
<Directory /home/fml/>
# 通常のhttp接続は許可せず、https接続のみにする
SSLRequireSSL
# Adminユーザーはクライアント認証を求める
SSLVerifyDepth 1
SSLOptions +OptRenegotiate
SSLVerifyClient require
# 以降は基本的なディレクティブ設定
AllowOverride AuthConfig
# CGIの実況を許可
Options +ExecCGI
# 評価順位とアクセス制限 192.168.67.89 にしか接続させない
Order allow,deny
Deny from all
Allow from 192.168.67.89
</Directory>
######### FML ML-Admin ディレクティブ
<Directory /home/fml/ml-admin>
# https接続のみに限定するが、クライアント認証は求めない
SSLRequireSSL
AllowOverride AuthConfig
# CGIの実況を許可
Options +ExecCGI
# 評価順位とアクセス制限 全てのネットワークから接続を許可
Order allow,deny
Allow from all
</Directory>
ML-Admin は、必ずBasic 認証(パスワードを求める)を有効にする必要があります。Basic 認証については、FML Admin(ブラウザ) から作成する事が可能です。
CGIのコンフィグレーションで USE_MOD_SSL = YES としていた場合、.htacess でSSLに強制されますが、念のため、ここでもSSLに強制するように指定しています。
この段階では、ML-Admin にCGI は存在しません。これを作成するには、メールサーバー管理者が以下の手順を践んで作成します。
https://mydomain/fml/ml-admin/hogehoge/menu.cgi へ登録したアカウントでアクセス出来るようになります。
メールサーバー管理者が全てのメーリングリストを管理する場合、ML-Admin は必要ありません。 全ての操作は、Admin (https://mydomain/fml/admin/menu.cgi)で行う事ができます。
ML-Admin は 既存のメーリングリストに対してCGIによる制御を認める場合に提供します。これにより、コマンドに不慣れな方でもMLオーナーになる事ができます。
部署ごとにML管理者、責任者など設置すればサーバー管理者の手間も省けます。
もっとも多いと考えられるのが、パーミッションの問題です。ここでは suExec は使用していませんのでデフォルトの apache (又はnobody)権限でCGIを実行している事になります。そのため、apache (又はnobody) ユーザーに対しては書込み許可が必要になります。うまくいかない場合はオーナー、パーミッションを確認してください。
その他、考えられるトラブルの回避方法は以下の通りです。
SSL環境下で動作させる場合、以下のようにポートを明示的に指定しなければ CGIによっては、POST method でエラーが出てCGIが正常に動作しないので注意して下さい。
ServerName www.mydomain.net:443
ここで取り上げている FML-CGI は EUC-JP で作られています。FedoraCore / CentOSの標準の文字コードは UTF8 となっており、ApacheのデフォルトもUTF8を使用するように指定されています。そのためアクセスすると文字が化けてしまいます。
この問題を解決するには、サーバー側で調整を行うか、CGI を UTF8 に書き換えるかのいずれかになります。
FMLに限った話ではなく、他のCGIスクリプトでも同様の問題が発生します。サーバー管理者でない場合は、CGIを修正するしかありません。
/etc/httpd/conf/httpd.conf を以下の様に修正します。
###以下をコメントします。
#AddDefaultCharset UTF-8
apacheを再起動し、実際にアクセスして確認します。 インターフェイスが確認できたら
適当なMLを作成して見て下さい。パーミッションエラーが出れば以下に注意します。
/var/spool/ml/etc/aliases.db の所有権がrootになっているか?
aliasesファイルはfmlが参照しますが、 aliases.dbはsendmailが参照します。注意して下さい。
ここまでで基本的に設定は終了ですが、最後に一仕事残っています。CGIは問題ありませんが、このままでは Sendmail-8.12 で FMLを正常に動作させる事は出来ません。次はその対策を行います。