プロジェクト

全般

プロフィール

Fmlの構築

  • fml(4.0系)でのメーリングリスト構築に関するページです。

前提条件

  • このソフトウェアの構築にはSMTPサーバの導入が前提となります。
  • ここではPostfixおよびApache導入済み環境を想定しています。

旧バージョンのperlのインストール

  • CentOS 7以降
    **最近のperlではfml4が動作しないため、利用中のperlとは別に古いバージョンのperlをインストールします。
    • perl5.8.9をダウンロード・展開します
      # cd /usr/local/work
      # wget https://www.cpan.org/src/5.0/perl-5.8.9.tar.gz
      # tar xzf perl-5.8.9.tar.gz
      
  • prefixを変更し、コンパイル・インストールします
    # ./Configure -de -Accflags='-fPIC' -Dprefix=/usr/local/perl-5.8
    # make
    # make test
    # make install
    
  • PATH配下にシンボリックリンクを張ります
    # cd /usr/local/bin/
    # ln -s /usr/local/perl-5.8/bin/perl perl58
    
  • 実行確認
    # perl58 -v
    
    This is perl, v5.8.9 built for x86_64-linux
    
    Copyright 1987-2008, Larry Wall
    
    Perl may be copied only under the terms of either the Artistic License or the
    GNU General Public License, which may be found in the Perl 5 source kit.
    
    Complete documentation for Perl, including FAQ lists, should be found on
    this system using "man perl" or "perldoc perl".  If you have access to the
    Internet, point your browser at http://www.perl.org/, the Perl Home Page.
    

事前準備

  • 必要なユーザ・ディレクトリを設定します。
    # mkdir /usr/local/fml
    # mkdir /var/spool/ml
    # groupadd fml
    # useradd -g fml -d /var/spool/ml/etc fml
    # passwd fml
    

ダウンロード

  • fmlのソースコードをダウンロード・展開します
    # wget ftp://ftp.fml.org/pub/fml/stable/fml-4.0-stable-20040215.tar.gz
    # tar xzf fml-4.0-stable-20040215.tar.gz
    

インストール

  • ディレクトリに入ります
    # cd fml-4.0-stable-20040215
    
  • 先にインストールしたperl58を指定してインストールを行います
    # env _PATH_PERL=/usr/local/bin/perl58 perl makefml install
    -----------------------------
    ……(前略)
    ---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               [mailinglist] example.com
    FQDN                      [mailinglist] mail.example.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: example.com
            FQDN: mail.example.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
    
    ---Install the Fml system to /usr/local/fml. (y/n) [n] y
    ……(後略)
    
  • エイリアスファイルを作成しておきます
    # touch /var/spool/ml/etc/aliases
    # postalias /var/spool/ml/etc/aliases
    
  • 権限を編集します
    # chown -R fml.fml /var/spool/ml
    # chown -R fml.fml /usr/local/fml
    

設定ファイル編集

  • Postfixの設定ファイルを編集します
    # vi /etc/postfix/main.cf
    # ------------------------------------------------------
    allow_mail_to_commands = alias,forward,include
    
    alias_maps = hash:/etc/aliases, hash:/var/spool/ml/etc/aliases
    alias_database = hash:/etc/aliases, hash:/var/spool/ml/etc/aliases
    
  • 変更後、postfixを再起動します
    # systemctl restart postfix
    
  • エイリアスを更新します
    # newaliases
    
  • 仮のメーリングリストを作成
    # su - fml
    $ /usr/local/fml/makefml newml test-ml
    exit
    
  • 仮のメーリングリストにユーザを追加します
    # su fml
    $ /usr/local/fml/makefml add test-ml user@example.com
    

テスト用リスト設定

テストをするにあたり、下記の点を設定する

  1. メンバー外からの受信を受け入れる
  2. メッセージを拒否した際にREJECTメッセージを返さない
  3. モデレータからの設定コマンドのみを受け入れる
  4. 設定コマンドを拒否した際にREJECTメッセージを返さない
  5. rootユーザ、postmasterからの送信を受信拒否しない
  • 設定ファイルを編集する
    # vi /var/spool/ml/test-ml/config.ph
    -----------------------------
    #$PERMIT_POST_FROM              = "members_only";
    $PERMIT_POST_FROM              = "anyone";
    #$REJECT_POST_HANDLER           = "reject";
    $REJECT_POST_HANDLER           = "ignore";
    
    #$PERMIT_COMMAND_FROM           = "members_only";
    $PERMIT_COMMAND_FROM           = "moderator";
    #$REJECT_COMMAND_HANDLER        = "reject";
    $REJECT_COMMAND_HANDLER        = "ignore";
    
    #$REJECT_ADDR                   = "root|postmaster|MAILER-DAEMON|msgs|nobody|news|majordomo|listserv|listproc|\S+\-help|\S+\-subscribe|\S+\-unsubscribe";
    $REJECT_ADDR                   = "";
    

送信テスト

WebUIの設定(WebUIが必要であれば)

  • 下記のコマンドでコンテンツを作成します
    # cd /usr/local/fml/
    # su - fml
    $ ./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                 postfix
    7     HOW TO UPDATE ALIAS newaliases
    
    which ? (0-7) [0]
    
    4 WebUIのユーザ名とパスワード追加・変更
    6 MTAをSendmailからPostfixに変更
    5 スクリプトを再生成する
    0 終了
    
  • コンフィグ作成を行います
    Q: Can I recreate cgi scripts? (y/n) [n] y
    
     * create /usr/local/fml/www/share/cgi-bin/fml/admin/.htaccess
     * create CGI scripts in /usr/local/fml/www/share/cgi-bin/fml/admin/
       menu.cgi makefml.cgi mlmenu.cgi menubar.cgi index.cgi newml.cgi rmml.cgi
    done.
    
  • fmlユーザから抜けます
    $ exit
    
  • Apacheの設定ファイルを作成します
    # vi /etc/httpd/conf.d/fml4.conf
    -----------------------------
    Alias   /fml    /usr/local/fml/www/share/cgi-bin/fml
    <Directory /usr/local/fml/www/share/cgi-bin/fml>
            Options +ExecCGI
            AddHandler cgi-script .cgi
            AllowOverride All
            Order allow,deny
            Allow from all
    </Directory>
    
  • Apacheを再起動する
    # systemctl restart httpd
    
  • クライアントのWebブラウザがchromeの場合、デフォルトではエンコードを変更できないため次のエクステンションを導入する
    https://chrome.google.com/webstore/detail/set-character-encoding/bpojelgakakmcfmjfilgdlmhefphglae?hl=ja
  • ブラウザで次のアドレスへアクセスする
    https://サーバのIPアドレス/fml/admin/menu.cgi
  • 先にmakefmlコマンドで作成したユーザ・パスワードで認証する
  • 文字化けするので、画面内で右クリックしエンコードを「EUC-JP」に変更する
  • WebUIにアクセスできることを確認する

以上。

 

戻る