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

Linux

Raspberry PiのRocky LinuxにFML8にインストールしたが、設定が不明な点が有り動作させられなかった。
FML4を動作させるために、perl-5.8.9をコンパイルするがエラーとなった。
対応をwebで検索していたら、デフォルトインストールされているperl-5.32上でFML4を動作させるためのパッチを発見した。
若干修正が必要で有るため記録する。

以下のURLからfml4のパッチをダウンロードする。

「Satoru Yamane」さん、パッチ作成ありがとうございます。
FML4 patch :: Yamane’s Home (carina.gr.jp)

パッチを適用する。

FML4のソースディレクトリと同じところにパッチを展開して、FML4のソースディレクトリに移動後パッチを適用するため適用するパッチのファイルパスは、「../fml-4.0-stable-20040215.diff 」になります。

# tar xvfz fml-4.0.3.tar.gz
# cd fml-4.0.3/ 
# patch -p1 --follow-symlinks < ../fml-4.0-stable-20040215.diff 
patching file cf/config 
patching file libexec/fml_local.pl 
patching file libexec/fmlserv.pl 
patching file makefml 
patching file sbin/makefml 
patching file src/fml.pl 
patching file src/jcode.pl 
patching file src/libconfirm.pl 
patching file src/libenvf.pl 
patching file src/libkern.pl

makefmlのperlコマンドのパスを修正する。

標準のperlコマンドを利用するため、シェル内のperlのパスを「/usr/bin/perl」に変更する。

# cp sbin/makefml sbin/makefml_org
# vi sbin/makefml
# diff sbin/makefml_org sbin/makefml
1c1
< #!/usr/local/bin/perl
---
> #!/usr/bin/perl

WebUIのモジュールを修正する。

「getopts.pl」はperl-5.32では利用できないため、「Getopt::Std 」を利用するように修正する。

# cd /usr/local/fml/www/lib 
# cp libcgi_kern.pl libcgi_kern.pl_org 
# vi libcgi_kern.pl 
# diff libcgi_kern.pl_org libcgi_kern.pl 
21,22c21,24 
< require 'getopts.pl'; 
< &Getopts("dh"); 
--- 
> #require 'getopts.pl'; 
> #&Getopts("dh"); 
> use Getopt::Std; 
> getopts('dh');

FMLをインストール

/usr/local/fmlにfmlをインストールする。

# makefml install

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

fmlのインストールパスは、fmlユーザでのみ使用するのでfmlユーザにのみに、fmlのインストールパスを「.bashrc」のPATH設定に追加する。

# groupadd fml
# useradd -G fml -m fml

# cp .bashrc .bashrc_org # vi .bashrc # diff -c .bashrc_org .bashrc *** 8,13 **** # User specific environment ! if ! [[ "$PATH" =~ "$HOME/.local/bin:$HOME/bin:" ]] then ! PATH="$HOME/.local/bin:$HOME/bin:$PATH" fi export PATH --- 8,13 --- # User specific environment ! if ! [[ "$PATH" =~ "/usr/local/fml:$HOME/.local/bin:$HOME/bin:" ]] then ! PATH="/usr/local/fml:$HOME/.local/bin:$HOME/bin:$PATH" if export PATH

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

fmlで使用する「/var/spool/ml/etc/aliases」をposfixに追加する。

# cd /etc/postfix
# cp main.cf main.cf_org
# vi main.cf
# diff main.cf_org main.cf
413c413,414
< alias_maps = hash:/etc/aliases
---
> #alias_database = hash:/etc/aliases
> alias_database = hash:/etc/aliases, hash:/var/spool/ml/etc/aliases
826a829,830
> # FMLのための設定
> allow_mail_to_commands = alias,forward,include       <--- 追加

FML用のaliasesを作成する。

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

# touch /var/spool/ml/etc/aliases
# postalias /var/spool/ml/etc/aliases

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

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

# chown -R fml:fml /var/spool/ml 
# chown -R fm:fml /usr/local/fml

nginxにWebUIを設定する。

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

# cd /etc/nginx/default.d
# vi fml.conf
# cat fml.conf
location /fml/admin/ {
    root    /usr/local/fml/www/share/cgi-bin;

    location ~ \.(pl|sh|cgi)$ {
            try_files       $uri =404;
            fastcgi_pass    unix:/run/fcgiwrap/fcgiwrap.sock;
            include         fastcgi_params;
            fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

nginxを再起動する。

# nginx -t
# systemctl restart nginx

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

以下のURLでGUIの画面が表示される。
https://<IPアドレス|ホスト名>/fml/admin/index.cgi

メールアドレスの追加や削除なめ画面遷移すると、アクセスするファルのアクセス権がfmlのためHTTP(nginxユーザ)からはアクセス(更新処理など)できません。
修正方法は今後調査して公開します。