perl-5.32上でfml4を動作させる。ついでにWebUIを設定する。(再投稿)

Linux

FML8にインストールしたが、設定が不明な点が有り動作させられなかった。
FML4を動作させるために、perl-5.8.9をコンパイルするがエラーとなった。
対応をwebで検索していたら、デフォルトインストールされているperl-5.32上でFML4を動作させる修正情報を発見した。修正パッチも見つけたが、間違っている部分が当たっためCGIが正常に動作しなった。
WEBで検索した情報は、makefmlファイルのみを修正するためMLの作成削除やユーザの登録削除が正常に動作するか不明であるため、修正箇所をすべて修正する事にした。

  1. ファイルを修正する。
    1. パッチを当てるファイル
    2. パッチを入手する。
    3. パッチを当てる。
  2. fmlをインストールする。
  3. perlコマンドのシンボリック・リンクを作成する。
  4. fmlユーザを登録してfmlユーザにfml関連コマンドのパスを追加する。
  5. postfixにfmlのaliases定義を追加する。
  6. FML用のaliasesを作成する。
  7. fmlで使用するファイルの所有権をfmlに変更する。
  8. MLを作成する。
    1. 新しいメーリングリストを作成する。
    2. メーリングリストのヘッダ情報を設定する。
  9. MLにユーザを登録する。
  10. GUI操作のnginxユーザが操作できる様に、拡張aclを設定する。
  11. GUIを利用する設定を行う。
  12. nginxにWebUIを設定する。
  13. nginxを再起動する。
  14. fmlのGUIサイトにアクセスでる。
  15. GUIによる操作とmakefmlコマンドによる操作の住み分け
  16. バーチャルドメインでFMLを利用する。
    1. バーチャル・ドメイン用のfmlをインストールする。
    2. バーチャル・ドメインのMLを操作するfml2ユーザを作成し、fml関連コマンドのパスを追加する。
    3. postfixにfmlのaliases定義を追加する。
    4. バーチャル・ドメイン用のaliasesを作成する。
    5. バーチャル・ドメイン用のfmlで使用するファイルの所有権をfml2に変更する。
    6. バーチャル・ドメインで使用するMLを作成する。
      1. 新しいメーリングリストを作成する。
      2. メーリングリストのヘッダ情報を設定する。
    7. バーチャル・ドメイン用のユーザを内部配送設定をpostfixに設定する。
    8. MLにユーザを登録する。
    9. バーチャル・ドメインをnginxユーザが操作できる様に、拡張aclを設定する。
    10. バーチャル・ドメイン用のWebUIをnginxに設定する。
    11. nginxを再起動する。
    12. バーチャル・ドメイン用のGUIサイトにアクセスでる。
  17. まとめ
  18. 閑話休題

ファイルを修正する。

ファイルを修正利用は、fmlが古いバージョンのperlで作成されているため、新しいバージョンのperlでは修正しないと動作しないためである。
修正する内容は、以下の様な内容であれる。

旧perlの記述新perlの記述備考
require 'getopts.pl';
&Getopts("dhf:A:O:p:D:vwV:mi:u:UF");
use Getopt::Std;
getopts('dhf:A:O:p:D:vwV:mi:u:UF');
getopts.plが利用できなくなった
if (defined @entry) {if (@entry) {definedで配列が空かどうか調べることや、ハッシュが空かどうか調べるのに使うことが非推奨になった

 

パッチを当てるファイル

以下のファイルに対して修正が必要である。WEBでの利用の考えているのでcgiに関するファイルも修正する。

 

パッチを入手する。

修正するファイルが多いためパッチファイルを作成しました。
以下のURLからパッチ(fml-4.0-stable-20040215_patch)を入手する。

https://lnxdvr.com/fml-4.0-stable-20040215_patch

 

パッチを当てる。

fmlの圧縮ファイルを解凍し、fmlのソースファイルディレクトリに移動して、上位ディレクトリにあるパッチファイルを適用する。

 

fmlをインストールする。

 

perlコマンドのシンボリック・リンクを作成する。

fmlで使用するシェルはperlコマンドが/usr/local/binディレクトリあることを想定しているため、シンボリック・リンクを作成して/usr/local/binからでもperlコマンドが実行できるようにする。

 

fmlユーザを登録してfmlユーザにfml関連コマンドのパスを追加する。

メーリングリストを操作するfmlのグループとユーザを作成して、fmlのインストールパスを「.bashrc」のPATH設定に追加する。

 

postfixにfmlのaliases定義を追加する。

fmlで使用する「/var/spool/ml/etc/aliases」をposfixの設定ファイルに追加する。
また、fmlでaliasesファイルに設定されるinclude定義を処理できる様にallow_mail_to_commands設定を追加する。

FML用のaliasesを作成する。

aliasesファイルは存在しないため、touchコマンドでファイルを作成し、postaliasコマンドでDBを作成する。

 

fmlで使用するファイルの所有権をfmlに変更する。

/var/spool/mlと/usr/local/fmlの所有権をfmlユーザに変更する。

 

MLを作成する。

新しいメーリングリストを作成する。

 

メーリングリストのヘッダ情報を設定する。

Subjcctに表示に以下の情報を付加する。
「HEADER CONFIGURATIONS」でSubjectにMLの情報を追加する。
   [test:0001]テストメール

 

MLにユーザを登録する。

 

GUI操作のnginxユーザが操作できる様に、拡張aclを設定する。

通常のアクセス権では、fmlユーザとnginxユーザの2人にアクセス権を設定できない。
chmodコマンドでotherのアクセス権を設定すれば利用可能となるが、誰でも操作できる状態になってしまう。
よって、拡張aclアクセス権でnginxユーザも所有者となるような設定する。

 

GUIを利用する設定を行う。

「makefml admin.cgi config」コマンドで管理用cgiプログラムをインストールする情報がインターネットで検索できるが、標準のインストールでcgiが利用できることを確認したので、作業不要である。

 

nginxにWebUIを設定する。

nginxにfml用の設定を追加する。

 

nginxを再起動する。

 

fmlのGUIサイトにアクセスでる。

以下のURLでGUIの画面が表示されることを確認する。
https://<IPアドレス|ホスト名>/fml/

GUIなので、操作は想像がつくと思います。
MLの作成・削除、ユーザの登録は確認しました。

 

 

GUIによる操作とmakefmlコマンドによる操作の住み分け

当たり前であるが以下特性がある。
・makefmlコマンドでメーリングリストを作成するとfmlユーザの権限でMLが作成されtため、GUIで操作できない。
・CGIでメーリンリストを作成するとnginxユーザ権限のMLが作成されれるため、CUIで操作できない。
よって、CUIとGUIで操作する線引きが必要になる。

一つの解決方法として以下の方法が考えられる。
CUIでの操作:
 ①新しいMLを作成する。
 ②newaliasesコマンドを作成したMLを登録する。
 ③/var/spool/mlディレクトリ配下に新しく作成したMLをGUIでのアクセス権を与える。
GUIでの操作:
 ①MLへのユーザ登録・削除の操作に限定する。

 

バーチャルドメインでFMLを利用する。

aliasesファイルにMLの設定を記述するが、aliasesファイルはローカル配送専用のためバーチャル・ドメインのユーザでは直接利用できない。
よって、バーチャル・ドメインのユーザで受信したメールをmydestinationに定義されいるデフォルト・ドメイン名のユーザに転送して、MLを送信を行う。

 

バーチャル・ドメイン用のfmlをインストールする。

/usr/local/fmlディレクトリ以外の場所にバーチャル・ドメイン用のfmlをインストールする。
「-U」を付けけてインストールする。理由は忘れました。すみません。
/usr/local/fmlディレクトリとは違う場所にインストールする。
バーチャル・ドメイン用のfmlを/usr/local/hoge.jpにインストールする。

 

バーチャル・ドメインのMLを操作するfml2ユーザを作成し、fml関連コマンドのパスを追加する。

バーチャル・ドメインで利用するfml2ユーザを作成して、fmlのインストールパスを「.bashrc」のPATH設定に追加する。
fml2にログインスすると、バーチャル・ドメインのMLが操作できるようにする。

 

postfixにfmlのaliases定義を追加する。

バーチャル・ドメインで使用する「/var/spool/hoge.jp/etc/aliases」をposfixに追加する。

 

バーチャル・ドメイン用のaliasesを作成する。

ファイルは存在しないため、touchコマンドでファイルを作成し、postaliasコマンドでDBを作成する。

 

バーチャル・ドメイン用のfmlで使用するファイルの所有権をfml2に変更する。

/var/spool/test.jpと/usr/local/test.jpの所有権をfml2ユーザに変更する。

バーチャル・ドメインで使用するMLを作成する。

新しいメーリングリストを作成する。

 

メーリングリストのヘッダ情報を設定する。

Subjcctに表示に以下の情報を付加する。
「HEADER CONFIGURATIONS」でSubjectにMLの情報を追加する。
   [hoge:0001]テストメール

 

バーチャル・ドメイン用のユーザを内部配送設定をpostfixに設定する。

 

MLにユーザを登録する。

 

バーチャル・ドメインをnginxユーザが操作できる様に、拡張aclを設定する。

拡張aclアクセス権でnginxユーザも所有者となるような設定する。

 

バーチャル・ドメイン用のWebUIをnginxに設定する。

バーチャル・ドメイン用のnginxにfmlの設定を追加する。

 

nginxを再起動する。

 

バーチャル・ドメイン用のGUIサイトにアクセスでる。

以下のURLでGUIの画面が表示されることを確認する。
https://<IPアドレス|ホスト名>/fml2/

ユーザを追加登録し、登録したユーザでメールを受信できることを確認しました。

 

 

まとめ

WEBでは利用していたMLがperlのバージョンが上がったために動作しなくなった対応のみを記載しているだけのため、GUIで操作を含めた修正が無いように思われる。
今回、全体的な修正が行えたことが良かったと思われる。

閑話休題

以下のコマンドでパッチを作成する。