FML (Mailing List)

環境: MacOS X Server 10.3.1
MailServer: Postfix を使っています
したがって sendmail は postfix のものに置換されています
参考にした文献:著者の方ありがとうございました _O_
http://www.kozupon.com/ml/fml.html
http://astr-www.kj.yamagata-u.ac.jp/~sho/admin/fml-install.html
上を参考に postfix + MaOSX 10.3 で動くようにしたものです。
update: 2005-1-28

Postfixのセットアップは既にされている環境として説明する。

  1. fmlの入手方法

    http://www.fml.org から download

  2. fmlユーザの登録

    fmlをセットアップするには、必ずfmlユーザ、fmlグループを最高権限とする。

    MacOS X なので WorkGroupManager を使ってユーザ登録した。
    ユーザとグループを登録する。
    user も group も fml という名前にする。
    login できるよう HomeDirectory 作成し passwd 設定。

  3. fmlディレクトリの作成

    fmlのディレクトリとメーリングリストディレクトリを作成する。rootから

    # mkdir /usr/local/fml /var/spool/ml
    # chown fml.fml /usr/local/fml /var/spool/ml
    # chmod 755 /usr/local/fml /var/spool/ml

    # su fml
    % cd
    % ln -s /var/spool/ml /Users/fml/ml
    最後のシンボリックは fml で作業するとき便利なので作成しておきます。

  4. インストール

    tarボールのソースを解凍してインストールする。
    suでfmlに切り替えてから
    # tar -zxf fml-4.0E-current-20020309.tar.gz -C /usr/local/src
    # cd /usr/local/src/fml-4.0E-current-20020309
    # env RECOMMEND=yes perl makefml install
    ...省略...
    DOMAIN NAME [hogehoge.com] ocean.shinagawa.tokyo.jp リターン
    FQDN [mail1.hogehoge.com] ocean.shinagawa.tokyo.jp リターン
    EXEC FILES DIRECTORY [/usr/local/fml] /usr/local/fml リターン
    TOP LEVEL ML CIRECTORY [/var/spool/ml] リターン
    Language (Japanese or English) [English] Japanese リターン
    TimeZone (TZ: e.g +900, -0300) [+900] リターン
    --- summary ---
    DOMAIN: ksirius.kj.yamagata-u.ac.jp
    FQDN: ksirius.kj.yamagata-u.ac.jp
    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" と答える
    ...省略...
    Done.
    -- Enjoy Internetworking!
    エラーが無ければインストール完了。

  5. Postfixのmain.cfへの追加点

    デフォルトでは :include: が使えないので /etc/postfix/main.cf を次のように変更する。
    これで :include: 命令が有効になる。main.cfへ一行定義を追加する。rootから

    # cd /etc/postfix
    # vi main.cf
    ...省略...
    allow_mail_to_commands = alias,forward,include
    main.cfの最後に、この記述を追加しないとPostfix環境でfmlは使えない。

  6. 各ディレクトリの説明

    • /usr/local/fml

      fmlの本体及びライブラリを収容。

    • /usr/local/fml/.fml

      インストール時の基本設定が保存される。

    • /usr/local/fml/bin

      メーリングリストのテスト用スクリプトを収容。

    • /usr/local/fml/doc

      fmlのドキュメント関係収容。

    • /usr/local/fml/drafts

      メーリングリストを作成した時に自動的に作られる。
      ドキュメントのひな型が収容されている。

    • /usr/local/fml/etc

      各種ファイルのひな型が収容されている。

    • /usr/local/fml/libexec

      POP管理で使うスクリプト及び他のメーリングリストエンジンの互換用I/F収容。

    • /usr/local/fml/messages

      エラー時に返す文字列の収容。

    • /usr/local/fml/sbin

      fmlインストール時に使われるスクリプトファイル収容。

    • /usr/local/fml/sys

      OSに依存するファイルが、OS別に収容。

    • /var/spool/etc

      この中には、マシン共通のメーリングリスト設定ファイルが収容。

  7. メーリングリストの作成手順

    "$ login fml" のように fmlユーザとして login して行う。

    "$ su fml" では fml の環境設定が働かないため、makefml コマンドを full path で入れなければ "command not found" と言われてしまう。
    $ whoami
    fml
    $ cd /usr/local/fml
    $ makefml newml test-ml
    ...省略...
    test-mlと言うメーリングリストが作られる。

  8. aliasesファイルの編集

    fmlのaliasesの内容をPostfixのaliasesに登録する。rootから
    # cat /var/spool/ml/test-ml/aliases

    この内容を、/etc/postfix/aliasesに追記する。

    # cp /etc/postfix/aliases /etc/postfix/aliases.bak

    一応、バックアップする。

    # vi /etc/postfix/aliases

    内容を追記する。

    # postalias hash:/etc/postfix/aliases

    これをやらないと aliasesの内容変更が反映されません。

  9. メーリングリストユーザの登録

    登録する方法は幾つかありますが、ここでは makefml を利用する方法と 直接 ML ファイルを編集する方法を紹介します。 例として user1@ws.elsewhere.japan を登録してみましょう。

    [makefml での登録]

    $ whoami
    fml
    $ cd /usr/local/fml
    $ makefml add test user1@ws.elsewhere.japan
    で登録されます。
    ユーザを削除する時は
    $ makefml bye test user1@ws.elsewhere.japan
    とします。さらに /var/spool/ml/test/log にこの作業の内容が記録されます。

    [直接編集する]

    /var/spool/ml/test にある members と actives というファイルに
    user1@ws.elsewhere.japanを追加すれば完了です。
    削除する時は members と actives というファイルから
    user1@ws.elsewhere.japan という行を削除します。
    ただし、この場合はログ (/var/spool/ml/test/log) に操作した内容は残りません。 メンバーの変更も記録に残るので makefml を使うほうが良いでしょう。

  10. ML の削除

    test ML を削除するときは
    rm -rf /var/spool/ml/test

    ML ディレクトリを削除。
    /etc/postfix/aliases から該当する (test ML に関係する)部分を消し
    postalias hash:/etc/postfix/aliases をかけます。

  11. 設定変更

    $ makefml config test-ml
    header --> [:] type
    reply --> test@ocean.shinagawa.tokyo.jp
    のようにして、設定を変更できます。

    あるいは /var/spool/ml/test-ml/config.ph を直接編集する方法もあります。

  12. HTML での公開

    % login fml
    passwd: ***
    [fml] % makefml config test-ml
    [6 OPTION] の [1 HTML_GENERATION] で AUTO_HTML_GEN
    を選択するだけで、メールが投稿されるたびに
    /var/spool/ml/test-ml/htdocs/ の下に html が生成される。

    これを web site から見えるようにシンボリックリンク
    [fml] % sudo su
    passwd: ***
    # cd /Library/WebServer/Documents/(ANY-DIRECTORY)/
    # ln -s /var/spool/ml/test-ml/htdocs/ ./test-mail

    このままでは permission の関係で web に表示されない可能性がある。
    # cd /var/spool/ml/test-mail
    # chmod +rx ./htdocs
    以下のような permission になっていれば OK 。
    # ls -al
    ...
    drwxr-xr-x 10 fml fml 340 11 Aug 18:46 htdocs
    ...

    これで test-mail/htdocs/index.html を指定すれば log が web で見えるようになる。


感想:通常は sendmail を使う方法が書かれているのですが、 うちでは postfix が sendmail を postfix 用のものに置換しているので、 いくつかの参考文献を元にして設定しました。
Subject に ML 名やシリアル番号が入る仕組みの設定が default ではされていないので、これらの変更にちょっと試行錯誤しましたが、 インストールとしては perl で行われるので比較的簡単です。