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. バーチャル・ドメイン用のMLのヘッダ情報を設定する。
    7. バーチャル・ドメイン用のユーザを内部配送設定をpostfixに設定する。
      1. ローカル転送用のドメインを確認する。
      2. 新規作成したメーリングリストのaliasesファイルの定義を確認する。
      3. バーチャル・ドメインの内部転送を設定する。
    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に関するファイルも修正する。

bin/archive.pl
bin/base64decode.pl
bin/base64encode.pl
bin/cksum.pl
bin/daily.pl
bin/emumail.pl
bin/expire.pl
bin/fwix.pl
bin/gen_summary.pl
bin/more_secure_cf.pl
bin/passwd.pl
bin/pmail.pl
bin/resend.pl
bin/translate.pl
cf/config
contrib/localhack/release-1/vote/vote.pl
contrib/mail2fax/libfax.pl
contrib/mail2irc/libirc.pl
contrib/mail2pager/euc2jiskuten.pl
databases/examples/ldap-toymodel/dump.pl
databases/ldap/toymodel.pl
databases/postgresql/dynamic_active.pl
libexec/confirmd.pl
libexec/fml_local.pl
libexec/fmlserv.pl
libexec/mead.pl
makefml
sbin/makefml
src/fml.pl
src/jcode.pl
src/libconfirm.pl
src/libdatabases.pl
src/libenvf.pl
src/libkern.pl
src/libtraffic.pl
sys/WINDOWS_NT4/ntfml.pl
sys/WINDOWS_NT4/wrapper.pl
www/cgi-bin/admin/index.cgi
www/cgi-bin/admin/makefml.cgi
www/cgi-bin/admin/menu.cgi
www/cgi-bin/admin/menubar.cgi
www/cgi-bin/admin/mlmenu.cgi
www/cgi-bin/admin/newml.cgi
www/cgi-bin/admin/rmml.cgi
www/cgi-bin/ml-admin/makefml.cgi
www/cgi-bin/ml-admin/menu.cgi
www/lib/libcgi_kern.pl
 

 

パッチを入手する。

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

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

 

パッチを当てる。

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

# cd /tmp
# tar xvfz fml-4.0-stable-20040215.tar.gz
fml-4.0-stable-20040215/
fml-4.0-stable-20040215/src/
fml-4.0-stable-20040215/src/fml.pl
   :
fml-4.0-stable-20040215/INSTALL.jp
fml-4.0-stable-20040215/INSTALL.en
#
# cd fml-4.0-stable-20040215
#
# patch -p1 --follow-symlinks < ../fml-4.0-stable-20040215_patch
patching file bin/archive.pl
patching file bin/base64decode.pl
patching file bin/base64encode.pl
patching file bin/cksum.pl
patching file bin/daily.pl
patching file bin/emumail.pl
patching file bin/expire.pl
patching file bin/fwix.pl
patching file bin/gen_summary.pl
patching file bin/more_secure_cf.pl
patching file bin/passwd.pl
patching file bin/pmail.pl
patching file bin/resend.pl
patching file bin/translate.pl
patching file cf/config
patching file contrib/localhack/release-1/vote/vote.pl
patching file contrib/mail2fax/libfax.pl
patching file contrib/mail2irc/libirc.pl
patching file contrib/mail2pager/euc2jiskuten.pl
patching file databases/examples/ldap-toymodel/dump.pl
patching file databases/ldap/toymodel.pl
patching file databases/postgresql/dynamic_active.pl
patching file libexec/confirmd.pl
patching file libexec/fml_local.pl
patching file libexec/fmlserv.pl
patching file libexec/mead.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/libdatabases.pl
patching file src/libenvf.pl
patching file src/libkern.pl
patching file src/libtraffic.pl
patching file sys/WINDOWS_NT4/ntfml.pl
patching file sys/WINDOWS_NT4/wrapper.pl
patching file www/cgi-bin/admin/index.cgi
patching file www/cgi-bin/admin/makefml.cgi
patching file www/cgi-bin/admin/menu.cgi
patching file www/cgi-bin/admin/menubar.cgi
patching file www/cgi-bin/admin/mlmenu.cgi
patching file www/cgi-bin/admin/newml.cgi
patching file www/cgi-bin/admin/rmml.cgi
patching file www/cgi-bin/ml-admin/makefml.cgi
patching file www/cgi-bin/ml-admin/menu.cgi
patching file www/lib/libcgi_kern.pl
#

 

fmlをインストールする。

# ./makefml install
unshift(@INC, /usr/local/src/fml/fml-4.0-stable-20040215/src)
---NOT USING configuration file (for the first time)

   THIS HOST (pc.office.hoge.com) IS [x86_64-unknown-linux-gnu]

---Please Define Your Fml System Configurations

Personal Use or ML-Admin-Group-Shared or fmlserv you use?
Personal, Group, Fmlserv (personal/group/fmlserv) [personal]

DOMAIN NAME               [office.hoge.com] hege.com
FQDN                      [pc.office.hoge.com] hoge.com
EXEC FILES DIRECTORY      [/usr/local/fml]
TOP LEVEL ML DIRECTORY    [/var/spool/ml]

Language (Japanese or English) [English] Japanese

TimeZone (TZ: e.g. +0900, -0300) [+0900]

  --- summary ---
      DOMAIN: hoge.com
        FQDN: hoge.com
    EXEC_DIR: /usr/local/fml
      ML_DIR: /var/spool/ml
    Language: Japanese
    TimeZone: +0900

The current configuration is saved in /usr/local/fml/.fml/system
   mkdir /var/spool/ml

---Install the Fml system to /usr/local/fml. (y/n) [n] y

Installing fml system to /usr/local/fml
Fixing Path: src ............................................................................ libexec ..... sbin . cf . bin .................... www/cgi-bin ......... www/lib ... sys ......... module ..
        Done.

Generate nroff manuals:

Installing bin ....
Installing sbin .
Installing libexec .
Installing cf .
Installing etc ....
Installing sys ..
Installing src ........
Installing drafts ..
Installing messages .....
Installing www ......
Installing module ...................................
Installing databases ...
Installing doc .....................................................................................
Done.

Setup CGI examples ........
      CGI configuration is saved in /usr/local/fml/.fml/cgi.conf

 -- Enjoy Internetworking!
#

 

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

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

# cd /usr/local/bin
#
# ln -s /usr/bin/perl perl
#

 

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

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

# groupadd fml
#
# useradd -G fml -m fml
#
# cd /home/fml
#
# cp .bashrc .bashrc_org
#
# vi .bashrc
#
# diff -c .bashrc_org .bashrc
9c9
< if ! [[ "$PATH" =~ "$HOME/.local/bin:$HOME/bin:" ]]
---
> if ! [[ "$PATH" =~ "/usr/local/fml:$HOME/.local/bin:" ]]
11c11
< PATH="$HOME/.local/bin:$HOME/bin:$PATH"
---
> PATH="/usr/local/fml:$HOME/.local/bin:$HOME/bin:$PATH"
#

 

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

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

# cd /etc/postfix
#
# cp main.cf main.cf_org
#
# vi main.cf
#
# diff main.cf_org main.cf
405c413,414
< alias_maps = hash:/etc/aliases
---
> #alias_maps = hash:/etc/aliases
> alias_maps = hash:/etc/aliases, hash:/var/spool/ml/etc/aliases
416,417c425,426
< alias_database = hash:/etc/aliases
< #alias_database = hash:/etc/aliases, hash:/opt/majordomo/aliases
---
> #alias_database = hash:/etc/aliases
> alias_database = hash:/etc/aliases, hash:/var/spool/ml/etc/aliases
738a738,739
> # FMLのための設定
> allow_mail_to_commands = alias,forward,include
#

FML用のaliasesを作成する。

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 fml:fml /usr/local/fml
#

 

MLを作成する。

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

# su - fml
$
$ which makefml
/usr/local/fml/makefml
$
$ makefml newml test
DO "newml" for test mailing list.
---Creating test mailing list
   directory /var/spool/ml/test is created as UID=1004
   directory /var/spool/ml/test/spool is created as UID=1004
---Generting configuration examples.

   Generate template files in /var/spool/ml/test/
         include include-ctl include-mead aliases Makefile crontab
         fmlwrapper.c fmlwrapper.h

   Generate qmail template files in /var/spool/ml/etc/qmail/alias/
         .qmail-test .qmail-test-ctl .qmail-test-default .qmail-test-admin
         .qmail-test-request .qmail-owner-test .qmail-owner-test-ctl

   Update /var/spool/ml/etc/qmail/users/assign

   Generate qmail template files in /home/fml
        You need the following rule in /var/qmail/control/virtualdomains
        to use /home/fml/.qmail-lnxdvr:com-* files
        lnxdvr.com:fml-lnxdvr.com

   Update /var/spool/ml/etc/crontab/fml

   Create config.ph(/var/spool/ml/test/config.ph):
        /var/spool/ml/test/cf  ->  config.ph ... Done.

   Create template files for commands (help, guide ...)
         help help-admin deny guide welcome confirm objective

   Update /var/spool/ml/etc/aliases

   The next step: update your MTA configuration. For example
        % su root
        # cat /var/spool/ml/test/aliases >> /etc/aliases
        # newaliases

   FYI: See templates in '/var/spool/ml/test/'
done.
$

 

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

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

$ makefml config test
DO "config" for hoge mailing list.
---Configure hoge mailing list ...
   ************************************************************
 
        <<< makefml --- FML Configuration Interface --- >>>
 
   === TOP MENU ===
 
   Mailing List Addresses
        FOR POST          test@hoge.com
        FOR COMMAND       test-ctl@hoge.com
   _______________________
 
   0    END
   1    POLICY OF ACCESS (WHO CAN POST AND USE COMMANDS)
 
        [POST]
          PERMIT_POST_FROM                 members_only
          WHEN POST FROM NOT MEMBER        reject
 
        [COMMAND]
          PERMIT_COMMAND_FROM              members_only
          WHEN COMMAND FROM NOT MEMBER     reject
 
   2    REGISTRATION METHOD TYPE
 
        AUTO_REGISTRATION_TYPE             confirmation
        UNSUBSCRIBE_AUTH_TYPE
 
   3    SETTINGS AROUND COMMANDS
              address for command          test-ctl@hoge.com
 
   4    REMOTE ADMINISTRATION
                     PERMIT ?              NO
                     AUTH_TYPE             crypt
 
   5    HEADER CONFIGURATIONS
 
   6    OPTION
 
   7    SECURITY & FILTERING
   ************************************************************
 
      Which section? :0-7) [0] 5
 
   ************************************************************
 
        <<< makefml --- FML Configuration Interface --- >>>
 
   0    END
 
   * Subject: TAG
 
   1 SUBJECT_TAG_TYPE                     [:]
   2 SUBJECT_TAG_FIGURE                   4

   * To:
   3 REWRITE_TO                           To: is original (pass through)
 
   * Date:
   4 DATE_TYPE                            original-date
 
   5 PASS_ALL_FIELDS                      YES
   6 PASS_RECEIVED_THROUGH                YES
 ************************************************************
 
   which type (0-6) [0] 0
 
   Configuration is saved in /var/spool/ml/test/cf.
 
   Create config.ph(/var/spool/ml/test/config.ph):
        /var/spool/ml/test/cf -> config.ph ... Done.
        (configuration is backuped in /var/spool/ml/test/config.ph.bak)
done.
 
$

 

MLにユーザを登録する。

$ makefml add test hoge@ymail.ne.jp
DO "add hoge@ymail.ne.jp" for test mailing list.
done.

$
$ cat /var/spool/ml/test/members
hoge@ymail.ne.jp
$

 

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

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

 

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

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

 

nginxにWebUIを設定する。

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

# cd /etc/nginxc/defult.d
#
# vi fml.conf
#
# cat fml.conf
location /fml/ {
        alias   /usr/local/fml/www/cgi-bin/admin/;
        index   menu.cgi

        auth_basic "Restricted";
        auth_basic_user_file /etc/nginx/.htpasswd;

        location ~ \.(pl|sh|cgi)$ {
                try_files       $uri =404;
                fastcgi_pass    unix:/run/fcgiwrap.socket;
                include         fastcgi_params;
                fastcgi_param   SCRIPT_FILENAME $request_filename;
                fastcgi_param   PATH_INFO       $fastcgi_path_info;
        }
}
#

 

nginxを再起動する。

# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
#
# systemctl restart 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を送信を行う。
動作の概要:
① virtual_alias_maps定義に記述されたバーチャル・ドメインのユーザのメールを受信する。
② virtual_alias_maps定義に記述された第二引数のローカル・ドメインのメールアドレスに転送する。
③ バーチャルドメイン用fmlのaliasesファイルに記述されたユーザのMLの処理を行う。

 

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

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

# ./makefml -U install
 Personal, Group, Fmlserv (personal/group/fmlserv) [personal] 
 DOMAIN NAME [lnxdvr.com] hoge.jp
 FQDN [office.hoge.com] hoge.jp
 EXEC FILES DIRECTORY [/usr/local/fml] /usr/local/hoge.jp
 TOP LEVEL ML DIRECTORY [/var/spool/ml] /var/spool/hoge.jp
 Language (Japanese or English) [English] Japanese
 TimeZone (TZ: e.g. +0900, -0300) [+0900]
 --- summary ---
 DOMAIN: hoge.jp
 FQDN: pc.hoge.jp
 EXEC_DIR: /usr/local/hoge.jp
 ML_DIR: /var/spool/hoge.jp
 Language: Japanese
 TimeZone: +0900
    :
#

 

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

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

# useradd -G fml -m fml2
# cd /home/fml2
# cp .bashrc .bashrc_org
# vi .bashrc
# diff -c .bashrc_org .bashrc
9c9
< if ! [[ "$PATH" =~ "$HOME/.local/bin:$HOME/bin:" ]]
---
> if ! [[ "$PATH" =~ "/usr/local/hoge.jp:$HOME/.local/bin:" ]]
11c11
< PATH="$HOME/.local/bin:$HOME/bin:$PATH"
---
> PATH="/usr/local/hoge.jp:$HOME/.local/bin:$HOME/bin:$PATH"
#

 

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

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

# cd /etc/postfix
# cp main.cf main.cf_org
# vi main.cf
# diff main.cf_org main.cf
405c413,414
< alias_maps = hash:/etc/aliases, hash:/var/spool/ml/etc/aliases
---
> alias_maps = hash:/etc/aliases, hash:/var/spool/ml/etc/aliases, hash:/var/spool/hoge.jp/etc/aliases
416,417c425,426
< #alias_database = hash:/etc/aliases, hash:/var/spool/ml/etc/aliases
---
> alias_database = hash:/etc/aliases, hash:/var/spool/ml/etc/aliases, hash:/var/spool/hoge.jp/etc/aliases
#

 

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

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

# touch /var/spool/hoge.jp/etc/aliases
# postalias /var/spool/hoge.jp/etc/aliases
#

 

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

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

# chown -R fml2:fml /var/spool/hoge.jp
# chown -R fml2:fml /usr/local/hoge.jp
#

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

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

# su - fml2
$
$ which makefml
/usr/local/hoge.jp/makefml
$
$ makefml newml hoge
DO "newml" for hoge mailing list.
---Creating test mailing list
    :
   FYI: See templates in '/var/spool/hoge.jp/hoge/'
done.
$

 

バーチャル・ドメイン用のMLのヘッダ情報を設定する。

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

$ makefml config hoge
DO "config" for hoge mailing list.
---Configure hoge mailing list ...
   ************************************************************
 
        <<< makefml --- FML Configuration Interface --- >>>
 
   === TOP MENU ===
 
   Mailing List Addresses
        FOR POST          hoge@hoge.jp
        FOR COMMAND       hoge-ctl@hoge.jp
   _______________________
       :
$

 

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

バーチャル・ドメインのユーザをローカル配送用のドメインに転送する設定を行う。

ローカル転送用のドメインを確認する。

mydestinationに記述されたローカル配送用のドメインを確認する。

# grep mydomain /etc/postfix/main.cf
     :
mydomain = hoge.com
     :
#
# grep mydestination /etc/postfix/main.cf
     :
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
     :
#

上記例では以下のローカル転送のドメインが有効である。
 ・$myhostname
 ・localhost.$mydomain
   ・localhost
 ・$mydomain
ここでの記述では、「localhost.$mydomain」を採用しました。

 

新規作成したメーリングリストのaliasesファイルの定義を確認する。

# cat /var/spool/hoge.jp/hoge/aliases
hoge: :include:/var/spoolhoge.jp/hoge/include
hoge-ctl: :include:/var/spool/hoge.jp/hoge/include-ctl
hoge-request: hoge-admin
hoge-admin: fml2
owner-hoge: fml2
owner-hoge-ctl: fml2

# Mail Error Analyzer Daemon
# If you use mead.pl, comment out nikotama-admin: line and UNCOMMNET OUT here.
#hoge-admin: fml2, :include:/var/spool/hoge.jp/hoge/include-mead
#

以下のaliasに対してローカル配送の記述を検討する。
すべて定義すべきと思うが、必要なaliasのみにしたい思いもある。
・hoge ・・・・・メーリングリストの本体なのでローカル転送を記述する。
・hoge-admin・・送信したメールのReturn-Path(送信先メールサーバの障害や、送信先メールアドレスが削除された時のえたーメールを受信するメールアドレス)がhoge-adminのためローカル転送を記述する。
・hoge-ctrl ・・・過去メールの受信や管理者へのメール送信などを行う。
・その他は、保留とする。

 

バーチャル・ドメインの内部転送を設定する。

postfixに定義されている「virtual_alias_maps」に定義されているファイルの名前を確認して、ファイルに定義を追加する。

# cd /etc/postfix
#
# grep virtual_alias_maps main.cf
# /etc/passwd, /etc/aliases, or the $virtual_alias_maps files.
virtual_alias_maps = hash:/etc/postfix/virtual_aliases
#
# cp virtual_aliases virtual_aliases_org
#
# vi virtual_aliases
#
# diff virtual_aliases_org virtual_aliases
10a11,15
>
> #virtual domein ML User
> hoge@hoge.jp hoge@localhost.hoge.com
> hoge-admin@hoge.jp hoge-admin@localhost.hoge.com
> hoge-ctl@hoge.jp hoge-ctl@localhost.hoge.com
#
# postmap virtual_aliases
#

 

MLにユーザを登録する。

$ makefml add hoge hoge@gmail.com
DO "add hoge@gmail.com" for test mailing list.
done.

$
$ cat /var/spool/hoge.jp/hoge/members
hoge@gmail.com
$

 

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

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

 

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

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

# cd /etc/nginxc/dfefult.d
#
# vi fml2.conf
#
# cat fml2.conf
location /fml2/ {
    alias   /usr/local/hoge.jp/www/cgi-bin/admin/;
    index   menu.cgi
 
    location ~ \.(pl|sh|cgi)$ {
            try_files       $uri =404;
            fastcgi_pass    unix:/run/fcgiwrap/fcgiwrap.sock;
            include         fastcgi_params;
            fastcgi_param   SCRIPT_FILENAME $request_filename;
            fastcgi_param   PATH_INFO       $fastcgi_path_info;
    }
}
#

 

nginxを再起動する。

# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
#
# systemctl restart nginx
#

 

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

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

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

 

 

まとめ

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

閑話休題

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

diff -uprN <修正前のソースファイルディレクトリ> <修正したソースファイルのディレクトリ> > <パッチファイル>